2008/04/28

On April 30th of last year, we signed up for cell phone service.

Here’s my “before” post:

http://admansblog.blogspot.com/2007/04/so-last-night-diana-and-i-pulled.html (To summarize, I looked forward to the utility of having a mobile phone without becoming “Cell Phone Guy”).

After buying $100 worth of minutes (which came out to 1150) initially, I think I was left with around 300, and Diana had about 500. What’s cool is that once you get up to $100 worth of minutes purchased (which we did in one shot), minutes don’t expire for a full year. Not only that, but they apparently roll over, which was an unexpected surprise. I learned this only after I spent another $100 to get more minutes. On Diana’s phone, I spent $10 to get some small amount of minutes, and rolled over the remaining 500 (which should theoretically last for another year’ish).

Being lukewarm on having mobile phones in the first place, I’m pretty stoked on the pre-paid plan that we chose. $8 a month is tough to beat.

I honestly can’t remember using my phone all that much. I guess it added some convenience in things like calling and ordering take-out food while driving home after a long day out. It made it easier to coordinate with people who have an aversion to making plans in advance. And although it was never realized, it’s nice to know that it was available in an emergency situation. But I can’t think of Big Wins.

So, while definitely didn’t turn into Cell Phone Guy, after a year, I guess you could call me a satisfied customer.

2008/04/24

Spam

We've all gotten lots of weird spam emails, I'm sure.

This is the weirdest I've ever gotten.


2008/04/22

Head Above Water

Head above Water…

I’ve been working a lot lately. We’re right at the “go live” date for the big Trading Project at work, and there’s been the inevitable last minute push to get things all ship-shape.

One big issue is that we’ve been developing on a special Development environment. This is kind of a sandbox set of computers, where we can code up stuff, try different things, and not have to worry about sending live trade orders to Wall Street. However, this Dev environment only has a small subset of data.

Once we got things working in Dev, we moved the code over into a more official “Parallel Testing” environment. As the name implies, this environment is parallel to the actual live Production environment. So while it’s still a playground, it’s a full set of data (tens of thousands of accounts, instead of hundreds).

We’ve been doing performance testing in the Parallel environment, and uncovered some pretty serious issues. For example, if a certain process (placing an order) takes two minutes for two-hundred accounts, how long will it take for 1000 accounts? Since 1000 is five times bigger than 200, you might say it will take five times as long: ten minutes. That answer is correct ONLY if the processing time scales linearly.

We’ve found some cases were the processing time was scaling exponentially. Things that were perfectly acceptable (a few minutes) in Dev were taking HOURS or DAYS in Parallel (if we extrapolated… we’d killed processes after a couple hours). That was obviously unacceptable.

A small group of us worked pretty hard this weekend and made some really big improvements. Because some of the original stuff was designed so poorly, now that we’ve learned a lot, we were able to really see what was going on (lots of this stuff was designed by contractors who are no longer with us), and come up with some good fixes. What’s really satisfying about the whole thing is with some relatively minor changes, we took processes that were taking hours and turned them into minutes. Or something that took 15 minutes, and now runs in 30 seconds.

To make it a little more concrete: imagine that when you clicked “Send” on your email, you had to wait 2 hours to use your computer again. Now imagine that someone comes and tweaks something, and now sending that same email takes 5 seconds. We did stuff like that.

When the head of the Systems department comes in on Monday and calls you a “rock star”… that’s never a bad thing.

2008/04/13

Anti Virus, Schmanti Schirus

After reading an article regarding anti-virus software, I’ve decided that I’m going to disable/uninstall AV stuff on my computer. Anti-virus software that provides realtime protection does so at the expense of performance. Every time you load something up from disk to run it, your AV software will analyze it. This can seriously degrade performance.

Here are other reasons:

1) My computer is behind a well-configured hardware firewall. It’s invisible to passive scans. All ports are closed down, except those specified by me for various purposes. I’m not worried about network worms.

2) I’m experienced (I purposely avoid using “smart”) enough to know when something is fishy. I don’t download email attachments unless I’m damn sure I know what they are. (And no one I know sends me any attachments other than jpgs, anyways).

3) I’m generally a safe web-surfer. 95% of my web surfing is to the same sites over and over again. However, I do like to learn and explore, so sometimes that leads me on wild tangents through the web.

In all my years of being a computer guy, I can remember two virus incidents. One was self-inflicted (an unfortunate side effect of the whole “learn and explore” thing… I wanted to learn about viruses! And I was successful!) The other was similarly stupid (unsafe websurfing in uncharted pirate software websites). Both those were years ago.

So on one hand, I just don’t think I’m susceptible. And on the other side of the coin, don’t put a whole lot of faith into AV software anyways. I just recently watched my dad’s computer recently become infected (remember “smart” vs. “experienced”?) in spite of having up-to-date AV software on it. Even doing a scan with an online virus checker turned up nothing, in spite of an obvious infection. My point being: even up to day AV software is useless against new malware.

Finally, I have a backup system in place. I regularly take an image of my machine, so that if worst comes to worst, I can restore from backup.

So, all in all, I don’t think the dangers require a constant watchdog looking over my shoulder, micromanaging and double checking everything I do. I certainly don’t recommend that the general public uninstall all AV software, but I’m going to give it a shot.

If you don’t hear from me in a week, avenge my death!

