All you need is a hammer

Battery pack instructions for idiots

 

 

Battery pack instructions for idiots

Comments

My first "Hello World" app for Android

My first Android app

Comments

The Weirdest Error I`ve Ever Seen

Today, while tweaking a web application that my lab has been working on for the past year, I got this weird error in Google Chrome.

Google Chrome Error Screenshot

That`s the most unhelpful error message I`ve ever seen and it doesn`t even begin to explain where the problem might be.  After going through all the steps suggested by the "Learn More" link (http://www.google.com/support/chrome/bin/answer.py?hl=en&answer=95669) I ended up reinstalling Chrome and the error went away.  Just goes to show, no one is perfect, not even Google.  Now I can use that as an excuse to write crappy software.  Awesome!

Comments

Technology Rocks!

House, MD really is the best show on TV.  Last night I watched the latest episode on Hulu and it mentioned cognitive pattern recognition software.  I ran a few searches on the subject and it turns out that there is a lot of fascinating research going on in that area.  Technology seen in "House" is far more advanced than anything that currently exists, but after reading a few research papers on the ongoing projects, the real deal does not seem to be too far away.

 

Alternatively, you soon you`ll be able to record your dreams.  Technology rocks!!!

 


Comments

Designing Storytelling UI

Between my full-time job, raising my daughter, my photography business and grad school, I realized that I still had way too much free time on my hands.  So I decided to occupy myself with yet another project. 

As a photographer I have often struggled to find a good way to present my images as a story in a meaningful fashion.  It seems like today slideshows are a way to go, but the problem with a slideshow is that it’s too linear and offers limited interactivity.  In 2007, Jonathan Harris did a great job on his experiment with storytelling with a photo essay on Inupiat Eskimos’ whale hunting.  However, while Jonathan’s storytelling UI is great, I still found it a bit limited when it comes to telling stories that branch out, or stories that run in parallel to each other.

For the past few months, I’ve been going through the photographs I took for my Chernobyl documentary - a few of them can be seen on my photography website or on Flickr - and I realized that I really had three stories going at the same time.  Unfortunately, all of my attempts at designing a good and intuitive UI have fallen short of a good storytelling experience.  

That is why I would like to turn to you guys – if you went to a news website and wanted to look through a long photo essay that told multiple intertwined stories, how would you like to see it?  What type of navigation would you find intuitive to use?  What features would you like to see?  Do you have examples of websites that provide at least some of good storytelling functionality?

I would really appreciate if you could email feedback and you suggestions to dbabichenko@gmail.com

Comments

Closed systems

A few weeks ago I was approached by a potential client who asked me to develop software that analyzes images produced by digital CT scans.  In order to give him an estimate, I needed to figure out how much work would be involved creating all the required functionality, and if it would even be possible to do with a “slow” language such as Flex/ActionScript (the client wanted an interactive web application).

Luckily (or rather unluckily) I had a CT scans done fairly recently, so I contacted the radiology department at UPMC Presbyterian and requested a copy of my scans.  A day later, I stopped by their office and picked up a shiny CD containing some seriously spooky images of my skull.

At first, I was pretty excited.  I figured that I’d just pull all images from the disk, group them into proper views and try to write a quick-and-dirty algorithm that would compare appropriate images and mark difference between them.

As soon as I popped the disk into my MacBook Pro, my enthusiasm quickly began to evaporate.  There were no images on the disk, or at least I could not find any by browsing through the folders.  The viewing software included on the CD was for Microsoft Windows only, and since I did not want to wait to get to my office, I had to install a Windows 7 virtual machine on my Mac.

My CT Scan

 

My CT Scan


A couple of hours later, I was finally able to launch Phillips iSite Viewer, the software that came on the CT scan disk.  After another 20 minutes of poking around, I found out that there is no way to batch-export all the images – the software only allows you to do export images one-by-one.

Becoming increasingly frustrated, I ran a few searches on Google and found that I wasn’t the only one with this problem – lack of a MacOS version and an open file format have made Phillips iSite Viewer pretty much useless for quite a number of users/developers.  What’s even worse is that Phillips’ proprietary format prevents industry standard applications such as OsiriX from viewing CT scans from Phillips CDs.

I sent 4 emails to Phillips and did not receive a response. 

I understand why companies develop proprietary systems to protect their intellectual properties.  However, in this day and age, it seems pretty silly to cut out developers from building on top of your company’s product. 

I firmly believe that Apple’s policies on iPhone apps and the fact that users cannot upgrade hard drives and RAM in new unibody MacBook Pros will hurt Apple in the long run.  Similarly, all the current online e-book stores selling DRM’d books will learn their lessons the hard way. 

No matter how great the hardware is, if companies refuse to provide scalable software to go along with their products, they will eventually start losing users to more flexible systems.

 

 

Comments

The Power To Change Content

As a web developer I often find myself struggling with the following dilemma – how much power should the end user have over the look and feel of the applications that I develop. 

Most people would shrug this off as a non-issue.  After all, why should I care about a web application after I turned it over to my client?  I did the work, I got paid, I am done!

Two days ago I decided to look through and update my web design/development portfolio.  I looked through a list of applications that I have built over the last 10 years and thought it would be great to see if the websites that I created are still up and running. 

I was shocked to find out how many of the companies that I worked with are no longer in business.  What shocked me even more was how horrible some of the websites that I designed look today.  Before you accuse me of being a bad web designer, let me just say this – the aforementioned web applications looked good when I handed them over.  The mistake that I made was giving my clients too much power over content.

In mid-1990s, when the Internet became the next best thing since sliced bread, everyone decided that they needed a web page.  Anyone with access to Microsoft Front Page and a couple of horrible animated GIFs suddenly became a web designer.  Overnight, the system that was designed for sharing knowledge and information became clogged with spinning icons, blinking fonts and obnoxious colors. (Homer Simpson`s Homepage)

