Surf Naked

I had to clean out my in laws’ Windows laptop this weekend, and this was my first major contact with Windows in weeks, outside of testing IE6 quirks on Parallels. The horror that is Sharepoint is only a distant memory. Even more distant (and not as unpleasant) memory of MS Commerce Server surfaced recently.

I received this shirt as a gift from Microsoft developers, some of whom actually wrote major parts of Commerce Server and Site Server when I visited Redmond. They were very competent, knowledgeable and sociable. I remember being surprised by seeing a lot of Perl books in one office, and being told that for parsing log files even the mighty Beast of Redmond relied on Perl.

I did not get to see Lake Bill or the Microsoft museum, but I did have a Blibbet Burger at the cafeteria. My favorite piece of swag was this polo shirt which I almost completely wore out. It is about to completely disintegrate, so I decided to scan the logo from it.

Mac OS X Leopard: The Missing Manual

With Leopard, Apple has unleashed the greatest version of Mac OS X yet, and David Pogue is back with another meticulous Missing Manual to cover the operating system with a wealth of detail. The new Mac OS X 10.5, better known as Leopard, is faster than its predecessors, but nothing’s too fast for Pogue and this Missing Manual. It’s just one of reasons this is the most popular computer book of all time. Mac OS X: The Missing Manual, Leopard Edition is the authoritative book for Mac users of all technical levels and experience. If you’re new to the Mac, this book gives you a crystal-clear, jargon-free introduction to the Dock, the Mac OS X folder structure, and the Mail application. There are also mini-manuals on iLife applications such as iMovie, iDVD, and iPhoto, and a tutorial for Safari, Mac’s web browser. This Missing Manual book is amusing and fun to read, but Pogue doesn’t take his subject lightly. Which new Leopard features work well and which do not? What should you look for? What should you avoid? Mac OS X: The Missing Manual, Leopard Edition offers an objective and straightforward instruction for using: Leopard’s totally revamped Finder Spaces to group your windows and organize your Mac tasks Quick Look to view files before you open them The Time Machine, Leopard’s new backup feature Spotlight to search for and find anything in your Mac Front Row, a new way to enjoy music, photos, and videos Enhanced Parental Controls that come with Leopard Quick tips for setting up and configuring your Mac to make it your own There’s something new on practically every page of this new edition, and David Pogue brings his celebrated wit and expertise to every one of them. Mac’s brought a new catto town and Mac OS X: The Missing Manual, Leopard Edition is a great new way to tame it.

Pro Drupal Development

Pro Drupal Development is strongly recommended for any PHP programmer who wants a truly in-depth look at how Drupal works and how to make the most of it.

— Michael J. Ross, Web developer/Slashdot contributor

Drupal is one of the most popular content management systems in use today. With it, you can create a variety of community-driven sites, including blogs, forums, wiki-style sites, and much more. Pro Drupal Development was written to arm you with knowledge to customize your Drupal installation however you see fit. The book assumes that you already possess the knowledge to install and bring a standard installation online. Then authors John VanDyk and Matt Westgate delve into Drupal internals, showing you how to truly take advantage of its powerful architecture.

Youll learn how to create your own modules, develop your own themes, and produce your own filters. You’ll learn the inner workings of each key part of Drupal, including user management, sessions, the node system, caching, and the various APIs available to you. Of course, your Drupal-powered site isnt effective until you can efficiently serve pages to your visitors. As such, the authors have included the information you need to optimize your Drupal installation to perform well under high-load situations. Also featured is information on Drupal security and best practices, as well as integration of Ajax and the internationalization of your Drupal web site. Simply put, if you are working with Drupal at all, then you need this book.

  • This book is written by Drupal core developers.
  • Drupal architecture and behavior are mapped out visually.
  • Common pitfalls are identified and addressed.
  • Chapters provide regular discussion and reference to why things work they way they do, not just how.
  • The front matter features a foreword by Dries Buytaert, Drupal founder.

Masonic Apple

It’s been a few months already that I haven’t used Windows. The unreal amount of time that it takes to make Ubuntu play sound or use a second monitor and then do it again after a software update drove me straight to Mac.

By the way, why does the “applications” icon look so masonic?

CRUD Ain’t Hard

And now for a little exercise in armchair software architecture — the most despicable coder’s pastime. Dear non-coding readers: despite its name, this blog is still mostly not about programming. Just skip this post or something. Dear coders, many of you will probably disagree with me. I am not a very good or accomplished coder myself, and you probably should not be taking your advice from me. But then again, I could be right, so keep your mind open.

