The right database

When it comes to databases, I have always liked the usability of SQL Server. I like being able to build diagrams that automatically rearrange themselves. I like the tools for setting up replication, but I would probably never recommend SQL Server to a client given the free and open database products that are available. The alternatives are amazing, and most of my clients have simple needs that can be met with some of the good open source database products that are available. My clients have tight budgets. Everybody has a tight budget!

Any time I have used Oracle, I have found that my clients did not fully exploit the product. The superiority of Oracle should never be a good reason to continue using Oracle as far as I am concerned. Even though all of my Oracle clients had full time Oracle DBAs, the DBAs operated in a separate silo and were not directly involved in helping me write my application.

In one case, the DBA was of no help to me, except that he was obviously disgusted by the fact that I was using Microsoft products. I never met with him because he was in another city, and he prefered email and the phone, in that order. Another DBA was not even interested in my participation or my ideas – he wanted my requirements, and he wanted to build the tables and provide views himself. He knew nothing about the application I was building! Twice, I had to tell my client that the DBA was an impediment to my progress, not a help. In the end, these unhelpful DBAs were told to hold their noses while I completed my contract and to stay out of my way.

I like to see Oracle on a resume, but that is about it. An Oracle DBA is more likely to know certain things, and SQL Server DBAs tend to think a database is something you just slap under your application to manage the data. SQL Server is easy to use, but that attracts some real amateurs.

On the other hand, I have never worked on a project that would have been better if only we had used Oracle, but I know that such projects exist. For example, I would use Oracle if I were working on a database that managed information about individual stock market transactions. This would be a high volume requirement. However, Oracle wants us to believe that their product is required in ALL cases, and it is not.

I have seen bad databases with tables that were not even in second normal form that were built using the best database products around, including Oracle, Sybase, and SQL Server. Therefore, I would say that proprietary database products are not always required; also, using a proprietary database is no gaurentee of success at all. The number of people building bad databases with Oracle is probably legion. (When I say that they are bad, I am also aware that many successful businesses are run using these pieces of crap. I am a snob, and I know it.)

The right database is not just a matter of choosing the right database product, even though the vendors want you to think that. The right database is a database that is properly designed. This industry emphaisizes the tools more than the products we produce. At the end of the day, using a good tool does not ensure that the work is good; nor does using a less robust tool mean that the product is inferior. Many database built using Oracle use features that are readily available in MySQL or Postgres. It would be better to have a good designer building your database than it would to build the database using a bad designer. A good designer knows your busines, and has been doing his or her work for a long time.

Giving a smart kid the latest tools makes for colossal mistakes not for success. In the enterprise, I support the idea of cross-generational teams. The young people keep the old farts up to date on new ways of working, but the old farts have a lot to teach the youngters, too.

Health Tips For Sick Nerds

My goal as a software developer is to write good code, and to meet the needs of my client by applying technology to solve business problems. My goal as a heart patient is to improve my ejection fraction, to increase my exercise tolerance, to maintain or improve my quality of life, to survive a diagnosis that has been know to kill 40% of people in the first year, and to live a long life that will allow me to provide for my step kids and for my wife.

I want to build a life for us all to remember together, and I find comfort in thinking that my step children will remember this time we spend together seventy years from now. I care about them, and I have more than hopes for them: I want to equip them for life, and to teach them things to help them. In a way, I am also committed to a cause, or several, and I may want to extend my moral influence into the future through them – such is my conceit.

Nerds do not have a reputation for knowing much about exercise or health. In fact, we have a reputation for not being good at sports and for eating badly. That is our reputation, at any rate. Whether we exercise or not, I think we can safely say that we differ from most people in peculiar ways. My approach to health is nerdy, I think. My wife would agree – the way I talk about it certainly makes he suppress a giggle.

In the morning, I start my day by checking in with God by at least praying, and perhaps by reading the bible. Very quickly after that, I visit some websites to keep up with technology. I read about trends, and I read various articles about programming in either Java, C#, Python, Ruby, PHP or Javascript. I do not routinely program in each of these languages, but concepts are interesting. I also follow certain frameworks: Turbogears, Django and Ruby on Rails. Again, I do not use these frameworks in my work, but concepts are useful. Basically, I try to stay informed.

I also keep up with research on cardiomyopathy and heart failure. For example, I have decided to take Coenzyme Q10 even though my cardiologist advises that he has no reason to believe there is a benefit. I have found no research that indicates that it does harm, and I have found a lot that indicates that there may be a benefit. However, my risk management strategy is check the research every week. I also take magnesium and chromium.

My angiogram reveals that my arteries are in great shape, but blood tests revealed that my triglycerides were high and my levels of good cholesterol were extremely low. My cardiologist prescribed Lipitor to address my cholesterol problems, but I read that Lipitor shares a chemical pathway with Coenzyme Q10, which is a source of energy for the heart. This interferes with Coenzyme Q10 production in the body. A Dr. Silver recommends taking Coenzyme Q10 supplements if you take Lipitor and you have suffered from congestive heart failure. I decided to discontinue the Lipitor since my arteries are clear anyway, and to address the cholesterol problems through diet and exercise.

As a matter of course, I also track research on Lipitor, and I found an amazing study that suggests that Lipitor may have other benefits in heart failure. Lipitor seems to be associated with increased ejection fractions and better outcomes in general, despite the warning about the shared chemical pathway with Coenzyme Q10. I still refrain from taking Lipitor because I have concerns for liver complications associated with Lipitor, but I will monitor my cholesterol levels and reassess at a later date.

