18
December
2014
Permalink

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!

15
December
2014
Permalink

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…

11
December
2014
Permalink

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.

11
December
2014
Permalink

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

10
December
2014
Permalink

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.

6
December
2014
Permalink

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

twin-snowmen

5
December
2014
Permalink

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

5
December
2014
Permalink

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.

3
December
2014
Permalink

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.

1
December
2014
Permalink

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…

1
December
2014
Permalink

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

cheap-gas

29
November
2014
Permalink

Today it was around 60 degrees– wow. I figured it’s officially after Thanksgiving, so it’s acceptable to hang up Christmas lights, and the weather isn’t going to get any better.

I went through the usual ordeal of plugging in each strand of lights, only to discover that at least three of them had the old “half the strand doesn’t light” problem. I fiddled with bulbs for a while, but in the end it proved easier to just buy a couple more boxes of lights.

The door was easy, and the tree required some ingenuity with an old broomstick with a bent nail in the end so I could reach the higher parts. All in all, not too bad!

christmas-lights-2014

29
November
2014
Permalink

Kyra’s friend Hannah is in need of a computer. She’d like one at home so she can do homework, read email, and (let’s not kid ourselves) watch goofy videos on YouTube and read Pinterest. Since I have shelves upon shelves of spare computer parts in the basement, I figured I could cobble something together and give her a computer that, while not stellar, would at least work for these things.

I found various components and built the system. It ended up with a 2GHz processor, 1GB of memory, and 500GB of disk space, with a dual-monitor video card. Not too bad! I thought it would be nice to install Windows for her, so she’d at least have a desktop environment that’s familiar. She could also install various programs if needed. I dug up an old Windows 7 install DVD and started working on it. I think that was around 10am today. Now it’s after 4pm and the system still isn’t useable. I had to dig through internet forums to learn how to install the appropriate drivers for the video card (isn’t Windows supposed to auto-detect that?) so I could have a screen with better than 800×600 resolution. I applied all 107 Windows updates; the download alone took over an hour and the installation took over two. Even after that, everything ran like molasses because Windows 7 enables a bunch of ridiculous compositing effects. I switched to a “basic” theme that didn’t include Aero, and that seemed to help a bit. Google Chrome refuses to install, citing a “lack of appropriate hardware”. When I load a YouTube video I get a black box with nice audio but no image. Even web sites are slow to the point of making me want to cry.

0013

One might argue that Windows 7 is a newer operating system and should therefore only be installed on newer hardware. But sheesh, this box isn’t that bad– a few years old, and certainly the equivalent of a reasonable laptop. Why, then, is this such a horrid experience?

After talking to Hannah a bit, it seems like she doesn’t really need Windows at all– she just needs a web browser. So it’s sayonara, Windows, and hello Linux. I’m going to set up a basic Linux system, configure auto-upgrades, and I suspect it’ll work out of the box.

This is why I just don’t even mess with Windows any more.

29
November
2014
Permalink

Last night Kyra informed me* that a bubble produced by a whale’s fart would be large enough to enclose a full-grown horse.

whale-bubbles

* She saw this on Pinterest, so it must be true.

26
November
2014
Permalink

After several months of procrastination and a few weeks of concerted but often frustrating effort, I finally managed to boot a custom-built 64-bit Linux system.

For over a decade I’ve been running my own version of the Linux operating system, which I cleverly call Jinux, and it’s served me well across over a hundred servers and a long series of desktops. It’s probably a sign that I’m either unbelievably stubborn or a true Linux geek that I insist on compiling all of my software from scratch, rather than using any of dozens of freely-available versions available. But hey, whatever the reason, it’s what I do.

For a while I’ve intended to convert from traditional 32-bit systems to a more modern 64-bit system. However, that’s much easier said than done– the architectures are substantially different under the hood, even though the stuff you see looks exactly the same. It turns out that many of the scripts and processes I’d used successfully for a decade no longer applied, and had to be re-thought and re-written.