You might have been aware of the very popular, but uptime-challenged social networking tool called Twitter. They have one of the best problems to have: too many very active users. The site is so popular that it constantly goes down and displays and “over capacity” screen that the users have nicknamed The Fail Whale.

Rapidly writing and displaying short chunks of text with high concurrency on the web is not one of them unsolvable problems in programming. It’s not easy, but with right people and tools Twitter could be rewritten inside a month. Twitter founders should do some soul searching. Meanwhile the critical mass has already been reached, the niche for bloggers who want to SMS instead of blogging is big, and even horrible uptime can’t this service. I use it myself.

There is a lot of speculation in the blogocube about whether the reason behind the Fail Whale is the wrong choice of technology — the highly hyped and sexy Ruby on Rails and if it can “scale”. Or is it just simple incompetence?

To me Ruby on Rails falls into a class of technologies that are affected by what I call “the VRML syndrome.” Basically, if I wait long enough the hype will go away, the recruiters will stop posting job listings requiring 4 years of experience in a 4 month old technology, books as fat as my two fists will stop being published, and I will not have to learn it.

What’s the problem with Ruby on Rails? Well, it’s the same problem that slightly affects the content management system that I am currently working with (Drupal), and is the reason why I completely gave up using Microsoft web technologies which are saturated with this shit. See, software craptitechts all of a sudden decided that writing CRUD applications is too difficult for regular developers, and complicated GUI tools and frameworks need to be created to help the poor things. CRUD stands for “Create, Read, Update, Delete” and is just a funny way to say “a browser-based application chock-full’o forms”.

The default way to build these is to rather simple. You hand-code the html forms, then you write functions or classes to deal with the form input — validators and SQL queries for creating, updating and deleting. Then you write some code that will query the database and display the saved data in various ways: as pages, xml feeds, etc. None of this is difficult or non-trivial. Bad coders don’t do a good job of validation and input sanitizing resulting in the Little Bobby Tables-type situation, but these things are not very hard to learn and there are great libraries for this.

Ruby on Rails makes it very easy to create CRUD apps without hand-coding forms or writing SQL. RoR goes to great lengths to abstract out SQL, not trusting the developers to do it right. SQL is more functional than procedural, and thus a difficult thing for many programmers to grasp, but it’s not that hard. Really. SQL is located far enough levels from the machine that abstracting it out becomes a horrible thing due to the Law of Leaky Abstractions. Even when you have full control of SQL queries optimizing them is sometimes hard. When they are hidden by another layer it becomes next to impossible.

In short, RoR makes something that is easy (building CRUD apps) trivial, and something that’s hard – optimizing the database layer next to impossible.

In Drupal there are two modules, CCK and Views that allow you to create CRUD entirely through web interfaces. This is a feature that exist in just about every major CMS, it’s just that in Drupal it’s a little buggier and overcomplicated than necessary. These are fine for small websites and are really useful to amateurs. The problem arises when these are used for high traffic websites.

I think that a lot of people will agree with me that writing HTML and SQL queries using GUI tools is amateur hour. You just can’t make a good website with Microsoft Front Page. You can’t, you can’t, you can’t. But in Drupalland it’s all of a sudden fine to use Views to build queries for high traffic sites. Well, it’s not. Dealing with Views and Views Fast Search has been an ongoing nightmare for me. Hell is not even other people’s code in this case. It’s other people’s Views.

RoR, Views, CCK are one level of abstraction higher than you want to be when building a high performance application. The only way the can be an “Enterprise” tool if your enterprise is a) run by a morons that require 100 changes a day AND b) has very few users. In short, if it’s an app for the HR department of a company with 12 employees – knock yourself out. If you are building a public website for millions of people – forget about it.

Your, Deadprogrammer.

P.S. Yes, I know, you can abstract just about everything and reduce your software application to a single button labled “GENERATE MONEY”. You have to be a very smart LISP developer for that.

Photoshop Disasters

Seetharaman Narayanan did more to alter reality than 99.99999999 percent of people in this world. It’s ridiculous how much the look of everything changed after Photoshop. All the ads, illustrations, all the graphics in the world look different than they did in the 70s and 80s.

If you wish, Adobe website will give you a number of useful lessons on how to use Adobe trademarks, such as:

“CORRECT: The image was enhanced using Adobe® Photoshop® software.
INCORRECT: The image was photoshopped.”

and

“CORRECT: The image was enhanced with Adobe® Photoshop® Elements software.
INCORRECT: The image was photoshopped.
INCORRECT: The image was Photoshopped.
INCORRECT: The image was Adobe® Photoshopped. ”

