Wednesday, July 24, 2013

Why do Programmers Make Free Software?

When procrastinating on slashdot earlier today I stumbled upon an interesting comment regarding programmers behind Free Software movement left by another reader. The guy posted a question that I found interesting precisely because until recently I'd been asking the exact same thing myself. Quoting:

... But how could you think that [Free Software] this is better for programmers? I always ask this of my fellow IT professionals and they *always* respond with some vague argument about how participating in Open Source projects will get you "recognized"... Well, in the sarcastic words of Homer Simpson "Look at me: I'm making people happy". Someone please enlighten me. Explain to me how we, as programmers, are better off when the fruits of our labor are surrendered for free...

I haven't done any significant contributions to free software myself: I've helped some dudes to fix bugs in one of the first .NET drivers for MySQL once but that's about it. I've been curious about thousands of free software authors and their motives just like the slashdot guy.

Until one day I lost one of my backup CDs with some code I've been accumulating since high school, through college and the first couple of years of commercial work. Suddenly I realized how much software I've written for free. It never occurred to me that I could have made it available for anyone to use.

What kid of code was it? Turns out, the kind I couldn't get anyone to pay me for at that time. I coded whatever I was interested in using languages I liked the most. I also realized that most of my college programming friends did the same: one guy was designing his own programming language, another was playing with neural networks, I even knew two folks who started working on their own mini-OS, we just didn't know it was called Free Software. Mind you, this is not about 70s and PDP-11, I'm not that old. I am talking about middle to late 90s.

I am surprised I haven't figured this out earlier. Where else will you go to work on a PC operating system if Microsoft is not hiring? Have an idea for a new optimization for a compiler? Love hacking Lisp? Fascinated by AI and have an idea for new planning algorithm? Good luck finding job that will offer such luxuries.

Thing is, most of programming jobs suck. Even some ex-googlers called their duties there stupid, now imagine lives of poor souls at Home Depot or Wall-Mart. Lots of companies will hire you to pump their precious data from one DB table into another, but very few will hire you to design the next Perl or build a new distributed file system. This is why you'd want to code something yourself. This is why I hack Pikluk in my free time, it will be free when it's ready.

Programming is an art. Many famous composers and painters had boring "day jobs" painting kings and their fat kids. This is not what we know them for. We know them for what they did at night for free.

Programmers make free software because most software they can get paid for isn't interesting to work on.

Got it, the curious slashdot guy?

Sunday, September 27, 2009

Lenovo Thinkpad T400 Review

I gave up on this blog long ago due to severe deficit of free time, even closing it down properly seemed like an unachievable goal. I am only doing this in hopes of Google indexing the hell out of this text and hopefully making a small dent in Lenovo sales.

The story here is the LCD screen on the latest Thinkpad T400 from Lenovo. This may come across rather silly, after all it is just a laptop and not even the most expensive out there yet I find it fascinating that in our age and time something like this even exists. The mere presence of Lenovo T400 on the market is puzzling to me. The LCD on this computer defeats the basic premises of the capitalism like survival of the fittest and the competition. This LCD is bad. This LCD is terrible. It is not even usable.

The laptop itself is awesome though. The basic formula was designed a long ago when IBM was still in charge: the build and finish are superb. Thinkpad keyboard combined with their touchpad and the pointing stick is by far the best in class. This machine is a typists dream: everything is literally at your fingertips. After using it for a week I shiver in horror of memories of my old Macbook Pro, and don’t even get me started on the newer Macbooks equipped with what basically is a calculator keyboard. When it comes to typing Thinkpads still rule..

But Lenovo, as compared to IBM 15 years ago, is a modern company, therefore it feels it must follow “cheapest crap always wins” formula. To save cash and save big they decided to go with a $2.99 part for an LCD screen. Actually I have no idea how much this junk costs but I can’t imagine it’s more expensive than a quarterpounder at McDonald’s.

I have tried two different versions: 15” WXGA LED and 14” WXGA+ LED. Both are essentially the same screen albeit different sizes and resolutions.

