Browse Month: December 2014

Snow tow

Kyra and Zack came down to my office in the basement and asked if it would be okay if Kyra drove around the subdivision towing Zack on a sled. Apparently they’d asked Mom but she told them to ask Dad. Nice.

After talking about it a bit, we decided that we could do it, but I would drive. I had visions of Kyra getting up to 20-30 mph and Zack wiping out in the back of a parked car or something.

So we tied a saucer sled to the back of my Civic and zipped around a few streets. By “zipped” I mean we topped out at 8 mph. So it wasn’t all that thrilling, but with all of the parked cars and trash cans outside (today is trash day) I didn’t want to end up driving to the emergency room next.

snow-tow-1

snow-tow-2

Brrr

It was rather chilly yesterday. Our thermometer registered below zero, even in midafternoon:

brrr

By nightfall it was ten below, and around midnight I noticed it had dropped to almost twenty below.

Brrr…

Photos 12.27

It’s my intention to someday be able to shoot decent photography. I go on trips every year with Thom and often stand right beside him as we each take pictures of the landscape with our respective cameras. Of course I realize that my camera isn’t nearly as advanced, flexible, or expensive as Thom’s equipment, but it still seems to me that even with a junky camera Thom would be able to take far better pictures than I can. There’s just something about his artistic take on a scene that I can’t duplicate. Yet they say practice makes perfect, so I figure if I practice photography, I may be able to come up with the occasional lucky shot.

Along a similar vein, when I was putting together our annual Christmas photo card, I was hard-pressed to find a lot of pictures of us throughout the year. It’s kind of a shame, because we have plenty of adventures, but I simply don’t have a camera with me all the time and even when I do– on trips, for example– I tend to take pictures of the landscapes instead of the people. I need to be better about photographing my kids, especially now that they’re reaching the age where they’ll start leaving home.

As a result, yesterday I decided I need to put more effort into my photography. I’m going to bring a camera with me more often, and I’m going to simply take more pictures. Some might be boring or interesting only to me, but a guy’s gotta start somewhere. I’ll post some of the pictures here on my blog. If nothing else, over the course of the next year maybe there will be a nice evolution as I improve in skill.

With that said, here are a couple of pictures from our family outing to Old Chicago for dinner last night.

photo-12-27a

photo-12-27b

White Christmas

Yesterday afternoon it snowed a bit, which was fun because it was Christmas Day. Laralee and I went on a walk and enjoyed the quiet sidewalks as the snow gently fell on us. Overnight it snowed a bit more, and this morning we woke to a winter wonderland with almost a foot of snow on the ground.

I saw the old chair sitting on our patio and thought it looked kind of cool amidst all the white.

snowy-chair

Merry Christmas

It was another fun Christmas. As we waited for everyone to get situated, I took a few “artistic” shots of our gifts.

christmas-01

christmas-02

christmas-03

christmas-04

Kyra ended up with the most gifts, but only by one. Laralee of all people had the second-most. I suspect it was partly because both of them bought and wrapped gifts for themselves.

christmas-05

christmas-07

‘Twas the year for toilet seats. Back in 1995, for our first Christmas together, Laralee gave me a toilet seat wrapped in a box that was probably 4x4x5 feet. She’d taken it home from a white-elephant party a few days earlier and thought my apartment could use a nicer seat. Well, this year I decided to return the favor because there are some seats in our house that are well-worn. I bought her a three-pack, thinking I was terribly clever, but she had the same idea and gave me one as well. Now we actually have too many toilet seats! I suppose one can be a spare in case of emergency.

christmas-06

Alex ended up with a few practical gifts, like an SSD drive, an electric razor, and a computer (gaming) mouse. But he was pretty happy about them.

christmas-08

Zack scored a bunch of toys, of course, and was thrilled.

christmas-09

After the dust settled and the wrapping paper cleared away, Laralee settled in for her usual pastime: playing Hay Day. Gotta keep those chickens fed!

christmas-10

The boys have left to play with friends, so I guess that means it’s time for me to crack out my new Dominion expansion game and play with Kyra. Woo hoo!

Zing Christmas party

Today was our annual Zing Christmas party, and it was fun as always. I came to work wearing a Santa hat (of course) but Nick outdid me with a full Christmas suit:

zing-party-1

