Thursday, 6 December 2012

3D printing at home from work over ssh and vnc

I'm sure I'm not the only one with this dilema - 3D printers are awesome but they are also slow! Or I'm impatient! But either way I've been looking for a way to keep an eye on my printer while I'm at work so that I can print things during the day.

I see 2 issues that need to be overcome:

  • Controlling the printer
  • The fire hazard

Controlling the printer is pretty easy - I use pronsole over ssh and have in the past used pronterface over vnc. This is all very well but when I press print - what if the print fails and doesn't stick? I don't want to waste that much plastic, or break the printer for that matter! To fix this I've just ordered a webcam which I will point at the printer and broadcast online so that I can see the print fail and just cancel the print. I don't know how to automatically clear the bed after a failed print so this may be an issue, but most the time there shouldn't be a problem.

The fire hazard though - I don't want to set the house alight when the thing overheats! I've hear of a few replicators that caught fire, never a printrbot - but I don't want to risk it and I don't have a fire proof room. Because of this I'm only confortable printing when someone's in the house.

My girlfriend has very different working hours from me so quite often she's at home when I'm at work. Unless you're other half wants to learn to use the printer you'll still have to controll it through ssh/vnc but at least if you have a webcam you can ask them to clear the print bed so you can start the next one, and they'll be able to unplug it at least if it starts smoking!

Soon as I have the cam set up (I ordered it off ebay yesterday so still waiting) I'll try to put the stream on this blog so interested people can watch in amazement as things are printed infront of their eyes. I'll also work out how to use ffmpeg to make timelapses that I can put on my currently very small YouTube channel.

Any of you tried setting up remote printing? If so how did you get over the fire hazard issue?

I just started printing a rostock delta bot!

For those of you who don't know a rostock is a radically different design to any of the other printers out there so far. Below is a video by Johann Rocholl who designed this awesome printer:

I am currently printing the first few parts on my printrbot which I've had for a few months now. This design is supposed to be very simple to put together and provide much quicker printing as well as printing much rounder circles. This makes sense as a delta robot is not limited to steps in X and Y as much as our other designs like the printrbot or the prusa.

My printrbot has cost me about £500 after post from the US and import duty... Since then I've been selling printers on ebay and in the reprap forums:


Prusa Mendel i1 or i2 with Wades extruder - £55
Prusa Mendel i1 or i2 only - £50

Prusa Mendel i3 with Wades extruder - £35
Prusa Mendel i3 only - £28

Printrbot with Wades extruder - £35
Printrbot only - £25

Wades extruder only - £15

Anything else you want printed ask me for a quote!

I have a selection of colors at hand. If you have no preference I will use what I have in stock. If you are willing to wait an extra 2 days then I will order any color PLA you want from

Of course if you want anything printed email me here: but the point is that I am building the rostock with the money raised from printing parts for people on ebay. I've printed about 10 full printers for people all over Europe now, as well as a few odds and ends for people with incomplete kits or broken parts. What I love about this is that every printer I sell will bring the price down for the next sale as more people provide printing services. I wrote a post this morning about How to check quality when buying reprap prints from people because I'm worried that some people may get put off by initial bad experiences buying poor quality parts from people.

Although my printer now prints relatively high quality I hope that the rostock will be more accurate by design. That said I'm a bit worried about calibrating it!

If any of you have had experience building a rostock and especially calibrating it please share in the comments - and yes I have read '' but I haven't found many different points of view on the matter.

How to check quality when buying reprap prints from people?

This is a tough question for all of us. I have printed printers for a few people now but when I started I was very nervous that my quality might not be up to scratch. I kept tweaking the printer and printed parts for my own printer, then finally decided it was time to sell something.

I posted an ad on the reprap forums and got an order for parts for a printrbot without extruder from a guy in Portugal. When the parts arrived he sent me this message:


The parts arrived this morning, some could use a bit more infill and smaller layers to make them stronger. Some holes are small, others are too big, looks like you need to tweak your printrbot a little more. 

Besides that, they look good 

Best regards '
Ok - so he didn't ask for a refund, but I was certainly dissapointed - at the time his parts were some of the best that I'd printed and I only had online pics to compare my prints to. I thought they were great, but he was obviously not impressed. I had printed him structural parts for a printrbot with only 10% infill and .35 layer height. Since his message I have recalibrated with a proper set of calipers and I always print structural parts with 30% infill. I also reduced layer height to 0.2 apart from some models where the STL is optimised for 0.25 layer heights. Since then I have also never had a complaint, not only that - but I've had a lot of compliments from clients about the great quality of my prints.

