Archive for the ‘Software’ Category

CNET Interview with Windows 7 Mismanager

Friday, May 30th, 2008

It continues to elude the top brass at Microsoft that the world has changed and Windows 7 manager Steven Sinofsky is doing his best to ensure that the next offering of their desktop operating system will be just as big of a commercial flop as the version that preceded it. In an interview with Ina Fried of CNET’s Crave blog posted yesterday, Sinofsky was asked some very broad questions about the next version of Windows and basically refused to elaborate on anything other than the fact that it will be the successor to Vista. He then goes on to mention that a classic closed-doors development model is not outdated for the production of software.

In the age of Web 2.0 and agile software development this is quite possibly the stupidest thing someone could say, and further proof that Microsoft is on an express train to irrelevance. Rule #1 of business is “give the customer what they want”, and the gurus in Redmond haven’t learned yet that it might be beneficial to ask. Imagine all of the often complained about “features” present in Vista that might have been refined to a level of acceptability or removed if the Windows team had set up something like Dell’s Ideastorm? Windows users would be able to gripe about things that they don’t like, and ask for things that Microsoft committee groupthink hasn’t imagined – so that by the time the product actually ships… people might actually want to buy it! This is underscored by the philosophies of agile development where you are constantly in contact with your customer and making incremental refinements towards exactly what the customer wants.

Also one might wonder what point there is to all the secrecy, when Microsoft holds a defacto monopoly on desktop operating systems – it’s not like IBM is waiting in the wings to unleash OS/3 and steal their feature set, offering it on a line of PC’s that they don’t even make anymore. This point is underscored when the Linux and Mac developers have already branched off in entirely different directions and would probably rather die than admit imitating anything that came from Windows.

Amazon, Google, Dell and countless others have harnessed the wisdom of crowds to refine their business models and it seems that Microsoft thinks that their insulated community knows best, and would rather pretend that its still the 80’s where market will love anything that they send to production. Much of the techworld as of late has become defined by transparency, and one must wonder if the lack of discussion on Windows 7 specifics is because of the lack of innovation, or insecurity regarding their ability to deliver on anything they promise. (WinFS, anyone?) With a release date still years away, there’s still plenty of time for the development team to throw together a webapp that would take less than a day to write, and that will save millions of users all over the planet from Windows ME v2.0. I wouldn’t hold your breath though.

Learn How to Think

Monday, September 17th, 2007

The good folks at O’Reilly were kind enough to send me a copy of Beautiful Code to review. I really enjoyed this book and highly recommend it to anyone who spends any significant amount of time in front of a screen cutting code. The following is my review on what I’m sure is a classic in the making:

A frequent topic of discussion among those in any technical field is for a short list of essential books that anyone worth their salt has read. With regards to software engineering, two classics quickly come to mind: Code Complete, and Design Patterns, as well as a recent publication joining the ranks of these epics, Beautiful Code by O’Reilly Media.

What makes Beautiful Code stand apart from the rest, is that it’s format is so unconventional when compared to most other programming texts. The book is comprised of 33 Chapters, each written by a different author about a particular bit of code they had written and thought to be particularly eloquent. The best way to explain why this book is so wonderful is to make an analogy about the differences between learning something via a lecture as opposed to a private lesson. Most instructional books will take the lecture approach, where the author shows you one correct way to solve a problem, or complete a certain task and the reader must then digest that as best as possible. Beautiful Code is more like a private lesson in which the author of each chapter is giving the reader personalized attention by explaining their thought processes, how they arrived at each step, and occasionally showing some dead ends that didn’t work out. Now consider that these private lessons are being given by such legendary names as Brian Kernighan, Charles Petzold, and Yukihiro Matsumoto - and it becomes obvious why this is a must-have addition to any serious software engineer’s bookshelf. Some particularly memorable sections include Karl Fogel’s discussion on the origins and implementation of the Subversion Delta Editor and the look inside Google’s MapReduce technology by Jeffrey Dean and Sanjay Ghemawat.

As stated earlier, one of the best strengths of this book is that it is language neutral. In each chapter, as the author is speaking from experience on a particular project, rather than writing a chapter for a hypothetical “Better Programming in Language XYZ”, you will see code snippets in C#, MSIL, Python, Ruby, and several other languages (There’s even one chapter with Emacs Lisp!). This is important because the insight gained from this book will not be diluted from one language falling out of favor or into obsolescence, and allows for the possibility of this title being just as valuable ten years from now.

