Category Archives: Uncategorized

Uncategorized

Joi Ito’s Web Math Joke

As Joi Ito said, too funny not to blog. I know it’s old, but I still laughed out loud:

After explaining to students through various lessons and examples that

[tex]\displaystyle \lim_{x\to 8} \frac{1}{x-8} = \infty[/tex].

I tried to check if she really understood that, so I gave her a different example; the result of which was:

[tex]\displaystyle \lim_{x\to 5} \frac{1}{x-5} = \rotatebox{90}{5}[/tex].

Hah!

Uncategorized

Latex on WordPress.com

I saw the recent announcement that wordpress.com now supports native latex equations. The posted examples are pretty sweet, and the syntax is just fine: <latex stuff>.

I thought to myself, “boy, I sure would like to have that on my blog. I bet it’s just a wordpress plugin.” That’s apparently not the case for wordpress.com. I don’t know what they’re using. However, I did find the LatexRender plugin by Steve Mayer. Even better though, I found Gunnlauger’s installation script over at Fugato. Why all wordpress plugins don’t have some automated install mechanism, I’ll never guess. Downloading zips and extracting them really sucks, but this script is handy.

Let’s test the results by typesetting some of Euler’s work:

[tex]\displaystyle e^{{\it i}\theta}[/tex] [tex]\displaystyle =[/tex] [tex]\displaystyle cos \theta + i sin \theta[/tex]
[tex]\displaystyle e[/tex] [tex]\displaystyle =[/tex] [tex]\displaystyle \sum\limits_{n=0}^\infty {\frac{1}{n!}}[/tex]
[tex]\displaystyle =[/tex] [tex]\displaystyle \lim\limits_{n\to\infty} {\left(\frac{1}{0!} + \frac{1}{1!} + \frac{1}{2!} + \cdots + \frac{1}{n!} \right)}[/tex]
[tex]\displaystyle J[/tex] [tex]\displaystyle =[/tex] [tex]\displaystyle \int_{a}^{b} F\left(t, f(t), f^{\prime}(t)\right) d{\sl t}[/tex]

Pretty slick, I have to say. It’s not perfect though; because of the lack of a good standard for typesetting math on the web, these things still have to be done with images. MathML is pretty neat and I think it’s probably the future, but not every browser treats it the same (or at all, for that matter). It’s just not ready yet. Also, not every [tex]\LaTeX[/tex] technique will work. For the above, I tried using the “tabular” environment, but it didn’t come out right because the ampersands got converted to character codes – I eventually had to use tables to get the spacing I wanted.

Anyway, all in all, this plugin is pretty cool. It even adds a ‘tex’ button to the post editing page.

Uncategorized

Discovering Ruby

As a software engineer who works on embedded systems and deals with things pretty close to the metal at times and primarily still works in C, I don’t get exposed to some of the new stuff that’s going on. I have to put forth extra effort to stay up to date – and even then I can’t stay on top of everything.

Given the above, it’s somewhat understandable that I’m just now discovering Ruby. I have a tendency to dismiss brand-spanking new things as vaporware, flaky, or what-have-you. I was that way about SCons when it first appeared on the scene, and I ignored it for a few years and then came back to it and liked it.

I’ve just come ’round on my cycle with Ruby. I read about it when it first appeared, but I dismissed it out of hand. After a few years (i.e., about 5 or so), I’m now re-discovering Ruby and appreciating that it fulfills more of its potential than it did before. It’s pretty neato.

Rails is another thing I’m starting to dig into. I realize I’m behind and that Rails has been out for a while and has been the hot new thing on the web for at least a year – but realize that web programming hasn’t really been my forte or one of my primary interests. I think that may be starting to change to the degree that I realize that web programming is the future, for now. Desktop applications still have a future, of course, but they won’t experience the growth, vigor, or innovation that web applications will.

Anyway, I have to get back to work. I really just wrote this so I can have a ‘ruby’ tag in my cloud.

Uncategorized

Software reliability – defining the problem

Computerworld – Tanenbaum outlines his vision for a grandma-proof OS

Tanenbaum wants to mainstream a new metric: LFs (lifetime failures).

Though I generally agree with Tanenbaum about software reliability, and that it is important that we (as an industry) make progress in that area, this quote struck me:

When consumers go to buy an electrical appliance such as a TV or stereo they expect to bring it home, plug it in and see it work. And it is exactly what happens — for years on end. But not so with computers, even though it should, says Tanenbaum…

Uh…I run OpenBSD, Linux (well, ok, not right now, but that’s actually a deviation from my norm), and WindowsXP on my various assemblies of cheap PC hardware (all built myself – no vendor support for me! Cheaper components with shorter MTBFs! Yay!) – and I’m not sure I’ve ever experienced a WindowsXP BSOD (ok, it’s more like the reboot-of-death now, if you have the default settings intact) since leaving Microsoft. That’s nearly 6 years without a [catastrophic] failure of the OS. I’ve had a few kernel panics in Linux and OpenBSD, but that’s because I was hacking. Neither have failed for me under normal usage scenarios.

