Viewing Category: Geeky

Yeah, I should be saving money, but I came across a 2007 review of Ergotron LCD monitor arms on Coding Horror. Digging around on Amazon, I saw that Ergotron, the company that sells these arms, had a dual arm laptop + monitor kit for about $200. In that moment, I saw that this was the key to fixing my desk so I liked working at home again. Here's why:

With the cable management in place, I can actually lift the monitors out of the way and use my desk as a regular work surface. And additionally, I get back all the wasted desk space formally occupied by LCD monitor supports.
>> CONTINUE READING
Charged up from our on-site experience at the San Jose Tech Innovation Museum, I had this funny idea about a museum that would house everything that I thought was cool. I realized that a lot of the things I like have some kind of transformative power, and that a lot of these artifacts were actually devices that were designed to translate from one kind of energy or data to another more convenient form. The idea that you can convert one thing to another is a foundation of practical engineering, and perceptually being able to switch your brain into a more convenient plane of reference is a skill that I've been interested in cultivating since the 10th grade.
Examples of Transformation Exhibits
- Devices that convert mechanical energy to electrical energy, and vice versa!
- Glassblowing: From sand to shaped glass!
- Mathematical conversion of coordinate spaces to imaginary spaces: Euler spaces come to mind...Ugh.
- Extreme Makeovers and Fashion: It's amazing what you can do with a little bit of applied shadow!
- Empire Building: The process of integrating cultures is difficult and devious task.
- Landscaping, Feng Shui, Interior Decorating: Being able to transform the flow of a physical space is pretty amazing
- Baking Bread: The sheer number of variables involved in creating a great loaf frankly astonishes me. And who wouldn't want to go to a museum that smelled like freshly baking bread?
Examples of Translation Exhibits
- Language Concepts, Linguistics, and Psychology of Communication: There are certain common concepts that most languages share. I'd like to know what they are.
- Codemaking and Codebreaking: Especially physical devices used for this. They're just cool.
- Signal Reproduction: From sound to video, the ability to convert physical phenomena into digital form, and then store it in another physical-based media, is pretty amazing.
- The World of Signals: Everything in Electrical Engineering is a signal, and every signal is arbitrary. If I'd known that when I started engineering school, I might have been good at it.
- Time and Money: The idea that time = money dates back to Benjamin Franklin. Is it true? How do you measure it?
I've decided to call this new institution The Museum of Transformation and Translation (aka THE MOTT). Since creating my own museum and collecting all the artifacts that I'd like to have in it will be prohibitively expensive, I decided to create a Wiki version of it in the Public Wiki area. And because I'm an aging nerd, I am building it to resemble an old-school text adventure. I guess it's more accurate to say that it's a hypertext fiction approach I'm taking, but never mind that.
Right now it's just a placeholder, but if anyone would like to come by and build an exhibit by describing an interesting collection of transformation/translation related concepts or artifacts, come on down!

Last Christmas, a good friend of mine surprised me an indoor electric grill. I was surprised in that Why, I never considered getting one of these way, where you're actually not sure what you're going to do with the gift. I like grilling outside and burning stuff, and the idea of doing this in my house didn't seem like quite a good idea because of two problems:
My kitchen doesn't have a good exhaust for high-heat cooking, not that my crap stove can generate the tens of thousands of BTUs I'd need to make a decent stir fry. The exhaust issue is related to the second problem:
My overly-sensitive smoke detectors, which readily go off if I even boil a lot of water. On second thought, the smoke detectors are probably just right, but it's still pretty annoying.
Because of this, I couldn't even conceive of grilling in the house. This course of action had, in the past, produced too much smoke and anxiety to be fun. So the gift, after an initial period of admiration, was left in the box unused and forgotten.
Fast forward a year, and I stumbled upon the grill again while cleaning my office. With the wisdom that advancing age must have bestowed upon me, I could immediately see a new application for the grill, and this was entirely due to the grill being in my office. You see, my office is vented to the outside. It's in the basement next to the storage room, which is also host to the litterbox for my cats. One of the first things I did after I started working down here with the cats was to figure out how to exhaust the fumes from their sandy deposits. Step 1 was to get a Littermaid Automatic Scooping Litterbox. Step 2, after the Littermaid failed to completely contain the smell, was to visit Home Depot to by an electric ventillation fan and an outside vent pipe that would fit in the tiny basement window. With one portable Ground Fault Interruptor outlet for the fan (just in case) and some duct tape to seal the vent pipe to the window, I now constantly vent the nastiness into the Great Outdoors where it belongs. There have been some additional side benefits too: visiting smokers can actually smoke in my office when it's cold out, and the smoke gets sucked outside pretty quickly.
Anyway, I reasoned, what works for cigarette smoke and litterbox odor probably would work for the gently smoking meats and sizzling steaks. So I cleared off the top of my drafting table and set up the grill:

