Saturday, August 19, 2006

Open source on Windows

I've been looking around at various open source IM clients such as GAIM and Miranda since I want to learn how IM clients are implemented. I downloaded the source for both and tried to compile both. GAIM is supported on multiple platform while Miranda is an Windows-only IM client. Compiling GAIM on Linux was basically running "make" and everything compiles. Compiling it on Windows was more complicated but GAIM has updated their site to include a script that will download all the various components that are needed in addition to the GAIM source. This made it a lot simpler to get a working compile, but even without the script the site had decent instructions on what was needed. For most UNIX/Linux open source projects except the most advanced and complicated, compiling the source code is pretty straight forward and it allows newbies to dive into the code.

Windows open-source projects, on the other hand, are different. The last few projects I've tried to compile were filled with problems. One problem is that there is no standard development environment for Windows. UNIX has the GCC suite which is open source and easily obtainable (if not already on the system) while Windows' primary development environment is the commercial Visual Studio tools. The developers themselves seem to not have standardize on a single platform. Miranda, for example, is developed on MingW by some and Visual C++ by others. Microsoft also doesn't make it any easier despite releasing the free Visual Studio express editions (which they admits isn't meant for windows development anyway).

Thus, my attempt to compile Miranda wasn't too successful (I don't normally do much development on Windows so I'm not as familar with it to begin with.). I installed Visual C++ Express only to find out that I also needed the Platform SDK. Once that installed, I still needed other things, but it wasn't clear to me where I get them. In the end, I wasn't able to compile my own working executable. I'm sure I'll be able to with a little more research, but it definitely takes a lot more work then on Linux.

While Microsoft talks about the importance of the developers, they really mean commercial developers. While they are doing many things to try to fend off open source competitors, they should really go back and do something OS vendors used to do (and UNIX vendors still do): include development tools as part of the OS.

Monday, August 14, 2006

Getting Linux to work in Portrait mode...

This weekend I swapped out my 17" LCD (Dell 1705FP) with a 19" (Dell 1905FP) version that can be used in portrait mode. There is not particular reason why I used the portrait mode other then desktop space. I first tested it in Windows and it was just a matter of plugging it in and then using the Nvidia control panel to set the rotation to portrait.

I then switched over to Linux (Fedora Core 5) and ran into a few snags. There was a dependency conflict between the latest nvidia driver and the kernel I had installed and so the system was starting up with just the native nv drivers. Once that was resolved, I realized that the Linux version of the control panel didn't have the options that the Windows version had including the ability to rotate. It took awhile, but with the help of a friend and Linux guru, i was able to get Linux to go into portrait mode.

First, to get the Rotation option to appear in the Nvidia control panel, I had to add to the Device section:

Option "RandRRotation" "on"

This gave me the option to change the location once I log in, but the problem is that until I do everything appeared in landscape mode so I would have to tilt my head 90 degrees in order to log in and get to the contral panel.

Digging around the Nvidia drivers appendix, I found the option to have X rotate automatically on startup:

Option "Rotate" "left"

This did the trick and I now have less strain on my neck, but then I noticed that things were a bit off on the screen. I realized that Linux was running the driver at 75hz refresh rate which is supported by the monitor but LCDs run optimally at 60hz. I had selected the right monitor, but checking the /etc/X11/xorg.conf file, the monitor section have a range for the VertRefresh rate up to 76hz. This is ok, but Linux only used 75hz and didn't let me select anything different. Even when I modified the VertRefresh to just 60, it still used 75.

Again, my friend came to the rescue and suggested I added the following to the Device section:

Option "UseEdidFreq" "false"

Restarting X and all was well. ^^b

I'm still getting used to having my monitor taller then it is wide, but the only troublesome thing is finding wallpapers for it!

Tuesday, August 8, 2006

MS doesn't want you to code for Windows?

I like the idea that Microsoft decided to release the express editions of their development tools for free to encourage people to program on Windows (although this doesn't mean I like Windows). I thought it was a smart move for them to lower the barrier to build for the platform since the other alternatives are gcc and mingw which are both very nice but not the easiest to use for newbies. Then I discovered that if you install the express edition, you can't actually write any native windows application.... Huh???

Instead, one has to download the Microsoft Windows Platform SDK seperately before you can use VC++ Express Edition to write Windows program.

Tuesday, August 1, 2006

Web 2.0?!?

The Web has gone through many cycles but there seems to have always been two main groups that influenced it's direction: engineers and publishers. The web started out as static content but it was originally a realm of the engineers who learned HTML and coded everything by hand. To publish something, you need to understand computers and possibly had to set up your own web server.

As it grew it fell into the publishers' hands as they started investing into online business. A lot of early commercial sites were simply online publications where the layout reflected that of magazines and newspapers. I wonder how much real growth in the industry happened during this time other then that the web go prettier?

The next cycle shifted back towards engineers as they transformed web sites into web applications. This is when the web really became "useful" and began to be part of our daily lives. Now the web isn't just for looking at information, it allowed us to find information. We didn't just read financial news on the web, but now we can trade stocks on the web.

I think now we might at another transition point. The web as an "application" is more the norm then a new idea. It's a proven commodity and that means the publishers are now wanting to get back on board and take over. The result is that they've coined the term "Web 2.0". Web 2.0 seems to me that it's just publishers saying that they want to be the ones putting stuff on the Web. I'm not necessarily opposed to it, but Web 2.0 has nothing to do with technology.
As Yahoo! rolls out their new homepage design, I've been asking various friends what their thoughts are on the new look-and-feel. The reactions has been mixed although none have been outright negative. Initially, I thought that those who didn't like the new look was because it was such a big change and change is not always welcomed. Some things aren't necessarily the best, but they work and people can get what they need out of them without much thinking.

After awhile, I started to ask myself why is it that I liked the new Yahoo homepage and while there are many different reasons, I thought that maybe one of the reason is that Yahoo homepage is beginning to be more of an "application" then an online publication.

As a software engineer, I like building applications and I'm not so inclined to build online content. One is a problem that challenges me while the other is equivalent of data entry (remember that this is from the perspective of engineers who aren't being paid to be creative writers so they are usually handed the content from "writers" and are told by non-engineers to "implement" the articles).

I guess I'm saying that I liked the web initially because it was more about programming (software engineer). Then it became more about content layout and it got boring (web developers). As the balance went back towards programming and application, it became challenging again (frontend engineers).