We all spent the morning finishing up a few projects, and after waiting for Nick to finish a conference call with a client, we ordered some pizzas and got down to business. We chatted and ate, and then it was time to open gifts. The whole team surprised me with a really nice box containing a dozen Jinux 64 install DVD’s. It was, of course, a big joke related to my blog post a few weeks ago celebrating the completion of a 64-bit version of my custom Linux operating system, Jinux.

The second big box for me was an even bigger surprise: nice polo shirts for the whole Jinux 64 launch team! Yep, there was a shirt for everyone, custom printed with what I guess is the new Jinux 64 logo.

zing-party-6

Mike had gifts for everyone. He said he’d found them on a gag gift web site called stupid.com. Who knew?

Ben scored a little box of “emergency underwear” that you can pull out of an easy-to-use dispenser in dire need. He modeled a pair of them, and you can see that it would indeed have to be quite an emergency to get these bad boys out:

zing-party-2

Nick came away with a set of rain goggles: glasses with actual working windshield wipers and a bright LED to guide you on those rainy nights. It’s hard to see the wipers in this blurry phone-camera shot, but trust me when I say they were as amazing as you’d expect.

zing-party-3

Brent was happy to end up with a headband mullet. Too bad the hair color didn’t quite match.

zing-party-4

And Brian is proud of his gigantic fist cupholder:

zing-party-5

I shudder to think about what Mike’s family will receive for Christmas.

We all pulled on our Jinux 64 Launch Team shirts and started the annual ping-pong tournament and foosball tournament.

zing-party-8

zing-party-7

We also played some games: Munchkin and Settlers of Catan came out, along with a six-pound bag of peanut butter M&M’s. All in all, you really can’t go wrong with that kind of lineup.

A good time once again. Merry Christmas to Zing!

Standing desk

We keep hearing that sitting all day is pretty much killing everyone. A little over three years ago I decided to look into the fad to use a standing desk. The project didn’t work out; after a few days of standing all day, my legs and lower back weren’t very happy.

I think the trick might be to ease into a standing desk; rather than going from sitting all day to immediately standing all day, it makes sense to do it a few hours at a time. To accomplish this, I’d need an adjustable desk so I could bounce between the two positions. Cinder blocks were out.

Luckily Noah (in the office across from mine) is out on Christmas vacation, and he said I could borrow his adjustable desk. I moved it to my desk, and it took just a few minutes to set it up. Basically it’s a platform for keyboard and monitors, and it has several positions between flush with the desk and full standing position.

standing-desk

I’ve been alternately standing and sitting most of the day, and I must say it’s been pretty good. It’s nice to get off my feet for a little while, and then to stand and stretch for a bit. I’ll keep at it for a few more days to see how it goes, and then decide whether it’s worth the investment…

World’s greatest massage chairs

On Saturday we decided to visit a local furniture store to look for some banana chairs since ours are wearing out. Right inside the front door were three massage chairs that practically begged someone to sit in them. Unless, of course, that someone was a child. There were yellow signs on each chair that said ADULTS ONLY. So naturally Zack, Kyra, and Laralee plopped down.

Laralee really enjoyed it.

massage-chair-1

Kyra was in ecstasy. Or maybe dead.

massage-chair-2

Zack’s chair was the most advanced and included some sort of arm massage device:

massage-chair-3

His legs were also clamped in, and when he started pushing buttons the clamps closed on his limbs and started working the muscles. One wonders what might happen if there was a malfunction in the master computer– you could be trapped in this thing while it slowly crushed you. Our planet won’t be conquered by killer robots; our AI overlords will trick everyone into massage chairs and then knead them to death.

The best part? The control panels were almost certainly more advanced than the computers that ran the Space Shuttle. There were about 30 buttons (no kidding) and a full display showing different massage zones. Crazy. Laralee couldn’t figure it out but after pushing enough buttons she was able to get the chair to work her over.

massage-chair-4

Despite how amazing these chairs were, the cheap model was in the neighborhood of $1,900 so we decided we’d have to pass.

Family photos

Last weekend we all sat down as a family to figure out what we wanted to do for our Christmas card this year. It’s tough because our cards are pretty well-known, and it’s becoming more difficult to be creative with the goofy photo we put on the front. After some brainstorming, we came up with an idea and went to a local park to work on it. I won’t give away the card just yet– I’ll post that after Christmas– but as long as we were all at the park, we thought it might be nice to take some family photos.