The grill itself, a nice West Bend electric, is about the size of a large scanner, fitting approximately 4 burger patties at once with a flat area off to the side suitable for toasting buns. Unlike my mom's ancient electric skillet from the 70s, the electric grill unit is immersible in water (simplifying cleaning considerably) and has a separate drip pan that fits underneath it. The manual instructs you to fill the drip pan with water, which is a good trick to make cleanup easier (the grease doesn't harden and char). I have tried this in conventional ovens but it tends to create steam at the same time, creating a mushy gray yuckiness on the bottom of the meat. I was pleased to see that this grill didn't seem have that problem when I tested it just now with lightly-salted cross-cut beef short ribs marinated with a touch of low-sodium soy sauce. Overall cooking time was around 15 minutes per batch. While the smoky charcoal taste was lacking, the convenience of working and grilling in the same space was, dare I say, exhilarating. I can see a bit of grease that has escaped, so this isn't the sort of thing I would do every day, but it's just a bit crazy, which is what I needed today :-)
It's that time of year again for all good builders, geeks, and DIYers in the Manchester, New Hampshire area to gather for BarCamp Manchester (USA). It's coming up this very Saturday, July 28th, at the Amoskeag Business Incubator on S. Commercial St. It's the second barcamp ever, and I'm looking forward to remeeting the friends I made last year.
Cost? FREE! There will even be free food for lunch. You just need to register on the Wiki. I'm not sure what the limit is this year, probably about 120 or so, so make sure you get on the list. Last year's BarCamp was a lot of fun; it's amazing to see how a self-organizing conference bootstraps itself up into a full-fledged event.
This year I'll just be there as an attendee. Hopefully I'll remember everyone's names. :-)
There was a lot of talk about Twitter at SXSW this year. Though the concept seemed trivial and useless to me when I first heard of it, it does do one thing very well: closeness through shared environmental context. A big part of friendship is just hanging out and doing things together without direct communication. You can learn a lot about someone by just watching what they're doing; Twitter is a kind of virtual version of that.
So here's my Twitter profile...I'm going to give this a try for a couple weeks and see what happens. The theory is that I might feel like I'm part of a tribe.
I'm really surprised how quickly my local domain name servers picked up on the new server IP address...at least as far as regular web addresses goes. My email, though, is still going to the old server at FutureQuest, so I guess DNS MX records are a different sort of animal. I'm having a good time playing with this neat lookup tool to see what's going on. The mysteries of the Internet, made a little more clear :-)
It looks like a few comments got posted on the old server...I suppose I should have locked it down or disabled it entirely. I think I'll go do that.
This Saturday, November 18, is Barcamp Manchester. I was in the vicinity of a Barcamp in Austin last year, but wasn't a participant. This will be my first time. If I can get a network connection, I'll try liveblogging it.
Doors open at 10AM. We're capping the attendees at 100. There's a little over 100 people registered on the Wiki, we're thinking we'll see about 70% turnout from people who've put their name down. We'll see how it goes.
FOLLOWUP
Here's the flickr pool tagged barcampmanchester.
The conference was a success! About 75 people showed out of the 100+ who'd signed up. We had enough food. I also discovered that (1) my hairline has eroded far beyond what I thought (2) it is time to hit the treadmill and (3) I hate interrupting speakers to remind them about time...next year I'm bringing kitchen timers.
I didn't attend full sessions, though I caught bits of several and am feeling energized. Tired, but energized.

