You should probably check out http://www.selectstartstudios.com if you’re interested in iPhone stuff. Probably.
Making a quick note
First and foremost, I’m working on a project with some friends called ‘French Blender’. You can get more info here, at FrenchBlender.com. Basically, without mentioning too much, we’re playing around with iPhone development and some other cool stuff. Check it out, updates are soon to come. You can follow maybe this guy or this guy or even this thing on twitter. I’m not a big twitter fan but it does have its advantages. In any case, the project is pretty cool and has quite a lot of potential. It’s putting together a lot of knowledge from many different backgrounds and allowing us to all give a iPhone development a whirl. If you’re interested, feel free to send me a message or something and I can explain a little further, but I don’t want to post too much until our actual site is up.
Also, where the hell is my delete key on my Macbook… It’s as if the designers of the minimalistic keyboard at Apple decided to torture everyone and their dogs by NOT adding a real delete key, but just relabeling the backspace key as delete. Real helpful, jerks.
I’ve been playing around with GarageBand on Mac and it has re-inspired me to play some electric guitar. One nice thing that I can do (very easily, and for free) is plug my electric into the line-in and use my Macbook as an amp. It’s not the nicest sounding amp, but it’s better than the tin can amp I have in my room. I’ve been playing Fortunate Son, my favourite CCR song through it which is pretty neat.
Of course, there is accompanying music for this blog post, brought to you by Johnathan Coulton! This is the acoustic version.
Today’s musical inspiration comes from the fact that I basically finished my Computer Science degree at Carleton University yesterday. It was my last Comp Sci class; basically launching me into the world of high-tech, hookers and booze. Perhaps not as many hookers as one would imagine, but at least tech and booze. Regardless, things have really become exciting as of lately; in fact I’m starting full time in just a few weeks on a product I can really get behind (I really like the idea and I find it very useful).
Here’s the song (embedding is apparently disabled, click on it twice):
Here’s an acoustic version of it by someone who’s drunk or high, or something. High. Nevermind, I’m sure…
As for what I’m doing with Objective-C, I finally managed to get my MacBook prepared to ship. Since I wanted to leverage the discounts, I became a MAC Student Developer… obviously this meant that I had to prove that I was a student and then convince the hardware people that I was indeed a Mac Student Developer. Essentially, after phoning Austin, being transfered to Ireland and then back to Austin only to be reforwarded to Ireland and then back to Austin once more, I am finally getting a MacBook (13.3, 2.0ghz, 4GB ram). In addition, I’m finally getting a handle on that Irish accent. That being said, I can actually play around with iPhone development and make Objective-C actually useful.
On the topic of Objective-C and iPhones, I’m fairly sure that some people will be interested in the following link: http://itunes.stanford.edu/. Basically, Stanford has been releasing classes online… including one focusing iPhone development and Objective-C. It’s pretty hot, and allows you to appreciate music. Also,
the nil and a mix
Edit: (I ordered my first MacBook! I’m pretty sure this signifies the beginning of the end of the world or of Mr. Eve Obbs’ supreme takeover… but in any case, it’s on the way. Base Model + Extra Ram + Unibody thingy…)
So, my foray into learning objective-c has been steadily advancing (it’s just another Object-Oriented Programming language after all) however I hit a few questionable things within the syntax. My biggest complaint is the fact that you can send messages to nil objects. (Nil objects are essentially blank objects and not NULL pointers…) There may be some valid reason to put it in the syntax, however on the outset it just looks like very sloppy style. Personally, I don’t mind my old friend, the Java/C++ ‘null’ check. It makes you think of the APIs you use, how they behave and what may go wrong in your application. To me, taking that null check out is essentially your floaties (those floating things you put on your arms…) on and going to float off in the sea of ignorance as your application does funny things.
This may simplify your code a little; you don’t have to worry about releasing already released objects (if you do it right, this will never happen anyway) and your program’s reliability can sort of go up… but it’s SLOPPY. There are many ways to get around this, namely with a very simple if check, which I will be doing anyway. I’m no hardcore C++ fanatic but I really prefer the approach of crashing and burning, rather than letting your program live on in “looks like things are okay” land. ugh.
The music this week is not acoustic but a mix of styles.
Malajube’s Montreal -40C
and Hallelujah on piano from some chick in the Maritimes.
Objective-C… wait what?
Now that I’m in my final stretch before graduation I’ve gone back to my hobbies and stuff. So, I’ve decided to pick up Objective-C and try to take a stab at mobile development. I’m going to be playing around with both Android and iPhone stuff and see what I can spew out. Since I don’t have a MacBook (yet — i’m still debating on which kidney to give to Apple in exchange for the lightweight piece of equipment) I had some good times getting GCC working with Objective-C within Windows. Realistically it’s not that difficult; GCC from Cygwin comes with ObjC libraries and all that jazz. However, I had an existing (and quite old) setup of Cygwin that had a limited subset of Cygwin’s GCC libraries. As a result, it wasn’ t working as every tutorial specified. I then went on to install some piece of crap development environment that was supposed to fix everything. Unfortunately it didn’t. It decided to install a stupid version of gcc that lacked everything that was necessary to do what it promised: Objective-C development. Regardless, I sacrificed a goat and managed to get everything working. I’m not posting this to discourage you from trying this magnificent, wonderful setup… but I’m convinced that at this point, if something can go wrong it will go wrong when I’m setting up a development environment.
Also, if you’re somewhat masochistic like I am and also want to compile Objective-C using Foundation and all that Jazz, look at this littlegem of information.
So, Objective C makes me want to cry. The syntax is just… saddening. Here is some code to define the implementation of a class…
@implementation classname +classMethod { // implementation } -instanceMethod { // implementation } @end
Why…? Perhaps the inventors of Objective-C felt as if their friend, the @ symbol was neglected on a computer and not used enough or something but it feels as if they decided to re-invent the wheel. Regardless, it’s learning time.
Acoustic Covers!
So as you may or may not know, I’ve been self-teaching myself guitar as of the past few months. It’s been fun, but I felt like I’d share a few youtube videos that inspired me to play…
the graduation
If all goes well, I can graduate by the end of this semester. This can only be summed up by the words of some guy, from somewhere, who probably wasn’t wearing any pants at the time:
Finally.
What’s my story? Well, I started university in September 2004, after attending high school at L’ecole secondaire de Casselman not really knowing what I wanted to do. I figured I’d do something with computers since I liked computers! I, stupidly, applied to Ottawa U’s Software Engineering program in not only french (Genie Logiciel) but in english, not really realizing that it’s essentially the same program. In addition to those apps, I applied to Carleton University’s Computer Science: Software Engineering program thinking that it was the same thing. Well, 5 years later I don’t have a ring and I don’t regret it for a second. People can say what they like about their university education, some bash it left right and center. For me, I learned a lot. In all honesty, I came into first year extremely scared. I was comparing myself to people that I would meet who had all done the first year equivalents in high-school, who had 2-3 years of programming experience from personal pet projects, etc. I knew how to write if statements in Visual Basic and I felt stupid. Nowadays, I know a bit more! I guess I’m writing this all to say that as long as you are willing and interested in learning, you can do anything. Don’t get intimidated, I guess.
Welp, now that I’m graduating I’m going to work. I’ll be working at IBM starting May 11th. Hoorah!
Edit: I learned how to play guitar instead of finishing that game… as an aside.
the game? new term!
I’ve decided to start work on a small game as a side project of mine. Although this blog was originally about my honours project, my honours project is complete. I think I did a pretty decent job on it… regardless, I’ll transform this site to chronicle any development that I want to do slash can chronicle. This small game will teach me the joys of C# and the XNA framework since I get a ton of licenses and shiny things from my school via MSNDAA. Ahhh free, legal things. Regardless, as I start to get things ironed out I’ll post information about it and screenshots or whatever. It should be interesting!
In addition, I might as well put it out there that these are the courses I’m taking in my final semester at Carleton University:
- COMP 4806 : Algorithms
- COMP 4900 : Computer Vision
- BUSI 1002 : Managerial Accounting (I waited so long to do this guy…)
- TSES 4006: Technology in the Workplace
- SYSC 3303: Real time concurrent systems
So it’s not the most fun content packed semester I’ve ever gone through but it should give me a fair amount of free time to allow me to do whatever I want on the side. However, keep in mind that last semester, I took:
- COMP 4905: Honours Project
- COMP 4106: Aritifical Intelligence
- COMP 4000: Distributed Operating Systems
- COMP 4004: Quality Assurance
- MATH 3806: Numerical Analysis
So I really do not want a repeat of last term and hole myself up in front of my computer.
the end (of the term)
it’s over. Here’s where I’d be riding off into the sunset on my horse, appropriately named chainsaw to emphasize the epicness of the situation. In other words, I’ve completed this semester, including my honours project. You can see the fruit of my labours at http://code.google.com/p/pgdt/. Did I get everything I wanted done? No, I’m not that crazy, however I did get a lot done and it’s enough to write home about. I’m not going to go deeper into the subject of my honours project; if you haven’t checked it out yet it’s there for the taking.
So if you haven’t been following along or have not heard my ranting over the past few months, I’ve been swamped with school work and work. I’ll accept anything coming from work; it’s my own fault for that. However school work has been brutal all semester long. On average I was spending about 30-50 hours a week doing homework. 20 hours doing work. 13 hours or so of classes plus transit between everything. If you work out the math, that gives me roughly 8-10 hours a day to myself. These 8-10 hours include eating, sleeping and exercising which appears to have no effect as I’ve been eating myself to death to deal with the stress. Ahhh vicious circles.
Regardless, it’s been busy. But it’s over. Over also means that I’ve just (sort of) finished my exam session which culminated to an extremely painful math exam, an open book quality assurance exam, an open LAPTOP (music and everything) distributed operating systems exam, a ridiculously long paper to write for my honours project and an AI Project. It was a neat little project where I was able to explore optical character recognition using bayesian network classifiers. I was able to get it working with a decent 70% accuracy on things that I wrote. It’s worth checking out I guess.
The magical question is obviously “what’s next?”
Well I plan on perhaps doing a bit of XBOX360 development for fun and to teach myself more about developing a game (everything from graphics to game engines). Orrrr perhaps I’ll try my hand at some nintendo DS development… if you have any project ideas, throw them at me, I’m willing to listen to anything
the last month and wrapping up
I haven’t posted much within the last month for a few reasons; the main one being that I haven’t had time. My options were either to work on my project or post about how I didn’t have any time to work on my project.
In any case, what I have completed in the last month:
-Fixed a bunch of bugs related to the parser
-Fixed the UI integration into the evaluator
-Fixed various PDT Session related issues
-Added a sexy second pane for evaluating prolog
-Fixed the preference page
I’m currently writing the report so I’ll do that instead of talking here. Hoorah!
embedding prolog
Taking a full course load and doing my honours project WHILE working at work was what one could call a mistake. Regardless, the flood gates have now been successfully closed and a new levy has been constructed seemingly taller than the last. As a result, I have some time to work on my honours project again. Ahhh PGDT, you neglected child.
So if you add up all of the blog posts you can more or less get an idea where the project currently sits. My latest challenge (and last main goal, before I move into bug fixes and stretch goals) is to embed prolog into the development environment. Obviously I don’t have time to write the full layer so it was an effort in finding the appropriate Open Source project that fit my needs. Since, as you may not know, the project is licensed as EPL 1.0, I can’t integrate with any GPL, LGPL or other infectuous licensed applications. This limited the Open Source Prolog Layers down to one and I’m currently working with the PDT project. Ironically, PDT is pretty much what PGDT wants to be but appears to be dead or almost dead.
In any case, I’m using their EPL licensed Prolog Layer to communicate with SWI-Prolog. Basically, people will install SWI-Prolog on their system, then the PGDT console will start and trap a SWI-Prolog process to do its bidding. Then I’ll attach the process to the output and update the user, allow the user to query and what not. Basically the infrastructure is there and now it’s UI work. Screenshots will be up as soon as I’m happy with how the UI looks. The code on google code is currently out of date (I’m still testing/adjusting before I commit) but hey!