Feed on
Posts
Comments

In my career as a software developer - such as it is I have worked in a couple of large IT consulting companies. Of all the drivel that I have put up with in those companies - ‘Performance Reviews’ and the energy expended on them was the one that caused most frustration. As usual Scott Adams expresses my feelings about this with so much more aplomb than I ever could…

Performance_Reviews

Feel free to agree or disagree with me - leave me reply…

I was in one of my pondering moods the other day and it struck me that software development has less to do with pure mathematical prowess or engineering skill (though having that is certainly a benefit) and more to do with expressing yourself. This is no coincidence - it is because programming software is nothing but an exercise of making ones wishes understood. Indulge me for a minute here while I put to you my thought process…

Ever since we invented a computer, we have been evolving ever more sophisticated ways of communicating with it. As the computer grew more powerful and capable of understanding more complex thoughts we moved from machine code, to assembly instructions to software languages. We have reached a place now that computers are capable of processing huge amounts of data and instructions, executing extremely complex instructions and passing information between each other as needed. In response to these capabilities computers have been programmed using ever larger programs to solve ever bigger problems.

Programming solutions to today’s problems have gone beyond the capabilities of a single individual. Most software projects today require teams of programmers working in concert. This has lead to an interesting dynamic - developing software in groups. Except, software development has moved beyond geography - the ephemeral nature of software makes it an ideal candidate to be developed in a virtual construct that transcends physical proximity. Almost every non-trivial software program developed today is a collaboration of individuals, many of whom are literally at opposite ends of the earth and may have never met face to face.

This leads to a big problem - software programming is a pretty creative and complex process. Add to that, the fact that your collaborators are probably sleeping while you are coding and vice-versa, pile on the disparities in culture and language and you can see why I am saying that software development is more about expressing oneself. One of the bonuses we have being programmers is that, despite all these differences, we are trying to talk to computers and computers have standard ways of communicating with people. So, it can be argued that as long as we all are coding in the same programming language, and we are using the same tools we should be fine. Unfortunately, coding is a only a part of a software project - requirements, design, marketing, users, clients, quality assurance, maintenance, provisioning, etc - all are factors to be considered. All these aspects may be handled by people who are not programmers but still need to know what is going on. Besides, coding itself is much more than simply writing code, it also involves commenting, code reviews, design decisions, trade-offs and alternative approaches, all of which need to be discussed and communicated.

Given all the interactions that I described above, it is no surprise that programmers spend a significant amount of their time talking and writing about the stuff that are doing and are planning to do. Given this dynamic, in my experience, I have noticed that, successful programmers have learnt to express themselves clearly and concisely. I have seen this so consistently, that I would even go so far as to state that, a programmer that cannot clearly articulate a problem either in writing or in conversation has either not understood the problem or is incapable of solving the problem.

Expressing a thought clearly and concisely is a skill that must be practiced. Personally, I am using this blog as much to exercise this skill as I am for anything else. I would encourage you, dear reader, to give thought to this as well. Spend a few minutes over your next email or your next requirements document, proof reading it and making sure you have conveyed you point clearly and succinctly. Reading is another great way to improve your communication skills - look for books outside your normal fare, look at newspaper articles - I have found them to be great sources, since journalist have specific windows of reader-attention and space to convey their points.

Well, until next time… Programmer - Express thyself !!

So here I am minding my own business when I browse to one of my favorite web-sites UserFriendly and the featured link of the day is… Well check it for yourself - The Church of Google.

Now personally, I think this is a one of those ultimate sarcastic jokes - You know the ones, where you create this elaborate scenario and setup and when you deliver it - you realize - there are people that actually believed you and took all that crap seriously !! At this point of realization - different people act in different ways :-

  1. Some stop and try to explain that this was actually a joke and was never meant seriously and would everybody just laugh and be done with it and carry on with their lives.
  2. Some get on a form of euphoria - as if they found the ultimate sarcasm heroin - fan the flames even higher, all the while laughing hysterically at the number of cooks that fell for it.
  3. Some regress and almost as if drugged by the smell of their own farts, they consider themselves messiahs to a new consciousness and start believing the crap they are spewing.