Many books will teach you how to solve a problem, but rare are those to teach you how to think. Beautiful Code is one of those select few, and will keep you coming back from project to project to consult its veteran sages of computer science. A worthy edition to any serious programmer’s library, and hopefully a second volume is not far off.

More on Programming for Beginners

Tuesday, September 11th, 2007

A while ago, I wrote a post about how I think that programming is really difficult to get into these days without a ton of effort on the learner’s part due to varying factors such as language complexity and operating system api’s. I then proceeded to discuss a product by MIT Media Labs called Scratch that was designed to teach children programming by addressing these issues. In case you don’t remember, I wasn’t too fond of Scratch.

Last night at the Chicago Ruby Users Group, there was a presentation on Shoes, which is another project in this vein that uses Ruby as its underlying language. Shoes addresses all of the complaints I had with Scratch, and lets you write code instead of relying on a mouse/GUI driven interface. Writing a program in Shoes is very straightforward, and you can do a lot of neat stuff in a very few, simple, straightforward lines of code. I was pretty impressed. This is exactly the type of thing we need in a world that is devoid of QBasic.

Here’s a screenshot of a sample program called follow.rb that draws circles depending on the position of the mouse cursor: (the sourcecode is in the terminal to the right of the demo)

Shoes Demo

This screenshot doesn’t really do it justice though - because Shoes is built on top of Cairo and Pango, the demo runs very smoothly and doesn’t reek of jittery animation like so many other sandbox programming environs.

While it’s definitely not a finished product ( 1 or 2 of the demos segfaulted on me due to some C code in the Shoes app) - it runs on Windows, OS X   AND   Linux. I had no problems checking out the source from subversion and building Shoes on my Ubuntu 7.04 laptop. Shoes is a huge step in the right direction with regards to addressing the issue of getting kids into programming by making it less of an impossible task. I look forward to watching this project develop, and really hope that it catches on.

Additional Progress on Linux on the Vaio

Saturday, August 25th, 2007

After overcoming the FS key bug a few months ago, my latest efforts have been on increasing performance while running Linux on my Sony Vaio FS760/W .

Strangely, when my laptop was plugged into the wall via the AC adapter - Gnome System Monitor would indicate that my CPU usage (while idle) hovered around 20% utilization, and would erratically spike up past 60% for seemingly no reason. Performance was laggy, but unplugging the ac adapter would bring everything back to a normal state.

A really simple test to try if you are experiencing similar trouble on your Vaio running Linux is to open up a terminal and hold down a key. Whatever letter you are holding down will slowly creep across the terminal - now unplug the power while still holding down the key. You should see things smooth out drastically.

Doing some additional research around the Ubuntu Linux bugtracker - I realized that this may not be a Vaio compatibility problem as much as it is a bug with Centrino chipsets in the Ubuntu Generic kernel. As an experiment I installed the i386 architecture kernel, and the difference was night and day. While idle, cpu usage in Gnome is less than 2% and the system is running smoother than I ever remember it being. Shortly after, I removed all references to the generic kernel from my system and haven’t looked back.

Making this change did prompt me to redo my graphics and FS key settings, as the functionality of both is directly linked to kernel modules. My Geforce 6250GO was brought back online via the Envy script (which is awesome, and incredibly simple if you haven’t tried it) and I brought my FS key support back via my feisty-fsfn script previously published. However, changing the architecture to i386 caused my original script as written to fail due to a typo. I’ve fixed this and uploaded a correct copy.

Please let me know if you have any additional insight or experiences with this issue regarding Linux on Vaio laptops!

T-Minus Six Days…

Tuesday, August 21st, 2007

Next Monday I start attending college again as a junior in Computer Engineering at the University of Illinois at Chicago. Its been about a year and a half since the last time I set foot in a classroom, and it feels sort of strange to be going back. Since leaving school, most of my former classmates have graduated and I’ve spent the time working as a programmer for hire. Most of the people I interact with on a daily basis have long since been done with college - it creates the feeling that in a sense I’m going backwards, when deep down I know I’m progressing forward.

On a semi-related note due to the coincidental timing, I got an email from a Professor I used to work with in the Computer Science department at the University of Arizona wanting to know what I was up to. It’s nice to think that even after I up and vanished 18 months ago, I left enough of a mark that people there still remember me.

