I certainly gave it a try last year. First I tried out Lua which seems like an excellent language for programming wrist watches and other tiny projects, but I kept missing basic features like writing stepx += 2 ; instead of stepx= stepx + 2 ; so I passed on that, though it may come around again since Lua5 for PalmOS is just finishing beta. Then I looked at OCaml but never being all that excited by a the wonders of recursion, I fizzled out on that. I mean, the computer doesn' t really do recursion; it just back tracks and tries to figure out what you meant in the first place. So basically programming it becomes:
Figure out what you want to do.
Figure out how to turn it into a recursive process.
Computer reads what you coded.
Computer tries to look for and identify recursive functions.
Computer tries to figure out how to implement the recursive function in a non-recursive way.
Computer maybe does something you want.
Maybe its like the old RPN calculators, except there the HW actually did a stack, and so you were just working with what the hardware could do instead of trying to remember order of operations and how many times you had pressed the key on a TI calculator.
Anyways, this week I stuck my mouth where my money is and suggested that the Sunnyside restoration project use a Wiki to keep track of everything (and I offered to set it up). Not having any Wiki's handy, I went and took a look at the list of WikiEngines which happens to be organized by language. No, I did not get the one written in OCaml. I got one written in Ruby, so the first thing I actually had to do was get Ruby and mod_ruby installed and working. Now I'm working on the wiki part. Once that's working, I have a fully operational ruby environment that maybe I could even slap Rails into. Very cool possibilities.
Of course another possibility is that I'll spend many hours on and off over the next week trying to hack google maps to do multiple push-pins based on a user supplied list, which would be really cool. Maybe impossible. Probably a waste of time. But definately really cool.
Lets see, Videos, books, professional ear wipes for dogs ... Huh? Somebody makes wet-wipes for pets, and even stranger, somebody buys them? Turns out there's a whole line of wipes for pets (can't use an ear wipe on the eyes after all). Sounds like hopeless pampering to me.
I didn't find any software for the Treo, but I did manage to find this toy Bulldozer made out of palm leaves. Too bad its sold out, it looked interesting. From the Palm Leaf collection of the Folk Art & Craft Exchange.
This time he's taking on Nascar. Should be interesting. Of course he's getting some help from Linsey Lohan and a couple other of the usual suspects.
According to this new story at the BBC, the folks at the Relativistic Heavy Ion Collider are actively trying to make black holes. Sure they're small now, but just like that cute baby pet aligator, they're bound to get larger, and pretty soon, the sewers are swarming with them. Wait, someone already made a move about that. Nevermind.
Still, while making something 10,000 times hotter than the sun was pretty frightening, at least it only hung around for a few femtoseconds. A black hole, if it doesn't immediately burn itself out (by converting its mass into Hawking radiation), its going to start eating everything it can get its hands on, growing bigger and bigger.
Yes, playing with black holes sounds really neat, but the law of unintended consequences seems to be relevant here.
Let's take this even further, after all, I'm a man of extremes.
I'm going to live my life on my terms, not those dictated by society–I expect that will turn out to be the better way to go in any case. I will not suffer idiots, for any reason. If people bring nothing but their own agendas to the table, then pretty soon they're going to find the door locked. If people are not being honest and frank with me, then they're doing me no favors; and true friends will want me to act the same. If I have to worry about other people's motives or things going on behind my back, then I'm wasting my time with them. Life is to short for compromising.
Now, to live this life is going to cost. Its going to cost money, success, power and some of the other trappings of society. But I looked at that choice long ago, and chose to put my energy into actual accomplishments and activities that I could feel proud of. I live in a really inconvenient location for my line of work–there's just not a lot of software engineering or startups on top of a mountain with a couple thousand people around. If I had wanted the money and the other things, then I would have moved to the big city, become a lawyer (instead of an engineer); and I would have put 100% of my energy into raping the land, muzzling the consumer, and lining the pocket of the rich (while taking my cut); after all, if you're going to have a vision, you should focus on it completely, and not let anything else get in the way.
But I decided to live the life worth living, in a wonderful location (with air you can breath), doing worthwhile things like creating, building, fixing and teaching; and interacting with others with integrity. I'm not rich, I'm not on the cover of Forbes, I don't get invited to the exclusive "money" retreats in Aspen, I don't jet around in my own private Lear or vacation in Rome; but I think I'm sure a lot more happy than those poor fools that do.
So its March, and I'm wandering through the grocery store, and I see this 12-pack of Pepsi soda on sale for $1.50. Now that's a little expensive for generics, but its a great price for real soda, so even though I have no idea what this tastes like, I grab a pack.
Turns out it tastes OK. So why is it sitting on the shelf, massively discounted, four months after the holiday season? Well, looking at the packaging, there is no clue what this actually is. Turns out its colored red, but you wouldn't know that until you opened up a can. It also tastes a little like ginger, another fact that would probably help sell the stuff if you mentioned it. Instead they're all mysterious about. Its the mystery soda. Well guess what: unless you're market is weird, random, cheap, eclectic soda drinkers in the back-waters of nowhere; you'd better work on your packaging before the next holiday season.
It could be worse of course. The guys at Dr. Pepper are trying to make milk cool for kids. Ya, that speaks 4th grade hip all over it. Udder Madness indeed.
Was just browsing the lifehacker free stock photography sites. Some of them have 100,000 photos, while others have 700. Kind of an odd list.
Ended up looking at a photo with some ciphered text for the comment.
gft dgkt enohitk tfzoktsn sqeaofu of ltexkozn. qfnvqn, ziol ol dn yoklz zodt tctk vozi lxei q sqkut wqeasgu gy higzgl. o vtfz zikgxui zit zvg ixfrktr gk lg zgrqn qfr hglztr ziol iqfryxsSpent about 10 minutes writing a tool to help decipher it in Perl, just for practise but then got bored and with 10 seconds invested in a search I found a free Monoalphabetic Substitution Cipher Solver.
So I was at Ace ordering a window for my garage because while it was going to be a standard size (6'0 by 2'0), I ended up messing up the framing and only left a 5'6" opening. Can't get a window that size, but you can get one five foot wide, so I ordered it and it should be in in three weeks. Anyways, I remembered that I also needed wheels for Max's bike (which is another story), and while I was in that row, I turned around and saw this this cool tool:
Now, some of you may be wondering what this is, and others might be wondering why I want to spend $40 on a maul, and a few might be wondering what's so special about an Estwing, well, let me tell you a story.
A long time ago, when we first moved to Flagstaff we still lived in the city proper (about 0.75 miles from where we live now), in a tiny little apartment surrounded by hundreds of other apartments and apartment dwellers. So when our friends (who also moved out to Flagstaff from California with us) called up and wanted to go spend the weekend in the woods, we said, "Sure, why not." We'd grab out tent, sleeping bag, cooler and other various camping-like stuff; and head about twenty miles south into the woods where we'd setup the tents, gather some wood, start a fire, and sit around playing musical chairs as the wind blew in different directions and smoked us out.
It was in preparation for one such outing that I decided it would be cool to be able to chop the wood we found so that it would actually fit in the firepit, instead of hanging out on the side. (We were usually too lazy to walk far enough to find properly sized wood.) While I could snap the smaller pieces, any limb of decent size was usually ten feet long or more. So while shopping for other junk imported from China at WalMart, I picked up an ax.
Now I don't know how you usually use an ax, but it took me all of four swings to break that ax. Ok, so once I missed and hit the ax on the handle, but still, that's pretty lame. The next morning when the ladies decided to head back to the house for their morning shower (ok, we're not very serious campers), Pierce and I decided to go back into town and get another ax. We went back to WalMart to exchange it. Mission accomplished, we were back to the woods to try again.
Swing CHOPSo now this was getting annoying. Obviously this was another example of the fine merchandise offered by America's biggest retail store and I didn't have any expectations that another exchange would bring about any improvement. So it was time to try some other sources. There was a small mom & pop general store a couple miles away from our campsite, so we popped over there to see what they had, and picked up another ax. Well it lasted longer than the one from China, but not much longer. I was kind of down on wooden handles at that point.
After checking the usual suspects around town, I finally found this one in a small Ace Hardware tucked in a strip mall over on the other side of town. Like the hammers Estwing makes, this 2.5' ax is forged as a single piece of steel with a rubber grip molded around the handle. Its very impressive. The price is pretty impressive too, but just lasting an entire camping weekend should easily be worth saving several drives into town and actually having some wood the proper length for the fire. So I got it. And it worked.
It worked great in fact. It lasted that entire camping season, and the next, and in fact I still have it today and use it on occasion when I want to make a bloody mess out of the end of a log. Its still pretty sharp, except where I've nicked the blade here and there on a rock (or when my wife starts using it to attack weeds growing in the gravel pile), and it takes all the abuse I've given it, though it doesn't make that great a pry bar just because the handle is somewhat flattened and doesn't have much torsional strength sideways. I even got its little brother the hatchet, which is great for removing limbs from logs before I cut them up for firewood.
But I don't go camping any more, and most of the time I'm cutting logs with a bow saw, and then splitting them. Which is why I have my eye on this new estwing splitting tool. While the marketing material seems to indicate that its a great tool to use indoors, I think its going to get most of its use outside — softening up recalcitrant logs and making a good starting point for a wedge on the larger pieces. (Besides my wife would probably kill me if I tried to split wood in the house, its bad enough when I leave a trail of bark and wood chips from the back door to the wood stove.)
Maybe I won't get it yet. After all $40 is a little steep, though they have it here for only $30 (plus another $6 shipping). Maybe I'll take a look at the end of summer when the wood will need my attention. Until then, I'll have a reminder tucked away on my phone, where I won't forget it.
While a lot of the techniques are outside of the scope of a school shop (where I cast), it was exciting to learn about the history and variety of techniques in casting. There are so many techniques and variables. Everything from the type of casting: sand, die, plaster, shell, slush, permanent molds, investment, foamed plaster; to the materials and techniques: green sand, petro bond, parting dust, synthetic sand, skin dried, no-bake, cored molds, hand built, sprues & cutters, flasks, boards, and on and on. C. W. Ammen has tried to cram a couple hundred years of casting history into about 400 pages, and its a pretty interesting effort, though some have complained that its a hard book to read.
Personally, I enjoyed reading the book from cover to cover, but then I like picking up the odd fact and learning absolutely everything about a subject that I can (regardless of whether I'll ever use it or not). The organization is not that good, so the best way to read through this book is like the way you approach a swap meet, or shop at Sam's Club. You don't go to Sams Club looking for a particular item (like metal shelves), instead you go to Sam's Club and you wander the isle and if you see something you're interested in, then you grab it. I suppose if I owned a copy of the Metalcaster's Bible, I'd have to dog-ear or bookmark many interesting pages, but instead I've just mentally captured as much as I could, and copied a few interesting pages.
I came away from this book with a real sense that metalcasting and programming are two very similar fields. (Its just that metalcasting has had a couple hundred years to mature, though it still has its bumps.) Both fields have numerous technologies, components, tools, and different end products (casting a bronze sculpture is an entirely different skill than casting an engine block or turbine blade). Metal casting has even had its share of over-hyped technologies which were misused and maligned until it found its proper place in the industry (gee, does that sound familiar?). As Ammen says about the shell process:
When the sand shell system was first introduced into the foundry industry, it was taken by some as the panacea. Before it found its true place in the industry, it took a heavy toll not only in botched-up castings but in money.
It is a good system when properly used and its limits are understood. The same problem exists with any system. Investment casting particularly by art bronze casters is another with definite limitations. I have seen some costly messes made by investment casters who will try to cast a life-size casting all in one piece in investment when the casting could have been done in French sand with not only a finer finish, but at half the time and cost. Use the right medium for the job at hand.
One basic area where software engineering lacks is in terminology. We just don't have that many terms to describe the things we work with day in and day out. In comparison this casting book was 150 pages of content, and 225 pages of terms. It could have been called the Metalcaster's Dictionary. For example for sand casting, there were terms for the style, terms for the type of sand, terms for the properties of the sand, terms for the quality of the sand, and even terms for the failures of the sand.
You may be thinking that computer science has terms. What about linked lists? hash tables? queues? Ok, what kind of linked list are you thinking of? Singularly linked? Doubly linked? Circular? Do those hash tables allow duplicates? Does that container have value semantics or reference semantics? Is that queue FIFO or LIFO?
When it comes to defects, we're even worse off. Most programmers are still refering to defects as bugs, a term which was created when an actual insect crawled into the Mark II Relay Calculator and caused it to fail. The operators were quite proud to find the problem, and taped the moth to their computer log with the notation: "First actual case of bug found."
Today we still chase bugs, but their problems of our own making. Most the time we're chasing our tail, or scratching our head reading problem reports from users, which contain helpful information like: "it died", "it crashed", "it stopped working" or "my computer froze". I don't blame the user for not wanting to give me a 500 word essay on where they were and what they were doing right before the problem appeared, but my only hope is to try and reproduce the problem myself or fire back an equally helpful response, "unable to reproduce, need more data."
Another area software engineering could learn from metalcasting, is in the area of specialization. There are a lot of different types of casting, and while someone serious in the field probably specializes in one or two, they probably have at least an introductory knowledge about most types. In software, we still haven't acknowledged that embedded programming is a different speciality from enterprise infrastructure, or natural language processing. After finishing a desktop application, the software engineer is just as happy to start working on a printer driver, as he is to start writing java beans; with very little thought to the change in landscape.
I think a proper education or training should include various types of programming tasks, with different constraints (limited memory & CPU, reliability issues, speed of development/rapid prototyping, interpreted vs compiled language development, design with evolving and changing specifications), and some discussions on the differences in working in each enviornment. Heck, why not have them even do some assembly programming and learn about a few basic rules of hardware, like the rude things the real world does.
The difference between theory and reality can be rather large when it comes to signals from the real world, even with something as simple as a switch. To a human, when you switch on a switch it goes on, but electronics are a lot quicker than we are, and they notice things that we don't. Like the bounce a switch makes when it first switches. Turns out it doesn't go on immediately, but rather bounces around a little before settling down. If you want proper results you have to somehow dampen the signal electrically, or de-bounce the input in software with a routine something like this:
Not doing this can cause much frustration and problem. I'm reminded of a particularly cranky piece of hardware that just about ended up being thrown off a six story building, which would have been bad.PROCEDURE check_input(new_val) static last_reported, last_seen, seen_count ; IF (new_val == last_reported) THEN return ; IF (new_val <> last_seen) THEN last_seen:= new_val, seen_count:= 1; ELSE seen_count ++ ; IF (seen_count > kDebounceCount) THEN BEGIN last_reported := new_val ; report(new_val) ; END ;
It was 1999, and I was flying around the world doing Y2K upgrades on machines so that they could continue to track imaging satellites when the year rolled around. This particular stop was at Crisp in Singapore, and they were also switching their recording gear from D1 tape to a disk array. To facilitate the switchover, they needed a time-source with both NTP ethernet support & analog IRIG-B outputs. Someone had found a box with both connectors and so it was on my list to install.
This was one of those boxes that originally did not have any "user settings", so the addition of things like a network port which needed an IP address were sort of shoe-horned into the limited interface already present. With a one line LCD display and four buttons, I was supposed to setup several features, including its target address of 192.168.2.117. After wandering around in a multi-level menu, I got to the proper screen and started the boring task of entering in the address one blip at a time (kind of like drawing a picture with morse code).
0, 1, 3, 4, 5, 8, 9, 10 ... 190, 191, 193 arg 194 195 197 ... 0, 1, 2, 3, 6, 7, 8 ... 190 careful tap 191 careful tap 193 grrrr"Where's the hammer?"
"No, you cannot use a hammer."
"Just one tap, just to remind it what the possible future holds."
"No, we can't break it. We are half way around the world from a spare to replace it."
"We don't even need it. We can just use NTP on the SGI for the time recording on the satelite tapes until the replacement gets here."
"We don't need it technically, but the contract says NUS gets one, so the upgrade won't be complete unless they have one, which means they won't sign-off, and we don't get to leave until they sign-off."dang it 195, 196, 197, 199 ...
This morning was a bit of a shock. I was supposed to take my car to the shop today, but it doesn't look like its going anywhere, at least for a while. I probably shouldn't have left it out in the middle of the yard, but I wasn't expecting to be snowed in. Apparently, the rest of the town was equally surprised, as at 10AM the roads still hadn't been plowed, according to reports from friends. Glad I didn't have any plans I couldn't put off till later.
The kids take it all in stride. Yesturday it was playing at the park, and building castles in the sand. Today its making snow trains. They're good to go no matter what the weather.
Today was the premier for Robots. Max and I had been looking forward to this movie for a long time. We'd sit downstairs in the basement and watch the trailer for it over and over. It was full of interesting scenes and cute little jokes. So today we packed up a bag of toys, and couple of snacks, and headed to the theater to see it.
I had done a quick scan last night on Metacritic which gave it mixed reviews. I was especially dismayed to see the two reviewers I track the most, The WSJ and the Christian Science Monitor give it particularly low scores, but we were committed at that point, so off we went.
I think this movie was targeted at an age group slightly older than Max. My first hint was the preview for Star Wars III, which is full of battles and evil. Scared all the little kids in the theater pretty good. Max calmed down enough to sit in his seat again, and we got through the rest of the previews ok; then on to Robots. Max seemed to be into it, and I didn't have to describe too much of what was going on which was good; but I didn't get into the movie that much. It jumped around a lot, and action could be hard to follow at times.
Of course Max also jumped around a lot and could be hard to follow, not to mention the distraction of our location. For some reason Max likes to watch movies from way up in the back, sitting in the very last row of the theater. Not only is it dark and far away from the screen, but the back row shares a mechanical defect with its cousin--the last row of seats on an airplane--where the seats don't go back, as there is a wall behind them. Its a very annoying location, one that I would rather avoid.
Still we made it through, and Max went on to play with his robot toys for the rest of the day; so I imagine he liked it. I'm still looking forward more to the DVD release of The Incredibles next week.
The surprise of the day was another movie I had gotten from the library: Elf. Most Will Ferrell movies are pretty dumb, but this one really pulls it off. While there were a few embarrassing parts near the beginning, the movie gets past the stupid jokes pretty quickly and turns out to be a really good movie. The supporting cast helped a lot, Bob Newhart, Ed Asner, and James Caan did a great job. Just to calibrate, CSM gave this movie a 100 as well.
The lightning strike last fall, which had wiped out a number of other components in the lab, had also fried all the IO on my laptop. Somehow I managed to lose the ethernet, modem, bluetooth and WiFi all in one fell swoop (though the ethernet limped along at 10bT for a while till I got a PCMCIA card). I didn't really miss the bluetooth (as I had never used it), nor the modem (dialup speed is soooo painful); but I had used the wifi before, and the ethernet damage was especially disturbing.
I had replaced the network with a card after a few weeks, but I couldn't find anything decent. My preference would have been to get a Cardbus Realport card, since that's the only card to have a decent connector that doesn't stick outside the laptop; but Xircom was bought by Intel four years ago, and all I could find was $160 multi-function cards. I ended up with a Netgear, but wasn't very happy with it.
So when I ended up with some extra laptops for spare parts, I figured I might be able to use the IO CPCI boards from one of them in my laptop. I pulled the cards out in January, but it wasn't until this week that I finally decided to take the plunge. My first surprise was the size of the access panel on the bottom of the A31p. On normal laptops, the panel is pretty small because Compact PCI cards are pretty small. But obviously something more was going on here. After pulling it open I could see what it was. Because of all the functions in this laptop, there was both a Compact PCI card for two of the functions, as well as two additional daughterboards for providing the other two functions. The daughterboards were especially cute, being slightly wider than a normal stamp. After ripping all the old cards out, and finally disconnecting the ultra-tiny-mini coax connectors (I'd hate to have to re-attach one of those microscopic things), I stuck one of the spare cards in and hooked up the thin connectors for modem & ethernet.
After firing the machine back up, things looked pretty promising. The light came on (always good), and the computer started complaining that the cable wasn't plugged in. I was worried I was going to need drivers, but it wasn't a problem. Testing any further was a little complicated though, as Tim doesn't have any network drops in his dinning room. You'd think a million dollar house in silicon valley would have network drops everywhere, but no, there was not a landline in sight. Luckily Tim has way more parts than he needs, so I scrounged up a wifi/bridge/hub and plugged it in. Got an address assigned, and was able to talk enough to get to the login screen of the admin web server for the hub. Tim couldn't remember the password, but still, the experiment had demonstrated link functionality.
So chalk up one success today. Success is always good and should be celebrated, as you never know how far away the next one is going to be.
Instead, I pulled out my phone, jumped to the Google page, and typed:
late night food, los altos, cawhich took me to Bay Area Late Night Eateries which listed The Boardwalk for Los Altos, and included its address, phone number, and hours (open till 1am).
While it started out as a pizza place, the Boardwalk now has burgers, salads and sandwiches; including a very good Pastrami sandwhich. While it wasn't The Hat, it was a good thin sliced hot sandwich. Definately worth a repeat.
I say supposed to, because someone cut some corners when putting this unit together (or rather they cut the cable). Instead of a PS/2 or USB connector, I just had some bare wires hanging out in space. That's so annoying.
Well, back to the store for a frustrating experience in exchanging a defective item, then maybe I'll check the new one before I check out. Having it happen once is annoying, having it happen twice would just be embarrassing.