I leave it to you to laugh, or vent about the Googlism, its ideology or its proofs. As far as I am concerned I have seen this particular joke before and its supporting arguments and counter-arguments. I had this discussion once with some friends of mine on alternative religion and they showed me this. The Church of the Flying Spaghetti Monster is an obvious parody (and I really love some of the stuff they pull) but it is one designed IMO, to prove certain points about the abstract nature of religion. However, The Church of Google is IMO a parody of attempts to scientifically prove religion exists which is a much more controversial contention, in my mind. I am certainly going to be keeping an eye out for these guys, though I find it interesting that so many people actually search for the term ‘Google’ on Google (all sort of delicious recursive paradoxes come to mind :-) at that phrase)

I admit - I admire Google - the company, their innovation, their approach and their unique ability to leverage their chosen battleground. This has been reflected in the posts that I have done about them. However, I think of them more as a bunch of really smart people with a innovative idea of automating technology at scale.

And that’s all I have to say about The Church of Google :-) If you are interested The Church of the Flying Spaghetti Monster has a gospel, and they celebrate a holiday.

Update:  Now here is an interesting contrast to the Google worship of The Church of Google. Cory Doctorow wrote a short story of what could happen if Google went to the dark side.

This is an interesting tidbit that I came across in my aimless wanderings around on the Internet. Unfortunately I don’t remember the place that I found it - it was during a random Google search that I had made buried in the second page somewhere.

So the requirement was to do a case sensitive search for values in a MySQL table. So if you wanted to search for records that contained the term ‘foo’ in the title from a table ‘FooName’ containing the following records -

FooName

Title Description
foobar a bar of foo
Foo royal foo
Fooka car of foo
foo just foo

The typical select query -

Select Title from FooName where Title like '%foo%'

Returns

foobar
Foo
Fooka
foo

This may not be exactly what you wanted since ‘foo’ is all in lowercase and the query above returns all values that have the letters ‘foo’ in that order regardless of case. In order to ensure case sensitivity in MySQL just modify your query like so -

Select Title from FooName where binary Title like '%foo%'

Returns

foobar
foo

Of podcasts…

I have to commute to work - this in itself is not uncommon and is not the point of the post. It is what I discovered to do with my time during my commute that I wanted to share. Initially I tried the various radio stations, and settled on National Public Radio station in Atlanta - 901 FM - WABE. It had the news and some fine western classical and the advertising was limited (or easier to tune out :-) ). Then it began its biannual fund-drive and I realized I needed something else during those week. That brings us to the topic of this post - Podcasts.

I had a heard a lot about podcasts - in fact they have been around so long that predictions of their demise have started coming up. I had downloaded and listened to a couple sometime back and I liked the concept. For awhile - I dallied with the thought doing it myself… Yeah - I know I can barely post enough for a blog and here I am thinking about podcasting - the arrogance of the man :-) . Then video blogs (vlogs) came along and I decided didn’t want really want to compete with svelte and sexy actresses pretending they knew what they were talking about ;-)  - but I digress …

So I started looking for some nice podcasts to listen to while on my commute. I have some favorites which I thought I’d put up post on…

  • Comedy - I decided to start out with something light and fun. I have a penchant for British humor and gave this one a try and liked it - Sowerby and Luff. Another one which is a very leftist American political comedy is NPR’s - Wait Wait Dont tell Me… - this is very topical and will make sense only if you are aware of the day to day dealings of American politics. Finally for geeky humor try - Ask a Ninja (this is a video podcast - so its not strictly commute friendly unless you are a passenger :-))
  • Philosophy - I have an audiobook of the seminal work of Robert Pirsig - Zen and the Art of Motorcycle Maintenance.
  • Life in general - Another great podcast I found on NPR is - WNYC - RadioLab
  • Internet and life online - This is a category I created for those of us who trawl the internet. We monitor it using blogs and RSS readers. We go to sites like Slashdot and Digg and take the pulse. There are podcasts for people like us - in fact they are video podcasts - but they can just as easily be simply listened to - Diggnation, Geekbrief.tv, and TWIT.tv (This week in technology)
  • .NET Technology - DotNETRocks - This is a great podcast for keeping in touch with the happenings in the world of Microsoft (which if you have looked at of late is exploding in size and scope of the developer offerings).