Soon after this I broke a pulley and didn't have any spares. I asked a guy on ebay to print me 4 of them as I'd broken that particular pulley a few times and the quality of his prints was far superior to my earliest sales. After buying a glass plate and slowing down my prints I can now safely say that my prints are good enough that no one will complain again (I hope!).

Back to the point of this post - when you buy reprap printed parts from someone online you have to think beyond the normal set of scams where that happen all over the place. You can do basic check like asking for a photo of them next to their printer and making sure they didnt take it from google, but quality wise they might not know they have poor quality prints, or they might just be stingy and printing very hollow parts with low infill % to save on cost of plastics as well as thick layer heights that speed up prints but increase the chance of delamination.

I think it's best to ask for a set of photos showing their printer and some closeups on some printed parts as well as asking what layer height they print in and what infill they use. For printed toys you may get away with low infill but structural printer parts that a lot of stress and need a high infill %.

What's you're experience been the quality of the parts you buy?

New hope for full color reprap 3d printing

It's going to happen someday, the question is when? When will we have full color 3d printing at home at only a fraction of the cost of a professional 3D printer like the $34,000 one that staples are going to use?

Adrian Bowyer - the genious who started the reprap project seems to be hard at work making this a reality. Below is one of his first test prints will a mixer nozzle of his own design:

This is currently only black and white, but the system works by using 2 seperate motors to push different colored filament into an extruder nozzle. I do however foresee a problem which Brian Benchoff exlained nicely on his blog:

'While it may be only black and white now, it’ll be a very interesting development once five extruders are loaded up with cyan, magenta, yellow, black, and white filament. Yes, it is now theoretically possible to print full-color 3D objects on a RepRap. While we’re not looking forward towards having to upgrade our one-motor extruder to a four- or five-motor model, the possibilities for desktop fabrication are becoming amazing.'

In order to provide full color we're all going to have to buy a set of 5 motors each with its own extruder. This takes up space and makes the printer much more expensive due to the motors. I'm also unsure as to whether  the current generation of electronics are up to the job.

Personally I can't wait! I want to print full color high resolution objects like Staples will in their shops. Do you think we'll be able to beat them quality wise?

Thursday, 1 November 2012

Printrbot timelapse printing a full extruder

Below is a time-lapse video of my Printrbot printing a full set of parts for a replacement extruder. The full print was 3 hours and this has been condensed down to under 2 minutes (100x speed or thereabouts).

To buy a copy of this extruder please go to my ebay listings:

Z Wobble in my prints!

I've had my Printrbot for a few weeks now and I've been having more and more success with calibrating it and getting reliable prints. I'm now at a point where I can happily leave it printing unattended and most nights I leave a full plate of parts / toys printing away and pick them up in the morning.

I still have a few issues with Z wobble which I should be able to fix. I think the threaded rods are attached to the Z motors at a very slight angle. As can be seen at the top of the picture below this causes a repeating 'wobble' pattern going up my prints:

So far though no one else has noticed this on my prints - but I want them to be as good as possible so I'll be tinkering away tonight!!

Thursday, 18 October 2012

Install Node.js and NPM on ubuntu server

Although you can easily install node using the Ubuntu package manager, you'll only get v0.4.something. This is not compatible with many of node's useful modules such as and is a very old version. Below I explain how to install node and npm on Ubuntu server from source:

Step 1 - Update your system
sudo apt-get update
sudo apt-get install git-core curl build-essential openssl libssl-dev
Step 2 - Install Node.js
First, clone the Node.js repository:
git clone
cd node
Now, if you require a specific version of Node:
git tag # Gives you a list of released versions
git checkout v0.4.12
Then compile and install Node like this:
sudo make install
Then, check if node was installed correctly:
node -v
Step 3 - Install NPM
Simply run the NPM install script:
curl | sudo sh
And then check it works:
npm -v

Friday, 5 October 2012

Code for Calibrating a Reprap Printrbot

I have found many tutorials around the web showing how to calibrate Repraps and Printrbots. They tend to explain the technique very well, so I'll just let you Google that bit, but they often miss out the G code instructions.

To calibrate use this formula:

  • (Steps per mm) * (expected distance traveled) / (actual distance traveled) 

Pronterface commands are as follows:

  • M501 - show current settings (steps per mm)
  • M92 X60 - change X steps per mm to 60 (interchangeable with X,Y,Z and E for Extruder)
  • M500 - save new settings

Monday, 10 September 2012

How to select a JSON object with a colon in the key