Our last “formal” family photos were taken when Zack was less than a year old. Laralee has refused to have any photos taken with her smiling in the past three years because of her braces, but now that the braces are finally off she’s not as bashful. I suppose one of these days we should do something “nice”, but in the meantime we’ll just keep taking the candid shots.

Here’s a nice photo of the Schroeder Clan on the playground at the park:

family-photo-1

Then, of course, we have this:

family-photo-2

And I couldn’t resist putting together an animation. Notice how Alex and Laralee are the stoic ones:

family-photo

Zack looks like a special needs child sometimes:

family-photo-3

On our way home, we passed by a big concrete-block wall and thought it would be fun to take some pictures where we looked like punks. Kyra definitely has the sneer perfected:

family-photo-4

Too cool for school:

family-photo-5

And finally, showing off gang signs… or maybe peace signs?

family-photo-6

Science is awesome

Here’s another example of why science is awesome.

We now have a crazy cool camera that can take photographs at the rate of 100 billion frames per second. That’s down in the realm of picoseconds. Here’s one of the photos from a series– it shows a pulse of laser light bouncing off a mirror.

laser-light-bounce

That blobby thing at the top right is a bundle of photons. That’s right: we can actually see the photons in motion because even light moves slowly when your clock is ticking in picoseconds. That’s absolutely freaking amazing.

Twin snowmen

Here’s a little artistic shot of one of our Christmas decorations. These little guys are about an inch tall.

twin-snowmen

The Washinator

Okay, that thing I said the other day about not posting goofy internet memes… well, I can’t help it. This one struck my fancy today.

washinator

How to destroy a Linux server

I have a client who’s been hosting a lot of sensitive files on a dedicated server that’s co-located at a major provider. We did some juggling and were able to move the files to a different server, and as a result it was time to decommission the old one. Because of the nature of the files, as well as recent high-profile news about security breaches at big companies, he wanted to be sure the files were truly gone. I have no idea how most co-location providers decommission servers and what happens to the old hard drives, but I figured it would be safer to assume the drives could be reused for another client at some point. Someone malicious or just curious would have a treasure trove of information, so I thought about how to completely destroy the data and in fact the server itself.

This isn’t something I do very often (obviously) but after a little thought I came up with a few things that would take care of what was needed. In escalating severity:

Delete all of the files.  This is simple, but on a modern filesystem a delete command really just removes an entry in the folder that “points” to the file data.  The data itself remains on the disk and can be recovered with advanced filesystem tools.  Mac, Windows, and Linux all work this way, so deleting a file is really just superficial.  This can be good if you do it on accident and want to spend the time to recover the file, but bad if someone is malicious and wants to find data.

Delete the disk partition table.  This ensures that the system won’t reboot because it won’t know how the disk itself is structured.  The system can still run without a partition table, but once it’s rebooted it’s toast.

Delete user accounts and access keys.  This prevents anyone from being able to login to the server.  I could continue working on it in this state, but as soon as I logout I wouldn’t be able to get back in.

Nuke the operating system.  I removed all of the boot programs and the operating system “kernel”, so nothing that’s not already running will be able to start.

Zero the disk.  There’s about 900GB of space on the disk, and the files are somewhere in there.  As mentioned above, a determined person could scan the disk looking for data and reconstruct the files.  I created a single massive 900GB file that contains nothing but binary zeros.  This will take a while and eventually fill up the disk, but it’s basically erasing all of that hidden file data because the operating system needs to use that space for all of its exciting new zeros. It took about four hours to consume the disk:

root # cd /
root # cat /dev/zero > /zero.dat
cat: write error: No space left on device
root # ls -l /zero.dat
-rw-r–r– 1 root root 929906020352 Dec 5 13:19 /zero.dat

Nice! That’s a big file. Now for the final step:

Nuke the disk.  Once the disk filled up with zeros, I simply removed every file on the server.  I’d already wiped out the file data with the zero-file; this step will make sure no one can do anything at all on the server. Here goes…

root # cd /
root # rm -rf *
Connection to xx.xx.xx.xx closed.

