Just sharing some of my inconsequential lunch conversations with you... RSS  

Saturday, August 30, 2008

Microsoft Pro Photo Tools

I have mixed feelings about this tool. It is simple to use, allows GPS data to be added to my photos, integrates with Virtual Earth, and finally: it is a .NET application :)

On the other side it seems quite unpolished. For instance, it often crashes upon unexpected scenarios, and uses the regional settings to load the NMEA data. Yes, I have to change my settings in order to run this tool... Another particularity about this piece of software is that its first versions weren't obfuscated.

It's a pity that the application I use for my photo capture workflow, Adobe LightRoom, doesn't support it yet. But wait, there's a plugin, geotag-lightroom-plugin. I'll give it a try.

Friday, August 29, 2008

IE8 rocks!

Though using IE, Firefox, Opera and Safari, the truth is Firefox is the browser I end up spending more time in. This trend may change with IE8 beta2. After a disappointing and unstable Firefox3 (and the first IE8 beta), IE8 Beta 2 is finally showing it's claws!

IE8 is full of new features like WebSlices, Accelerators, auto complete, multiple-engine support (IE7, IE8 compatible and native mode), InPrivate browsing and other cool safety features, out-of-the-box developer tool and finally a decent firefox-like text search tool.

Having the possibility to make the sites compatible is an important  asset, now that Microsoft decided to pay the price for not following the standards. What I still lack is the cool FireFox add-ins. Wouldn't it be great if someone developed a Firefox/IE addin translator?...

Thursday, August 28, 2008

When trains and software converge

In the 30s of the last century, the Lisboa-Porto line was never on time. Though users kept complaining about delays, the train records kept logging no such delays, and both train and station managers stood by those logs.

Something was terribly wrong, so the train company's president himself decided to take a train to sort it out. For each and every station the train arrived later and later, and for each and every station the train and station managers logged it as being on time. It was quite amusing, being as late as 30 minutes and hearing the station's manager screaming "On table!!!".

The  president confronted the data with the train and station managers, and they finally told him what was wrong: it was impossible to keep the proposed timetable, so they opted to fake the logs. The president took two obvious measures: updated the timetable and fired those who faked the logs.

Why am I talking about trains on what should be a geek's blog? Because in a way we also suffer from this problem. As we presently are still unable to predict correctly our project's effort we keep getting late on our timetables. And for the same strange reason as with the train people, some people don't report the delay as soon as we should, not leaving too much track to recover from.

Right now we have no way to anticipate correctly our timetables. But once our train starts, we can measure our effective speed and measure where we are against these timetables. Though our project management practices already enforce these measures, they are only as accurate as the information they receive, so the teams should be trained to log delays as soon as possible. I'm talking about intra-task delays and that gut feeling only the team can sense as that all the estimation is going down after just a week's work.

And finally, as timetables are presently hard to do accurately, we should do something about it: better effort history management, and sharing the timetable's risk with our client. At least until our project's effective speed is taken.

Tuesday, August 26, 2008

NHibernate: 2 - Entity Framework: 1

Sorry, couldn't help picking on Entity Framework. Ayende has annouced it, NHibernate 2 final is out! May the best win. Wait, better yet, may they both win.

Monday, August 25, 2008

Converting NMEA format to KML

I've been doing some off-trail hiking on this holidays, and logging them on my GPS. To convert them into KML, I've started using an online tool, GPSVisualizer. This is a cool converter, but I really needed an offline tool, so here are a couple of free tools that also run on Mac OS:

Thursday, August 21, 2008

Windows, Not Walls

Microsoft finally got tired of Apple's advertisements of bad manners, and decided to answer with the same guns. For ages, Apple has been investing on a series of bad taste advertisements thrashing Microsoft, so they come up with a new $300 million advertising campaign, devised by a newly hired ad agency.

Microsoft enlisted Jerry Seinfeld in its ad battle against Apple, but this is just one of the new troops on the way.

To be honest, I'd rather Apple stopped the bad manners trend. Unfortunately, this won't happen, and Microsoft is lowering the war to Jobs level.

Monday, August 18, 2008

Classic Computer Science problems

Do you remember these classical computer science problems? Problems like:

So why am I recovering these old Dijkstra and friends computer science problems? Well, some months ago I've designed an application prototype to publish sensors data to be consumed from subscribers (sorry, I'm afraid I can't get into too much details for now). The pub/subs pattern was easily implemented over WCF, but out-of-the-box it didn't release control to the registered sensors as soon as it could - and should.

I was divided: should I release control through independent producer/consumer or just use MSMQ? When browsing for a Producers-consumers problem pseudo code implementation, it became clear why don't we recall this problems as often as we did in the past: platforms like MSMQ isolate us from such implementations (on this case, the Producers-consumers problem). So (as usually) I've managed to keep my usual rate: pushing message queue into every project I can :)

Multiple Monitor support

Now that I got used to multiple monitors I find it difficult to live without them.

Noah Coad from the Visual Studio Platform posted about future possibilities on multiple monitor support from future Vistual Studio V10. Though this is not the way I use them (I often use one monitor for Outlook, Visual Studio, FeedDemon and another one for Windows Forms / Browser / Applications), this kind of usage can be cool with more than 2 monitors.