It delivers the following impressive features:

Zero degree viewing angle, i.e. some portions of the screen are always distorted.
Extremely low contrast
A few hundred metallic-tinted colors
Tremendous light bleed, i.e. you don’t just get black but you don’t even get dark grey: the darkest it can do is metallic-looking grey.

It is beyond me how can this be considered usable. The killing combination of terrible viewing angle, light bleed and low contrast pretty much guarantees that web pages on white background are hard to read. If a page uses #666 for text or lighter you're done, only black-on-white is comprehensible without constantly re-adjusting your head. Without NoSquint FireFox extension this laptop cannot be considered for web surfing.

Colors aren’t accurate. Yes, this is an el-cheapo 6-bit TN economy panel, but even those 6 poor bits get lost in the galore of metallic tint, poor factory calibration and light bleed. I am guessing this laptop can reproduce fewer than a 200 colors visibly distinguishable by a human eye. That is actually worse than my very first no-name PC in 1994. That one was also made in China, so this can’t stand for an excuse.

Do not buy Thinkpad T400. Do not buy Thinkpad T500 either. The CCFL-based panels on the 15” models are slightly better in regard to contrast but they’re much darker and colors are just as bad. Essentially the entire line of modern Thinkpads is shipped with DOA screens. Just for fun I am taking mine for repairs since I have an authorized Lenovo/Apple service center on my block. What if I get lucky and they’ll put an Apple panel into this sucker.

What is funny is that it runs Windows by default. Windows is known for a terrible font rendering: text looks even skinnier there, I wonder how would Windows users see anything at all? Do Lenovo service centers get phone calls from confused Windows users complaining that can’t see any text at the bottom of the screen?

Do not buy this junk. Your vision will deteriorate and you won’t be able to tell your children apart from one another. Buy Apple instead and install a proper operating system on it.

Dear Google, this was my review of Lenovo Thinkpad T400.

P.S. Actually this Thinkpad runs Linux very well. Every imaginable feature works out of the box. I am keeping the sucker. It will serve as my dedicated coding machine. This screen, while useless for surfing web or typing documents, is still OK for working the terminal and vim. To preserve my vision and sanity I cautiously avoid looking directly at this screen for more than 15 seconds per minute, using only dark backgrounds and utilizing only 15 colors for text. This laptop makes an excellent Linux-powered typewriter.

Sunday, January 4, 2009

Utah - National Champions of 2008!

Congratulations to Utah, National Champions of 2008!

What a game! After seeing Alabama being able to hang with Utah for only about a quarter I have no doubt this team would have absolutely no problems dealing with Florida not to mention OU.

Texas Longhorns fans should drop their bitterness about OU playing for the title - the title game has been played already and Utah won it hands down. Even the most hardcore college football fan wouldn’t be able to disagree without making a fool out of himself: Alabama spent more time at #1 spot than any other team in the country, Alabama actually had weaker schedule than Utah and “non-BCS schedule” argument doesn’t apply. Should I state the obvious and say that Florida didn’t beat Bama as convincingly as Utah did? I mean did anyone question Utah’s superiority at any point in the game? Was it ever close? And here comes the kicker - Utah is the only undefeated team in the nation.

There is really not point for Florida and Oklahoma playing as far as National Championship question is concerned. I can only imagine the awkwardness of someone NOT from the state of Utah holding the trophy. I wonder if talking media heads will ignore this awkward and pathetic moment and won’t say a word about fucked up state of the BCS at the end of Florida vs OU game.

Congrats to Utah. At least I and my fellow longhorn friends will remember you as the 2008 National Champion. I almost wish this sort of thing happens every year just to trigger as much outrage as possible. Perhaps fans will have to resort to some street violence to alter the current BCS system fed by nothing but sheer greed.

Saturday, November 29, 2008

Death of the Premium

What a great article on Gizmodo! After numerous failed attempts to buy a decent laptop recently, I’ve been ranting about the depressing effects of Sturgeon’s law on computer industry. My wife tells me I’m getting old. Perhaps... But there is one thing I am sure about: this isn’t just about computers.

