Wednesday, February 9, 2011

The Guelph Seven

Whatever you're doing, it's not as important (or awesome) as going to The Guelph Seven's website and checking out what we're up to. If you catch this before March 5th-11th, you'll get to meet our team. If you find it during that period, you'll get fresh-off-the-press news about the cool stuff we're making and how we're doing it, and if you show up late, you'll get the whole experience laid out like a beautiful collage of creation. Don't miss it - check it out.

Follow our twitter, while you're at it.

Monday, November 2, 2009

Presently working on...

  1. A socio-economical system based on what I perceive to be fundamental needs
  2. A possible research project related to robotic labour
  3. Getting a really good bash client running in windows
  4. And I'll do something with my graphs this week.
I have (going on for school):
  1. A networked game of Mancala
  2. A databases assignment

Ha-cha.

Monday, October 26, 2009

Obviously

This fell by the wayside.

I'll be re-evaluating it over the next bit. I feel like in the past month or two (or however many), I kind of retired. I felt like I'd done what I needed to and I lost direction - not just on Awesome, but in general.

I'm done wallowing; this has been ridiculous. It's time to be awesome again. Remember these nice little snippets, from "How to think":

1. Always seek context. It does not fail to help.

2. You do not have opinions on, know, or deserve anything. Everyone, everywhere, has a greater right to everything than you do. Serve them by seeking truth and showing your work.

3. There is nothing too serious to be made light of, or to question.

4. Economy of language, fountains of thought.

5. Find out what you want.

6. Leadership is simply the act of filling a void. If you find yourself creating voids to inhabit, you are not a good leader. Find people to inhabit voids. (props to Brydon Gillis for this one)


-- there's a different set as well, but they're more about "How to solve a problem".

Go, be awesome.

Sunday, August 2, 2009

Still working

My graph work is coming along, slowly but steadily.

I've got Graph, Vertex, Edge, List, and Node types involved. Node is essentially done - completely coded but I might end up adding more to it (I hope not!). List is planned for the most part, just need to finalize on that, and then implementing it is almost entirely boilerplate kind of code. After List is implemented, I can write Vertex and Edge, which should each be pretty fast. They'll almost entirely be just the basic stuff (get/set, copy, create, destroy, equivalence, tostring) and maybe 1-2 specific operations. Then there'll be the graph itself, which also should be easy enough to do.

The hard part will come in designing and implementing the operations for the graph, I think. And also for extending the base types. I'm going to make queue/stack extensions to the list, a set of tree operations as a special-case on the graph, and also common things like minimum spanning tree, shortest path, a*, that kind of stuff. So for now it's just whenever I've got a spare hour or so and I have my Eee with me, I tap away at it.

I'm also drawing a lot, my skill has noticeably improved just since the beginning of the summer. I'm reading a design/typography book that's setting everything out in very clear, obvious terms, which is exactly what I need. Once I have these basic elements committed to memory, I'll do worlds better with higher concepts.

One last thing, I've also *started* a project called "world of blogging", which I may or may not work more on. The notion is: how to get involved in the blogosphere. I feel I'm the perfect candidate to write on the topic, as I'm hardly inolved in the actual blogging community at all. I will write what I do as I do it, to gain the best understanding, and become involved as I go. It's a twofold experience of getting myself involved and writing about something. Exciting. My first foray was into Music blogging because I _really_ wanted to be exposed to more new and cool music. My first google search, (for "music blog", I believe) turned up hypem.com, a music-blog aggregator, which collects and streams music it finds on popular blogs. I figured it would be a good looking but ultimately shallow and useless tool in my endeavour, and I was wrong! It has been an invaluable resource and given me more than I could possibly need.

I had taken some screenshots and written about a thousand words when I went away for a short while and... windows update rebooted my computer. I had foolishly worked in Notepad and not saved a damn thing, so I didn't exactly rush back into working on the project. It has since languished -- but may see revival soon.

Join me in the forever and ever endeavour!

Just wanted to say "forever and ever endeavour". When I thought of that, I immediately googled it. I'm actually happy other people have thought of it too, more than sad I'm not the first to come up with it. That's all for now - good night!

Sunday, March 1, 2009

Computers...

I really want to be able to just play with things.

I guess I need to get deeper into virtualization?

I came here with every intention of saying "I need to design some kind of thing to allow me to swap hard drives on and off of things and I need like 5" or some bullcrap like that - what I really need is a decent tower with space for 4-5 disks, a DVD+/-RW, a floppy drive, and decent video, sound, and networking cards, then to RAID it up, throw a really stable linux with good driver support on it, and then virtualize stuff.

