Look! It’s moving. It’s alive. It’s alive… It’s alive, it’s moving, it’s alive, it’s alive, it’s alive, it’s alive, IT’S ALIVE!
After a couple of weeks of evenings working on the frame and mechanics of the RepRap, last night I finally got to the point of printing something! A few notes I’ve made about building the frame, placing the motors and other assorted lessons from the construction process.
Tools Make a Difference
The first lesson is to turn an old adage on it’s head. I’ve no idea how many times someone has said to me that “a bad workman blames his tools”, but that belongs in the bin with the same saying as “every tool is a hammer, except a screwdriver, which is a chisel”. A decent set of tools, and more importantly the correct tools, can really really make your life easy. Trying to pin down a hex nut with a pair of pliers while turning it with the only spanner you have get’s really really frustrating after a while. Invest in another spanner! Seriously, it will make things easier! Trying to level all the parts without a spirit level is a mugs game. You can get a good enough spirit level for a few pounds if you look around. This again will make your life so much easier.
Always try and think a few steps ahead
A few times while building the frame I got to a point where I then had to go backwards a few steps because I didn’t think it through. A good example of this is when putting the x-axis together. I’d already put the plastic mounts onto the z-axis for the x-axis smooth rod and then promptly realised I hadn’t reamed out the fixings for the x-axis smooth rod. Twenty minutes of swearing ensued as I took it all back apart to ream it out properly. If I’d thought ahead I could have saved myself this pain and hassle.
If in doubt, ask.
Again, a simple mantra, but one worth repeating over and over and over. Being an Open Source project, the RepRap community are pretty awesome, the TVRRUG doubly so. If you hit a problem, chances are, someone else has already hit it and knows how to fix it. If they don’t they might know how to guide you to finding a new solution or someone who can.
Don’t give up!
A RepRap is a moderately complicated machine. I might do another blog post on the assorted parts and what they’re actually for, but for now take it as read, with so many components to put together, it’s easy to get frustrated. When you reach a point where the frustration makes you want to hurl the thing out of the nearest window (normally without wanting to open it first), go and make a cup of tea, kill some dragons in Skyrim or blow up a mountain in Minecraft. Feel better now? Good, time to sit back down to the RepRap.
Your first print won’t be awesome.
It’ll probably be a not very cubical cube that is immensely ridgey and slopes in places. That’s fine! What’s more awesome is that IT WORKS! Time and patience will improve your prints. As you get to know the calibration settings in all the software and get everything else straight and tight you’ll get better and better prints.
Now seriously, go out and make something amazing!
(Title taken from the awesome 1931 Frankenstein film, clip here http://www.youtube.com/watch?v=rSCBvu_kijo Sometimes you can’t help but feel that way when things work!)
This is where I’ll slightly move away from “the average persons” tasks. Day to day I write or manage software projects, and for this experiment to continue I need to be able to do that on my laptop. Generally I work day to day using python in Eclipse with the pydev extension. This is relativley easy to get going on Windows, download a JDK, install eclipse, download/install python, install pydev. Job done. However I wanted to play with the Microsoft blessed languages, so I downloaded and installed Visual C# express as well. C# is a language I’ve had to use before, so I’m a bit rusty, but should be able to pick it up relativley quickly, and a big kudos to MS as the Visual Studio envornment is still probably the best IDE on the planet (I’m open to suggestions of others which do the job as well, but I’ve yet to play with one that does).
c# uses the .net framework to do all the heavy lifting. It’s a bit like Java in that it’s compiled into byte code and then interpreted so isn’t as fast as something like C++ but makes up for that by being easy and fast to develop in. Some of the widgets that come with the new .net framework (such as the graphing widget) are pretty fantastic and really do make life easy. In a couple of hours I’d refamiliarised myself with the language and written a short program that took in a CSV export from my Current Cost recording box and turned it into a nice graph. Doing the same using the GTK toolkit would probably take a bit longer with a little hacking around as there’s no dedicated graphing widget (that I’m aware of), so you’d have to generate the graph either on the fly by drawing it at a lower level or by creating a jpg and then displaying that in an image box.
One minor issue with the Visual Studio express suite is that there is no built in in subversioning system. At work, and most of the time at home, I tend to use the bzr suite of tools. A quick look on the bzr website and that’s also available for Windows. Download, install and it integrates very nicely into the My Computer interface, and can be called from the command prompt. Easy.
A lot of my dev work is for server stuff, so putty and winscp were downloaded and installed successfully on top of that as well.
Printers are another problem and a bit of a nightmare. I have an HP Photosmart C4180 All-in-One that I bought some time ago while I was at university. Having long since lost the driver disk for this, I nievley just plugged it in and hoped Windows would just find it as Ubuntu does. No such luck. It goes away and gives me a list of printers which mine isn’t in and then offers me the option to go to the Windows update site to find even more. I click that button and wait 5 minutes… then another 5 minutes… then it gives me a bigger list of printers. My printer is in this list (why it couldn’t just have said “We found your printer! Here is the driver.” rather than me spending 5 minutes scrolling through a badly sorted list I don’t know) and then installed it. The scanner wouldn’t work without the software from HP, but otherwise the thing worked as expected.
I have to admit, the boot time for Windows is now slowing down considerably. But my games work and it’s not overly getting in my way yet. So we’ll see.
My fight against distractions has carried on further. This brief episode is brought to you by the theory of “scratching your own itch”.
There are a lot of things that annoy me with various tasks I perform every day. This past week I’ve been taking note of each one, and I count 78 in total. Each one of those 78 things could probably be fixed very easily, but because I’m generally running around like a headless chicken trying to get things done, I don’t even think about fixing them, I just put up with them and carry on. A fair few of these are things that take a while to fix, like the office being short of physical space because of all the orders coming in/out at the moment. Other issues are easy to fix, like the fact that it takes me 30 minutes to an hour to do a quick analysis of some testing data. This is a problem I can solve easily with a smattering of python and a little concentration. In fact, I’m intending to tackle this on Sunday by going into the office when it’s quiet, and just making this problem vanish.
A few other problems on that list of 78 can also be solved with code, some easily, some not so. Some can be solved by a few simple changes in my work routine, like the fact I constantly go to do a task, get pulled away by something else, and then forget what I was going to do. Keeping a simple log book of what I’m doing during the day would solve this easily. It would be better if this was digitized in some form, but for now a simple notebook will probably make a huge difference. This distraction on its own has probably caused me to lose my train of thought more times this week than any other on the list.
So how id my fight going? I’m much more aware of what causes me to be distracted after the past week or so. It’s taking me time to come to terms with each of those distractions and to deal with them, but ultimately, I am becoming more productive in a given period of time. The next big thing I’m going to have to tackle is project methodology. Since I don’t even have a passing familiarity with any of the standard methodologies, this is going to take some research, some thought and a lot of conversations in order to find the best one to suite the needs of my team at work. As always, any pertinant reading material suggestions are always welcome.
For the past few weeks life has been busy, and when I say busy I mean hectic beyond belief. In that time I’ve had a few OSS revelations I’d like to share.
As an experiment at work I thought I’d try using eclipse as an IDE instead of my normal vim+terminator job. Scary as it is, I find myself actually quite liking eclipse. It may be that my work machine has 4GB of RAM, and so copes better than the machines I’ve used in the past, or it may be that I’m starting to lose my qualms about what tools I use to do a job, as long as a job gets done. The PHP and Python tools inside eclipse have made my life a lot easier, and I really do find little things, like it reading out the docstring I’d put in a function when I hover over that function when it’s called, useful. Has eclipse evolved to where it’s useable or has affordable technology caught up with eclipse? A bit of a quandry for me that one.
The other small revelation I’ve had recently is that KDE4 is now inherently useable, and quite shiny to boot. when I’ve tried it in the past I quickly got fed up with things that didn’t quite fit or where missing completely, but now time has passed, and like KDE4 I believe I’ve changed a bit, and actually quite like it. I won’t be using it at home for a while, as the 7″ screen on this tiny little netbook certainly won’t make it very use-able compared to the 20″ odd monitor I have at work. The one big thing annoying me with it at the moment though is that konquerer doesn’t seem to fit with the default theme. Niggly annoyance I know, but surely that should be a papercut?
The last revelation I’ve had, though it’s not really a revelation, is a pang of guilt. I’m inherently a consumer in the whole Linux ecosphere. I consume by far more than I give back, and at the moment I simply don’t have the time to give back as much as I’d like. So this is my decree, and a proclamation that as of next year (with certain exceptions) I intend to deem one night a week free software night. On that night I will help to squish bugs, I’ll sit on IRC and be patient with people trying to help them through problems, I shall try and get involved in the various mailing list debates I sit and read, and I shall attempt to stop consuming quite so much and start giving back as much as I can.
In order to do this I will need a little help. The whole software workflow thing is a bit of a mystery to me. I’ve had little formal training in such things and as such tend to wing it more than I’d like. Can people point me in the direction of some good literature to help mend this? I’m quite willing to get my hands dirty if people are willing to be patient with me as I learn how the OSS developer crowd works so I can learn and adjust. In a way I’m hoping that this will flow back and help me at work as much as it’ll help me contribute back to the community in general.
If anyone also has a project they might want a hand with one evening a week from the of the month, feel free to drop me a line by your favourite communications method
My knowledge of linux is sadly lacking, but every day I improve on it. Since I had a few days free over the easter holidays I thought I’d try and improve this further by installing Linux From Scratch. This is essentially building up a linux system from it’s base packages and takes a LONG time. This to me seemed like a good idea, it would exponentially increase my knowledge of what makes linux tick, and what depends on what.
I started on Monday night by reading through all of the LFS documentation. As bedtime reading goes, it’s actually quite interesting, and it seemed like a good idea to get an overview of what needs doing before I started.
Luckily for me my laptop has a fairly large HD (320GB) so finding some space on a partition was quite easy. A quick boot into a livecd and resizing my /home partition created a nice little 10GB partition for LFS to go in. That was at 9am in the morning. By 10:00am I had downloaded all the required programs in the mounted partition as directed by the book and started to build them. In the first day, I managed to build the initial toolchain and got into the chroot and got to chapter 6.15 in the LFS PDF. The longest thing to build was probably either glibc or GCC, which took just over an hour, but did give me time to cook some tortillas from scratch for lunch
The second day, it took me from about 10 in the morning till roughly 3 in the afternoon to finish installing everything. Was a bit quicker than I expected, but also a lot more involved.
I did hit a few roadbumps, I didn’t have gawk installed on the host system, so at one point something didn’t compile properly and freaked out a bit. A simple sudo aptitude install gawk fixed that though. When I was recompiling glibc all of the tests failed, it took me a few minutes to realise that the reason this was happening was because I’d forgotten to run “make”.. oops.
The last major bump was that when I chose which options to compile with the kernel, I forgot to add the drivers for my ethernet card and my wireless card, so when I booted the machine I had no network! A quick scan through the options and a recompile sorted that out (to include the b44 driver)
What have I learnt from this? Two things mainly.
- Where everything should live on a linux system and why its there
- Package Managers are beyond fantastic. They save so much time and hassle!
Tomorrow I intend to try and make my LFS install useful by installing openssh initially, wget and possible x.org and gnome. That may be a bit ambitious at the moment though!