It has been universally accepted that 90% of everything available to buy, watch, eat or listen to is crap, but the mere existence of those “normal” 10% made me feel OK about it. Want something that works? Want to see a movie that wasn’t made for a dumbass? Want to eat an actual grown vegetable instead of a toxic manufactured biomass sprayed with “taste” yet approved by FDA because it hasn’t been proven to kill instantly on contact? Well, you could always pay extra and get the “other 10%” - the stuff that works, movies that make sense, food that’s been grown as opposed to manufactured, software that doesn’t crash, an alive customer service rep. instead of a robot-over-email, etc. Yes, premium goods and services usually cost a lot more, but hey! - this food will give your dog a chance to actually live as long as the wikipedia article says he’s supposed to.

The problem is that we’re seeing a slow death of the premium. Many companies are deciding that the other 10% just aren’t worth the trouble. Market doesn’t want it as much. The consumer prefers free and slow crashing software over paying $59.99 for something that works. Pre-broken computers are popular because they would have been $50 more expensive if sold in a proper working condition without damaging crapware on them. Weird crunchy red objects at my local grocery store are called “strawberries” and there is a growing generation of kids that actually believe that strawberries are supposed to be that. You cannot buy a laptop with a usable LCD: today your only available option will be TN-based, 6-bit, low-contrast, glossy wide-screens with pathetic color reproduction often spiced up by horrendous light bleed. Yeah, those 12-megapixel noisy photos from your latest Canon camera will look fantastic! Never mind that 4 year old cameras available for $20 on eBay actually take better looking photos. And even Apple won’t build you 16.7 million colors laptop despite their pricing: dithered 262,000 is “good enough”. And who’s complaining? $499 for a freakin computer can do no wrong, you can buy one for every Christmas (and why shouldn’t you? Next year they’ll drop another megapixel into an integrated webcam and a keyboard will be glossy too!)

Our bottom-line oriented, cost-driven consumer culture is dragging us into the world of affordable mediocrity, where everything is commoditized, standardized, made in China and very affordable. There are grown ups now who call shopping their hobby. I guess nobody wants stuff that works simply because most of what people buy never gets any real world use, the mere fact of buying the goddamn thing, not using it, is the point.

There are two practical and unfortunate effects from all this. First, we can’t dodge the crap anymore by buying less and paying more. That stinks but well... You can always picture poor kids in Africa or go 200 years back in time to realize how silly you look bitching about those LCDs... But there is another, more troubling aspect of it though: the death of premium means that innovation, engineering and science don’t matter as much as marketing, advertising and packaging. As much as I hate the military, they remain the only customer capable of demanding more. And paying for it. And since Cold War is long time over, I guess we’ll continue living off the tech we had built to fight it. Until the aliens, of course, threaten to conquer us all.

Sunday, November 2, 2008

Are Social Networks Underhyped?

Apparently someone thinks so.

Pretty bold statement, in spite years of Facebook's repeated failure of making any money. If you don't have the time to read the article, the argument goes like this: we haven't seen the full potential of them yet. In the future the entire Internet will be revolving around social graphs because, presumably, our social connections are what guides us in real life: doctor recommendations, business introductions etc. And these real life nets are going to be transitioning online dragging the rest of the Internet along.


Don't think so. All that stuff's online already, there isn't a greater degree of "onlineniness" possible. This is not an early adopter game anymore. How's someone is going to "get more connected"?

In fact I am observing the opposite: the mainstream public (looking at my non-techie friends) have been fully exposured to it, had enough of it, and is slowly getting tired of it. We're not talking about early adopters anymore: everybody has an online identity and has learned its limitations and implications.

If anything, social networks are getting boring: outside of your real circle of friends you see the same strangers posing to be smarter, better looking and happier than they really are: people aren't that different after all, and your real social network stays where it has always been: in your cell phone's address book.