I don’t know how far the delete got– since it’s typically alphabetic, it probably wiped out all of the programs in /bin, then the hardware devices in /dev, configuration in /etc, shared libraries in /lib, and at some point couldn’t continue supporting my remote shell connection. It kicked me out, and that was that.

Fun stuff. I don’t often get the opportunity to think about destroying stuff.

SSD, meet door

Tonight’s lesson: solid state disks don’t like to be crushed.

crushed-ssd

I was installing some SSD’s in servers at my datacenter tonight, and one of the metal cabinet doors (about the size of a regular door) fell out of the cabinet and landed squarely on my backpack. Amazingly, my ultrabook wasn’t damaged, but one of the SSD’s was destroyed. Ugh.

I, Digital (episode 1)

I find that as I write posts on this blog, there’s definitely a pattern where I write several posts in quick succession– sometimes a handful in a day– followed by long periods where I don’t write much of anything at all. I suppose that some of those doldrums are because nothing noteworthy has happened to me, but more likely it’s that I just didn’t find the time to sit down and write about them.

In any case, I find that it’s always fun and interesting to jump back in time a few months, or even a few years, and read posts that I wrote a while ago. Thus, it seems that the more I write now, the more I’ll have to reminisce about someday. I’ve been toying with the idea of taking the time to write more musings and memories here, rather than posting silly internet memes. This evening I was reading an article written by a guy who worked for the Tandy computer company back in the day. And by “back in the day” I mean the early 1980’s, when computers were a new thing, very expensive, and not useful for too much quite yet. It was fun to read the article because the stuff he talked about brought back memories of those same days.

I once read the entire archive over at folklore.org, which is a huge set of articles written by various members of the original Apple development team. They’re great stories because they dive into some of the technical detail about the first Apple, the follow-on Lisa, and eventually the legendary Macintosh. I was an Apple boy myself, having been raised on an Apple IIe because it was pretty much the only “real” computer out there.

So.

Combining all of the above, I think I’m going to write a series of posts about my journey along the path of software development. Heck, I’ve essentially been a programmer since age eight. Things are a little different today than they were in 1980, but that’s part of what makes the nostalgia fun. Maybe no one will care to read all of this, but perhaps someone in my worldwide audience of three people will find a bit of enjoyment in it.

I can remember some formative moments in my journey as a programmer– they’re very clear and in one way or another they put me on this path I find myself following even today. I’ll do my best to point them out and connect the dots in what will probably be a pretty long and rambling tale. There will undoubtably also be some tangential stories of my childhood thrown in for good measure and a bit of entertainment value.

I can still clearly remember my very first foray into programming. I was in third grade (age eight, sometime in 1980) and I was in the gifted program at school. I loved it because it meant I could get out of my boring old reading class or whatever, and join about half a dozen other gifted kids; we were given quite a bit of freedom in deciding what we could do with our time there. At some point we were told that we had to choose and pursue a pretty major project: it had to be something we’d never done before, and we were supposed to learn it from scratch and have a completed presentation of some kind at the end of the semester. I chose programming. At the time, our school had maybe two or three Apple II computers. They were quite expensive at the time, although I suspect Apple gave substantial educational discounts back then just as they do today.

I wanted to learn BASIC and write a program that I’d show to the class at the end of the project. My great love at the time (and to this day) was astronomy, so I decided to write a program called Mimas. It took me a lot of trial and error, but eventually I had a program that presented a ten-question multiple-choice test to the user. The questions went something like this:

1. Mimas is a satellite of which planet?

A) Mars
B) Jupiter
C) Saturn
D) Neptune

Enter your choice and press the [Return] key: _

(Everyone knows the answer is “C” here.) After completing the ten questions, the user would be presented with their score and a message tailored to how well they did. I wasn’t as cheeky back then as I am now, so I suspect the message for someone who did poorly was along the lines of “Aww, shucks, you didn’t do so well… would you like to try again?” instead of “Sheesh, loser, don’t you know anything about Mimas?”

I showed the class my finished program, probably beaming with pride. Although I remember the program very well, I can’t recall anything at all about how it was received. I doubt my classmates were awed, but they probably gave me polite encouragement while they prepared to talk about how they learned to play chess or whatever.

What’s funny about that little BASIC program was that it opened my eyes to the world of programming. For the first time I understood that you could tell a computer what to do, and it would do exactly what you asked of it, unfailingly, over and over again. What else could I ask a computer to do? Hmm.

