So the semester begins on Monday, meaning this whole week our department has been dealing with semester startup. Making sure all our apps are tested, available, and production ready. One of my apps has become the guinea pig for moving our infrastructure into the cloud. This has been a really fun experience like rewriting parts to save to S3 instead of the filesystem, etc. Except when it hasn’t been fun. Like dealing with oAuth behind a load balancer.
Long story short, if you use Django, AWS, and oAuth or LTIs (and SSL), add this to your config file:
Basically, we have our website serving HTTPS through a load balancer, and due to some other infrastructure setup, our oAuth URL was being changed during the signature check. This caused it to become invalid. Adding the two lines above fix the whole issue.
I’ve been plagued by a bug at work for the past 6 months. Every so often, my oAuth library would fail out of the blue, causing some of my apps to die. It never occurred in production, only in our development environments. If I made the oAuth token by hand, or used the console, it worked fine. If I waited a few minutes, it would authenticate, and everything worked. Totally random, no rhyme or reason.
It wasn’t until this week when I was trying to use a library and upload some test files to an AWS S3 bucket that I got an error. My request time signature was 19 minutes behind the Amazon server. AWS (and my oAuth lib) have a 15 minute time window. But why was this happening? My clock was synced using NTP. I went to check my app and it had also failed. Then it hit me. I hadn’t rebooted my machine in a week. Our dev environments use vagrant, which runs a small virtual machine that containerizes our software. The virtual machine has its own clock, which gets synced on reboot. Over the week, it’s clock slowly drifted just enough that my timestamps failed for Amazon, and then for oAuth. Every so often it will resync, but not fast enough.
In 2014, I thought Time Drift was a thing of past, a relic of dying CMOS batteries, but it still exists today. So if you are ever using vagrant to develop your applications, setup an NTP daemon on the virtual machine, or just vagrant halt / vagrant up every so often 🙂
This week I was at the EDUCAUSE educational conference which took place locally in Orlando. I was speaking on my work with the LTI standard and the applications I have created for UCF. My first talk was amazing. It went as perfect as a presentation could go. My second talk though….it was my first time doing a moderated panel session. It was awesome. I loved it….until the fire alarm went off mid sentence and the entire convention center started to evacuate!
All in all, its been a great week, but I haven’t been this exhausted since PyCon.
On the PiPlay side, we are getting some bug reports in, and working on squashing a bunch of them. The updater has been re-factored to now take into account version numbers, so you shouldn’t have to wait as long for updates.
The latest version of Raspbian with the new Epiphany browser is amazing. It makes using the web on a Pi a decent experience, and not a chore like before.
Just got back from a neat tech talk that was put on buy a bunch of alumni/coworkers. Some very cool things were shown, like Google Glass and Wearscript.
Kickstarter & PiPlay
11 days to go, and I’m at 298% funded. This is crazy! PiPlay 0.8 Beta 3 was release to positive results, and Beta 4 is being worked on as I type this. A lot of enhancements, fixes, and some new emulators are being added to the distro.
I’ve ordered a few encoders which should be arriving by next week, and I can start implementing those into the software.
I was sent this link (http://iambuildingapicade.tumblr.com/) a few days ago, which chronicles the building of a Raspberry Pi arcade cabinet. It’s really well written and highly detailed.
I’ve also started a mini cabinet build. I purchased this kit and I’m looking forward to building it ( with all the extra time I have… /sarcasm )
This has been a fun week. Trying to fight of the germs going around now that everyone is settled into classes. This is usually when the colds start going around. A few coworkers are already coughing. I may need to put up a fort around my desk. On the plus side I am seeing Yellowcard this weekend!!!
The PyCon call for proposals deadline passed. I put in 2 talks and a poster session. I am volunteering this year as part of the program committee, and I am really excited about going. I hope one of my proposals makes it.
I caught all of the Pokemon NFC figures. Yeah, I have a problem. The Gamestop near me allowed me to bring in my Wii U and scan the Pokeballs before buying them so I could pick out the ones I needed to complete my collection. Some Gamestops really are awesome.
In exciting news, I saw the final pdf of my book, and it is being sent to the printer now!!! In a few days I’ll have the Amazon link to post.
The laser cutter at FamiLAB bit the dust. The controller board’s heatsink fell off causing a short and frying the board. I had some prototypes I wanted to cut so I ended up uploading my SVGs to Ponoko.com and getting them cut there. They quoted me $18 to print out a prototype DeskCade, which isn’t bad considering the amount of space I had left free on the material. I could probably have printed two for the same price if I spent more time rearranging the parts. On the plus side, they said it would take 10 days for cutting and 5 days for shipping. I ordered it on Thursday and it was shipping by Wednesday, so I’m really happy about that.
I can’t wait to see the quality of the parts!
PiMAME update should be soon. This will be include a custom kernel for the Xin-Mo controller.
Happy Friday! Long week. This week at work I learned how to deploy a Django app to an old Solaris server (Read: spent way too much time reading the error log because of incompatible SPARC modules). It was good though, because now I know of some really good debugging methods and have more Apache experience.
Xin-Mo Dual Controller and PiMAME
One of the louder feature requests for PiMAME is getting the Xin-Mo Arcade Encoder modules working. A link to a guide on how to patch the kernel and making a new module for the Xin-Mo was posted to the PiMAME forums. My Pi has spent the last night compiling the new kernel, and it seems to have worked. I will be posting a beta version of PiMAME for users to test with this new kernel and that should get these Xin-Mo encoders working right!
A few posts ago I mentioned that Linux New Media had published a Raspberry Pi Handbook and included a little blurb about PiMAME (yay!). They just announced that they are publishing a bimonthly magazine dedicated solely to the Raspberry Pi. The name could use some work, but I’m going to give it a chance. It’s called the Raspberry Pi Geek. Use code RPGOTHR10 to get 10% off.
I don’t have a problem, I can stop collecting these any time…
Onto the topic, my department got a cool new member this week. A telepresence robot! Specifically a Double Robotics unit.
It’s an iPad on a Segway, thats connected to the internet, and allows you to connect to it from anywhere in the world. It was awesome to test it out and attend a conference in another building. We had a coworker who is currently in another state connect to it and pilot it around the office.