item = Object
  1. categoryArray[6]
  2. commentsArray[1]
  3. content:encodedArray[1]
  4. dc:creatorArray[1]
    1. 0"Jordan Crook"
    2. length1

To access 'dc:creator' simply use:


Console.trace() to debug javascript

The following is taken from the firebug wiki:

Console.trace() prints an interactive stack trace of JavaScript execution at the point where it is called.
The stack trace details the functions on the stack, as well as the values that were passed as arguments to each function. You can click each function to take you to its source in the Script tab, and click each argument value to inspect it in the DOM or HTML tabs.

We have all been there struggling to fix javascript bugs - we know where they break, but take ages working out what called that function causing in to break. Console.trace() allows us to view the full stacktrace and more easily debug our code.

Post your own experiences in the comments below!

Friday, 7 September 2012

Using Chrome’s Task Manager to Kill Broken Tabs

If you encounter a situation where one of the tabs in Google Chrome is causing you problems and won’t close, you don’t have to close the browser to get rid of your troubles. Chrome comes with its own Task Manager that shows you how much of available resources are used by any open pages and used plug-ins. It also allows you to end process on any open tab without having to shutdown the browser.

1. While in Google Chrome, use the following keyboard shortcut: Shift+Esc.
2. The Task Manager will appear. Select the desired page that needs to be closed.

3. Click the End Process button.

Wednesday, 5 September 2012

Batch Cheat Sheet

I dislike batch as a language - I much prefer shell scripts, but for when needs must here is a cheat sheet.

Enter your experiences with batch in the comments and I'll do my best to answer any questions.

To view the detailed help for each command:
myCommand /?

To accept user input as a variable:
set /p Input=Enter some text:
Later you can use that variable as argument to a command:
myCommand %Input%

To stop the console from closing after running a batch script:

Enter PAUSE at the end of your batch script. This waits for user input and will close when you press any key.