And that's where I'll be turning to for an advice about finding a doctor or a car mechanic. I don't give a rat's ass about what "people on the internet" have to say. At least half of them voted for Bush. Twice.

Saturday, November 1, 2008

Yes. Windows is a ghetto.

This guy complains that developing for Windows is tough. No kidding. Ironic as it is, but his writing is mostly about an easy kind of Windows development. Web apps behind IIS? Not that hard, really.

Try building an installable desktop software for Windows. That's where real fun begins. It is quite common for teams doing Windows work to dedicate as much as 20% of available manpower to the installer alone (!). I've been coding Windows desktop in C++ since graduation in 98 and has always looked down on web programmers since they had it so easy. But once I got older I realized that all my Windows-fighting instincts and in-memory database of gotchas are nothing to be proud of: most of my career I was boxing against the platform I was working on, while some were having fun building an actual software.

Some may ask why on earth would someone spend 20% of time writing an installer, copying files shouldn't be hard, right?

Wrong. The problem isn't getting files in the right place, the problem lies in how inter-connected and "integrated" everything is on Windows. "Internet Settings" in the control panel, while they seem to be IE's settings, actually affect how some Windows Internet-family API functions behave. Then there is a big hairy mess called COM/ActiveX: you can't parse XML without it, yet there will be computers, be it one out of 100, with broken XML parser COM registration. Same applies to various shell-related COM servers which are essential to desktop integration. And yes, IE is the part of the OS despite of the illusion that you can uninstall it.

Then there are cases when other applications break your code: Symantec used to install their own version of MFC DLL right into System32. Then there are super-aggressive anti-spyare/anti-virus/anti-whatever packages that are basically hacks breaking all kinds of legit software. Windows encourages this style of development: when an application essentially becomes a collection of COM servers scattered across your hard drive, hooked into your system via complex mesh of registry settings. And there is no way around it: this is what MSDN tells you to do.

Then you'll have users complaining that when they launch your RSS reading software (or whatever you do), they get a popup that says "Windows Installer: configuring Microsoft Office" that disappears after about a minute of "collecting system information". And users will tell you that everything worked great for 2 months but then "computer did something" and this popup started appearing.

And they keep adding more shit on top of existing shit. Now, in addition to COM and MSI and registry you get this "side-by-side execution" bullshit, when you can't even tell which version of a DLL is being loaded and Windows Explorer essentially hides your own fucking files from you, so even locating a misbehaving DLL becomes a debugging session on its own, where you'll need to decode cryptic hidden directory names and extract a manifest from some executable's resources to see which DLL it actually wants. Having a DLL side by side with an executable isn't guaranteed to work anymore. When they rolled that out I felt sick for a while.

And finally, there is no such thing as "Windows API" anymore. XP machine connected to a domain controller/AD is a very different beast than XP home or Win2K. I'm not even mentioning Vista here.

For my last Windows project I went for "xcopy deployment" with one single fat executable statically linked to everything it needed to run with some help from open source libraries, essentially very similarly to how Firefox does it. But this style of development isn't really for "Windows Platform", this way you're targeting a "sane subset" of Windows platform.

There may be a few minor technical mistakes in what I've written. After all I haven't seen Visual Studio in a long time, but I know that largely I am correct. And I don't hold any excitement about upcoming Windows 7. Why would I? None of their initiatives is targeted towards developers. They're tweaking minor and irrelevant UI pieces, massaging services installed by default, but in the end it's exact same old lame turd. If Microsoft wants to impress me, release a version of Windows without system registry, without MSI and make c:\windows completely sealed: make it so after 3 years of installing Windows, there isn't a single new file sitting under that folder. Make everything, every little piece of next version of Windows fully scriptable and include JavaScript, Python, Perl and Ruby by default. Make the server edition completely free. Integrate with Xen and others, instead of competing with them. Implement every imaginable suggestion for future HTML/CSS in IE9 strictly according to the spec. Break backwards compatibility whenever you want and keep selling XP for those who need it. Finally, try to reinvent the desktop: the damn thing hasn't changed in decades and people still lose their own files without any help from a faulty hardware: they just forget where they are and how they're called.