MySQL Resources

One of the things I have discovered the hard way about working with MySQL is that unlike SQL Server 2005 resources for MySQL are not as widespread. Other than the official MySQL website and the MySQL sponsored forums there seem to be a strange lack of technical resources on MySQL. Since there seem to be so little I thought it mights be beneficial -

  • MySQL Reference - The online link to MySQL 5.0 is here. It is good reference but is a little skimpy on the examples unless you dig into the comments section at the bottom of the pages.
  • Xaprb - This is one I am a big fan of - the blog is focussed on MySQL. The author really knows his stuff, not only in MySQL esoterica but about SQL in general. Great place to go to learn more about MySQL.
  • MySQL Performance Blog - This is another blog written by MySQL consultants based in Europe. This blog is focussed more on the performance tuning tips for MySQL. Great resource to learn the various settings and variables in MySQL that can be used to diagnose and tweak MySQL performance.
  • MySQL Forge - This is MySQL’s version of Sourceforge.com. This is a community site for MySQL tools and scripts. Lots of perl, php script tools dealing with various aspects of database maintenance and functionality.
  • MySQL - The definitive guide to using, programming and administering MySQL 4.1 and 5.0 (ISBN: 0672326736) - This book by Paul Dubois is a great reference for MySQL. As befits a definitive guide the book is hefty at nearly 1300 pages but a must have for any in depth study of the database.
  • mySQL CheatSheet - There is a neatly laid out cheat sheet in this blog post. I find it useful lying on my desk for the times I blank out on stuff.
  • There are a couple of blogs by mySQL insiders that I keep an eye on - http://jan.kneschke.de/projects/mysql and http://www.planetmysql.org/robin/

Thats about it for now. Please feel free to add ones you guys go to in the comments to the post (the comments are moderated so they may not appear as soon as you insert them) :-)

Two - Oh Humor

I saw this great video (I don’t know much about the hosting website so it may be taken down in a few days) -

glumbert.com - Supermarket 2.0

It’s about applying the latest cool Web-Two-O- Ism’s to a Supermarket so we have - Tagging, Ajax, Commenting, Wish lists, RSS Feeds, etc.
My favorites are the parodies on - Pandora style recommendations and Amazon style selling items that other people who bought the same stuff also bought.

I have been noticing some subtle and not so subtle changes happening over at Google for the past few days now. Google’s personalized home page has been renamed to iGoogle - search results has started appearing subtly different with new groupings and they had started putting more links in the classic Google Home Page. To illustrate what I mean check out this search for Jon Stewart - notice the bar showing all the different searches.

I was initially thinking, that this was simply another refining of the search experience and I thought I’d blog about it when I when I saw this announcement at the Google blog.
They have done, what - despite the looks of it - is a pretty big revamp…

Its called Universal Search - and it promises to be a merging between textual search and rich media search that should rock the search engine world and put even more distance between Google and Yahoo (Microsoft is still a distant third IMO). They are calling it the first move in pretty big re-design of their search engine, with a goal towards providing a universal search across all types of content - web, news, images, books, video, blogs, etc. This implies that now not only does your search entries return results for relevant web-links but also relevant new stories, books, blog entries and if relevant videos. From the UI point of view the user sees a white vertical navigation bar that groups the results by category. Vertical search companies better watch out - if Google can pull this off they are in trouble.

It finally reveals the strategy behind Google’s purchase of YouTube - more fodder for the search monster :-) Apparently not enough though since Google has also announced that their video search is going to search against the collections of other properties also.

Another major product or rather a new area is Google experimental. This is an area where new enhancements to the Google Search page is available for people to try out. I especially like the timeline feature and the keyboard shortcuts feature.