I _could_ buy 2-3 really cheap low-end boxes to mess around with and put really basic versions of linux on and hack the kernel and break things like apache and MySQL and C - but it's probably more useful and even easier for me to just get a really damn good tower and build a PC for about a thousand bucks.

.. there must be some easier solution to this.

Sunday, December 28, 2008

Since the last post...

I've written a fair bit about how the taxonomy should work - the basic two groupings, "Practicals" and "Esoterics" seem to be set, and from there I'm looking at classifying things within.

The way I initially thought I'd go about this was in a general sense, "How could I classify the things to be learned?" - and after a couple of minutes of just slamming my head into that wall I crumbled, and decided to just write about 30 things I'm interested in learning and then find the most general way to classify them. Seems to have worked.

Then I got sidetracked by some guitar I heard on the radio into playing with mine, and from there I got angry about not knowing simple musical theory like what the subdominant chord in the key of E would be - or even what the notes in the tonic chord would be. So I made a bunch of little pieces of paper I could slide around with the notes listed chromatically on them, and a counter and that was neat. Really clunky though. Then I streamlined it by cutting some well-spaced holes in a piece of paper and putting one of the thin pieces of paper I'd written scales on to slide into it. If I put an E in the top hole, it shows a G# and a B on the other two holes. It's quick and easy, and I could go on to make a slide for minor chords, for all the different chords in a particular key, for interesting intervals - but that's when I got smart.

I brushed up on my more-than-adequately rusty Turing skills and wrote myself a little program that tells me what information I would like to know. I made it very expandable, but off the bat I programmed in (for any given note) the major and minor tonic, subdominant, and dominant chords, as well as the perfect 4th and 5th interval to be shown. It isn't much, and in the long run it's something I should simply know - but doing it helped me learn a fair bit of theory and it was a lot of fun. I also learned a good deal about wrapping things into a range with a mod statement. That is now what this post is about.


I spent about 25 minutes kind of staring at the screen before making any real good work - I'd written the shell of a function and gotten it into my head I needed some kind of loop because I'd be repeatedly subtracting from a number. The situation was:

  • 12 elements, 0-11 of an array, values 'A','Bb','B'...'G#'
  • A function should take in a 'current' position in the array, and
  • a 'modifier', the number of chromatic steps up or down to take, and
  • should return an index to the desired note
An example would be func(10,3) - meaning G + 3 chromatic steps, or Bb, index 1. Alternatively, you could get func(2,-20) meaning B - 20 chromatic steps, or, really, -8 chromatic steps since the first 12 just wrap around, and you end up at Eb.

Anyway I sucked at this. I spent a long time doing nothing, then spent a much longer time watching Lawrence of Arabia for the first time (that movie is amazing) then I went back to not succeeding. After a long, long period of time, I'd worked to this point:



if (modifier < MINNOTES) and ((current + modifier) < MINNOTES) then
current := (modifier + current) mod (MAXNOTES)
elsif (modifier < MINNOTES) and ((current + modifier) >= MINNOTES) then
current += modifier
elsif (modifier > MINNOTES) and ((current + modifier) > MAXNOTES) then
current := ((modifier + current) mod (MAXNOTES))
elsif (modifier > MINNOTES) and ((current + modifier) <= MAXNOTES) then
current += modifier
end if



After trying to write this small snippet of code in Blogger and spinning my wheels for a very long time, I've grown frustrated but learned a good deal. There are some issues that occur when moving between 'Compose' and 'HTML' mode that make newlines disappear and cause evaluation of symbols. For example, &-lt appears as <, but when you move to composition mode, the HTML is rendered and thus the symbol-text is replaced. Moving back to HTML leaves you with just an angle-bracket, and then moving into Compose will kill a large section of your post.

It's ugly.

Anyway, hopefully this works out (I've simply resolved to not switch back to Compose mode - who needs WYSIWYG) and you can read the code I posted in. Note that it's hideous. It took me over 3 hours to come up with that code which does actually work, during which time I went through off-by-one errors and modulo arithmetic problems and all sorts of hairy guff. Fortunately it finally worked, and once I saw that if-statement I saw it could be further reduced:



if isBetween (MINNOTES, current + modifier, MAXNOTES) then
result (current + modifier)
else
result ((modifier + current) mod (MAXNOTES))
end if



is the final rendition of that code - I wrote a small 'isBetween(low,target,high)' function that returns true when target is above-or-equal-to low and below-or-equal-to high, inclusive.

After hours of pounding away at what's really a simple problem, I finally ended up with a simple solution. From there the program wrote itself, and the ability to simply say "5 steps up from whatever the input is" without any error-checking or external wrapper statements made it all worthwhile.

It was a good coding experience.

Anyway, goodnight.