Ian Muir has been busy organizing the first BarCamp Manchester for November 18, right here in Southern New Hampshire. It looks like people are starting to register, so that rocks!
Spread the word! Ian is also looking for corporate sponsors to cover the cost of food and other sundries like shwag.
The poster is comprised of photos I took of stuff lying around my house, composited together quickly (and rather sloppily) in Photoshop before being dumped into Illustrator. The cool windows in the background were created by Joan, which helped get the whole poster rolling when I was stuck...thanks Joan! This part of New Hampshire is known for the old textile mills that still line the river. They have windows that are rather distinctive and tall, and most of the buildings have been converted into high tech office space.
I wasted a couple hours debugging a Kensington Pocket Keypad I had purchased to work with a 3D program I'm using. I use ancient Model M keyboards on all my PCs, specifically the 84-key Space Saver design that lacks a numpad. Geeky notes follow.
PC Keyboard Scan Codes
Every key on a IBM PC-style keyboard has a unique identifier called a "scan code". For complex applications with a lot of functions, it's not uncommon to use the numeric keypad for special uses. So while you might think typing a "9" on the numpad or the top row of keys doesn't really make a difference, they are two distinct keys. Each key has a unique scan code, and software can be written to take advantage of that.
I used a nifty utility called ScanCode Show to tell me what scancodes were being sent by the Kensington compared to the Targus keypad I just picked up. The Targus (model AKP01US, wireless) sent the correct codes. The Kensington sent the codes for the other number buttons at the top row of the keyboard. Functionally, this is OK most of the time, but it is 100% useless for what I need it to do. Back it goes!
It's really too bad, because otherwise it's a very attractive, compact, good-feeling keypad with extra USB ports.
Although I keep telling people I don't do servers, I'm looking into moving a friend's active Phorum-based BBS to a new host. I'm considering FutureQuest as the new host. I'd heard good things about them, though they're a little pricey compared to other plans.
This is a good opportunity for me also to evaluate new hosts for the blog. I'm currently using Pair Networks, who have been awesome for the past 8 years, but their database servers start pooping out when you get over a certain number of transactions per minute, and it's starting to become an issue.
This is the first time I've had to move a WordPress blog from one host to another, so I'm documenting the process. WARNING! GEEKY NOTES FOLLOW!
Different Server, Different MySQL Versions
Conceptually, it is as simple as uploading my current WordPress files to the new server, and then transferring the MySQL database that holds all my posts and stuff. POOF, it should work, right?
As it turns out, the FutureQuest DB servers are using MySQL version 4.0.x, and Pair is using 4.1.x, so I have to downgrade to an older server version.
MySQL Import Woes
There were three easy ways I found that would backup a Wordpress database, which I tried one-after-the-other.
First up was Aaron Brazell's WordPress-to-WordPress Import exporter / importer. WordPress doesn't come with a WordPress importer, so that's what this package adds.
The plugin exports your posts in an extended RSS format, which you can then upload via the import plugin from your browser. Great in theory! Unfortunately, my blog backup is 9MB, which exceeds the 2MB upload cap of this server for PHP. I may try hacking this to read the backup file from a location on disk, but I decided to try another approach.
Next, I looked at Skippy's WP-DB-Backup plugin, which is included with WordPress 2.0, gives you the ability to produce a SQL dump file from the convenience of your admin panel, without all that fussing around with the command line.
So I did this, and then tried importing the dump file into the new server using the standard mysql < dumpfile.sql style approach. It didn't work: 1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=latin1'
Darn! This looked so promising.
I moved on to Lester Chan's WP-DBManager 2.05 plugin, which allows you to do a lot more with your WP database. It uses mysqldump to create a compatible SQL dump file, which you can then use to re-initialize a new WordPress installation. SAME ERROR in attempting to import. DOUBLE DARN!
Downgrading from MySQL 4.1 to MySQL 4.0
After some digging, I found that MySQL 4.1.x added a different way of handling character sets, and this was reflected by the DEFAULT CHARSET command added to the end of the CREATE TABLE statements in the dump file. MySQL 4.0.x has no idea what this is, so it throws an error.
The workaround I found was to modify lines 32 and 36 of Lester's dbmanagerdatabase-backup.php file. I added:
--create-options --compatible=mysql40
...before the '|' character on line 32, and before the '<' character on line 36. The first parameter tells mysqldump to use MySQL-specific syntax for creating the table, and the second parameter makes those problematic DEFAULT CHARSET commands go away.
The Backup Procedure
So here's what I ended up doing:
On the CLONE blog: Install WordPress 2.0.4, plain vanilla, uncustomized. This is the "blank clone" on which my old blog will be imprinted.
Install Lester Chan's WP-DBManager 2.05 plugin on both old and clone blogs.
On my OLD server: I edited the plugin as described in the previous section, so the database backup file created would be compatible with the new server. Again, my current server uses MySQL 4.1, and the new server uses MySQL 4.0.
On my OLD server: Created a database backup with the patched version of Lester's plugin. Yay!
Then, copy the database backup to the CLONE server. It's in wp-contentbackup-db if you've successfully installed the DBManager plugin; just copy it using FTP or SCP to the same location.
Preparing for Restore
First of all, my CLONE server has only a numeric IP address, not a domain name. I don't plan on transferring the davidseah.com domain over until I make sure everything works. So the URL I use for it is, for the same of example, is http://192.168.1.100.
WordPress keeps track of your blog's URL in the database table, and uses that to generate links to various parts of your blog. When you do a database restore with DBManager, it overwrites your entire database, including that blog URL setting. When that happens, you won't be able to use the admin page, because you'll be redirected to your OLD blog everytime you try to login.
To get around that, you need to be able to edit the database directly and reset the BlogURL setting. I installed PHPMyAdmin on the clone, to be ready to edit the database manually when I did the database restore.
- To the CLONE server: Copy the database backup file to the
wp-content/backup-db folder, where DBManager looks.
Now you're ready to restore the database.
The Restore Procedure
On the CLONE server: Copy all your plugins, template files, and so forth over to the new WordPress installation.
On the CLONE blog: Go to the admin page and click the DATABASE tab that DBManager has added. Go to the MANAGE BACKUP DB tab, and choose the database file to restore (you did copy it to the right place, right?).
Restore the database by clicking the RESTORE button! If everything goes well, you'll see a SUCCESS message. Congratulations! Your database has been cloned onto the new wordpress installation!
Visit the cloned blog server and see if the home page works. It's probably messed up in some ways if you've forgotten to transfer everything over, and you'll find that you keep getting re-directed back to the old blog if you click on anything. That'll be fixed next.
On the CLONE server: Run the MySQL Administration Tool of your choice. Using PHPMyAdmin, I went to the wp-options table and clicked BROWSE. I edit the siteurl option value to point to the CLONE server (not the CURRENT blog).
Here's an example:
My old site is davidseah.com. My new clone site is, say, on a local server 192.168.1.100, and WordPress is installed in a directory called wordpress. The new siteurl (at least for now) is http://192.168.1.100/wordpress, so that's what I should set the siteurl to. Your new webhost should have provided you a URL that you can use to FTP files to, so just use that.
You should now by able to login and visit the CLONE blog's admin page. Go to Options and change BLOG ADDRESS so it's also pointing to the new server for testing.
After all that, the cloned blog seems to be working, but I won't be able to tell what genetic defects may be lying dormant until they manifest. Database performance seems a little sluggish to me, so I'm not sure if the way that I performed this database move somehow messed up the DB. Maybe some MySQL guru out there can give me some pointers.
Next Steps
Before I move everything over, I need to make sure that my .htaccess is set up correctly, get ALL the downloadable files moved over, update my basecamp FTP settings, and also ensure that my new email addresses are set up on the new server. What a pain in the butt!
My DNS is handled by another registrar, so I should be able to just change the nameservers when I'm ready and see what happens. If it doesn't work out, I can just switch the nameservers back, and resume operations at my current host.
UPDATE:
- My Server Move Log, which also details the different way I moved the database with straight
mysqldump and mysql restore commands from the shell.
You are reading page 1 of 5
Go to Next Page >>