More button woes

The HTML button element has given me trouble in the past. My conclusion was to not use the button element except to progressively enhance the look of buttons. This means the button would initially be an input of type button and JavaScript, if enabled, would change it to a button element.

Well at work I’m working on an app that requires JavaScript and all form submissions are done with JavaScript already so I thought it would be safe to switch over to <button>. The server never uses the button names or values (all needed information is in other inputs – hidden or otherwise) so the IE bugs should not be an issue.

This time the problems I found were exposed with Firefox but the real problem was in the web app code even if the browser behavior was surprising.
Continue reading More button woes

Wooden Computer Case

Wooden Computer Case 07

Early this year, perhaps as far back as February, I visited my friend Martin and he showed me a small form factor (Mini-ITX) computer running Ubuntu that he just built. This gave me the idea for a project to replace our old kitchen computer — a Dell Dimension 4100 (Pentium III). The old one was bought at the end of 2000 for about $2500. (Yow! Could it really have been that much? The price must have included a monitor.)

The kitchen computer is for general family use. It is mostly used for Internet browsing, playing music, kid’s games and educational activities. Other than it being slow it takes up a lot of room on the small kitchen desk and doesn’t look very nice.

Goals for the new computer:

  • Low cost
  • Better performance than the computer it replaces but doesn’t need to be cutting edge
  • Small custom wood case that will look good in our kitchen
  • Low power
  • Quiet


In early April I started researching the computer parts with the information Martin gave me. I looked mostly at Newegg and Mini-Box. Another good resource is

Wooden Computer Case 08

Deciding on the Intel motherboard was easy because it had the best price by far among the small form factor motherboards. At the time there was a choice between the D201GLY2A and D201GLYA. I went with the D201GLY2A because it has a better better CPU (Celeron 225 vs. 215) and serial ATA ports. The Intel product page says there is an optional S-Video output but Newegg didn’t sell that model. S-Video is not needed for this computer anyway. Currently the D201GLY2A can be a little hard to find possibly because of the newer Intel D945GCLF with Atom processor.

I downloaded the product specification from Intel so I could determine the correct power and memory requirements. The power supply needs to be ATX12V compliant. The memory must be DDR2 533 MHz SDRAM DIMMs with a maximum of 1GB. The specification also said:

To be fully compliant with all applicable DDR SDRAM memory specifications, the board should be populated with DIMMs that support the Serial Presence Detect (SPD) data structure.

But I did not find any mention of SPD in any of the memory product descriptions.

My first attempt for memory was 1GB Kingston value RAM but this arrived defective and was later replaced with 1GB from Crucial (Model: CT12864AA53E).

Wooden Computer Case 11

Most PC power supplies are large and provide more power than is needed for a system like this. I wanted the case to be small so I ordered the power supply from Mini-Box. Their power supplies are very small and efficient and fit right on the motherboard power connector. They are DC to DC and therefore require a separate AC to DC 12V transformer. These are the external brick style. I got the one with the highest watt rating (110W). I didn’t want a separate power transformer on the desk so I designed the case to include the transformer brick inside it. The brick has a small fan in it but I never saw the fan come on even when the transformer got quite warm.

Other than the memory and possibly the transformer fan all the other parts arrived in excellent condition.

Wooden Computer Case 10

Parts list

From Newegg:

  • Intel motherboard/CPU Celeron 220 D201GLY2A
  • Crucial 1G 240 pin SDRAM DDR2 533 CT12864AA53E
  • Lite-on DVD burner with LightScribe DH-20A4H-08
  • Rosewill card reader 52-in-1 USB 2.0 RCR-102
  • Seagate Barracuda 250GB 7200RPM 16MB SATA2 ST3250410AS

From Mini-Box:

  • Power supply 200W 12V DC-DC PW-200-M
  • 12v/8.5A AC-DC Power Adapter
  • P4-ATX Cable

Total cost of computer components: $306. Most of the parts can now be ordered for less than I paid for them just a few months ago. I planned on using the existing monitor, keyboard and mouse so these things were not needed. Getting the extra small power supply from Mini-Box definitely added to the cost. It would be less expensive to get a case which includes a power supply. But I wanted a wooden case and I wanted it small.

Wooden Computer Case 06