Linux, and especially OSX, aren't prefect either – there are tons of areas for improvement. Innovate Microsoft, instead of competing with Google in a lame contest of being the most technologically inclined media company. It's very easy to compete with a media company: just make sure you focus on software and where do you think the best CS grads will want to work at?

The irony of it is that once upon a time Microsoft was kinda cool. I was a teenager but I still remember those "good&old" days of snobby IBM/Sun/Oracle salespeople with their super-expensive software, hardware, development tools and even documentation (I was told you could sell your car for a full copy of OS/2 SDK). And then there was Microsoft and Borland, with great, inexpensive and innovative products, driving PC revolution and attracting folks like me and my friends to CS.

Tuesday, June 17, 2008

Opera is THE browser for Linux

Ever since my “big switch” away from Windows a few years ago, I couldn't help but notice how much worse, quality wise, Firefox worked on Linux as compared to its Windows version. Don't get me wrong, Firefox on Ubuntu is not a bad piece of software – I use it heavily and usually I have multiple windows open in several desktops each with multiple tabs. Sure it crashes once or twice day, not a big deal. I even like occasional crashes. Crashes are exciting, they add a little bit of spice to every day's perfectness of my computing environment. :-)

What's been killing me though, wasn't that – it was what I call a “800Mz scrolling” problem. When I am on a battery, the laptop naturally is trying to preserve some power and switches to a conservative CPU scaling governor which likes to stick to 800Mz unless applications absolutely need more. Which is fine, most laptops do that. Except that Firefox on Linux really needs a lot of CPU power to scroll pages. This is kind of ridiculous, since scrolling has been done (mostly) by graphics hardware on Windows for the last 15 years, but FireFox on Linux demands 2Gz of CPU horsepower to scroll a freaking page, unless it's something as trivial as http://google.com.

Find a moderately heavy web page, quickly scroll up and down using the strip on a touchpad's left side and watch for 10 seconds – FF will be scrolling, turning your 800Mz Core Duo2 into 386SX 32Mz relic. I run Windows on VirtualBox, and “virtual WinFirefox” is many times more responsive than it's native Linux version, it scrolls web pages quickly dammit...

So one day and installed the latest Opera. Again. This wasn't my first time though, I've done it before and every time I get turned off by how foreign and ugly Opera always feels: the hotkeys were always wrong, UI didn't resemble any other applications on Windows or Linux, the whole package felt like it just landed from Mars.

The latest version is different. Alt+D finally took me to the address bar by default. Backspace took me to a previous page. UI was still butt-ugly, but it took me only a few seconds to find a theme that looked great, right there in “Tools/Appearance”, no googling required. The mandatory ad blocker is built-in and filters are easily discoverable. Most hot keys were already in place and a few missing ones were easy to add.

But how about that incredible rendering speed! Plus nearly instant start-up times, and the damn thing can actually SCROLL TEXT quickly! What a miracle... It also seamlessly imported my Firefox bookmarks. And after three days of casual surfing I am yet to find a single site, a single page rendered incorrectly. Those sweet mouse gestures are as close to heaven (Safari's multi-touch) as you can get without switching to OSX. Check them out!

Here is the list of changes I've done compared to default settings:


Preferences/Advanced/Shortcuts: remove actions for mouse buttons #5 and #6. This will disable back/forward actions on horizontal touchpad scrolling (in case it annoys you like it does me).

Preferences/Advanced/Shortcuts: add ctrl+K for moving focus to Google search bar and add Ctrl+1 and Ctrl+2 for cycling through tabs.

Appearance/Skin – change the disgusting default skin to “d_t_a__opera_9_only__-trial2” (available via “find more skins”). Or find something you like – almost everything there is better than the default nightmare Opera comes dressed up in.

Download filters for ad-blocking: http://www.fanboy.co.nz/adblock/opera/urlfilter.ini


Done! You've got yourself the most powerful browser the world of Linux has ever seen.