CACLS           Change file permissions
CALL            Call one batch program from another
CD              Change Directory - move to a specific Folder
CHANGE          Change Terminal Server Session properties
CHKDSK          Check Disk - check and repair disk problems
CHKNTFS                 Check the NTFS file system
CHOICE          Accept keyboard input to a batch file
CIPHER          Encrypt or Decrypt files/foldersCleanMgr                Automated cleanup of Temp files, recycle bin
CLEARMEM                Clear memory leaks
CLIP            Copy STDIN to the Windows clipboard.
CLS             Clear the screen
CLUSTER                 Windows Clustering
CMD             Start a new CMD shell
COLOR           Change colours of the CMD window
COMP            Compare the contents of two files or sets of files
COMPACT                 Compress files or folders on an NTFS partition
COMPRESS        Compress individual files on an NTFS partition
CON2PRT                 Connect or disconnect a Printer
CONVERT                 Convert a FAT drive to NTFS.
COPY            Copy one or more files to another location
CSVDE           Import or Export Active Directory data
DATE            Display or set the dateDcomcnfg                DCOM Configuration Utility
DEFRAG          Defragment hard drive
DEL             Delete one or more files
DELPROF                 Delete NT user profiles
DELTREE                 Delete a folder and all subfoldersDevCon          Device Manager Command Line Utility
DIR             Display a list of files and folders
DIRUSE          Display disk usage
DISKCOMP        Compare the contents of two floppy disks
DISKCOPY        Copy the contents of one floppy disk to another
DNSSTAT                 DNS Statistics
DOSKEY          Edit command line, recall commands, and create macros
DSADD           Add user (computer, group..) to active directoryDSQUERY List items in active directory
DSMOD           Modify user (computer, group..) in active directory
ECHO            Display message on screen
ENDLOCAL        End localisation of environment changes in a batch file
ERASE           Delete one or more files
EXIT            Quit the CMD shell
EXPAND          Uncompress files
EXTRACT                 Uncompress CAB files
FC              Compare two files
FDISK           Disk Format and partition
FIND            Search for a text string in a file
FINDSTR         Search for strings in files
FOR             Conditionally perform a command several times
FORFILES                Batch process multiple files
FORMAT          Format a disk
FREEDISK                Check free disk space (in bytes)
FSUTIL          File and Volume utilities
FTP             File Transfer Protocol
FTYPE           Display or modify file types used in file extension associations
GLOBAL          Display membership of global groups
GOTO            Direct a batch program to jump to a labelled line
HELP            Online Help
HFNETCHK        Network Security Hotfix Checker
IF              Conditionally perform a command
IFMEMBER                Is the current user in an NT Workgroup
INSTSRV                 Install an NT Service
IPCONFIG                Configure IP
KILL            Remove a program from memory
LABEL           Edit a disk label
LOCAL           Display membership of local groups
LOGEVENT        Write text to the NT event viewer.
LOGOFF          Log a user off
LOGTIME                 Log the date and time in a file
MAPISEND        Send email from the command line
MEM             Display memory usage
MD              Create new folders
MODE            Configure a system device
MORE            Display output, one screen at a time
MOUNTVOL        Manage a volume mount point
MOVE            Move files from one folder to another
MOVEUSER        Move a user from one domain to another
MSG             Send a message
MSIEXEC                 Microsoft Windows Installer
MSINFO          Windows NT diagnostics
MUNGE           Find and Replace text within file(s)
MV              Copy in-use files
NET             Manage network resources
NETDOM          Domain Manager
NETSH           Configure network protocols
NETSVC          Command-line Service Controller
NBTSTAT         Display networking statistics (NetBIOS over TCP/IP)
NETSTAT         Display networking statistics (TCP/IP)
NOW             Display the current Date and Time
NSLOOKUP        Name server lookup
NTBACKUP        Backup folders to tape
NTRIGHTS        Edit NT user account rights
PATH            Display or set a search path for executable files
PATHPING                IP trace utility
PAUSE           Suspend processing of a batch file and display a message
PERMS           Show permissions for a user
PERFMON                 Performance Monitor
PING            Test a network connection
POPD            Restore the previous value of the current directory saved by PUSHD
PORTQRY                 Display the status of ports and services
PRINT           Print a text file
PRNCNFG                 Display, configure or rename a printer
PRNMNGR                 Add, delete, list printers set the default printer
PROMPT          Change the command prompt
PUSHD           Save and then change the current directory
QGREP           Search file(s) for lines that match a given pattern.
RASDIAL                 Manage RAS connections
RASPHONE        Manage RAS connections
RECOVER                 Recover a damaged file from a defective disk.
REG             Read, Set or Delete registry keys and values
REGEDIT                 Import or export registry settings
REGSVR32        Register or unregister a DLL
REGINI          Change Registry Permissions
REM             Record comments (remarks) in a batch file
REN             Rename a file or files.
REPLACE                 Replace or update one file with another
RD              Delete folder(s)
RDISK           Create a Recovery Disk
RMTSHARE        Share a folder or a printer
ROBOCOPY        Robust File and Folder Copy
ROUTE           Manipulate network routing tables
RUNAS           Execute a program under a different user account
RUNDLL32                Run a DLL command (add/remove print connections)
SC Service      Control
SCHTASKS        Create or Edit Scheduled Tasks
SCLIST          Display NT Services
ScriptIt                Control GUI applications
SET             Display, set, or remove Windows NT environment variables
SETLOCAL        Begin localisation of environment changes in a batch file
SETX            Set environment variables permanently
SHARE           List or edit a file share or print share
SHIFT           Shift the position of replaceable parameters in a batch file
SHORTCUT        Create a windows shortcut (.LNK file)
SHOWGRPS        List the NT Workgroups a user is in
SHOWMBRS        List the members of an NT Workgroup
SHUTDOWN        Shutdown the computer
SHUTGUI                 Shutdown the computer
SLEEP           Wait for x seconds
SOON            Schedule a command to run in the near future
SORT            Sort input
START           Start a separate window to run a specified program or command
SU              Switch User
SUBINACL        Edit file and folder Permissions, Ownership and Domain
SUBST           Associate a path with a drive letter
TASKLIST                List running applications and services
TIME            Display or set the system time
TIMEOUT                 Delay processing of a batch file
TITLE           Set the window title for a CMD.EXE session
TOUCH           Change file timestamps
TRACERT                 Trace route to a remote host
TREE            Graphical display of folder structure
TYPE            Display the contents of a text file
USRSTAT                 List domain usernames and last login
VER             Display version information
VERIFY          Verify that files have been saved
VOL             Display a disk label
WHERE           Locate and display files in a directory tree
WHOAMI          Output the current UserName and domain
WINMSD          Windows NT Diagnostics
WINMSDP                 Windows NT Diagnostics IIWMIC WMI Command
XCACLS          Change file permissions
XCOPY           Copy files and folders

Thursday, 23 August 2012

A year later and my Facebook app may actually be coming back to life!!

Ok guys I'm really excited at the moment. As some of you know, for part of my final year at university and for the following 6 months or so I set up a company with Andy Sheperd-Waring and Rob Rolls with a mission to create a fantastically beautiful and amazingly useful Facebook application.