But what I really lack is multiple monitor support on Hyper-V (and VMWare Player). May be one of the great advantages of VMWare Workstation 6.

Smartcode reader on your PDA

devcatharsisSmartCodeHere's a cool smartcode reader application: i-nigma. With your phone camera, you can now read this smartcode 2d barcode information, containing a website link, a message or contact details. Check this bar code and you'll get into devCatharsis! Cool, beeing in devCatharsis :S

Though not new (my company has a lot of experience on this kind of technology on eTicketing), it his cool to see this for everyone, where newspapers can put it everywhere to link the experience back into the web.

What didn't work has planned: on my HTC 3300 the video is inverted, making useless the QR Code option and very difficult to aim. And above all, it can't read good old standard barcode, neither link to barcode databases, so Android Scan is still the killer app to get.

Thursday, August 14, 2008

Powershell to the rescue

Yes, I know, I have the strange habit of shutdown down as many services as I can, and sometimes I shutdown services I still need. Here's how I start them all at once, just to check if some service is needed:

Get-WmiObject Win32_Service -Filter "State='Stopped' and StartMode <> 'Disabled'" | Start-Service

Not impressive, I'm afraid. But it works!

Tuesday, August 12, 2008

How I got my Windows Server 2008 to burn DVDs...

Yesterday I've found out I my explorer couldn't write DVDs - no recording tab on the DVD properties.Luckily my PortableApps folder had DeepBurner so I could write the bloody DVD - not before running it as administrator.

So I've googled about it for a while and didn't find a reason. I've finally disabled UAC, rebooted, et voilá! So (at least on my Windows Server 2008 install) you have to disable UAC to burn DVDs on explorer?!?! Can it get more silly and unsafe than this?

Needless to say I'm enabling UAC again. Thank god for DeepBurner....

<update>

If someone knows of a policy configuration that can help us here, or of a service that I could have stopped and that guarantees burning experience with UAC on, please let me know :) Thanks in advance.

</update>

Visual Studio 2008 Service Pack 1 (SP1) and .NET Framework 3.5 SP1

Here they are:

Monday, August 11, 2008

The sky isn't falling

For those of you that were concerned with How to Impress Girls with Browser Memory Protection Bypasses  (hear about it at Vista's Security Rendered Completely Useless by New Exploit), rest assure, the sky isn't falling. As the article states:

These techniques are being seen as an advance that many in the security community say will have far-reaching implications not only for Microsoft, but also on how the entire technology industry thinks about attacks.

Ok, this is not absolutely related to Microsoft (being co-written by IBM and VMWare, Vista was the obvious choice), and some kind of user intervention is probably needed (or not?).

As ARSTechnica states, the fact is the problem seems to be related with where the DEP checking is made:

One of the key mechanisms used is the fact that the protections are not always applied. Internet Explorer 7 and Firefox 2 both opt out of DEP, and many third-party libraries such as the Flash plugin opt out of ASLR (and other protection mechanisms). Plugins can also do things that can deliberately defeat the OS's countermeasures; Java, for example, marks all of its memory as executable, meaning that a Java applet can place into memory executable code that's immune to DEP protection.

Ok, it seems like applications do have to much control over what is and isn't DEP verified, but still there is much Microsoft can do about it. Let's wait for their answer - and for the corresponding hungry answer from the users :)

Sunday, August 10, 2008

When old technology strangely works

In the nineties I've collected a lot of experience on application localization - while working on an Office Automation product, Elenix. For that I've been regularly called to help other teams architecting for localization.

It is in that context that I'm helping a team that is working on... Interdev 6! Yes, me, the guy that is always hooked on the next platform still in beta, working with Interdev 6. Uau!...

Interdev 6 localization support is resumed to near nothing, so we had to build some helpers from scratch. Our design decision was to mimic the ASP.NET resources localization approach, preserving the resource schema to facilitate future portings to ASP.NET.

This application depends highly on XSL, so a simple localization template solved most of our problems.

But anyway, I diverge, back to the old technology. Apart from being trapped in time, with poor language, framework, tooling and library support, one thing was cool: scripting! Yes, though a little strange hearing this from a type safe compile-ahead fanatic, it really felt great to get back into such a fast and light development life-cycle. Mental note to self, is scripting always as bad as I've remembered it?...

Is Linux mature enough for the consumer market?

Geeks like me can and do use Linux - I use it as a complement, can't actually totally substitute Windows.

But on the consumer market news are not so pleasant for Linux. According to The Register:

Ubuntu-based things do pretty well in techie circles. The consumer space is a different beast.

Now that most of the desktop experience problems have been addressed, the OEM lack of support seems to be the greatest problem remaining to be solved.

David Liu, chief executive of Emeryville, California-based gOS:

Linux companies like ourselves need to work closely with people making the next wave of appliance or netbooks... we need to seize it before other people fill the gap," Liu told a LinuxWorld panel on life, now that OEMs are shipping Linux PCs.

