So over the last month I’ve started up learning new tech again. Most of last year I was in and out of coursera classes learning new… “things” (crypto, Saas, model thinking, game theory, Quantum Computing intro theory, Functional programming with Scala…), but now it’s back to new tech, because there is just so much out there and it’s growing near exponentially.
First up is trying to get into Django. I’ve been a Drupal programmer by trade now for two years and wanted to get a better idea of what some of the other web offerings had to offer. Also again it was another chance to work on my Python programming which has never had a chance to be amazing. I ran through their good but somewhat limited intro tutorial. But that didn’t get me far enough along to really sit down and start my own thing, I needed something more. I found many tutorials that looked good but so many were a few versions out of date. After a lot of googleing though I finally seem to have found a good and recent one in Building Ribbit in Django, part of a series of implementing Twitter clones in various frameworks. So I’ve started that.
Django however wasn’t enough, (and by web standards, relatively old) so I’ve also decided to dive into the more cutting edge worlds of Node.js and Backbone.js. And there’s a lot there to learn, and those are practically umbrella names for a whole host of support technologies you need to learn as well, like Underscore.js. Then the internet indicated good practice also points to learning RequireJS and more too. There are even less tutorials here than for Django and out closer to the cutting edge of tech they fall stale and out of date even faster. But I’m slowly getting a handle on the big picture and how to make things work. Lots of Stackoverflow for this learning. Also, if I have time, Backbone Fundamentals soon published by O’Reilly looks full of potential too.
So that’s what’s been filling lots of my spare time recently… well that and Steam for Linux and Starcraft 2… :)
Heads up, wine 1.5.23 from the Ubuntu ppa seems to break Starcraft 2. So I had to apt-get remove wine1.5 wine1.5-i386 wine1.5-amd64 (or use synaptic to remove it) and then from the cached deb files in /var/cache/apt/archives reinstall (dpkg -i) wine1.5 wine1.5-amd64 and wine-1.5-i386. Then all was good again. Now I have to not take that update as well.
I recommend following the instructions on version locking for those 3 packages to prevent updating wine the next time the update manager pops up. Launch synaptic, search for wine1.5, select the 3 packages and use the menu package->lock version.
Or follow the illustrated instructions here on package holding:
It’s all Rob’s fault. He got a Kinect and was playing with it and also wanted to bone up on his Python so he ended up trying to write some visual processing code in Python and it was unusably slow, so he had to switch back to C. No problem. But then I wanted to get an idea for just “how much” slower it might have been. So I busted out my terrible tried and true language/math benchmark suite Primes and ran the C and Python parts. Except they both failed.
Primes dates back to about 2004 and has seen very rare updates since then. Seems that some of the languages have changed since then. Who knew. So tonight I sat down, installed as many compilers as I could get my hands on, ran the suite, and started attacking broken things. I fixed the following:
- Python range() strictness now requires ints and won’t take floats (or they have to match…)
- gcc (but not g++) now requires linking specified AFTER the source file on the command line (gcc -lm primes.c failes now)
- fixed open cobol compiler arguments (-O to -x)
- Changed Objective C syntax: alloc not part of Object, have to manually write it, and now no need to subclass Object. And add stdio.h
- Removed lua4 support (the auto version detect code (that is bad) was messing up), and really, who now would be running lua4?
- Updated haskell includes for new 2010 library standard
- Switched Fortran compiler from g77 to gfortran and tweaked a few type bugs that came from that
And all the updates can be found in the Github repository for primes. I still find it a handy crappy benchmark and a handy Rosetta stone library. Good to keep it vaguely up to date and still running. :)
So today is the 11th year anniversary of the site. It’s really starting to get some age on it :) Last year was pretty light on posts and side project work progress as work and coursera classes ate most of my time but I got some stuff done. Also a lot of reading.
As for this year? Who knows. I always intend to blog more than I do but at least I also haven’t given up and that’s the most important thing. The site still pulls in some little traffic from google so google analytics tells me so that’s good too.
This year has started off on vacation in Colombia with my girlfriend’s family. We spent new years in Santa Marta and it was beautiful. Now we’re relaxing back home in Bogota. I head back to Vancouver and work at the end of next week. The break has been good and 17 hour car trips and chilling at the beach have gotten the year off to a good start reading wise too.
This year I really would like to spend more time on projects than learning I think and continue to poke more at python, I’m still pretty green at it compared to say my PHP lately. We shall see.
In a lot of ways outside of work last year was pretty chill, I’d like to shake it up a bit more this year, again, we shall see.
Ah well, Happy New years to every one and here’s to doing the things we want to!
So 3 years ago as I was learning Lisp and looking for things to do I noticed it seemed to lack perl style pack/unpack encoding functions that many other languages shared (like PHP, Ruby, Python) so I wrote cl-pack (github) to fill that void. I released it back at the end of the summer of 2009 and moved on. Then this week on github I got a pull request. It seems cl-pack has found some use by people and a github user Taksatou had noticed a bug in the BER encoding and fixed it! So awesome, and thank you! The fix is merged and cl-pack continues to fill a small gap in the Lisp ecosystem :)
So after being alterted to the existence of DKIM by this article posted on HackerNews I wanted to implement it immediatly on my server. DKIM is Domain Keys for Identified Mail, a crypo signing protocol where a pub key sits in your DNS and your mail servers sign your mail as it passes through your server. Seems a little stronger than SPF from a few years ago for authenticating mail’s origin so I was keen to adopt it.
So I found the freshest instructions on the Gentoo wiki and followed them. They were a bit spartan so I went looking for a bit more material and found this Ubuntu tutorial which had some helpful suggestions like the testing section.
After giving the OpenDKIM instructions a first run through I gave the testing a try.
First using dkimcore.org/tools/ I found that the Gentoo OpenDKIM config tool had spat out invalid TXT. It had spat out
And after some quick internet consultation I found out I needed to fix it to
v=DKIM1; k=rsa; p=MIGfM.....
The second test from the Ubuntu docs was an auto-respond test email system that along with wikipedia I learned about ADSP from. So I added
_adsp._domainkey.mindstab.net. IN TXT "dkim=discardable"
to my Bind config as well. (I’m still not 100% about the final ‘.’). Also it seems the autoresponder email tool doesn’t update its DNS too often so I may have to wait a bit to retest.
So now it seems I should have DKIM signed/valid email! :) Just another step to make sure my email is valid, slightly less spoofable and liked/accepted by the big email providers.
Also, seeing results like this from Gmail after receiving my email seems good:
Received-SPF: pass (google.com: domain of email@example.com designates 22.214.171.124 as permitted sender) client-ip=126.96.36.199;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of firstname.lastname@example.org designates 188.8.131.52 as permitted sender)
email@example.com; dkim=pass firstname.lastname@example.org
So it’s an unusually non technical fix today but I didn’t really see it explicitly anywhere so: Rovio’s new game “Bad Piggies” is pretty awesome but as I was playing through it it started freezeing the interface on me. It’d keep animating and playing music but became unresponsive for periods of time. The fix that worked for me was moving the app from the SD card back to the phone’s internal memory. I have a huge 32GB SD card compared to my phones 1GB internal mem and a lot of apps so they go there normally, but for this one, moving it back on phone made a big difference.
Settings -> Applications -> Manage Applications -> Bad Piggies -> Move to phone
Well there is plenty of depressing news out there, two recent tech articles did catch my attention:
So yeah, a little more sci-fi touching down in 2012. The future marches on, or we march on into it.
So summer seems to have come to a close both by calendar reckoning and by checking with the weather. So what have I been up to?
Well probably primarily just plain old work. Aside from that? Well, in the spring my overly ambitious plan to take 5 Coursera classes at the same time as working full time collapsed a bit. I did manager to pull off completing Software as a Service, Model Thinking and Game Theory.
After that I took some time off of “school”. I poked my old Lisp OpenGL flight sim but not to much noticeable effect. Reworked some of the model and rendering code and did manage to add an animated sidejet that pushes the ship sideways (all that work is in the rotate branch). Possibly in a year or two more at this slow pace I’ll have a fully movable ship. Anyways, it did make a good break.
I also ramped up my reading and discovered Goodreads into which I important my current to-read list and then explored its recomendation and lists to substantially expand it including most of the top reddit and other sci-fi lists. I’ve started cracking away at it so that should keep me occupied for a year or two.
But the break from school wasn’t to last. My friend Rob caught the first run through of the crypto class and broguht me back to coursera. So right now I’m just finishing off the Quantum Computing course (and doing rather poorly in it as its very much math and very little programming), and just starting the second run of Cryptography. And next month as crypto winds down I want to do the Scala class (taught by the author of the language! :D) and possibly the Human-Computer Interaction course if I can cram it in. We shall see.
On top of that I’ve finally gotten around to another goal I had for this year which was to start playing with Django a web framework in Python. I’ve just finished the 4 part intro tutorial and am ready to try a simple test site I’ve had in mind for a bit.
I also added one more new money and time consuming hobby this year: WarMachine. So that’s also a thing taking some of my time. For anyone curious, I play Cygnar.
Goals for the last quarter of the year? Well, actually finish my coursera courses, do the previously mentioned django test site, blog more than once every few months, cram/learn some spanish before my new years trip to Colombia to visit family, and read very many books. So we’ll see how that goes.
Hope you all had a good, fun and or productive summer!
So this has been a bleak year for internet freedom. ACTA, SOPA, PIPA, and in Canada Bill C30. Everyone’s angry, but what are we doing about it? Sharing links on facebook? Signing petitions. It is clearly not enough. It’s barely anything. Meanwhile, the oposition is pouring tanks of money onto the battle. They can afford to do so because they are rich, rich off us no less. But we have the advantage of vastly out numbering them. So let’s do something to actually be heard. We have agents of our own, and if we can help them, we should. So to that end I’ve donated to the following:
All in all I may not have lots, but I have some to spare, and you may have even less, but if you can spare even $10, spend a bit to help fight for our free internet.