My latest code related diversion from reality is the Haiku OS, which I am working on getting involved with by working on bug fixes. Haiku is a rebuilt-from-scratch implementation of BeOS, an OS that’s been dead for years. The Haiku team has set up a very impressive and simple setup for developers, it was very simple for me to get the source from their subversion server, cross-compile it, and build a image to test with in VMWare, all from my Linux Desktop. Whether Haiku is the end-all-be-all to Desktop computing as the project aims to be, I’m not convinced at this point. What I am convinced of, that will probably become a post of its own is the necessity of alternatives in order to promote technology innovation. In order for Operating Systems to advance as a whole, there needs to be strong competition in the field - otherwise you end up with dogshit software like Windows Vista. I think Haiku/BeOS introduces some interesting concepts that are currently lacking in its competitors, particularly in respects to multithreaded architecture and responsiveness. Hopefully my skills will be enough to contribute a few lines of code that will make it into the R1 release.

Enabling Fn Keys on Sony FS Series Laptops

Wednesday, May 23rd, 2007

As many of you may know, Sony laptops don’t always play nicely with Linux due to a bunch of closed hardware. One major annoyance is the Fn keys not working out of the box, and not being able to adjust volume or brightness with them.

Doing some research, I found a solution on the Ubuntu forums here.

Reading through the posts and doing the command line work can be frustrating if you’re new to Linux and aren’t comfortable yet with the terminal - or if you’re just lazy.

I’ve put together a convienience script that will pull everything in, install a patched sony_acpi kernel module to control brightness programmatically, and enable the Fn keys.

Let me know if this helps you out!
(Ubuntu 7.04 / Feisty Users Only!)

Download: feisty-fsfn.sh

The Itch Remains.

Thursday, May 17th, 2007

When you first hear about it’s goal, MIT Media Lab’s Scratch seems like a good idea - create a programming environment that is accessible to young people getting their feet wet with code for the first time. As you look into the matter further, the world really is lacking a good first programming language these days.

Now for an aside to a long time ago in a basement 30 miles away…
Every programmer has their story of their first programming experience, mine was discovering QBASIC on accident while messing around in DOS on my best friend’s 386sx. What followed was an entire summer learning basic concepts from the online help system. To this day I still remember do: while $INKEY = “” as a rudimentary way of trapping keyboard input. Nostalgia and poorly coded text games aside, this brings me to my point. What is today’s analogy for QBASIC in 2007?

Coding these days on any platform requires serious knowledge, and BS’ing your way through a program with almost total disregard for structure, style and logic the way I did as a kid back in 1994 is next to impossible these days. Having a sandbox language to write trivial programs is important! If I’m 10 years old, I could care less if a language is statically or dynamically typed, or if it has a particularly good standard library XML parser! I just care about seeing my name displayed in alternating colors, feeling that I’m writing a program, and most importantly the feeling of discovery that comes with.

Scratch pretty much fails on all levels in this respect. The first thing that comes to mind when looking at the Scratch interface is that MIT has recreated some Adobe Flash with some Lego-Centric design motif. If this didn’t have the MIT Media Lab stamp on it, it would be universally panned across the board as reinvention of the wheel. Why are people getting so amazed at the ease that a poorly animated cat with annoying sound effects can be created with the drag and drop interface? Is this something we need to be encouraging people to do more of, have any reviewers been on the internet lately? (Before trying to argue with me on this, find a ytmnd meme and try and explain how that’s much different.)

Most bothersome to me is the total lack of coding involved via the drag and drop interface. You can’t make a legitimate product aimed at getting young people excited about coding, if there is a complete absence of the aforementioned! Scratch is a software toy and nothing more. It can be described as marginally educational I guess, but I have a hard time seeing anyone doing much more with it than making inappropriate animations and trying to harass people nearby with a barrage of sound effects. Call me old fashioned, but in terms of programs for use in schools to develop the underlying skills to code, such as math and critical thinking - I’ll take Number Munchers and The Incredible Machine anyday.

Maybe I’m wrong, and I just don’t get it?
Time will tell!

Linux isn’t Going to Sell Itself

Sunday, March 25th, 2007

Reading slashdot this week, I came across an article talking about a new effort by Microsoft called linuxpersonas.com, which is an online sales kit for Microsoft technologies at the enterprise level and talk various customer profiles out of using Linux. Needless to say, as a consultant that makes part of his living by pitching open-source, and doing installations and maintenance of these free platforms - it’s hard to flip through this site without doing some serious eye-rolling.

