Printers new location

Now that the printer was in good working order, I have moved it to my my office. The first order of business is to build replacement parts. Parts break all the time so I want to have extras on hand. If a part ever breaks, I should be able to put a replacement part on and then immediately create a new replacement. This is one of the X carriage ends.


A new nozzle, and the evolution of a mini

One of the things I would like to do with the printer is to make gaming miniatures. It turns out that making small detailed objects is a fairly difficult task for a 3d printer to do. It takes very good heat control to avoid making a blob. To get enough control I had to change the nozzle to a different design, as well as add an additional cooling fan. This had the negative side effect of making the printer fairly loud. On the plus side, it made the printer much more accurate for smaller objects.

The first attempts. The feet slowly went from puddles to the beginnings of legs.

Some fine tuning and I eventually came up with this blob like figure. The first that was able to complete to the end.

The new nozzle and fan ducts printing the figure.

The result, something that looks much nicer!

More parts being made

Making some of the final parts before moving the printer off the table. My girlfriend was very tolerant of the huge mess that I made on the table for the several weeks that it took waiting for parts and getting it running.


Printing useful objects

Once I calibrated the printer properly and verified I was making pieces in the proper dimension, the next step was to start improving the printer. Many things I had simply stuck together with hot glue and things I had lying around. The endstop supports and endstop flags were one of these things, made out of a cut up credit card and glue. Another issue I was facing was the ability to feed the plastic into the machine. I had the roll sitting next to it and would have to untangle it by hand every few minutes. To fix this, I printed a support for the roll that I still use today.

Endstop mount.

Endstop flags.

Spool mount in progress.

Spool mounted above the printer.

Getting it running

The first thing was to take inventory of what was there. I made a list of everything I had, and compared it to the list of parts that the printer should have. Once I figured out what I needed to make the printer minimally functional, I order a few things and put it together. These pictures here show the printer from getting it set up to printing test cubes.

This picture shows the printer after I have installed the heated bed on the Y axis. Other than that, this is how I received it.

This picture was taken after I debugged the control board, compiled a new firmware image for it and had it communicating with my laptop.

The first ever object to come out of the printer. Pretty messy, but close to what I was trying to print.

These are the first three cubes to come out of the printer. From left to right it was three days of learning and fine tuning. By the third cube, it was pretty close to the size and shape it was supposed to be.

The start of my 3d printer

My 3d printer was given to me by a friend. It was a partially assembled setup, and it included a bag full of parts. I’ve gone from having zero experience with a 3d printer, to having assembled and improved this one, and now I am building a larger one by adapting existing designs into something I like. Throughout the process I have taken several pictures and videos. In the next several days I will be writing a series of posts on my experience with 3d printing.

DICOM Image Plane Editor

Recently I had to have a few MRIs done. Many times in an MRI more than one view of the body is taken. Most DICOM software will allow you to compare two series and will show lines indicate where each view is on the different image. If you have moved, even 1mm, in the MRI machine these numbers will not match up, making visualization a little difficult with the lines off.

To solve this, I wrote a ruby script. Point it to a folder full of DICOM files and it will allow you to apply an offset to the image plane in a series. You can then visually match features and apply an offset to have a more accurate view of where you are looking at in the body.



I came across a post the other day for Devd. It’s goal is to be a simple webserver for developers, if you just want to host some pages to look at. I think this is a great idea but because I typically am doing full applications instead of just javascript there is already a development server for my environment ready to go. Definitely something to keep an eye on but it wont change my day to day.

devd: a web daemon for developers

Extracting images from text mail archives

When you back up or save emails, one format of doing so is in plain text. The attachment to emails are then stored as base64 encoded data in the file. I wrote this script to find known signatures of emails in base64 attachments and write the images out to the disk.

Simply pass it in the file name you want to read from, or it will read from stdin. This just goes to show Ruby still has very high performance, on my system it was processing a test file at 50+ MB/sec. Full code after the break.


How to recover data from .7z files

Suppose you have a .7z file, and the archive is “corrupt”. If it is not corrupt, but missing the end of the archive you will get an error. Here is how you can recover at least some of the data from that.

First step is to take the bad file and see how long the archive is supposed to be. The header has a pointer to the end header in it. At offset 0x0C in the start header is the offset of the end header, stored in 8 bytes.  The next 8 bytes is the length of the end header, which means the end of the file.

Now that you know how big the file was supposed to be, you can recover all of the data that you have but all of the files will be concatenated together. You don’t know the length of any of them, or even how many separate files there are. The important thing though is that you can extract the data.