The thing about open source by Bijan Sabet

I think we need to aim even higher with open source movement. It’s not just about an open source version of Photoshop or Windows or MS Office. It has to be bigger and more ambitious than free and open. It has to be better.

I’m a proponent and critic of man Open Source Projects. Some projects like PHP, Perl, Apache, Linux, MySQL, are very successful and provide very capable solutions to enterprises and small businesses.

Other projects like GIMP and OpenOffice are a disappointment. They are poor alternatives for the products they are meant to replace. They are the “poor mans” software. The poor deserve better.

My switch to OS X was not done lightly. In the summer of 2005, Apple released the mac mini. At that time they had not yet made the switch to Intel processors and were not as much in the spotlight. I had always wanted to try OS X, especially after hearing about it UNIX roots (FreeBSD). The Mac mini was lightweight compared to Apple's other offerings (512MB RAM, 40GB disk, 1.42GHz PowerPC G4, Bluetooth, 802.11g, keyboard and mouse required) but at $599 it provided a low-risk way to try a mac. With a $200 certificate my total investment was $399. I upgraded the memory to 1GB at the local CompUSA for $99.DSC00014.JPG

When it came, I excitedly unpacked the computer from the very tiny box in which it shipped. I still do not understand why, in the era of 3lb laptops, desktop PCs are still the size of large toaster ovens. The Mac mini is the size of 5 stacked CDs. Apple took a computer and folded it into a different shape.

I loved the OS X user interface. Some of that was the newness, and some were a real joy. Everything was easy....once I got the Windows thinking out of my head. Installing/uninstalling software on OS X is usually a drag and drop process. Double click to mount the provided disk image and drag the application icon to the Applications folders. To uninstall, drag the icon to the trash can. This is the way I always thought this process should work and the way most naive computer users expect it to work.

Apple certainly does a lot of behind the scenes stuff to hide the complexities of the OS and make it get out of the way of the user. But......I had bought this computer for the UNIX stuff. I launched terminal and was happy to find Perl, PHP, GNU utils, and all my other open-source favourites. I found out that OS X makes a great AMP stack since it ships with Apache and MySQL. These are easily enabled via the "System Preferences" applet. I found out I had support for X11. I downloaded and installed NeoOffice, a port of Open Office for OS X. I discovered Fink and FinkCommander for downloading and installing stuff that I would have used apt-get or yum if I was on GNU/Linux. I downloaded and installed the Eclipse IDE for development. I installed X-Code from the Apple CD so that I had a C compiler and a full development environment.

Suse Linux Enterprise Desktop on VMWare on Mac OS-X In other words I realised I had what for me is the Holy Grail. I had an OS with the tight integration of Windows (there are lots of benefits to this ) and the freedom to a tinkerer of GNU/Linux. I feel that I have the best of both worlds. Yes, there are a lot of Open Source applications available on Windows, but with OS X inheriting code from FreeBSD, it has the advantage that most of what I want can either be compiled or has already been ported.

Last summer, I used some reward money from my employer ( monetary award for some forensics data collection I completed for security ) I bought a second mac; an Intel-based MacBook which has become my main computer. I purchased my first piece of OS X software ( free software roots run deep ); a virtual machine software called Parallels. I can now run Linux and Windows (XP and Vista). Parallels have a feature called "Coherence".

"With Parallels Desktop for Mac you can now run all the applications you need without switching between Windows and Mac OS X! Coherence, a new feature built-in to every copy of Parallels Desktop, shows Windows applications as if they were running natively on your Mac." - Parallels web site

2006.09.14-21.50.08.png I no longer have Linux at home. I use Linux and Windows only at work. My last remaining Windows computer ( actually my wife and kids each have a Windows computer) was converted to a network storage device running FreeNAS. FreeNAS is a BSD based Network Attached Storage software package that supports CIFS (Samba), Apple File Protocol (AFP), FTP, SSH, NFS and RSYNC. I downloaded an ISO, booted, answered three (3) questions, rebooted and had a NAS. Where's Linux?!

So yes, I swapped out one proprietary OS for another. But....given that OS X is FreeBSD based, given that the base code for OS X is available as Darwin, I can not think of what Apple can do to lock things up that someone with the code won't find a way around it. In fact it is already happening with OSX86project:

Programming, Code, Coding, Programmer, Javascript

I inherited a number of Perl, shell, and TCL scripts that produce reports from web proxy logs.  The web proxies are scattered around the planet.  Each day at midnight local proxy time the compressed logs are exported to a centralized repository.  A set of CRON jobs executes the main script that takes as argument the region and date of the date of the log to be processed.

Since the logs are exported as compressed file and each region has two or more proxies, the main processing script must first combined the compressed logs for each region.  Once that is done several other scripts are called in turn which produce various reports such as top domain and top user. These scripts call other scripts which call other script….You get the idea.

The scripts had no error reporting so my first task after taking over from the consultant who wrote them was to add echo statements and some simple checks for exit status.  The shell scripts all use similar information on file locations, etc.  Instead of hard coding this information into each script I created another shell script that contains all the environment information.  Making a change to one script requires making a change to several others.  Messy. And time consuming.

I have decided to rewrite the whole bloody mess to do better error reporting, to put all the processing into one location, to make use of date types that do not exits in bash, and to practice my Perl.  Of course in typical hacker fashion I have started coding even before I have an architecture worked out.  I tend to keep all this in my head.  This does not always work out well especially when the problems require thinking in depth.