One of the risks I face every day is that I will retain water. This water can end up impairing the function of my heart and lungs by causing congestion. I manage this risk by getting weighed every day. A sudden gain in weight indicates a possible problem. I also manage this risk by reducing my salt intake. Salt helps the body retain fluid, but reduced salt intake is associated with less water retention. As a final precaution, I take a daily diuretic to help me shed fluid that may end up around my heart and lungs.

I have often said that a database, especially a database that is being used every day, is a machine. It breathes, it excretes and it performs other bodily functions. Databases need checkups, too. I find myself taking the same approach to my own health as I do to technology. If you are a nerd, and you are struggling with a chronic illness, perhaps you should consider transfering some of your skills to managing your health.

Confessions of a half-hearted warrior

Mea culpa! Mea culpa! Mea maxima culpa! I use Windows. There. I said it.

I could pretend that I hold my nose during the day and only use Windows at work. To defend myself, I could make a case that I use Linux and open source most of the time; in fact, I used Fedora Core 5 and Open Office to write this piece. But, I have a confession to make – well, several confessions. I am not a true believer. I am tagging along with the open source movement. I am too self absorbed to really get excited about the politics of it, or to get shrill about it. I would have been happy using proprietary software if that were all that was available. I am a Johnny-come-lately to the cause. In the war for free software, or for open source, most of the time, I am cleaning latrines rather than planning troop movements or risking my life. I would prefer for my side to win, but mostly, I want to live my life – I will always be willing to accommodate the enemy if I have to.

I do not burn to see Bill Gates begging for change on a street corner. I could manage a mean spirited smirk if I saw Larry Ellison waiting in line at the food bank, but I would feel bad about it right away. If Larry called me tomorrow to offer me a high paying and interesting job, I would take it. I will probably always be a hypocrite when it comes to open source. I like developers more than I like software companies, even when these companies do produce open source products. I like smart, enthusiastic people who do a good job and work well together, even when we are not using open source tools.

It is easier to install stuff on Windows. I am not complaining because I am too wimpy to use the command line, or to compile from source and edit configuration files. Maybe I do not want to do that every time – but, more importantly, I do not expect my clients to do that. Linux needs a popular, easy too use system for reliably managing and installing software that is shared across distributions. Package management for dummies in all the main distributions is a must. I know that most of my clients cannot compile the code themselves or spend time trying to resolve dependencies.

I like using SQLyog on a Windows box. It installs very easily, and I can move databases from one server to another with little effort. I can even schedule backups and other tasks. I know that I can use cron on Linux, and I know that there are scripts I can write, but I am lazy. Even when I am deploying an application to my server which is running Centos, I often develop using MySQL running on Windows because it comes with the MySQL Administrator. I know that I can install the MySQL Administrator on Linux, but I am a creature of habit – once again, I am lazy. SQLyog is great, but it only runs on Windows.

I also love to run Eclipse on Windows. It finds the JRE without my having to edit environment variables. It seems to run faster on Windows at times, but the latest version of the JRE provides some good speed improvements on Linux. Of course, that is not the version of the JRE most Linux distributions ship with. I know that I can deploy my code to Linux later as long as I commit to testing it on Linux as I go. The Eclipse documentation seems geared for people who run it under Windows – why cause problems for myself? However, I do run it under Linux just for fun.

Therefore, let me make myself clear. I admire the Richard Stallman’s of the world. As far as he seems to go in supporting the idea of free software and freedom in general, I find that he is consistent and he makes sense. I agree with him often. I just don’t feel as strongly as he does. I remain willing to compromise. I love to code, but I have to confess to being promiscuous when it comes to software.

However, I do care about the right to choose, and I prefer to keep my options open. I use Python because it can run on either Windows or Linux. I use PyDEV to edit my Python, and I use Subversion all the time. At work, we are running Subversion of a Windows box and we use the Tortoise client. In my own time, I run Subversion on a Linux box, and I access my repository using a plugin for Eclipse. As much as possible, I like it when my experience can be the same on my Linux box as it is in Windows, or vice versa – I do not want to think about the differences. Hence, I use Open Office, and save my files to a file server that I can access from either Windows or Linux.

In practice, I care about the right to choose, and I want to give my clients value for money. It does not seem right to tie them up in license agreements and license fees. I do not want to paint them into a corner and leave them stranded. A product would have to be clearly superior to the open source alternatives before I recommended it; and, it would have to be obvious that the superiority of the product made a difference to my client. Most of my clients, even government clients, have simple requirements and run-of-the-mill business problems. I am also arrogant enough to believe that it matters more to my client to hire me, an experienced professional with years of experience, than it does to select one tool over another, proprietary or not.

While some people are busy spreading the faith or changing the world with open source, I am often focused on the day-to-day problems of building and maintaining systems to manage information for the people who hire me. I will use the tools they prefer to use if they are not open to suggestion, and I will still have a sense of accomplishment at the end of the day. I care more about my personal brand, and my workmanship, than I do about about the tools I have to use.

So, I confess: I use Windows on a regular basis even when I have a choice. I am lazy. Sometimes I do not change because it is easier for me not to. I am not out to change the world – at least not the software business models of the world. A world that only had proprietary software would still be worth living in for me. I am not an open source zealot, but the war is going to be won by people like me: grunts who end the day wanting to get off their tired feet, who often care more about what is being served in the mess tent than they do about truth, justice and the open source way. Still, as the army moves, my friends and I claim new territory for open source every day.

« Previous Entries