In any case, I think this site underscores a serious weakness in Linux/OSS in general - that is, that there is not very much in the way of organized efforts to expand the marketshare with regards to traditional marketing. All too often, Linux and related technologies seem to rely on Field of Dreams style promoting, “If we build it, they will come.” The development community at times seems to be so in love with what they have created, that they consider the dominance of their platform inevitable. To me this feels strangely similar to Karl Marx preaching about the natural evolution to communism, and the historical inevitability of the demise of Capitalism - the point being, both arguments as far as I’m concerned are pie in the sky dreaming.

If Linux is going to succeed and get the percentage of machines with it installed to the point where it becomes more than a buzzword seen in CNN technology section articles, or something a IT Manager will take a 24 hour crash course in, somebody needs to sell it. It is important to clarify here that I am not proposing that we go and throw a pricetag on a shrinkwrapped install disc - when I say sell, I mean that people need to get in the trenches and go out getting businesses and everyday people to get this software on their computers. We need to see sites popping up that are the equivilent of linuxpersonas.com, but are designed to help consultants convince their customers to run Linux in their company. We also need real, legitimate advertising by the dominant players of our platform. When Ubuntu 7.04 ships next month, billionaire Mark Shuttleworth should sink some serious money into conventional advertising to get his product noticed by people who have never even heard the term Linux before. We should see MySQL running some ads in Computer Publications comparing their product to MSSQL or Oracle offerings.

Novell has started to do this in some respects by making some parodies of the infamous Apple Computer Mac Guy / PC Guy ads, and introducing a girl character named Linux, but at this point these ads aren’t very effective at doing much more than getting a quick laugh out of nerds who already know about Linux and love it. I would like to see a Novell ad where the three characters are talking about going out for an OS upgrade (which could be new clothes or something) and they all open their wallets and show how much the overhaul will cost them. The PC guy takes out a stack of $100 bills and talks about how he’ll need Vista Ultimate and a copy of Office 2007, the Apple guy takes out a $100 bill for a Leopard upgrade, but also has a lot of smaller bills he plans on spending on the Mac shareware community. At this point the camera pans over to the Linux character who is having all of her stuff bought for her by a crowd of people, including some people with briefcases full of money, who are wearing shirts with IBM, Red Hat and other corporate logos.

Until we see a serious marketing effort on the behalf of Linux technology, I have a hardtime concieving any major marketshare growth of open-source technology. In the meantime, redmondpersonas.com is registered and under development. Check back soon!

Freedom Like a Shopping Cart

Sunday, February 18th, 2007

While in college I became a huge fan of the Linux operating system due to the unrestricted freedom it granted me when using it in place of the Windows software I had grown up with. If I wanted to try my hand at a new programming language or play with a new technology, Linux let me me do this with professional grade tools for no cost. This led to an initial period of Linux zealotry, as I tried to convince the masses of my discovery and how it was infinitely superior to anything I had ever used. As I grew older though, my perceptions matured and I began to see Linux through the perspectives of several other groups involved in its creation.

The first perspective I noticed was the “Free as in Cost Group”. This group endorses Linux because it is a way of circumventing the Microsoft tax, which in many cases would put computing out of their reach financially. If I’m setting up a computer lab or cafe in the third world trying to connect locals to the internet for the first time, in an environment where resources are scarce - my options are to pirate copies of Windows (probably an older version too, if I’m having to cobble together whatever machines I can find and performance is going to be an issue) or to run a free operating system. Linux allows me top notch security, a basic office setup, compilers for anything imaginable and web browsers to get onto the internet, and best of all it costs nothing. I will never have to pay anyone a dime to get my operation running, so this makes it incredibly appealing to me.

The perspective group I belonged to I’ll call the “Superior Product Group”. I switched to Linux because it gave me freedom of choice and was infinitely more stable and secure than the software it replaced. The title of this post is a quote from one of my favorite bands - NOFX, this perspective of Linux favors “Freedom like a shopping cart” - I can do whatever I want with my machine and the software it contains. The only limiting factors are how fast my machine will run and how deep my knowledge is of the tasks I’d like my computer to do. Everything I could ever want in a computing platform is available to me, and if it’s not - the documentation for me to write my own fixes is available.

Finally there is the group I’ll call the “Patrick Henry Group” who is very vocal about his famous quote “Give me liberty, or give me death.” This camp is led by Richard Stallman, head of the Free Software Foundation of FSF, who launched the GNU project back in the 80s and is responsible for emacs and the whole GNU toolchain. Stallman and the FSF’s main prerogative is the abolition of proprietary software, they believe that all software should be free of cost, with the accompanying source code open as well, so that whomever receives it is free to change it and redistribute it - provided they do so under the terms that they received the software originally. The license to do this is called the GNU Public License, or GPL for short.