Case design and prototyping

Even before the parts arrived I was considering different designs for the wooden case. A ten inch cube was a strong contender for a while. One important design consideration was that the visible surfaces should be all wood — no mix of wood and plastic. Even the power button must be wood. I toyed with various plans for concealing the card reader/USB slot in a drawer or behind a door and even a hinged cover like a jewelry box.

I thought having the motherboard mounted vertically (on its side) would be best for managing heat but anyway that I tried to arrange the components I ended up with a bigger case than I wanted. I also wanted the DVD drawer to be horizontal.

The components arrived around May 6th as I recall. Now that I could see the parts I could better plan the case layout. I made a cardboard cuboid the size of the outer bounds of the motherboard so that I could try different layouts without having to handle the motherboard.

While still weighing various case design options I wanted to test out the computer components so I assembled them without a case. I mounted the motherboard on a piece of plywood using wood screws. Other parts such as hard drive and DVD were just left loose.

I left all jumpers as is, installed the memory card, and connected the power supply. I connected the hard drive, DVD drive, USB card reader, PS2 mouse and keyboard, and monitor. Without a case there is no power button. An old push button from my junk drawer and a couple of alligator clip cables worked as a temporary solution.

Wooden Computer Case 05

I plugged it in and the green power LED on the motherboard glowed. When I pressed the makeshift power button I was relieved to see the initial Intel boot screen and BIOS messages then momentarily disheartened by a “no bootable device” error. It turned out that I needed to set the DVD jumper to master (I also removed the hard drive jumper for 3 Gb/s operation). Now the computer booted and the Ubuntu 7.10 install CD loaded.

I ran the memory test program from the install CD and it found 73 errors before I stopped it.

I started to install Ubuntu anyway, which was probably a bad idea. There were video problems where the screen had vertical bands out of order. I was using an old CRT monitor and wasn’t sure if that was the problem so I tried a different monitor that was known to work, but it had the same problem. I was getting nervous at this point.

The video was unusable but I found that in low resolution it wasn’t so bad and I could get through the install.

I went through all the install questions and started to install. At 90% complete it failed and rebooted. I assume this was due to the memory errors. I reseated the memory card and ran the memory test again but it still had errors.

I decided to order new memory and return the damaged Kingston memory. I had no trouble returning the memory. Newegg service was excellent.

While waiting for the new memory to arrive I learned that the video problem I was experiencing is a known issue with the video driver for the SiS chip set. This made me feel much better. See this Ubuntu forms thread and this one also for details on the video driver problem and solutions.

Wooden Computer Case 09