Come September we were all skint and had to get 'real' paid jobs somewhere else and slowly we came to realise that we had added too many fancy features and never really finished the 'core' of the application. We realised that the route to success may have been to actually finish the core parts of the application and to launch the app without all the extra features we wanted.

A year has passed...

Today Andy and I went through exactly what needs doing to bring this thing back to life and to launch the core application. We will be removing some of the fancier features that people may find confusing and would delay launch and focussing all our efforts in getting the application out there.

I will not be giving away more details about any possible launch dates as of yet, but expect to hear more on this front!

Wednesday, 15 August 2012

Why I gave up learning Dvorak

After 3 weeks of using Dvorak as my keyboard layout and actively trying to learn to touch-type again I have given up! My typing speed in Qwerty is about 4-5 times faster than Dvorak and it has barely improved since I started.

I think this reflects partly on my personal inability to learn to type as some of my colleagues are typing faster than me in Dvorak after only one week! I suspect that learning to type in Dvorak in the first place would have its advantages over Qwerty but I feel that it's too big a hit to take considering I can type already. It is also worth while if you have RSI or similar issues as it reduces strain on the wrists and fingers.

Tuesday, 7 August 2012

Dvorak so far...

I noticed one of the guys at work was using Dvorak as his keyboard layout. I'd thought about converting over before but I couldn't bare the idea I going back to basics again.

Well, it's now been 5 days since I first tried using Dvorak and I've got to say its already looking worth while. When I first started it has to be said that I was completely incapable and my memories strayed back to my first IT lessons at primary school where I learnt to touch type all those years ago.

The first 2 days were terrible and whereas before I could express myself at almost my speed of thought, I found that I was managing only about 10 words a minute with the new layout!!

After that initial sacrifice and after taking a couple of free online Dvorak typing lessons I have managed to bring this up to around 40 words per minute. I was never the fastest typist in querty but I used to type around 70 words per minute.

After 5 days I feel I am still rapidly improving and that I will very soon relearn the muscle memory required to type in Dvorak. I can already feel the benefits in terms of how little I need to move my fingers to type commonly used words, I think I will soon overtake my qwerty typing speed, and I certainly find typing much more comfortable already.

If you're thinking of converting I would advise you try it during a quiet time in your life / at work where you can afford to type VERY slowly for a bit. The most important thing is to keep at it and not to chicken out to qwerty at any point.

My only problem with Dvorak is the fact that keyboard shortcuts tend to be designed for qwerty keyboards so I would recommend using "autohotkey" to remap all shortcuts to qwerty. For me this made the transition considerably easier.

Finally, if you have RSI or similar issues I would advise you to make the effort to move to Dvorak. Qwerty was designed to slow down typists because typing too fast used to jam type writers. In doing so qwerty was designed to have many awkward movements which slow you down and strain your wrists. These movements are avoided using Dvorak and therefore minimise the risk of RSI.

Thursday, 28 June 2012

4GB Too Small For Raspberry Pi

Just in case anyone makes this mistake too...

I brought a 4GB SD card for my Raspberry Pi but after trying to clone the Git project I've been planning. I'm about to buy a 32GB card but I'm a bit sad that I wont get my project tested tonight :(

How to start the Raspberry Pi without an HDMI Screen (or no screen at all)

I just downloaded the debian squeeze image and copied it onto an SD card. Then I realised I had no HDMI screen as I always use my laptop. I thought I'd have to get one but thought it looked a bit expensive so I thought there may be a way to start it without a screen at all!!


To enable SSH automatically every time the Pi starts you need to :
  • Prepare an SD card with the Debian “Squeeze” image
  • Insert the SD card in your PC
  • Rename ” boot_enable_ssh.rc” as “boot.rc”
  • Eject the SD card and insert into your Pi
When the Pi boots SSH is enabled by default.

All I needed to do was turn on the RPi, log into my router and wait for the RPi's IP to turn up. I then brought up putty and logged straight in using the credentials provided from where I downloaded the debian image.

I'm really glad I managed to start using my Raspberry Pi without having to buy a new monitor/TV!!!

Raspberry pi unboxing

Below are the photos of my BRAND NEW RASPBERRY PI!! Very excited to get this little thing up and running. First thing I need to do is set up an SD card with the OS. 

For anything who read my previous post... RS Components were very quick to send me a new one after I opened my empty box :(     The only issue is I didnt see it sitting where my house mates put in on the kitchen table so its been sat there a week!