Apple has recently announced the long anticipated release 4.0 of their iPhone OS. The list of new end-user features is disappointingly short - the main item seems to be the addition of some GUI multitasking. Many important, easy to add and practical features, already found in the "jailbreak" versions are not mentioned. It is a pity Apple has such tight control on their product and that it takes so long to release productivity related features to the market. I am pretty confident than in a few years they will be punished by other players on the market.
Monitoring text log files is quite important activity in our day to day programming lives. Unfortunately, Windows operating system does not include convenient tools to perform the task by default. Nothing comparing to
tail -f or GNU
less is deployed with an installation of the OS from Redmond. Luckily, some free alternatives are available on the Internet.
I have recently installed Fedora Core 12 on my server box. It was an upgrade from Fedora Core 9 and I had to do an intermediate upgrade from 9 to 10, since direct transition from 9 to 12 is not supported. Aside from this small annoyance the process went through very smoothly. It looks like Fedora Core 12 supports an "in place" upgrade mode, similar to recent version of Ubuntu. That means that a new release of the system comes out, you don't need to create the upgrade media (DVD or a USB image), but can upgrade directly via your current session.
With arrival of WPF the usage of
INotifyPropertyChanged interface has expanded dramatically. The most annoying and dangerous part of implementing the interface is, obviously the fact, that you have to pass your option names as strings. This leaves your code prone to bugs - if in 3 months time you rename one of the properties, there is very good chance that you will forget to update the string name as well. In order to overcome the problem we can use some reflection and a little bit of boiler plate code. The good people of the Internet have done all the work for us already, so just copy, paste and enjoy!
It is nice to be able to blog about software. For instance, a few years ago I wrote an article about web development using C++. I still get a comment or two about it almost every week, despite the fact that not a single line of code has been written for the project, unfortunately. However, if I ever took the initiative and started working on it, I would, no doubt, write some interesting progress reports here as well. As things go, it would be very neat to show off some code in the process.
I have never suspected that Microsoft had this built-in, but it appears to be the case. Code generator called T4, which targets both C# or VB.NET, is built into your copy of Visual Studio and is available as you read this article. Basically, all you need is to add a new file to your solution with the extension
.tt, and that's it, besides from actually writing the code for the template.
For years I was server-oriented developer, quite often writing code for Unix environment and helping others to do so. However I never mind doing occasional user-oriented application or two. Lately I've been doing a lot of .NET GUI development using WPF (Windows Presentation Framework). A small task seems to come up quite often. If you have a GUI application, you usually want it to start in the same state it was left it when used last time. In particular this is true regarding its position and size.
Great new piece of software, recently discovered by me - Foxit PDF Reader. Just a few advantages over the standard Acrobat Reader: it's faster, simpler and, most important, it allows you to save data in PDF forms! Yes, the so much desired feature, that is not available in the free version of Acrobat is readily usable in Foxit absolutely free of charge.
I like Drupal a lot. It's a great system, easy to set up and use, and the most important thing, there are plenty of modules, which provide additional functionality. However, every time the Drupal development team release a new major version, the module authors have to change their modules in order to adopt to the new platform. This is a major drawback, because it is a considerable obstacle for those, wishing to migrate to the new version.