In the past week I’ve been getting really close… little things kept popping up, and I’d solve the problems one at a time as I continued to advance. Finally I had a system that made an effort to boot but died in a kernel panic and a splash of debug code. More backtracking and debugging finally led me to the solution. I applied it, hit the button, and bam! the system booted and I was faced with the prompt that signaled my triumph:

jinux64 login:

There’s still some work to be done before the system can be deployed to my production servers, but it’s a pretty big step. Cue the success baby…

success-baby

24
November
2014
Permalink

Sage words for programmers everywhere:

code-maintenance

24
November
2014
Permalink

Ain’t that the truth…

security-question-dog

21
November
2014
Permalink

Back in the day, when particle physicists were creating the list of subatomic particles and putting together what’s known as the Standard Model, they named the six types (“flavors”) of quarks as follows:

up
down
charm
strange
truth
beauty

I always thought those last two were particularly poetic, but unfortunately over time truth and beauty became known as top and bottom. A few years ago there was quite a bit of excitement when the top quark– the most massive one, and thus the most elusive to create in a particle accelerator– was “found”. It would have been fun to read about how “truth had been found” instead.

Anyway, I still like to refer to them as truth and beauty, just as I continue to refer to Pluto as a planet. This evening I was reading an article about the discovery of a couple of new elementary particles (Xi_b and Xi_b*) at the Large Hadron Collider. To my delight, the article I was reading mentioned that the particles are comprised of three quarks: strange, down, and beauty. Aha!

It’s good to know truth and beauty are alive and well.

14
November
2014
Permalink

The adventure continues. This afternoon Alex, Laralee, and I drove down to Boulder for a tour of the University of Colorado Boulder (CU) campus. It was about 35 degrees and we were walking around for over an hour, but at least it wasn’t 10 degrees like it was a few days ago!

CU is a big school, with about 30,000 students, and covers a lot of ground. It was definitely a different experience than our recent tour of Colorado School of Mines. Unlike Mines, which is almost entirely focused on engineering disciplines, CU is a true “university” and engineering makes up around 25% of student enrollment. Still, they have impressive research work, and their physics department is world-renowned (they have three Nobel laureates on the physics staff!). Alex doesn’t plan to go into physics, but it’s nice to know that CU has strong science programs.

Laralee said she was pretty bored after the tour. Like our earlier trip to Golden, I found it really exciting to see the campus and picture Alex attending college. And, yes, it brought back memories of my college days as well.

For the past few weeks I’ve been hounding Alex to work on scholarship applications. There are tons of scholarships available, and there are even web sites that consolidate them pretty nicely so you can skim lists of hundreds of them and select ones that seem interesting or applicable. He’s been working on the applications, albeit slowly, and today I hope some of the harsh reality of the cost of a college education will be motivating to him.

I did some quick research and found these estimated annual prices for the four schools Alex is considering:

Colorado School of Mines – $31,023/year
University of Colorado Boulder – $26,933/year
Brigham Young University – Provo – $16,163/year
Brigham Young University – Idaho – $11,483/year

Holy smokes. Those first two will cost over a hundred grand for a full degree. I sure hope he finds some sweet scholarships…

12
November
2014
Permalink

Monday night Kyra’s symphonic band performed with the University of Colorado band. The high school group had been invited to join the CU players, which was a pretty big honor.

Mom and Dad had commented in the past that if any of our kids had a special performance or event, they should invite Grandma and Grandpa to come visit. So Kyra did, and they were able to schedule the trip. It was really great.

When we arrived at the CU auditorium, Mom was concerned that we wouldn’t be able to see Kyra at all. There are a lot of players in the band, and only a few of them are visible– most are in the back or behind their music stands. Fortunately, Kyra is first chair flute which means she always sits on the right side of the conductor, on the end chair closest to the audience. Sure enough, when the students came out and took their seats, we could see her easily.

kyra-concert-1

The band played well, and Kyra had several solos that were really good. She’s definitely a strong flautist– it’s hard to remember the early days when she sounded more like a squeaky wheel.

Nice job, Kyra!