Category: Computers and stuff

| 0 Comments

Here's an interesting quote I came across this evening while reading the introduction of the online course Building a Modern Computer From First Principles:

It turns out that this strategy works well thanks to a special gift unique to humans: our ability to create and use abstractions. The notion of abstraction, central to many arts and sciences, is normally taken to be a mental expression that seeks to separate in thought, and capture in some concise manner, the essence of some entity. In computer science, we take the notion of abstraction very concretely, defining it to be a statement of "what the entity does" and ignoring the details of "how it does it." This functional description must capture all that needs to be known in order to use the entity's services, and nothing more. All the work, cleverness, information, and drama that went into the entity's implementation are concealed from the client who is supposed to use it, since they are simply irrelevant. The articulation, use, and implementation of such abstractions are the bread and butter of our professional practice: Every hardware and software developer is routinely defining abstractions (also called "interfaces") and then implementing them, or asking other people to implement them. The abstractions are often built layer upon layer, resulting in higher and higher levels of capabilities.

The site contains all the software tools and project materials necessary to build a general-purpose computer system from the ground up, so check it out if you dare to take up this amazing challenge.

| 0 Comments
  • Eliminate waste: Spend time only on what adds real customer value.
  • Amplify learning: When you have tough problems, increase feedback.
  • Decide as late as possible: Keep your options open as long as practical, but no longer.
  • Deliver as fast as possible: Deliver value to customers as soon as they ask for it.
  • Empower the team: Let people who add value use their full potential.
  • Build integrity in: Don't try to tack on integrity after the fact, build it in.
  • See the whole: Beware of the temptation to optimize parts at the expense of the whole.
| 0 Comments

I am convinced that the new programming language called Clojure has alot of potential and if successful will fundamentally change the way we think about developing complex applications.

Recently I purchased two books about this amazing programming language, Clojure in Action and The Joy of Clojure, and although I've read about a fourth of each book, I have not had enough time to study it as deeply as I would like to.

Here's a very simple example of how elegantly an otherwise difficult to program algorithm can be expressed in a single code statement:

(reduce + (range 1 1001))

Basically, this one-liner takes a range of numbers and adds them all together giving the total of one through one thousand and one. Show me another programming language which can express this more simpler.

Very interesting is the fact that this language is based on Lisp which is one of the earliest (functional) programming languages and is many decades old. The pendulum swings back and forth and now it is time to return to our roots. We will have to turn our linear programming mindset inside out in order to move forward.

So with that in mind, it's now time for me to go out for my daily run in the freezing cold and warm up my body and mind by philosophizing about programming computers and the true significance of simulating/stimulating human thought processes.

| 0 Comments

While reading an interesting book about producing reliable software releases called Continuous Delivery, I came across the following excellent idea:

"If it hurts, do it more frequently, and bring the pain forward."

If certain tasks of releasing software make it a painful process, for example last minute tests which seem to break the product right before launch, then the idea is to figure out a way to automate all tests and 'release' the latest version after every single change.

How often has this inefficient so-called fact of life just been accepted as part of the deal, when in fact with a little logical thinking it does not have to be so. The extra time and energy spent in improving this might result in a temporary pain increase, but in the end the pain will simply go away.

Deal with the hurt by rubbing some sand in the wound so that after a while it will not hurt any more.

The challenging part is convincing the rest of the organization that this is so.

| 0 Comments

Here is a list of the most popular Google search strings that people use when finding my website:

cpan update, cpan update all modules, how to crack your tailbone, kiffin gish, cpan update modules, update cpan, ben hogan golf swing, cpan update module, ik zie een poort wijd open staan tekst, cpan update all, kiffin blog, update cpan modules, cracking sacrum, https://svn.madwifi-project.org/madwifi/branches/madwifi-hal-0.10.5.6, update cpan module, updating cpan modules, crack your tailbone, ik zie een poort wijd open staan, kiffingish.com, predisposed to depression, sacrum cracks, update all cpan modules, v4l-utils-0.7.92-test.tar.gz, ben hogan swing, driver asus x59sl, dutch characters, gish mail, gish.com, hogan swing, how to make a speckled stickfish, how to pop your tailbone, how to update cpan, kiffin emanuel, modern perl book, my heart stops missing a beat, perl cpan update, svn co https://svn.madwifi-project.org/madwifi/branches/madwifi-hal-0.10.5.6 cd madwifi-hal-0.10.5.6, update all cpan modules installed, update all installed modules cpan, why do i have the urge to pop my toes.

