Import Soul Wouldn’t it be nice if things just worked

6Jun/130

AJ2013 – Photos

I attended AJ2013 as a rover at the start of this year bringing me up to a total of 3 attended Jamborees. First off it was a huge amount of fun and me and pretty much anyone I spoke to who attended had a great time.

Over the course of the jamboree I helped out run the "Challenge it" base, which was completely organized and staffed by rovers. From the start of activities with a 3 day block of bathtub jousting (may I never hear the sound of cast iron being dragged along gravel again) to the more relaxed job of keeping an eye on different obstacles in the obstacle course it was a ball.

Even when you crawled into bed tired, sore and sweaty, feeling like your last shower was days ago when you only just got out, it was a greatly relaxing and satisfying holiday. I met a bunch of awesome people and would definitely attend the next one in 2016.

The double helix, the most complex and ambitious of the obstacles in the course

On market day of the jamboree I also used my gopro to grab some pictures from above the crowds and was able to stitch them together.

In the middle of the leaders/rovers retreat next to our camp-site
http://www.importsoul.net/market-day-campsite/

Joined a different way

From near the desert campsite
http://www.importsoul.net/market-day-desert-campsite/

In the marketplace
http://www.importsoul.net/market-day-marketplace/

If you have the chance to go to a jamboree, do it.

28May/130

Homebuilt CNC – Part 1

Not much content around here in a while but this will be a small series on the journey I took learning about CNC and constructing my own CNC machine out of mainly stuff I had lying around or was able to scavenge.

Way back in year 11 I brought home two tops off the top of school desks, thinking the plywood with a hard resin(?) surface would make a great base for a CNC machine. Some decent size stepper motors were scavenged from a few old dot matrix printers to drive the axes (printers by the way are home to all manner of handy little electro-mechanical bits that come in handy with projects) and Polulu A4983 Stepper drivers were purchased to drive the stepper motors.

A basic XY table was set up using just the tabletops, and stepper motors were set up with some 3/16" threaded rod to shit the axes. A few little Arduino test scripts were created, to shift it backwards and forwards and then all progress stopped as I wasn't quite sure how to go about doing the software side of things to turn plans into commands, the project got shelved and sat gathering dust behind the lounge for the better part of 3 years.

So after a year of uni and a cadet ship the machine was rediscovered during a clean up and over the next few months slowly evolved into what is probably one of the coolest things I have ever built.

Googling around revealed that pretty much all hobby cnc mills or 3d printers are run over a parallel port which is able to be more or less used as time accurate IO leaving you with a relatively beefy processor to run "g-code". G-code at its most simple is a series of instructions on how the machine should move around and how it should move there. You then need some software to parse this and give the machine itself the commands. For testing I downloaded the trial version of Mach3 allowing me to run 500 lines of G-code. Mach3 is a program that parses G-code and sends out pulses on the different pins of the parallel port, that you hook up to the "step" and "direction" lines on stepper drivers allowing for very little in the way of required electrics or programming on my part.

This leaves you with another problem, how to generate the g-code for Mach3 to run as it really wouldn't be much fun to write anything but the most basic jobs by hand.  There are all sorts of methods you can use to turn designs into g-code but for my very first tests I used this neat script to generate some patterns. With some more plywood framework screwed down to the base as the beginnings of a z axis a pen was taped on, and here are the results.

It was slightly wobbly, had a big blotch from where the pen stopped, but it mostly worked and it felt awesome.

Next part coming soon (Hopefully).

23Oct/120

Breadboard design

I know I haven't put anything up in ages and there are a whole bunch of things I have been working on that hopefully make it here.

This is just a short post to display a really terrible piece of design work.

After much frustration with some cheapo breadboards off eBay I finally pulled off the protective layer on the back of the breadboard to see if there was some kind of funny design going on.

20121023-185408.jpg

Turns out somebody thought it would be a great idea to split the power rails down each side of the breadboard into 3 segments without marking it on the top of the board.

Well that's one headache solved now back to finding the bugs in the circuit design

1Jul/120

Pyweek 13 – September 2011

I have recently just finished pyweek 14 and only just realized now that I had not put anything up here yet for pyweek 13.

For pyweek 13 I had been doing a fair bit of coding in python prior to the competition and was feeling a bit ambitious

The theme was "Mutation" so the concept i ended up deciding on was a platformer where the player collected mutations that would help them get though the game, I had also being playing VVVVVV a bit so I wanted to try and make the game have, lots of things to kill you, with dying being a minimal setback. Throw in some dynamic lighting for the hell of it and you have a pyweek entry.

The entry can be found at http://www.pyweek.org/e/allisonInWonder/

It didnt get as finished as I would like with things like the lack of an ending, sounds, extensive level testing and with a few bugs left in.

I wont put much more info here but you can check it out on the pyweek site if you want more info.

Filed under: Uncategorized No Comments
8Feb/120

The programmers itch

As one could easily tell by reading the articles on this site, almost all of which revolve around computing or programming I take great enjoyment in having just enough skills with a computer to be able to whip out a laptop and peck out a quick program to solve some mundane problem.

I have been seen to pull out my laptop, on the bus on the way to a ski-trip to create a program to gather statistics on my skiing day, during family holidays to make up a spreadsheet to easily score and graph the progress of games of cards, to come up with scripts to get out of having to go though pages of paper to count up different things and many other occasions.

Just recently I have discovered how strong this "itch" to write programs to solve  silly programs to solve every day problems, when lying in bed, flicking though comics and I came across this.

While the regular person may be amused by the joke, or think it isn't funny at all the programmer in me instantly thought, It couldn't be that hard to figure out what he said. So of I went, ending up with this little program.

from collections import defaultdict

def strip(word):
    out = ""
    for letter in word:
        if letter in "aeiou":
            out += letter
    return out

def paths(tree,base=''):
    for leaf in tree[0]:
        if len(tree)==1:
            yield base + " " + leaf
        else:
            for branch in paths(tree[1:],base + " " + leaf):
                yield branch

words = defaultdict(list)
f = open("words.txt")
for line in f:
    line = line.strip().lower()
    stripped = strip(line)
    if stripped:
        words[stripped].append(line)
f.close()

col_width = 10

raw_sentence = "A UI AOE UIE OU EAI"
sentence = raw_sentence.lower().split(" ")

sentence_tree = []
for word in sentence:
    sentence_tree.append(words[word])

for result in paths(sentence_tree):
    print result

I am quite proud of some parts of my code, like the nice little recursive function/generator for traversing the tree, but I was a bit lacking foresight as to what kind of, or should i say how many results my program would produce. To try and figure out exactly how many results I began with adding a rather naive counter to the final loop and commenting out the print statement. 20 minutes latter and still with no results, I realized how this approach was not going to be a success. That gave rise to this line, which is able to calculate instantly how many possible things could have been said in the comic.

print reduce(lambda a,b:a*b,map(len,sentence_tree)), "possible arrangments"

And this makes it fairly obvious why it was taking so long to list the results with 24299547659100 possible arrangements. Naturally this led on to looking up different topics such as language parsing so that I would be able to determine how much grammatical sense a sentence makes. Only at this point did I realize that I had got rather sidetracked on trying to get to sleep, and gave up on finding out what he could have said as a problem for another day. Maybe in the next couple of days I will get really interested in the problem again and try and write a program where I can outsource to the internet and have it present people with a sentence and have them say yes or no to if it makes sense.

And that's what has led me to write up this article, this "itch" to think you are able to come up with a clever way to try and figure out what the majority of people would not even consider.