The amazing thing is that most of those monstrosities’ owners do not have bad taste.  I’ve been to homes of some of my friends, co-workers and professors who created green and pink blinking web abominations and did not see plastic sculptures, hula dolls or ugly garden gnomes that would indicate complete lack of aesthetics.  However, when it comes to the web, people tend to have this notion that if you use bright colors and giant blinking fonts you are more likely to get your message across. 

The really sad thing is that people’s tastes did not seem to improve over the past decade and a rather large percentage of website owners are still trying to convert the Web into a Las Vegas casino (read garish, loud and obnoxious).

Case in point – about a year ago, my business partner and I designed a very nice, understated and elegant website for a client.  Unfortunately I cannot include screenshots of the original (or the current) website since I don’t want a lawsuit on my hands.  But take my word for it, the website was top-notch.  The one mistake that we made is that the custom content management system that we developed to go along with the website allowed site’s administrators to change font size, family and color. 

They (the website administrators) took this as an invitation to change things like


Customer Testimonials

to

Customer Testimonials


After the aforementioned geniuses were done with the content, the entire website looked like the paints section of an art supplies store exploded all over my screen.  For a few seconds, I wanted to shut down my web browser for the fear of an epileptic seizure.

Once again, why should I care?

The first and foremost reason for caring is very selfish – with the way the website looks now I cannot use it in my portfolio – no employer or client in his right mind would hire me after looking at what has become of my work.

Secondly, the way this website looks might prevent me from getting freelance referrals.  The company that maimed my web application is well known in Pittsburgh.  Sadly, they think that their website looks good and they brag about it at conferences and trade shows.  When people find out that I was the one who created it, I doubt that they’d want to work with me.

Finally, my business partner and I put two months of work into that web application and it is really upsetting to see what some talentless hack did to our efforts.

Just look at the difference between Facebook and MySpace.


Facebook – clean, professional, easy to read, easy to navigate

Facebook screenshot

MySpace – Garish, unreadable, impossible to see navigation, f***ing ugly!!!

MySpace Screenshot


Tom Anderson and Chris DeWolfe, creators of MySpace, probably cringe every time they see something like that.  They have unleashed a monster that has grown and mutated in something that in most cases is truly offensive.

Now, let me ask again – should developers give clients/end users full control over content?

From now on, I think that in most cases my answer would be a big, resounding NO!

And if you think that I am wrong, just click on the links below.

http://belladesoto.us/
http://www.lingscars.com/

Comments

(e)Books

Amazon Kindle

The legend has it that a few years ago someone asked Steve Jobs if Apple is planning on entering the electronic book market and that Apple’s CEO allegedly stated that “since people don’t read anymore, there is no point”.

If the aforementioned tale has a grain of truth, for once (or twice) in his life Jobs might have been wrong. 

