Category: Uncategorized

  • Part I of Hegel, Coding and Managers: The Blindness of Coders

    This is a real rant from a techie who works for a company in San Mateo:

    Recently our CTO (who also is a word class fool) promoted a guy to the position of lead product architect. I would like to mention that the product whose architect he has appointed has never contributed any work worth mentioning.

    If you take a look at the only feature he has managed to make and he was the only resource assigned on that feature so I suppose he had all the options to take his decision and come up with a word class implementation, comprises of one file only. Yeah just one file and this one file contains tons of classes which have methods reaching 1K lines.

    So you can imagine where the focus is. It clearly shows that this guy has never programmed under a good leadership. He is so worried about getting this fact disclosed that he managed to convince the CTO to not allow anyone to even see his code let alone suggest improvements. That’s one of the reasons I call the CTO a fool too 🙂

    God knows what more is to come from this word class duo.

    — source an anonymous lead engineer in San Mateo

    The first thing that struck me is this. Why is this guy telling me this? Why isn’t he telling the CTO? One of the mythologies that Hegel pedals is the idea that the status quo is a result of a life and death struggle with the result being a great inequality. The time for talk has passed long ago, and what we have is this:

    [O]ne is the independent consciousness whose essential nature is to be for itself, the other is the dependent consciousness whose essential nature is simply to live or to be for another. The former is the master, the other is the slave. (Phenomenology of Spirit, s. 189)

    Hegel’s way out for the slave is the work that the slave does on things. Hegel characterizes work as “desire held in check, fleetingness staved off… It is precisely in his work wherein he seemed to have only an alienated existence that he acquires a mind of his own… having a ‘mind of one’s own’ is self-will, a freedom.” (s. 195 – 196) Through service and discipline the slave makes herself stronger. The slave working on her work sees herself as essential and the master as unessential. This sets the stage for the slaves escape to freedom or possible domination of the master. In Marx, this is when the workers rise and take over all ownership of the means of production. The unessential, i.e. the owners, are done away with or made into workers themselves. Nobody is any longer master nor slave.

    On the PHP Meetup list, I asked the question, “Have there ever been coders who have coded their way to freedom?”

    I was given two examples, neither of which answered the question, and show that yes, a lot of coders do falsely believe that coding leads to freedom.

    1) John Gilmore, a founder of the EFF which is an organization I support with donations.

    2) Richard Stallman.

    I’d say neither is free because although Gilmore made a fortune at Sun, coding didn’t lead to that freedom as a necessary condition. There are coders as good as Gilmore who don’t have that cash. The fact that EFF had to be founded points to the un-freedom of coders.

    As far as Stallman goes, I admire his work. I use a lot of GNU software. However, I don’t have enough fingers to count the companies that close source GNU software and try and re-sell it as their own.

    So, as you can see coding isn’t enough. Yet coders feel their coding makes them qualified to call CTOs fools. Ya, I can see that putting 1000s of lines of code into one file can be dumb. I can also see that promoting a bad coder is a bad idea. Good coding allows you to see this, but this guy in San Mateo has bought into the idea that he can’t talk to this CTO, that somehow the solution to the problem is technical, i.e. better code.

    If you’re a coder, my advice to you is that the time to talk isn’t over. It hasn’t been settled in a Hegelian life and death struggle where the inequalities are currently fixed. If you talk, you still have a chance. Email your gripes now, and you might even be surprised.

    In my next post, I talk about the prejudices that managers have towards coders.

  • Update your To Do List from Your Cell and Share Flowcharts with Everyone

    To make flowcharts Web 2.0 style check out Gliffy.com.

    Looking for a To Do list that works off-line as well as on-line? Do you also need to send your To Do items via SMS from your cell phone?

    I love Remember The Milk just for this sort of thing.

  • Sun Breaks MySQL’s Source Install

    I was supposed to go to Medjool to meet up with the Zappos crew, but instead I ended up helping a pal with a MySQL database upgrade problem with version 5.1.24-rc.

    The upgrade was a cluster fuck!

    These steps for upgrading MySQL have served me well for the past 9 years.

    tar cvf backup_data.tar /usr/local/mysql/var/*
    gzip backup_data.tar
    cd /usr/local/src/mysql-5.1.24-rc
    ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-ssl
    make
    make install
    scripts/mysql_install_db
    

    Then I’d just run ‘/usr/local/libexec/mysqld –user=mysql &’ and I’d be on my merry way to happily computing on the web.

    But now wiith version 5.1.24-rc of MySQL, I’d have to ask what the heck are they doing at Sun to MySQL?

    When I started the server, I noticed that the state files were running in /var . Big fail there, since the prefix is defined as /usr/local/mysql .

    Also, I noticed that when I ran scripts/mysql_install_db there were more path errors:

    FATAL ERROR: Could not find /fill_help_tables.sql

    Then the biggest source of fail occured when I ran this:

    /usr/local/libexec/mysqld –print-defaults

    /usr/local/mysql/libexec/mysqld would have been started with the following arguments:

    --port=3306 --socket=/tmp/mysql.sock --skip-locking --key_buffer=16M 
    --max_allowed_packet=1M --table_cache=64 --sort_buffer_size=512K 
    --net_buffer_length=8K --read_buffer_size=256K 
    --read_rnd_buffer_size=512K --myisam_sort_buffer_size=8M 
    --log-bin=mysql-bin --server-id=1 --user=mysql 
    --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock
    --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp
    --language=/usr/share/mysql/english --skip-external-locking --bind-address=127.0.0.1
    --key_buffer=16M --max_allowed_packet=16M --thread_stack=128K --thread_cache_size=8
    --query_cache_limit=1M --query_cache_size=16M --expire_logs_days=10 --max_binlog_size=100M
    --skip-bdb 
    

    Once again, path errors, and –skip-bdb is an option that doesn’t even exist for mysqld!!!!!!

    Here was my fix for the scripts’ install:

    ./scripts/mysql_install_db --no-defaults --port=3306 --socket=/tmp/mysql.sock \ 
    --skip-locking --key_buffer=16M --max_allowed_packet=1M --table_cache=64 \
    --sort_buffer_size=512K --net_buffer_length=8K --read_buffer_size=256K  \
    --read_rnd_buffer_size=512K --myisam_sort_buffer_size=8M --log-bin=mysql-bin \ 
    --server-id=1 --user=mysql --pid-file=/var/run/mysqld/mysqld.pid \
    --socket=/var/run/mysqld/mysqld.sock \
     --port=3306 --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var \
    --tmpdir=/tmp --language=/usr/local/mysql/share/mysql/english --skip-external-locking \
    --bind-address=127.0.0.1 --key_buffer=16M --max_allowed_packet=16M \
    --thread_stack=128K --thread_cache_size=8 --query_cache_limit=1M \
    --query_cache_size=16M --expire_logs_days=10 --max_binlog_size=100M
    

    Here’s my fix for how the server must start from now on:

    /usr/local/mysql/bin/mysqld_safe --no-defaults --port=3306  \
    --socket=/tmp/mysql.sock --skip-locking --key_buffer=16M  \
    --max_allowed_packet=1M --table_cache=64 --sort_buffer_size=512K  \
    --net_buffer_length=8K --read_buffer_size=256K  \
    --read_rnd_buffer_size=512K --myisam_sort_buffer_size=8M  \
    --log-bin=mysql-bin --server-id=1 --user=mysql  \
    --pid-file=/var/run/mysqld/mysqld.pid  \
    --socket=/var/run/mysqld/mysqld.sock --port=3306  \
    --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var  \
    --tmpdir=/tmp --language=/usr/local/mysql/share/mysql/english  \
    --skip-external-locking --bind-address=127.0.0.1 --key_buffer=16M  \
    --max_allowed_packet=16M --thread_stack=128K --thread_cache_size=8  \
    --query_cache_limit=1M --query_cache_size=16M  \
    --expire_logs_days=10 --max_binlog_size=100M &
    

    All that just to start a server, so now, I’m totally telling my friends to use PostgreSQL instead. Sure it’s slower and doesn’t scale as much by a factor of 4 compared to MySQL, but hey, maybe it’s time for something new.

  • About The Codebelay Blog

    Tech bytes and news that keep you out of harms way – That’s what inspired Jim Barcelona – a technologist – to write Codebelay.

    photo
    Barce

    Codebelay

    This hCard created with the hCard creator.

    Add this to my address book

    Jim “Barce” Barcelona maintains this great software product:

    • Sitebeagle — beagles make great watchdogs! Sitebeagle lets you know when a site has updated.