Meanwhile everything I see around me in printed form has been photoshopped to death. These days when a professional digital camera is cheaper than a copy of Adobe® Photoshop® software and the streets of major cities are full of starving young models, the photoshopers out there would rather spend hours doing unnatural things with expensive stock photos.

I could understand this if the companies who would be doing this were short on money. But you know, when the same crappy stock photo is used in an ad for Vagisil and an O’Reilly book cover? That’s ridiculous.

There’s this blog that I’ve been reading lately called “Office Snapshots”. Recently they showed pictures of the offices of Vertrue. The seem to have spent more on a single chair than on the design of their “about us” page. Take a look: the title of the graphic boldly states “WHO WE ARE”. Judging by the graphic the answer is: “We are some smiling office drones from a crummy stock photo.”

Another fun blog that I’ve been reading is Photoshop Disasters. They mock crummy designers. After reading it I started paying a bit more attention to the small details of various ads. It’s crazy how many disturbing details there are. For instance, just now, I picked up a copy of some magazine that my wife was reading. Literally the first ad that I saw had a 6-fingered model:

Alteration of reality in photographs is not a new phenomenon, of course. There’s a great book called “The Commissar Vanishes” about the way photographs were altered in the Soviet times, especially to disappear repressed individuals. Besides sequences of photos of Stalin together with “disappearing” commissars, there’s a portrait of Stalin done by a pretty incompetent painter. Stalin, upon seeing the picture, crossed out the ear and wrote the following:

“This ear says that the artist is not well schooled in anatomy. J.Stalin.”

“The ear screams and shouts against anatomy. J.S.”

I don’t have a scan of that page, but believe you me, that ear was almost as disturbing much of the photoshopped models in today’s ads.

Lazyweb

Dear readers, I have a couple of things you could help me with..

1) Do you know a cheap and usable alternative to godaddy.com? A service with even cheaper domain prices (it’s $10/year for a domain) and a reasonable user interface?

2) I am still planning my switch to Mac – I am still using my Windows desktop and latptop at home and a Ubuntu desktop at work. Ubuntu is great for web dev, but at home I do need to connect to a lot of various peripherals that are basically unsupported in Ubuntu. Also, I like the pretty. Anyway, I am thinking of buying a G5 tower on eBay for about $1000. Hardware-wise it’s a dual processor machine similar to my dual Xeon Dell, but it was only $500 on eBay.. So, is this the best way of getting into Macing on the cheap? I don’t want to buy a Mac Mini because it cost an arm and a leg to add a second monitor.

3) I already mentioned this, but does anybody know a good Linux sysadmin with Apache/MySQL administration skills who’s looking for a job (preferably with some php coding skills)? Let me know, k?

My Return to Blogging

I am finally free of lousy Dreamhost. I also switched from WordPress to Drupal. There probably will be some glitches and missing urls, and the design will stay in the current stock “Garland” theme, but I am back.

I also apologize in advance for rss feed glitches that might happen – I am still tweaking the site.

Oy, Again With The Moving…

Using Dreamhost is quickly turning into nightmare. It’s a cheap, full featured and generous web host, except only good for websites that do not matter (and I think that mine do). There is no upgrade path to a virtual private server (which is one step below a dedicated machine both in price and performance), their overall uptime is not something I’d trust, and their blog is just driving me nuts. At the suggestion of a friend I’m moving over to Webintellects.

As a web developer I specialize in content management systems. I have wasted many years of my career on Microsoft technologies, although my personal website was always built using open source tools. In recent years, when faced with the twin horrors of Sharepoint and MS CMS, I just could not go on any more. I just can’t imagine an entrepreneur who would willingly use this stuff to build a business. I quit my job of almost 6 years, took some time off and went on to a job that allows me to use open source tools. We’ve had quite a bit of success with Drupal, a leading open source CMS.

WordPress is a great tool for blogs, but it makes good sense for me to start using Drupal for my own sites, as well as at work. Drupal grows at an astronomical rate, improving in leaps and bounds. I have a couple of modules almost ready for contribution (once I make them a little neater and better documented). Drupal is very scalable, very well designed and has a huge following. I could not be happier with it as a developer.

In the five years that my website existed in blog format I moved 3 times. Livejournal -> Movable Type -> WordPress. Now it’s Drupal‘s turn.

I apologize in advance for any annoying symptoms of the move, like refreshing of the RSS feed where already read articles might show up as new, etc. Please bear with me.