References :-
Search Engine Land
Google 2.0: Google Universal Search
Techmeme
http://www.techmeme.com/070517/p2#a070517p2

Nowadays in the media industry, it is hip to be DRM Free. Witness the iTunes agreement and the Amazon announcement. What’s not to like - its a very “rising up against the man” thing to do and you get a lot of adoration from the masses to be sure…

Well as a consumer I think this is great but I also don’t think it’s the future and here is why I think that -
Mp3 as a format in my opinion is showing its age. To get lossless quality audio, mp3 files have to get pretty darn big. There are plenty of new and better formats out there both with and without DRM that do a better job compression and have better audio characteristics. Right now, this may matter only to audiophiles but they are still a proportion of the market which typically buy a lot of music. Based on this I believe that physical media is still going to be around for awhile but I also believe they need to undergo a price and quality adjustment.

Content itself is morphing - its no longer just music - its music videos, podcasts, video blogs, games, HD-DVD. All these content formats are typically longer and bigger than 5 - 10 minutes (the average length of a song) . They also have features that are not supported by mp3, so you are going to have to use new formats anyway. Downloading these files directly over the browser is going to suck for everyone except for those that have big broadband connections.

Both the iTunes and the Amazon announcements have talked about making unencumbered music available for sale. They have however not mentioned anything about the fact that this music is going to be bought and then shared over the internet. I might have missed the portion where they talk about using digital watermarking and if I did - someone please correct me. This does not address the fact that with todays technology it is really easy for someone to share a file indiscriminately with anyone and everyone on the internet.

I for one think digital watermarking should be used and advertised if nothing else as a deterrent. A digital watermark may not prevent me from sharing some of the songs I buy with my friend so he can hear a new artist but it would make me think before I shared it over a P2P network to the rest of the world since the file could be traced back to me. Of course the argument could be made that my friend could share it but if everyone knew the risk then they would share it only to friends they trusted not to do that :-)
References :-
Techcrunch http://www.techcrunch.com/2007/05/16/another-break-in-the-wall-amazoncom-to-sell-drm-free-music/

Download Squad http://www.downloadsquad.com/2007/05/16/amazon-announce-drm-free-digital-music-store/

One of the biggest things I have to do as part of my company’s transition to using mySQL is the migration of the existing data to the mySQL platform. The problem was getting Microsoft’s SQL Server 2005 and mySQL to talk in a straightforward and flexible manner. The main issue is that SQL Server 2005 does not provide ODBC drivers out of the box.

This IMO is a big backward step for SQL Server 2005. If you use the SQL Server Management Studio interface there is .NET ODBC driver available as a data-source when trying to import data but when you try to make ODBC as your data-sink these options are no longer available. You get this issue when using SSIS also so I went on another tack - linked servers.

Linked servers are simply connections to other data sources or data sinks that are maintained by the Microsoft SQL Server. These can be local or remote and are a flexible and powerful way of making data that is spread across multiple servers available. You big advantage is that you could address the data with SQL statements directly as if they were on the same machine. Linked Servers could be ODBC data-sources as long as the appropriate ODBC drivers were available.

So I went to mySQL and got the mySQL ODBC Driver. After installing the driver on the server (mySQL has detailed installation instructions here), setting up the linked server was pretty straightforward -


EXEC master.dbo.sp_addlinkedserver @server = N’MYSQL’, @srvproduct=N’MySQL’, @provider=N’MSDASQL’, @provstr=N’DRIVER={MySQL ODBC 3.51 Driver}; SERVER=127.0.0.1; DATABASE=DB_Name; USER=UserName; PASSWORD=Password; OPTION=3′

Now you have set up a linked mySQL server using ODBC. Since this is an ODBC connection selecting and inserting data to and from it is slightly different. You use the openquery function like so -

Selecting Data -
select * from openquery(MySQL, ’select * from `db_name`.`table_name`’)
Inserting Data -
INSERT into openquery(MySQL,’select * from db_name.table_name’)
select * from db_name.dbo.table_name

Older Posts »