This last group is one lately I’ve found myself at odds with due to their actions to try and bring my favorite distribution of Linux (Ubuntu) completely under their politics. To start with, the biggest issue I have with widespread acceptance of GPL as the dominant way software is published on Earth, is that it will impoverish me. Before I went to engineering school and learned about calculus, physics and computer science, I worked bad minimum wage jobs ranging from getting yelled at all day by angry customers in a video store to my three year tenure scrubbing toilets as a janitor. As a computer programmer by profession, I pay my bills, keep myself fed and a roof over my head due to my ability to write software. The only thing keeping me from living off a couch in my parents’ basement (assuming they’d let me) or flipping burgers to make ends meet is writing proprietary software for customers willing to pay for it. If the profession of Computer Programmer becomes obsolete due to all software being freely created by volunteers, I will be forced to return to jobs similar to the ones I previously held - because I certainly will not have the resources to retrain into another discipline I can make a living at. One common counterclaim to this argument is that a system of bounties will allow programmers to stay employed, where people with deep pockets will offer cash for programmers to work on problems they want solved. I find this ridiculous due to the current realities of this on the internet, bounties are few and far between - and the time investment involved in completing them far outweighs any financial gain. No company is ever going to support this model, because whatever competitive advantage via software they hire people to write them for that company’s domain specific need will immediately fall into the hands of their competitors for free. There is no sustainability in this model, and it is nothing better than pie-in-the-sky, idealistic thinking.

Getting back to the issue I began to address, my Linux distribution of choice - Ubuntu, one which I have been using since its initial 4.10 release, is under increasing pressure by the Patrick Henry group. This group wants to remove from the distribution any code that is not 100% free by their standards, which includes but is not limited to: device drivers distributed in binary form, and media codecs. The alternative to these “not entirely, but mostly free” software packages are ones penned by the free software community that are not as good in terms of performance, features or stability. In my mind this is completely unacceptable.

I happen to have an NVidia graphics card in my Linux workstation (albeit an old, weak 440MX) that I use in conjunction with the official NVidia binary drivers to get acceptable 3d performance in visualizing 3d data and running dual displays. The FSF replacement for which is not complete, and not up to par with features and performance. Buying a new video card right now is not an option, because money is tight - I picked Linux for freedom of choice, and now a 3rd party is telling me how I can use my computer in accordance with their politically imposed restrictions. In my mind, this isn’t much different than Microsoft, except that I’m getting my prison shackles for free instead of paying for them. Similar issues are numerous right now with wireless card drivers, although thankfully this is not a problem for me as my connection is hardwired. The solution in this case is to not use wireless connectivity? Again, completely unacceptable.

The other main fire-fight with this group occurs over the usage of ‘closed’ media codecs. Due to licensing, some media formats are not supported by default in Ubuntu and only “semi-free” packages are capable of playing files encoded with them. If I’m a user migrating from Windows to Linux as I did back in 2003, and I suddenly find out that the hundreds of dollars of music in ITunes I’ve purchased are no longer playable on my machine because of somebody else’s political views regarding ideal codecs, the migration ends before it begins. I’m not going to give up my music and the money I invested in it because its encoding is not politically kosher.

In closing, I am fine with come of these semi-free, non-FSF packages not being installed by default, with their free equivalents being installed in their place to promote the ideals of free software. I am only ok with this, because I still have the option right after a clean install to get rid of all of them and install packages that provide better performance and features as the first order of business. One of the common selling points of Linux to try and convert a Microsoft user is that “it just works”. No viruses, no spyware, or any of the other common problems associated with running Windows. If you check the Launchpad site for Ubuntu, the #1 bug is that Microsoft has a majority market share. In order to undo this, a large majority of the people we need to convert are regular everyday users who just need to get work done. They don’t program, and could care less that the source is open or GPL’d. If they test drive Ubuntu, and nothing works right out of the gate because of politics - the lifespan of Linux on that computer is only as long as the time until reboot, because there’s no way in hell it’s getting moved to the hard drive for even a dual-boot, let alone a Windows replacement. The point of this article is not that I hate free and open software, or that I’m waving a flag for proprietary - it’s that I’ve realized what’s most important to me at the end of the day is the freedom to choose. I’m fairly sure that I’m not alone either.