The quote struck me because my electrical service goes out far more frequently than that.

I’m just sayin’.

Update:
Tanenbaum’s argument serves as an interesting corollary to my previous post about why we don’t make software better (probably the reverse, actually).

Uncategorized

Making software better

I’ve now been at work for 15 hours since I last slept, most of which has been devoted to tracking down a problem that makes me want to rip my hair out and a large chunk of which I won’t get paid for.

However, that’s not a big deal :-)

Along the way, I needed to look at a lot of ‘printf’ output. Normally, our software doesn’t spew a lot of debug information. We print a certain amount my default because it allows our customer to self-diagnose to a degree – but if we print too much, the customer freaks out and that makes more work for us when a vast majority of all of our output is purely informational. Even some messages that say things like “ERROR! THE WORLD WILL EXPLODE IN 10 SECONDS” can safely be ignored, so we keep most of our debug output off.

What that means to me tonight (this morning) is that I need to turn it on. Ok, great. There’s one line in a config file somewhere, right? Or maybe just one runtime “knob” (that reminds me, I should write a post about knobs) that can be turned? Heh. Wrong.
read more »

Uncategorized

There’s no place like 2006…

Here we are. Down here, in 2007, where you live (a little inside joke that only one other person will get). I’m currently working late, and I thought I might finally get around to my first 2007 post while I was waiting for the computer I’m working on to do things. What to say? The lives of my family and me are never dull. How can it be with year-old twins getting into everything? I suppose you could say our lives settled down a little bit in relation to 2005. I’m more established at my place of employment. My family has a routine, sort of. The twins are in the stage during which everything they do is super-cute. Even when they disobey it’s cute (which makes it hard to be consistent with them).

What else? Oh yeah, I knocked up my wife. Again. We called this baby “Scooby” until the birth because we didn’t discover the gender until birth. I’ll post about that sometime. It was different than I expected it to be. Scooby was born in the nick of time – December 31.

I submitted a patent application with some co-inventors. I won’t get rich from it because my employer owns it.

I’ve learned a lot about my industry and about the technical stuff related to my job (and consequently picked up a lot of professional confidence along the way).

Scooby’s impending arrival meant that we needed another bedroom in the house. This meant that my study had to go, or at least be moved. Moved to where, you ask? Outside, of course! We decided to put it out in a detached building on my property. For myriad reasons (ok, not myriad, but several), we didn’t want to get one of the prefabricated ones from The Home Depot and concluded that I would build one myself. See all my “detached study” postings for more about that. The main part of that for this post is that I severely injured my back while working on it. I was out of work for about a month. I’ve more or less recovered now, although I’m still taking some medication to keep the nerves in my back from becoming inflamed, which allows them to heal and prevents permanent nerve damage (which I understand is the cause of the chronic back pain that most people have).

Anyway, this has been an eventful year; one that can’t be done justice in a format like this. I’ll just close with this. God has blessed my family tremendously. He has given us good health, an uneventful birth of our third child, and family that seems to have an inexhaustible willingness to help us.

Uncategorized

Problem Solved!!

I have just resolved something that’s been bugging me for a few weeks.

Strawberry “toaster pastries” cook much faster than Blueberry ones.

Uncategorized

Candy for vocabulary snobs!

33 Names of Things You Never Knew had Names – Words – Book of Lists – Canongate Home

Uncategorized

Carpentry Project #3: Day XXV?

Hoo-boy. It’s been a long time since I posted anything about this project. I haven’t stopped working on it, but hurting my back really disrupted my timeline and daily routine (such as it is/was). I spent three weeks not able to sit up at my desk, meaning that I was bound to a 15 lb. Sceptre laptop with 128MB and a 300MHz CPU, running OpenBSD. Needless to say, I didn’t spend a whole lot of time in firefox editing my blog. I tried to code some while I was hurt, but I didn’t do a whole lot of blogging. I came up with day XXV by browsing over the calendar and venturing some guesses as to how often I’ve working on the study.

Anyway, when I was back on my feet after getting a steroid shot, I got right back to working on my study, but I never did blog anything about it again; this post is going to be long. I have several pictures to share and a lot of steps to describe.
read more »

Uncategorized

Using SCons in a large project

I work on large projects for my job, and we currently use Make, just like everyone else. Our project layout is complicated, which means that the Makefiles are practically voodoo at this point. What makes it even worse is that we try to re-use code, which means we have a directory structure just for common code. Inevitably though, as any engineer finds out when trying to re-use code like this (especially if being shared among too many projects), the code isn’t really always common, and in some cases, diverges significantly. This leads to the use of ever-more confusing variable uses, included Makefiles (ostensibly to make things more modular), and other trickery to make targets build and link in the correct order.

A few years ago, I discovered a project called SCons. It promised to do a lot of neat things, but it was still new at that point, and brand-new open source projects typically aren’t usable. I tried it out, but it seemed flaky and unnatural. Some of that can be attributed to my lack of experience with Python and build tools other than Make, but it was also just flaky.

Fast-forward to 2006. read more »