2008/04/10

Collaborative Google maps...

A while back, I was playing with Google maps, and found that there is a “My Maps” feature. If you have a Google login, you can create your own maps to share publically or privately. I thought this was pretty cool. It was especially useful when the San Diego wildfires were raging… some helpful person created a map and kept it up to date with various fire lines and safe areas and stuff.

The first thing I thought of was that it would be fun to create a communal map. I thought it would be neat to make a map where friends could add favorite places to eat, neat things to see, etc. The problem was that the first round of My Maps only allowed the owner to edit the map.

But now that’s changed. I just happened to be playing around with Google Maps recently, and noticed that there is now a “Collaborate” button when you create a map. You can still set the map as “Public” or “Unlisted” (in which case you can only view the map if you know the direct link to it), and for each setting, you can have the map be updateable either by collaborators you invite, or by anyone who can view it.

That’s pretty cool.

The only problem I have now is that it feels like a solution waiting for a problem. I want to make a cool, useful, fun map, but I don’t have any grand ideas.

On a whim, I created a Publically viewable, publically editable map called San Diego Beaches, with the idea that people could add their favorite beach spots. I wonder if anyone will update it.

Even if I don’t have any great ideas, I still love the concept.


View Larger Map

Click on the "view larger map" link to see a full view (there's not much there now...)

2008/04/09

Rock Band Robot Progress

My original idea was to try to drop steel balls from a height in order to simulate a drum beat. I looked quite a bit into stepper motors, which are motors that don't feely spin, but spin at a fixed increment every time you pulse them with a signal. They're a little complicated, but not too bad.

In order to interface a stepper motor with the PC, you need some sort of hardware in the middle to translate the PC parallel port signals into something the stepper motor can use. The easy way to do this requires 4 data pins (out of 8) from the parallel port, which means I could only drive two stepper motors. The hard way required only a single signal line, but some more intricate bridgeware.

I decided to revert back to my ORIGINAL original idea, which was to use a solenoid (which also only requires one signal line). In case you didn’t know, a solenoid is an electromagnet with a metal rod in the middle of it. Turn on the current, and the rod shoots one way. Turn off the current, and a spring pushes the rod back. So it's pretty easy to see how that directly translates into drum beats... just hold the solenoid over the drum, and turn on the current for about 50ms, and it rod strikes down and then released. At a local junk shop (Industrial Liquidators off Convoy), I was able to find little anonymous solenoids for $1.50 for two. What a bargain.

So, I've got software that creates signals, and I've got solenoids. What next? I need a power supply for the solenoids, and then I need a way to turn on and off the circuit using the PC.

I begged an old PC power supply from a workboy, and learned how to get those to run on their own (they need some internal wires connected, one with a resistor to simulate load). The PC power supply outputs 5v and 12v (red and yellow wires), and also has black ground wires.

After lots of research, I learned about a particular integrated circuit that would do exactly what I wanted. It's called a ULN2803a Darlington Transistor array. A transistor is basically a switch. It has an input, an output, and a signal input. You attach voltage to the input, and ground to the output, and current will only pass through it while the signal input is on. And this little integrated circuit is basically 8 of those stacked together.

So, I did a little test using an LED. I hooked up one leg of the LED to power. I hooked up the other LED to this IC, and I attached the signal portion of the IC to my parallel port. (I had to buy a separate parallel port card for my PC... my motherboard didn't have one, and even if it did, I probably wouldn't want to use it. $10 on eBay!). I wrote a little application to output signals to the parallel port. So, just like a lightswitch, when the parallel port pin has a signal, it will allow current to flow through. When the parallel port is off, no current flows, and the light turns off.


Electronics Test - Click here for more blooper videos

It worked!

So I tried hooking up the solenoid in a similar manner. I had no data on the solenoid (I even did a "live online chat" on the manufacturer's support website, and they didn’t know anything about it!), so I tried it with the 5v power supply output. I carefully hooked everything all up, and tried my little test application.

Nothing.

I checked my wiring, and found a mess-up (oops!). I tried again. Still nothing.

I triple-checked everything again, and decided to try the 12v line from the power supply. I started up my application, and clicked the mouse, and the solenoid fired with a satisfying *click!*. It worked!

Shortly after that, I modified my code to send signals on and off to the parallel port with a variable delay time that I could adjust on the fly. I started off at one second, and the solenoid clicked on and off just like it should. Then I bumped it down to half a second, and down to a tenth of a second, and it clicked on and off that fast. Certainly fast enough to keep up with the fast drum rolls in Rock Band.

So that's about where I'm at. One open question is if the solenoid fires with enough force to register a hit on the drums. I'm estimating that it does, but I haven't actually tested that.

So, I need to find a way to mount a solenoid on each drum. Then I need to find a way to actually get video input into my PC (beg, borrow, or steal a video capture device). I think those are the only open questions, and they shouldn't be that hard. All the hard stuff is basically done!

2008/04/08

Too Busy to Blog

I’ve been too busy to blog, so here are the highlights.

Allie is doing well. She brings me an immeasurable amount of joy every day.
Work is really busy, and mildly stressful, but generally going well. I’m looking forward to the end of the project.
My Rock Band robot project is actually coming along very nicely. I emailed Norm a big update which will be translated into a full blog post real soon now.

Life is good. Busy, but good.