After a few initial stumbles, it seems like the electronic books market is finally taking off.  As of April 2009, Amazon sold 300,000 Kindle 2s, and a few days before this year’s Black Friday Barnes and Noble’s “nook” was sold out completely.  While reader devices’ sales figures have a long way to go before they catch up to iPod, at some point Mr. Jobs might regret his decision to stay away from electronic books.

When I purchased my first Sony PRS-505 eBook reader, my friends thought that I was slightly insane.  I had people come up to me on the bus, in coffee shops and in airports, asking me about the magic device that I was holding in my hands.  Now, while not quite as ubiquitous as their venerable paper siblings, electronic book readers are popping up all over the place. 

Amazon’s Kindle, Sony’s line of eBook reader devices, and Barnes & Noble’s strangely named “nook” are a huge leap forward compared with the first few generations of clunky and barely usable devices.  However, are they really good enough to completely replace their paper brethren?

An average entry price into the wonderful world of electronic book readers is about $250.00 – a pretty big chunk of change.  If you think that it will pay for itself because you will stop buying paper books, you are in for a surprise.  On average (at least in my experience), you only save about 20% by purchasing an electronic copy vs. a paper book.  Let’s assume for the sake of argument that if you only read hardcover editions and save $5.00 to $7.00 on the cost of each book by buying the e-version, you would need to read 35 - 50 books before you break even.  Even taking into account that most people who buy these gadgets read a log, it might take you a good year or two to recoup your investment. 

Of course, two years from now eBook devices will not only allow you to read books, but will also boast videoconferencing, web-browsing, music-playing, TV-watching and butt-wiping capabilities, so you’d probably want to buy a new one anyway.