"The business model of Microsoft will adjust down [to netbooks and appliances]. We can do it, but it's a really small window of time. The PC world is moving on.

So what does Linux need right now? Above all, critical mass in usage. When  this happens, OEM will really be forced to support it. Business and customers aren't likely to support this critical mass building, so Linux now depends on one and only specialized market: education.

Education market is not without its flaws - above all it isn't really as appealing from an investment view as the consumer market. But it can evangelize a new generation.

Thursday, August 07, 2008

SQL Server 2008 is in RTM!!

Yeap, the rumors where real - though I didn't believe in them :) SQL Server is in RTM!

SQL Server 2K8 now has 7 versions. Simple to choose, no?

  • SQL Server 2008 Enterprise. SQL Server 2008 Enterprise is a comprehensive data management and business intelligence platform that provides enterprise-class scalability, data warehousing, security, advanced analytics and reporting support for running business-critical applications. With this edition, it is possible to consolidate servers and perform large-scale online transactional processing.
  • SQL Server 2008 Standard. SQL Server 2008 Standard is a complete data management and business intelligence platform that provides best-in-class ease of use and manageability for running departmental applications.
  • SQL Server 2008 Workgroup. SQL Server 2008 Workgroup is a reliable data management and reporting platform that delivers secure, remote synchronization and management capabilities for running branch applications. This edition includes core database features and is easy to upgrade to the Standard or Enterprise edition.
  • SQL Server 2008 Web. SQL Server 2008 Web is designed for highly available, Internet-facing Web-serving environments running on Windows Server. SQL Server 2008 Web provides the tools necessary to support low-cost, large-scale, highly available Web applications or hosting solutions for customers.
  • SQL Server 2008 Developer. SQL Server 2008 Developer allows developers to build and test any type of application with SQL Server. This edition features all of the functionality of SQL Server Enterprise but is licensed only for development, test and demo use. Applications and databases developed on this edition can easily be upgraded to SQL Server 2008 Enterprise.
  • SQL Server 2008 Express. SQL Server 2008 Express is a free edition of SQL Server that features core database functionality including all of the new SQL Server 2008 data types, in a small footprint. This edition is ideal for learning and building desktop and small server applications, and for redistribution by ISVs.
  • SQL Server Compact 3.5. SQL Server Compact is a free embedded database designed for developers and is ideal for building stand-alone and occasionally connected applications for mobile devices, desktops and Web clients. SQL Server Compact runs on all Microsoft Windows platforms, including the Windows XP and Windows Vista operating systems, and on Pocket PC and smartphone devices.

Just kidding, the more the merrier, our clients are entitled to a broader choice of features and prices.

Wednesday, August 06, 2008

Serializing problem

Well, not exactly a problem, more like an annoyance... a friend of mine was having some trouble deserializing a DTO from a web service he was consuming. The problem seemed to be related with an array of int being represented as an atribute. We reversed the web service assembly (yeap, we didn't have the sources but we it resided on the same server) and found the probable source of the problem:

myDTO.MyIntAsArray = new int[0];


Uhm, though not as I'd prefer, still clearly legal, right? The problem is how .NET handles this. On serialization, it doesn't seem to check it against null, and on deserialization it just throws an exception. Here's a sample:



        public class MyDTO
{
[System.Xml.Serialization.XmlAttribute]
public int[] MyCountlessIntArrayAsAttribute;

public int[] MyCountlessIntArrayAsElement;

[System.Xml.Serialization.XmlAttribute]
public int[] MyNullArrayAsElementAsAtribute;

public int[] MyNullArrayAsElementAsElement;
}


        [WebMethod]
public MyDTO HelloWorld()
{
MyDTO myDTO = new MyDTO();

myDTO.MyCountlessIntArrayAsAttribute = new int[0];
myDTO.MyCountlessIntArrayAsElement = new int[0];
myDTO.MyNullArrayAsElementAsAtribute = null; // just re-stating the obvious
myDTO.MyNullArrayAsElementAsElement = null; // just re-stating the obvious

return myDTO;
}



With this representation, here's what gets serialized:



<?xml version="1.0" encoding="utf-8" ?> 
- <MyDTO MyCountlessIntArrayAsAttribute="">
<MyCountlessIntArrayAsElement />
</MyDTO>



I won't argue of the fact that an array of 0 elements is not probably what we should use here, neither if an element is the best way to represent this array of int. One thing seems clear here, this is a .NET bug, and it remains since .NET 1.1 till .NET 3.5. So beware of int[] attribute representations :)



 



 

Sunday, August 03, 2008

Mac OS: the polite Operation System

One thing I like about Mac OS is how it kind of ask you permission to talk. When an application that doesn't have it's attention needs to communicate with you, the application starts jumping on the dock bar, almost like a student raising its hand asking for permission to talk.

Windows just brings up the message.

Summer of NHibernate Screencast Series

Here's a cool site with NHibernate screencasts and samples. Even if you already feel comfortable with NHibernate, you will probably have something to learn about alternative ways to make better use of NHibernate - I know I did :)

Development Catharsis :: Copyright 2006 Mário Romano