| 0 Comments

I make it a point to visit the local bookstore regularly and rummage through the many new and older books in the computer and mathematics sections.

My work demands that I keep abreast of all of the latest technological advances. The book titles on display are a pretty good indication of which areas I should be concerned with. Not that that it is so much extra work to me, thumbing my way through rows and rows of books just waiting for my magical touch. Actually it's fun and relaxing spending a quiet afternoon searching around in your favorite bookstore.

This afternoon however I was a bit dismayed to discover that almost all of the books on display lying on the new title table were about writing Apps for the iPhone. Most of the remaining books were about writing Apps for other mobile platforms like Android, etc.

What's happening here? Am I missing something? Should I be careful?

There were only five titles about Perl, but that's about the average exposure for most other stuff anyway. Not very long ago Python was the big hit, but now there are very few titles about that either. Java is still going strong but getting depleted as well. The web design section which normally contains books about CSS, HTML5 and Javascript, was filled with mobile design books, again mostly for the iPhone (ouch).

Supposing that I were to look for some information concerning something besides programming mobile applications, then where should I go? I'm sure that Internet is now the best place to look, though it's harder to filter through what's relevant or not.

Now that I even think about it, why buy books about mobile apps anyway? Books are getting old-fashioned, they are bulky and awkward, the contain pages which need to be turned back and forth.

I could just buy some fancy smart phone and use the embedded micro-browser to look for stuff myself. Tons of stuff all over the place. All that meta-information is everywhere and nowhere at the same time. Think about it.

The good old days of finding what you need in bookstores is coming to a swift end, so better prepare yourself and be flexible for change if you want to survive.

| 0 Comments

Wasted nearly two hours trying to figure out why some simple bash script of mine wasn't working.

#!/bin/sh

HOSTNAME=$(hostname)
echo HOSTNAME=$HOSTNAME

if [ "$HOSTNAME" == "kiffins-laptop" ]; then echo "This is Kiffin's laptop"
elif [ "$HOSTNAME" == "georges-laptop" ]; then echo "This is George's laptop"
else
    echo 'Unknown hostname (exit)'
    exit 1
fi
echo "Success"
exit 0

Looks perfectly valid to me, so how come when I run the damned script I get the following error messages?