There are quite a few resources for free (public domain) books – Google books (http://books.google.com), Project Gutenberg (http://www.gutenberg.org), or helpful sites such as Fried Beef’s Tech.  One way to get decent sneak-peaks at the new stuff is to sign up for Tor’s mailing list (www.tor.com).  Tor is a publishing company that often gives away free PDF manuscripts of their authors’ work.  Alas, if you are looking for the latest bestsellers by Dan Brown or Stephen King, you’ll have to shell out the dough. 

I’ve owned Sony’s PRS-505 for about 2 years now.  It is a great gadget, although in this day and age using a 2-year-old digital device is akin to driving a T-model Ford.  I use my eBook reader a lot, but I still buy quite a few paper books.  I love going to bookstores, browsing the shelves, touching the spines of books, inhaling the smell of paper and ink; downloading books from the web somehow takes away from that experience. 

What bothers me the most about the current eBook market is that the major players have not learned anything from the multiple DRM fiascos of the music industry.  I bought music from iTunes once and when I realized that there was a limit on how many devices I could play it, I refused to buy anything from iTunes until they started selling DRM-free MP3s. 

I have a fairly extensive collection of paper books, probably somewhere around 500 to 600 volumes.  Some of my books are well over a hundred years old, and I can still read them.  Would that be the case with any electronic book that I purchase today?  Probably not.   As a matter of fact, even in the short period of time that electronic eBooks have been commercially available, the industry went through at least a few dozens of file formats.   Over the years, I have accumulated quite a large eBook collection, but before I purchased any electronic book, I always made sure that I had access to some type of conversion software that would allow me to convert publisher’s proprietary format to plain text, or at least to the ubiquitous PDF. 

I love the idea of having a slim device that will hold hundreds of books.   I really hate the idea of buying books that my daughter might not be able to read 10 years from now.  I really wish that instead of staging device wars and investing millions of dollars in developing online stores, the burgeoning electronic book industry would take a look at the last 10 years of DRM struggles and lawsuits within the music industry and at least attempted not to repeat the same mistakes.

Comments

FlashPitt 2009

Last Friday I finally got a chance to get away from software development and photography and do something different.  I attended the FlashPitt 2009 conference.  This is the second time this conference runs in Pittsburgh, and it is really great.  Even if you are not a Flash or even a Web developer, you can find inspiration from some of the presentations no matter what your profession is.

My favorite presentations were by Josh Sager (http://joshsagermedia.com/blog/), Ian Coyle (http://cargocollective.com/IanCoyle)  and Dan Mall (http://www.bigspaceship.com/).  I took a ton of notes, book-marked a few absolutely amazing sites and got a few ideas for future projects of my own. 

It is a shame that Pittsburgh does not host more of such conferences – normally you have to go to Boston, New York, San Francisco, or at least Baltimore/Washington, DC to actually exchange ideas with like-minded individuals.  Pittsburgh does have a great Flash Users group (http://pittmfug.blogspot.com/); unfortunately, they only meet on Thursdays and this semester I have a class that night. 

I really wish that once in a while conferences such as FlashOnTap (http://www.flashontap.com/) or Small Press Expo (http://www.spxpo.com/) came to Pittsburgh.  

Alas, lack of interesting conferences is the price we pay for the low cost of living.

Comments

Microsoft vs. Java

Microsoft vs. JavaMany people hate Microsoft and they have good reasons for doing so.  After using Microsoft’s products for close to 20 years I am still continuously baffled by horrible UI decisions and lack of quality control.

As a PC user, I long ago realized that the only way to deal with constant issues brought forth by Microsoft’s products is simply to avoid them.  About 5 years ago I installed Fedora Linux on my laptop; 3 years ago I bought my first MacBook; 3 weeks ago I bought a MacBook pro.

Unfortunately, my professional life requires me to deal with Microsoft’s shortcomings on daily basis.  The software development lab where I work is a pure Microsoft shop; I am deeply ashamed to admit that we even use Microsoft SharePoint.

For the last 3 years I’ve been doing .Net programming and kind of developed a love-hate relationship with both ASP.NET and .NET framework.  Rapid prototyping and fast development are so easy if you are using standard .NET controls.  You can build sophisticated applications in weeks instead of months; bosses love it, clients adore it and newbie programmers think that it is the best thing since sliced bread.

Everyone loves .NET framework until they start testing their shiny new web applications in web browsers other than Internet Explorer and realize that the report that they created using .NET grid control in 2 minutes does not render the same in FireFox; the cool AJAX control from Microsoft AJAX toolkit does not work right in Safari; the StringBuilder class concatenates strings in “utf-16” encoding which most XML parsers cannot read.

At that point one’s love for .NET quickly turns to hate.  It takes weeks, if not months to rewrite those AJAX controls because simply fixing them is not an option; they are “black boxes” and no one knows what makes them tick.  Your boss hates you because it took you three days of frantic CSS coding to make that report look the same in every browser.  Your clients refuse to talk to you because they are pissed off that the XML you promised them was unreadable.

To sum up, Microsoft sucks.  Even if you are forced to use their products and their development environments, I highly recommend avoiding their build-in controls like the plague – it might take you a bit longer to develop your own controls, but at least you’ll know how they work and what the code looks like.

There are a few things that Microsoft got right.  Over the years, I have worked with pretty much every major relational database in existence, and Microsoft SQL Server is by far my favorite.  Another thing that Microsoft really got right is their implementation of web services.

For those who don’t know what web services are, read a highly technical and confusing article on Wikipedia (http://en.wikipedia.org/wiki/Web_service). Recently, I had to develop a series of web service-based API (Application Programming Interfaces) for a web-based application that my lab has developed.  As part of this project I had to write examples in all major web languages (ASP, ASP.NET, PHP, Perl, Java, Python) on how to consume the web services and integrate the data that they provide with various LMS (learning management systems).  Prior to this project, I have only worked with web services in .NET and have always assumed that since SOAP has been pretty much ubiquitous for a number of years other languages and platforms provided good libraries and API for calling external web services.  Boy, was I wrong.

ASP.NET, Classic ASP and PHP were easy – I wrote examples for all three languages in under an hour.  When I started on a Java example, I hit a wall.  Now, let me admit that it’s been years since I worked with Java, and even then I never wrote any large serious projects in that language.  I asked every Java developer I knew about consuming a web service and no one seemed to know how to do it.  I found a bunch of examples on the web, and managed to get them to work on a Linux machine using Apache libraries, but could not get it to work on my Windows desktop to save my life.  That’s when I began to feel some sympathy for Microsoft.  I still don’t like them much, but at least they are not claiming that .NET framework is cross-platform and anything written on a Linux will work on a Windows or a Mac computer, and vice versa.  I realized that Java sucks as much as .NET and that Sun sucks as much as Microsoft.

Come to think of it, programming sucks in general.  Unfortunately, there are no perfect programming languages – they all have their shortcomings and advantages.  I also realized that I got into programming because I love to solve problems.  Unfortunately, 12 years later, I rarely get to work on challenging problems.  Very few companies are willing to pay someone to kick around ideas and see if something sticks.  Almost no one wants to write a check to figure out if you can do something; money changes hands only when the person with the checkbook is assured that they’ll see desired results.

I need to get a job with Google – I hear they actually let their programmers think.

Comments

Joys and Sorrows of Mobile Computing

A few weeks ago my friend Svetlana sent me her Joy of Not Working manifesto.  While I would love to be independently wealthy I am still not at that stage in my life when I could quit my day job, stop developing software and photographing weddings and travel the world with my wife and my daughter.

 

Just like everything else in this world, working as hard and as much as I do has both benefits and drawbacks.  Having a day job and a photography business allows my wife to be a stay-at-home mom and will allow me to give my daughter every opportunity to advance in life when she is older.  It also allows my wife and I to take a few really amazing trips every year.

The darker side of being a workaholic means that I have less time to spend with my family.  More often than not, I would leave for work at 7 AM, come home around 4 or 5 PM, grab a quick dinner and spend another 2-4 hours editing photographs from a previous week’s wedding or bar mitzvah.  On Saturday I would photograph another event, spend Sunday with my family and start all over the following Monday.

A few weeks ago Pittsburgh got hit by a pretty bad thunderstorm and my house was flooded.  Since my editing room was in my basement, both of my desktops got damaged by water.  Luckily, I keep offsite backups and I did not lose any data.  With my desktops gone, I had to move my photo editing to my 3-year-old MacBook. 

At first, I was a bit worried – I’ve always edited my photos on a top-of-the line desktop with lots of RAM and a large monitor.  To my surprise, I found that editing photos on my laptop tremendously sped up my workflow.  I was able to go through thousands of photographs from one or more events and delete the bad ones while commuting to and from work.  I was doing color-correction in Adobe Lightroom on my lunch break and during especially boring meetings.  I edited in Photoshop while waiting for my baby daughter to fall asleep.  I would set the laptop on my night stand and start large batches such as exporting raw files from Lightroom to JPEG before going to sleep.  The only time I connected my laptop to my 24-inch monitor is when I needed to do some precise Photoshop surgery.

All of a sudden, I had hours and hours of free time, time that I could spend with my family.  I no longer had to sit in my basement and miss my daughter’s laughter just so I could sift through thousands of photographs.  The flood that destroyed my basement office turned out to be a great thing.

As much as I loved my new mobile workflow, my laptop was really too old and too slow to run “heavy” applications such as Lightroom and Photoshop.  I needed something better.  When I told my coworkers that I was planning to buy a top-of-the-line MacBook Pro, most of them told me I was nuts to spend over $2000 on a laptop.  A few days ago I bit the bullet and coughed up the money.  Now I am a proud owner of a brand-spanking-new MacBook Pro.  Today I edited a wedding on my new laptop and I’m loving it.  And while $2000 is a hefty price tag for a laptop, it’s definitely worth it to me because it buys me more time with my family.

P.S.  Macs rock!

 

Comments

Migrating my blog

Today was an incredibly productive day - I finally moved this blog onto it`s own website.  For the past year, this blog has resided under the umbrella of my photography site (www.wideopenlens.com) and evillens.com simply redirected to a subsite of wideopenlens.  Another problem with that setup was that my website was not being picked up by search engines.

Finally, I broke down and bought another hosting package from GoDaddy.com and migrated my blog.  Part of the migration involved rewriting the original blog in PHP since I`ve been trying to move away from .NET for a while.  I am still having a few issues that need to be resolved - when the content was moved from Microsoft SQL Server to MySQL, some data got corrupted.  Unfortunately, those things would have to be fixed manually, so over the next few days I`ll be going through my old entries by hand and fixing weird characters and vanished line breaks.  I`ll also be adding two new sections that deal with a few projects that I have been obsessing about over the last few years.

I will also be improving blog search functionality by adding a "category" filter and search term highlighting.

Comments

Linux vs. World
We all know that Macs are the best – they are the bee’s knees of personal computing. We also know that Windows Vista stinks – it does not feel finished, it’s incredibly slow, and it’s idea of tight security is to ask the user about 20 times “Are you sure you want to do this? You might get a virus!” That leaves us with Linux. As a programmer, I develop about 35% of my code on Macs and about 65% on Windows. My primary computer for my photography business is a Mac. About 3 years ago I ran Fedora 6 on my Dell laptop, mainly so that I could do some Perl and PHP development under Apache web server. I’ve always had a love/hate relationship with Linux – on one hand it’s free and a lot more secure than any version of Windows. On the other hand, it is a pain in the ass to use if you want to do almost anything outside the default installation and a handful of polished applications. I still have nightmares about setting up the wireless card in my laptop – I had to go through the whole shebang of using NDISwrapper with Windows drivers and finally giving up and asking for help from a friend who is a Linux systems administrator at the Carnegie Mellon University. When I finally got my MacBook , I happily closed the door on Linux, hoping not to deal with it until it becomes more mainstream and better supported. A few days ago I needed to set up a desktop to run some tests. I grabbed an old Dell computer out of my basement, downloaded Suse 11 and was up and running with Linux in less than an hour. At first I was pleasantly surprised – the installation went off without a hitch. The only thing that Suse did not recognize was the wireless PCI card (I did not have any free ports left on my switch, so I was trying to get desktop online using a wireless Ethernet card). After two hours of tinkering with NDISwrapper and not being able to get it to work properly, I finally unplugged my backup server from the network switch and plugged in the cursed Suse Linux desktop. My next step was to install a BitTorrent client since I needed to download a few large files. I tried installing Azureus, my favorite torrent application, but it refused to run telling me that I needed to install the Java runtime environment first. I downloaded JRE and after doing a search on Google on how to run .bin files, an hour later I had Java running on my desktop (the install failed twice without giving me a reason). Then I spent another 15 minutes trying to add Java to PATH, so that other applications would be able to find it. Finally, I tried running Azureus again, and it failed, without giving me a specific reason. The point of this long and boring rant is quite simple – you get what you pay for. Linux is free, but it is a lot less polished than other (commercial) operating systems, there’s less incentive for developers to create better applications and the support is limited to nonexistent. I’ve worked in IT for 12 years, and it took me about 3 hours to set everything up, only to see the application that I really needed fail. My time would have been better spent programming or editing photographs or reading or watching TV. Or napping...
Comments

Things are not as well-made as they used to be...
As a professional photographer I heavily rely on batteries of all kinds. When I get ready to photograph any given event, I always bring 10 sets of rechargeable AA batteries (that`s a total of 40 AA`s), 6 Canon BP-511 dSLR batteries (two for each camera) and two battery packs - a Canon pack that uses 8 AA`s and a high-voltage Sunpak TR-2000. Few people realize how expensive camera batteries are. The Canon BP-511 that`s used in all 3 of my dSLRs costs $50.00 - that fifty dollars for one battery. I tried buying no-brand substitutes on eBay, but they tend to stop holding charge after about 6 months of use. A few weeks ago I decided to try an Impact substitute for BP-511 because it`s a well-known brand and it costs $15.00 cheaper than its Canon counterpart. This is what happened when I tried to charge the new battery
Comments

Some things should be left alone
Today on my lunch break, while browsing articles on Digg, I came across a story on New Scientist Tech about a neckband that translates thought into speech by picking up nerve signals. The device has been developed by Texas Instrument in conjunction with Ambient Corporation. According to Michael Callahan, the co-founder of Ambient, the band’s primary goal is to make cell phone conversations more private. (Read article here) While the idea in itself is pretty neat and, needless to say, the technology behind this device is absolutely amazing, some inventions should never see the light of day. And this is one of them. I am not a conspiracy theory nut, nor am I a paranoid nerd sitting in my mom’s basement, looking for ways to thwart the governments’ attempts to probe my brain. And even though I am a staunch believer in technological progress, I’d be the first to admit that sometimes progress simply for the sake of progress is a bad thing. Let’s assume that in a year or two this neckband hits the market and we’ll see fewer people in public places who annoy the hell out of everyone by talking loudly on their cell phones. That would be great, wouldn’t it? Now think about what would happen if someone expanded that technology to scan nerve signals of anyone who happens to be nearby? That would truly mean the end of privacy. Who needs phone tapping if you could sit outside of someone’s house and listen to their thoughts? This argument might seem childish and simplistic, but the scientists who participated in the Manhattan Project probably created the nuclear bomb just to satisfy their scientific curiosity. Surely, they had good intentions and were probably assured by their military superiors that the bomb would only be used as a deterrent to other superpowers. Unfortunately, as we’ve been brutally taught so many times, the road to hell is paved with good intentions. Whenever someone invents a device that could potentially backfire, it is often difficult to make an objective and ethical decision about whether or not that invention should see the light of day. As a software engineer, and as a vain human being, I can understand the ego trip and the satisfaction of making a name for oneself. To be honest, I don’t know where my morality would go if I invented a nano robot that could clean cholesterol-filled arteries of an obese patient, but could also be used to shred the arteries of an enemy soldier. The more I read about modern research in artificial intelligence, medicine and robotics, the more I become convinced that Terminator scenario is not so far-fetched, and judging by the exponential rate of the growth of modern technology, not so far away.
Comments

The Open Source Problem

I recently posted an essay on my website titled "An Ode To Mac". The essay simply reflected my awe for Apple, it`s attention to detail and the wonderful user interface design. I simply wanted to share my satisfaction with a particular product; what I did not expect was a number of emails sent to me by people who took my article as a personal insult to their love for Open Source software. One person berated me for buying into Apple`s "corporate bullshit advertising" and helping development of "heartless capitalism" by spending my money on something that I could get for free.

Now, let me say this – while I like not having to pay money for software (who wouldn`t), and I make a lot of my own source code available online to other developers I am very much against what a lot of today`s Open Source software amounts to. Let me clarify - I am all for code sharing and, for example, would love to see the source code for Windows and Mac OS just so I could play with them. However, I deeply dislike the idea of software being given away for free.

Why?

Because it is killing programming as a profession. Because it is turning software development into an after-work hobby for people who have other sources of income. Because it has the potential of eliminating thousands of jobs - after all, who`d want to pay for software if you can get it for free? To better explain my point, let me give you a brief overview of the history of the Open Source movement.

The free/open source software movement began in the 1960`s. The small "hacker" communities from universities such as Carnegie Mellon and MIT passed their code back and forth between their members - if someone made an improvement he or she were expected to submit your code to the community of developers. To withhold code was considered impolite at the very least - if you benefited from the work of your friends, you should return the favor. It was in this environment that Richard Stallman began his computer science career in 1971 at the MIT AI lab. Stallman worked primarily on a proprietary operating system designed to run on the DEC PDP-10. Once DEC systems were discontinued and many of Stallman`s colleagues ended up leaving academia for the private sector Stallman began his work to resurrect the community in which developers could freely exchange code. He came up with the following specifications of what truly free software should be.

  1. Run the program, for any purpose.
  2. Modify the program to suit their needs. (To make this freedom effective in practice, they must have access to the source code, since making changes in a program without having the source code is exceedingly difficult.) They must have the freedom to redistribute copies, either gratis or for a fee.
  3. Redistribute copies, either gratis or free.
  4. Distribute modified versions of the program, so that the community can benefit from your improvements.

To ensure that his code would always be freely modifiable and distributable Stallman created the GNU General Public License (GPL); this license specified that users of the source code could view, change, or add to the code, provided that they made their changes available under the same license as the original code.

Another big name in Open Source is Linus Torvalds. During his second year of graduate studies at the University of Helsinki he wrote a UNIX-like kernel called Linux (the name is a derivative of Linus + UNIX). Over the years, a number other programmers began to modify and tweak the code, sending their improvements back to Torvalds for inclusion in the next release of the kernel. Eventually, Linux became THE kernel for the GNU operating system. Today Linux has a huge share of the operating system market, especially when it comes to server OS.

While not as user-friendly as Windows or Mac OS Linux is very stable and free. Just to give you something to compare - it cost my company $8,000 to set up a Microsoft Exchange Server; setting up Postfix or SendMail would have been free. On the downside, I`d have no one to call for support to troubleshoot server problems, I would not be able to integrate mail with Active Directory and I wouldn`t have as many third-party add-ons available. Is that worth a 8000-dollar price tag? For a small used it obviously doesn`t, but for a large company it is definitely a viable solution.

Open Source is NOT the same thing as free. All it means is that whether you purchase a software package or get it for free, you will have access to the source code and the ability to modify/tweak it to suit your needs. Many people, however, confuse Open Source with free. When you buy a car, you have access to its engine and can make modifications at your hear`s content. You don`t expect to get a car for free, do you?

The problem with "free" is that it goes against the grain of free market economy. What drives any healthy economy is competition and you cannot compete with free. Ford`s Model-T was produced unchanged from 1908 to 1927, and we`d still be driving something similar today if it weren`t for the competition from Chrysler and GM. Same concept works for software. For years I have been using Borland J-Builder (among other Borland products). Then IBM came out with Eclipse and made it available for free. Let`s be honest now - who the hell is going to pay for a product when a similar package is available for free.

Another problem is that because a product is free it doesn`t have to compete with other similar products on feature-to-feature bases. Who cares if GIMP is more cumbersome to use than Adobe Photoshop - why bother improving the user interface if no one will pay for it? Many programmers who develop open-source applications just do it as a proof-of-concept type thing - they just want to see for themselves if they can get a piece of code to work. There is no incentive for them to make it better, and I`m speaking from personal experience. About 6 years ago I wrote a piece of software that traced DLL dependencies under Microsoft Windows. It wasn`t a great product, the user interface pretty much sucked and it had a few bugs that had to do with file system permissions. I wrote the program, posted it online and forgot about it. A year ago I went back to the website that hosted that program and to my surprise realized that people still used it, even though you can download a similar program from CNet for $15.00. People were willing to use my crappy proof-of-concept program rather than paying $15.00 for a much better product! I could go on for pages and pages making a case against free software, but I do not want to bore my occasional readers and most of all, I do not want to bore myself. Instead, I`ll allude to an old axiom - if something is too good to be true, it probably is. The concept of free software might sound really good today, but I`d like to hear all the Open Source zealots` opinions if, for example, cars were free and they were forced to drive a 1908 Model-T Ford.

 

Comments

An Ode to Mac

About 5 months ago I finally bought my first Mac.

I desperately needed to replace my 3-year-old comatose Dell laptop; since I had no good reason to chose an Apple laptop over one made by HP or Sony I decided to go for the coolness factor and simply walked into an Apple store and walked out with a beautiful white 1600-dollar MacBook.

At first I questioned my decision - $1600 is a significant chunk of change. Moreover, since most of the programming I do is somewhat platform-independent I kept trying to convince myself that I wouldn`t have been happy with a cheaper HP laptop running Linux.

The more I used my MacBook the more I fell in love with it. Day after day all of my reservations evaporated and were replaced with awe and respect for Apple`s engineers. I cannot say that it is easier to program under Mac OS than it is on Fedora Linux, or that my productivity increased enough to justify the exuberant price tag. It is all the little things that make Mac OS what it is - the best damn operating system I have ever used.

One of the things that I discovered for myself is Namely. It is a little application that runs in the background. You hit CTRL + SPACEBAR and a tiny search box pops up at the top of the screen. You type in the name of the application that you want to run, hit enter and voila - the application of your choice launches without a single mouse click. When I showed this to my girlfriend her response was, "What` the big deal?" Well, having been raised on UNIX I learned programming using simple editors such as EMACS and VI, and to this day I really hate moving my fingers from the keyboard to go to the start menu to launch an application. For years I worked around this problem by always running a command window or a terminal window in the background on Windows and Linux systems respectively. When I needed to launch another application I would simply ALT+TAB to the terminal window and type a command to launch a program.

And don`t get me started on the function keys! As a programmer I usually have a ton of windows open simultaneously - so many that they don`t all fit on the taskbar. I cannot even begin to tell you how annoying it is to ALT-TAB through all of those to find the right one. On my MacBook all I have to do is hit F9 and all the windows are displayed as large thumbnails. All I have to do is click the right one. Dashboard is another favorite of mine. I`ve always hated having to download a ton of widgets for weather, stocks and dictionaries and have them all running in the icon tray. With Apple`s Dashboard all I have to do is hit F12 and all of my widgets slowly swim into view. About two weeks ago I was trying to set up Apple`s mail to work with the Exchange Server at work and I noticed that when you resize the Date Received field the date format changes from long (April 5, 2006) to short (04/05/2006) to even shorted (4/5/06) depending on the column width (yeah, I know that Leander Kehney wrote about this in Wired, but so what? I saw this first?). It is a very subtle feature, and almost everyone I told about it replied with an indifferent "So what?"

However, it`s tiny things like the changing date format, that ever-present attention to detail that made Apple what they are today - the best personal computer manufacturer in the world.

I love my MacBook. Every time I find a new feature I feel like I just received a birthday present. I feel amazed every time I use the "hot corners" of my Mac`s screen to stop my laptop from going to sleep that someone actually came up with something so simple and yet so elegant. Now I feel justified to look down on all the poor PC users and express my sadness by telling them, "Dude, you are getting a Dell!"

Comments

Page 1
next »
blog comments powered by Disqus