I don’t know how much later my parents bought an Apple IIe, but I’m guessing it was within a year or two. I can vividly recall the excitement of opening the boxes containing the main computer terminal, the beautiful green-screen monitor, and the pair of 5 1/4″ floppy drives. Mom and Dad went the extra mile with this (maybe there was a bundle deal?) because we had two disk drives and a coveted 80-column card, which not only boosted the resolution of the monitor to allow 80 columns of text, but doubled the onboard memory from 64kB to 128kB. Yep, 128kB. That’s about the size of a single decent email message these days, and back in 1982 it was all you had to run the operating system, software, and all of the data you were working with.

I remember that my friends had VCR’s and we didn’t. One time I lamented that fact; movie rentals were just starting to gain traction, and it was a huge deal to be able to watch movies outside the theater or the ABC Sunday Night Movie (which was always edited and peppered with commercials). I thought we should definitely have a VCR, but Mom pointed out that we were the only ones on the block with a computer. I had to admit it was true. These things were expensive, so we couldn’t have it all, but in the end I suspect our Apple IIe was far more influential in my life than a VCR would ever have been. (We did eventually get a VCR so we weren’t complete pariahs.)

I dove right in and started monkeying with the computer. I wasn’t ever the guy who was satisfied with the software that came with it– I needed to know what made it tick. I began by writing little BASIC programs to do random, mostly useless things, but it gave me a rudimentary understanding of how programs worked. Things were actually pretty simple. Each 5 1/4″ floppy disk could hold a handful of programs; 720kB wasn’t all that much space. Of course all of the cool kids had a little device that would punch a notch out of one side of the disk, making it double-sided. I never really understood why the disks could store data on both sides, but the manufacturers only allowed one side to be used. I imagine it had something to do with the manufacturing process– perhaps it was easier to coat both sides of the disk with the magnetic material. In any case, the first thing you’d do after buying a box of floppies was punch them and double your storage capacity. Yeah, you still had to remove the disk and flip it over to use the other side, but two for one is a good deal no matter how you look at it.

I had two friends, Steve and David, who were my “source” for software. To this day I don’t know where they found the programs they had, but I’m pretty sure they didn’t pay for them. We’d get together and they’d let me borrow some of their floppies. That’s where two disk drives were invaluable: they made it possible to do a disk-to-disk copy. Otherwise you had to use a single drive and swap the original and copy about a dozen times, since the computer couldn’t hold all of the disk’s data in memory at once. Two drives made the process a breeze, and often it was a matter of just copying the files. After all, there was no directory structure; all of the programs were in the main top-level directory and could be copied by name.

The software vendors wised up to that, and started implementing copy-protection strategies. They’d hide files or data on the disk using raw sectors, so copying the files in the traditional way would appear to give you a perfect copy, but the programs wouldn’t run. Over time the copy protection became more clever, using extra non-standard tracks on the disks, or unusual sector counts, and so forth. I learned all of this stuff mainly because I would be frustrated by my attempts to copy software, so I’d learn more about how these schemes worked so I could circumvent them. I suppose you could say that a lot of my technical knowledge was really for illicit purposes. I found and used specialized disk-copy programs that could detect these clever mechanisms. Over time I had boxes upon boxes of floppies with all sorts of software. I suppose Mom knew that it was all technically illegal, but since she used some of the programs she never really said anything about it.

In order to understand and work around copy protection, one had to know the technical details of the floppy disk and the operating system that accessed it. I bought a book called the Apple IIe Technical Reference Manual and it was probably one of the most influential books I’ve ever owned. I read it cover-to-cover, which is sort of laughable because it’s exactly what the title implies: it’s a technical manual that goes into gory detail about the operating system, memory usage, jumper pins, and so forth. The funny thing is, it’s still on the bookshelf in my basement office. Anyway, with this book I was able to understand how to control the stepping motor in the disk drive, how the tracks were arranged, how to access “unreachable” sectors, and that sort of thing.

Now I was the master of the floppy disk, ready to move on to something different. That’s a story for another day…

How cheap thou art, gas

Wow, gas is so cheap these days it makes me want to buy an SUV or something. Forget this 30+ MPG Honda…

cheap-gas