The new memory arrived and passed the tests. The Ubuntu 7.10 install completed without problems. A few days later I installed the video driver from Intel support. The install is just a matter of extracting the two files (, and copying them to /usr/lib/xorg/modules/drivers.

OK so back to the case design. I decided to go with a flat horizontal design for the case. The smallest packing that I came up with was the mother board, DVD with hard drive on top and power supply laid out left to right. The transformer was removed from its plastic case. The card reader also had its case removed and went in front of the motherboard. I have no intention of ever using the expansion slot so I could make the height just a smidge higher than the hard drive and DVD drive combined.

Wooden Computer Case 04

Two air intake holes with screens were put in the bottom of the case and exhaust slots at the top of the sides and back. I had hoped that this would be sufficient but test assemblies showed that the power supply gets very hot. The fan never turned on. I tested the fan independently and it worked fine. The transformer logic that turns the fan on may be broken or I may not have put enough load on it to cause the fan to run. Either way I decided that the power supply ran too hot for inside the case and that a system fan would be needed. I didn’t think it would be worth it to return the transformer as I had already started building the case based on the size of it. I tried adding a duct so all the air flowed through the transformer. This kept the transformer very cool but then the hard drive got very warm. I later added a third hole in the bottom on the other side of the hard drive and removed the duct in the hopes that both the hard drive and transformer would stay cool.

All this testing was done before the case was fully glued up and finished.

The case is designed so that it can either be mounted under a cabinet or free standing on a desktop as shown. I haven’t tried the under cabinet mounting yet and I may not because I like the way it looks on the desk under the monitor.

Highlights of case construction

Here are some highlights of how the case is made and what it is made of. I may write more detailed instructions later.

The case is made of cherry for the top, front, sides and legs. The back is maple and the bottom is maple plywood. The cherry came from extra drawer fronts left over from when our kitchen cabinets were installed. The top uses cherry plywood which is hard to find (you won’t find it in Home Depot). In the Boston area Boulter Plywood is a good source.

The brackets to hold the hard drive and DVD drive together and to the case bottom were made out of 22 gauge steel. I contemplated using wood but it would have added too much to the width of the case and wouldn’t have been as strong. I cut the metal with tin snips and folded it into the shapes shown.

Wooden Computer Case 01

The power button was cut from a much longer piece with rabbets routed on each side. Otherwise it would be too small to work with safely. The rod sticking out the back is a nail with the head cut off. It is just a friction fit. It uses a spring from a ball point pen. The switch itself was something that I have had in my junk drawer for so long I don’t remember where it came from.

Wooden Computer Case 03

The eject button was made in a similar way. It is held in place with a small rubber band stretched across two small screws. A dollop of hot melt glue on the back of the button makes it just the right shape to contact the button on the DVD drive.

Wooden Computer Case 02

The back of the front panel needed to be milled to different depths for the buttons, DVD, and card reader. The round holes were made with Forstner drill bits and the larger areas were done on a router table.

The DVD drive drawer front was a challenge. The DVD tray is designed to take a removable drawer front (it comes with both black and beige). The plastic groves/slots that the drawer front clips on to were too small to mill out of wood and there is no room to attach with screws. I decided to cut the plastic drawer front to a smaller size using a scroll saw. I also sanded the face flat. Then I routed a dado in the back of the wooden drawer front and attached the two with rubber cement.

All the rectangle holes were cut with a scroll saw. Some of the card reader slots were so thin that I needed to drill two holes side by side just so the scroll saw blade could be inserted.

All critical cuts were first done on practice scraps of wood. This is very different from working with software where it is easy to go back and make changes after testing. With wood one mistake can cause all the previous work to get trashed. So you practice and test first.

There are six indicator lights on the front (power, DVD, and one for each of the four card slots). I did not include a hard drive activity light. They are barely visible unless lit up. I didn’t want the lights to overwhelm the simple design so they are 1/16 diameter holes with tiny plastic light tubes. The light tube was taken from a Lego Mindstorms part. It was cut into small lengths — just long enough to reach the LED behind it — friction fit and then coated over with polyurethane when the outside was finished.

I added a sheet of 26 gauge steel to the top for RF shielding. I should probably have more all around but I couldn’t justify the extra effort for something that I don’t have the equipment to measure the effects of. So far I don’t notice any RF problems and the case is right under the monitor and next to a cordless phone.

Summary and lessons learned

Overall I’m very happy with the way the case looks and functions.

Wooden Computer Case 12

After the case was fully assembled I updated the OS to Ubuntu 8.04.1. The SiS drivers from the Intel support site don’t work on 8.04 but a working driver can be found in this thread (post #4).

There are two issues one with the case and one with the motherboard/OS.

  1. The case fan is too loud. More to the point the fan is quiet but the moving air is loud. I need to do some trouble shooting here to see if there is anything that can be done to fix the problem.
  2. The lack of good video drivers (ones that will do 3D) from SiS is a let down. I would really like it if Google Earth would work for example. It would be nice if either SiS started supporting Linux or if Intel had chosen a video chip with full Linux support for this board.

I’m considering switching to the newer Intel motherboard with the Adam processor because it has a video chip set with good Linux support.

One minor thing is that the DVD drawer, when ejected, bumps into the keyboard because the desk isn’t deep enough. I just have to remember to slide the keyboard forward when ejecting the DVD.

I think I met all my goals except that it isn’t quiet enough (It is a little louder than the one it replaced). It uses between 33 and 48 watts, which is a little more than my laptop (ThinkPad Z61m) but much less than the old computer. The old computer used between 70 and 95 watts. Measurements were taken with the handy kill a watt device and doesn’t include the monitor or any other peripherals.

The cost was reasonable. You could build it for less today or get a better CPU for the same money. The supplies for the case mostly came from stock I already had. However any reasonable accounting of my time would jack the price way up. But this was for fun so I didn’t track my time at all.