HOSTNAME=laptop
[: 11: laptop: unexpected operator
[: 11: laptop: unexpected operator
Unknown hostname (exit)

Need a hint?

| 0 Comments

Up until yesterday the Del-, Ins- and Home- keys on the upper right-hand corner were sticking alot, and it's been really bugging me since I purchased this fancy laptop more than a year ago.

Once I even brought it to a so-called expert computer repair shop. I was told that there was nothing to do about it. They even had the gall to suggest that I strike the keys more gently and at an increased perpendicular angle.

All of a sudden I'd had enough. Mustering up enough courage to grab my special screwdrivers, I became a madman, loosened the bottom of my laptop completely, pulled off the front cover, and dislocated the screen.

I looked around, blew some dust away, wiggled this and that. Then when I put the bottom and front covers back in place, I had a whim and reversed the sequence. I began with the left side and tightened the screws in only three-fourths of the way, and then I screwed the right side back tightly in place.

I couldn't believe it, but none of the keys stuck anymore. Now it feels like heaven when I type, and it's almost like I have a brand-new laptop all over again.

| 0 Comments

Beware of inadvertent spaces in directory names when using rm -rf, it can kill you without asking first.

I figured I would cleanup some junk piling up in several directories of my laptop: /tmp, /var, etc.

I accidentally hit the space-bar, causing this to appear at the prompt:

$ rm -rf /var /spool/...

And just when that little teenie space caught my attention, it was already too late. There was nothing else I could do but cry. Just for fun (and also hoping for a miracle) I rebooted my laptop, but it choked anyway.

Better be more careful next time.

| 0 Comments

I'm not about to claim that I'm some kind of expert on the subject, but I think it's fair to say that I've experienced my fair share of ups and downs over the years which makes me a little bit wiser.

Put simply the questions is how do we avoid failure when designing and implementing complex software products?

This is how I would answer that question.

  • The golden rule of thumb to avoid failure is to figure out early what the biggest risks to success are, and then to keep them in mind every single day. Keep this up until success is achieved.
  • Another key to avoiding failure is to admit openly when things start to go wrong, or better yet when you expect that things might go wrong. Don't hide the truth because you are worried that your boss will get angry or that you will lose face with your team members.
  • If things start to go better than expected, then celebrate it and make it publicly known. You guys have struggled really hard and deserve the recognition for work done well. Go out and have a party, but don't get too drunk because it's bright and early as usual the following day.
  • Feel proud of what you are making and treat it like your baby. Protect and cherish it, nurture it and play with it.
  • Admit defeat if needed and just start all over again. It is much better to restart with new insights than it is to plug along with an ugly product which keeps getting uglier, and finally slowly sink into quicksand.
  • Use sound metrics to measure progress and regularly decide where you, where you are headed, and possible obstacles along the way which will delay progress.
  • Learn from your mistakes, write them down, keep this list with you at all times, and reread it at least twice a day.
  • Finally remain open-minded, honest and embrace change, which will happen whether or not you want it to. Change hurts while it is happening, but afterwards it makes you feel a whole lot better.

One could easily say that the statements above apply to developing successful software products as well as to most challenges in life.

| 3 Comments

In order to retain a well-grounded area of expertise as a so-called software developer, it's not only important to keep abreast of all the latest technologies, but also programming languages in general. The more you know the better.

That is why I make it a habit to learn at least one new programming language every three to five years. That way I can sustain my market value in an ever-changing and competitive market.

This time around Lua is my language of choice, and in order to celebrate my new pursuit of fame and wealth, I purchased the book Programming in Lua.

Here's some sample code. Tables can be used as associative arrays. This functionality allows us to store functions in a class table, ie. with the function name mapped to the function:

A = {}

function A:add(x,y)
  return x+y
end

print( A:add(1,2) )  -- prints 3

That will be a fun book to read during vacation.

| 0 Comments

You want to be notified by email every time that one of your servers reboots, for whatever reason that might be.

The most straight-forward way to accomplish this is by using the cron service. You want to fire up the following command:

$ crontab -e

and then add the following statement all on a single line:

@reboot echo "Rebooted, now online!" | Mail -s "`hostname` REBOOT" your@email.com

That's pretty easy now, isn't it?

| 0 Comments
Hey, it turns out that the del-key on my laptop doesn't stick anymore, and I hadn't even noticed it. Remember that blog entry back in April where I was feeling irked enough that I even had to dedicate a whole entry? I guess that due to lots of usage something or other has loosened up beneath the key, and no matter how hard I try now I cannot get it to stick any more. That's fantastic news, even though it's a bit strange how I hadn't even noticed it.
| 0 Comments
I've learned an awful lot about the many ins and outs of managed virtual servers the last few weeks. It's been a fun adventure talking with companies and the experts about the fine art of managed hosting.

There are many advantages to choosing a virtual environment over the more commonly accepted hardware options. It really boils down to a choice between two options:

  1. Make a big one time investment in hardware and write it off over a five year period. Hopefully within that time frame one can use the costs more effectively by maximizing the use of computer resources.
  2. Or rent the computer resources (CPU, memory, storage, etc) on a monthly basis. As time progresses one can easily expand the resource depending on current needs. Costs are kept more under control and growth should be more predictable.
Another interesting topic of discussion which can get hairy and even philosophical at times is the difference between fair use and bundled bandwidth policies for network usage. A couple of people have discussed it with me but I'm still not convinced about one being any better than the other.

| 0 Comments
I hate it when my Del-key keeps sticking.

Up near the top right hand corner of my keyboard the keys are a bit less sturdy because the CD bay is directly underneath and leaves little room for a sturdier padding.

This means that when I hit the Del-key, it feels hollower than the other keys and tends to stay stuck in the depressed state, popping up and making this slightly aggravating click after anywhere from a half second to five seconds later.

One might of expected better quality for a laptop this nice.
| 0 Comments
If you own an MSI Wind Notebook like I do, and the next time you fire it up there's no wireless connection available for some reason, don't forget to first make sure that the wireless card is enabled (duh).

Is the little green led second from the left lit? If not then you'll have to hit the Fn+F11 key.

Why waste two hours of your valuable evening searching everywhere and getting frustrated when the solution is right before your nose?

This is already the 3rd time it's happened to me and you'd think that I'd remember by now.
| 0 Comments
My old laptop has survived nearly four years without a hitch, not once infected by any virus, working smoothly and always to my satisfaction.

Since I got a new laptop, I decided to pass on my old one to the kids, let them have yet another computer to play on.

Now it is infected with a virus, after only a couple months of use, something to do with a buffer overflow warning message that McAfee keeps popping up. Tried to fix it but things slowly got worse, until the laptop refuses to startup at all.

So now I'm reinstalling Windows XP (they didn't want Ubuntu, believe it or not) which will take awhile, but the machine will be clean and free of junk.

Hopefully it'll stay that way for some time.
| 0 Comments
Why would anyone in their right mind want to exchange the Fn and the Ctrl keys on the keyboard? This is confusing and pissing me off.

FnCtrl.jpg
What's wrong with this keyboard?
| 0 Comments
I happened to make an accidental discovery. If I place my mouse cursor on the right or left edge of the gnome desktop and move the mouse wheel I cycle through the workspaces. This will prove to be quite useful.
| 0 Comments
I installed VirtualBox on my Ubuntu laptop and now can run Windows XP as a virtual operating system within its own window. This is much better than having a dual boot system and on startup always having to choose one or the other.

VirtualBox-Windows-XP.png

I was hoping to do the same with favorite good old FreeBSD. However, it will not install correctly because it cannot find the boot loader for some weird reason. I tried it with FreeBSD 6.4, 7.0 and 7.1 beta but none of the worked.
| 0 Comments
Rumor has it that I've decided to become some kind of Linux expert. So who am I trying to kid?!

At least I was happy when I came home today and discovered the big box from Amazon lying on the cabinet in the hallway entrance.

New challenges on the horizon are:

  • Understanding the Linux Kernel by Bovet & Cesati
  • Linux Device Drivers by Corbet, Rubini and Kroah-Hartman
By the way, there was also a more "normal" book as part of the shipment, namely:

  • A Spot of Bother by Mark Haddon
Two days ago I finished his first book called The Curious Incident of the Dog in the Night-time which I really liked.

On my way home yesterday, I stopped at the bookstore at the train station and purchased the following two paperbacks:

  • Love in the time of Cholera by Gabriel Garcia Marquez
  • Shadowplay by Tad Williams
When I realized I'd inadvertently bought book two I quickly went to Bol.com and ordered book one:

  • Shadowmarch by Tad Williams
Am I getting overly addicted to buying books or what? No matter, I've got lots of time to read it all in the train, about two hours per day which is ten hours per week (or about one good novel a week).
| 3 Comments
This weekend they were having this big 25% computer sale at Media Markt, so I went there and decided to splurge on an ASUS X59SL-AP275C for my upcoming birthday.

Although it comes pre-installed with Windows Vista, the first thing I'm going to do is remove it and replace it with the latest version of my favorite operating system.

I'll go for the bleeding edge version FreeBSD 7.1-BETA and recompile the kernel with the new and vastly improved ULE scheduler.

cd /usr/src/sys/i386/conf
cp GENERIC LAPTOP
vi LAPTOP
There are two things to change in this file then we can move to compiling and installing the new and improved kernel.

ident      LAPTOP
options SCHED_ULE
That's all there is to it. I certainly hope that it works.
| 0 Comments
Here's something handy for vim power users.

:%s/.*/(&)/g
For those unfortunate souls out there who do not have a clue about what this might be, this regular expression global substitution command will enclose all lines in the current file within parentheses.

Or have even more fun by reversing all of the lines in a file by issuing the following succinct command:

:g/^/mo0
I'm just sawing swiftly through the book Learning the vi and Vim Editor and learning all kinds of nifty stuff to make my editing sessions even more efficient.
| 0 Comments

Dealing with a really large database and keeping your web-based service scalable can be quite a challenge.

One thing you might want to consider in order to improve performance is to prevent Unix from updating atime (last access time) at every read/write.

This is done by adding the noatime flag when mounting the file system associated with the database and/or files being accessed alot.

Adding this flag will give you a tremendous boost in read and write capacity, so why not give it a try and see what happens?

Reference: Building Scalable Web Sites by Cal Henderson.

| 0 Comments

The fine folks at Computer Clinic were able to repair my busted laptop, so I am a happy computer geek once again.

As it turns out, they had to take the machine completely apart, re-solder some pins on the mother board, re-connect the voltage outlet, put everything back together again, and reset the power supply.

Nice folks there, and it only cost me 65 euros, which is much much cheaper than having to buy a new laptop (even if the one I have is almost four years old it works just fine for now, although subconsciously I'm hoping for some excuse to purchase another one).

| 0 Comments

My trusty Dell Inspiron 8200 laptop is busted. If I press the power switch, nothing happens.

I took it to Computer Clinic and sure hope that they can fix it.

| 0 Comments

This week I was pleasantly surprised by the arrival from Amazon of the latest Spring in Action book.

First two chapters alright, the chapters after that getting a bit too heavy duty for me.

Since it's been awhile since I did any really serious Java programming, I'm a bit rusty in this area and need to refresh some more in order to appreciate this book much better.

| 0 Comments

So if Mick Jagger can still remain a Rock hero after he turns sixty, I guess there is still several years left for me to become a software developer hero.

| 0 Comments

I just discovered this interesting insight when I woke up this morning and gazed at the reflection of a pile of computer books in the mirror.

When reflected XML looks like JMX.

At first I felt like it was a dream, but as my mind slowly became more aware I realized that this was quite real.

| 0 Comments

Let's take the average complex development project nowadays.

Think about the best way to figure out what it is exactly that the customer 'really' wants us to implement.

His mind, his perceptions and expectations, all those technical documents, the actual reality of the situation. That which is promoted at the end of the first release. The so-called roadmap to the final release.

You have to be a psychologist, philosopher, technologist, information analyst, paranormal guru and expert on general relativity at the same time in order to understand these things.

I'm sure glad I fit this demanding profile.

Recent Assets

  • Heren1-golf-team-2013.jpg
  • MMA-2013-05-04.png
  • Criss-cross-sky.png
  • Hole-15-zoom-to-flag.png
  • Hole-15-from-tee.png
  • Hole-in-One.png
  • Winter-Light.png
  • IMG_0372.JPG
  • golfing-in-the-snow.png
  • Napoleon-i-9420291-2-402.jpg
  • gary-player-quotes.jpg
  • driving-in-the-snow-view.png

Recent Comments

OpenID accepted here Learn more about OpenID

Information

This personal weblog was started way back on July 21, 2001 which means that it is 7-21-2001 old.

So far this blog contains no less than 1977 entries and as many as 1843 comments.

I graduated from Stanford 6-5-1979 ago.

Believe it or not but I am 10-11-1957 young.

I first met Thea 6-14-1980 ago.

Important events

I graduated from Stanford 6-5-1979 ago.

Believe it or not but I am 10-11-1957 young.

I first met Thea 6-14-1980 ago.