Running Apps on the iPhone
I recently switched from the HTC Desire to the iPhone 4s and I’m pretty happy so far. The things that usually use on my phone and that I have to look for on the Apple app store are:
- a podcasting client
- an app to record GPS files while running
- an app for turn-by-turn navigation
The podcasting client was easy, I’ve already used instacast on my iPad, it syncs with iCloud and works perfectly for what I need.
This post deals with the second app, the running app.
When I was on Android, I usually used runkeeper. It worked fine and the only downside was that I had to go to the website to get the GPX file (and they tried to hide it pretty well). On iOS, the app seemed a bit… jumpy when it comes to filtering the GPS signal:
This wasn’t really what I was looking for.
I also tried a few other ones, but most of them where targeted towards getting you on some website and wanting you to buy some sort of premium subscription.
I looked for a paid app that isn’t free but offers good value, this is where I noticed Runmeter:
The company that develops it has a nice comparison online. While this has to be taken with a grain of salt, I think they did an ok job.
Things I like:
- It has support for adding runs to the calendar after you’re done. It’s kinda neat to see your calendar and know what you’ve done next to all the other stuff.
- It is able to attach a gpx to an email and export it that way. It is also able to send customized reports with direct links. I’ll probably use this to automate the import into my custom tailored runalog (that is in dire need of a bit of code polish):
- It is able to customize the voice feedback. You can pretty much combine whatever information you want to hear.
- It doesn’t force me to go to any website. The only thing you have to sign up for is sending automated emails after every run. You can also use the iPhone to send those, but iOS limits apps to just popping up a prefilled “compose” window and not actually sending them. I don’t have a problem with using the developers webservice.
- It has a whole lot of social yadda yadda integrated. I don’t use it, but I like the fact that I could.
So far I am happy with the app, it’s actively being developed and the price of 4.99$ is ok for something that I use every day.
–> App store link
NoSQL Lunch and Learn
Here are the slides of a NoSQL presentation I did as a “lunch and learn” at acquia.
The presentation introduces the different categories of NoSQL data-stores and discusses some of their possible use-cases.
The slides are a bit on the text heavy side and really don’t have a good design. I think I will stop trying to use google docs for that kind of stuff:
A PDF copy of the slides is available here.
Mashups: Shake N' Bake
Collected enough good stuff again :)
Using the Test-unit XML Runner
When trying to run a test-unit test with the included XML testrunner on 1.8.7, I ended up with a NameError about a missing “TestResultFailureSupport”:
1 2 |
|
To solve this, you have to make sure that the file actually loads the test-unit 2.x GEM as opposed to using the included 1.x version from stdlib. You can do this by simply adding this line to your ruby file:
1
|
|
Migration to Octopress
It’s another one of those blogposts… :)
I was a bit fed up with having to keep a whole software stack (mysql, apache, varnish, …) on my VPS up to date while just serving static content (comments via disqus).
When Werner Vogel’s blopgpost “No Server Required - Jekyll & Amazon S3” popped up in my feed reader, I decided to spend a few hours fiddling with a quick and dirty migration attempt.
Thanks to the wonders of open source, migrating my blog from drupal to octopress was relatively easy.
I had to change some minor things in the migration script and I was ready to go. I hope to parametrize my changes correctly and submit a D7 compatible version of the script to the octopress github repo on one of the upcoming weekends.
The next steps will be:
- move the blog to Amazon S3
- thin out the softwarestack on my VPS a bit
- change the blog template to something custom
Fun times ahead :)
Disqus Migration to Drupal
The disqus module allows the usage of drupal with the disqus commenting system.
Since I recently migrated, I’d love to be able to:
a) keep all of my links the same
and
b) have all the old comments show up on the new site.
Problem a) can be solved by simply using the pathauto module and some minor tweaking wherever needed.
Problem b) needed some hacking for me.
I always used the alias (blog.marc-seeger.de/year/month/day/slug) as an identifier on disqus. The durpal module, by default, uses the drupal node ID (blog.marc-seeger.de/node/123) as the identifier.
It’s easy enough to make some small changes though. All of this is in the disqus.module file. Here is the original passage that sets the disqus URL:
1 2 3 4 5 |
|
Just change the ‘alias’ parameter to false to get your aliased path as the disqus URL:
1
|
|
This tells the url() function to NOT assume that the alias is already resolved.
The API for the url function describes it as “Whether the given path is a URL alias already.”
The second thing you have to change is the disqus identifier. Also in the disqus.module search for this:
1 2 |
|
and replace it by:
1 2 3 4 5 |
|
Worked for me :)
Hulu and Iplayer Outside the US Without a VPN
When trying to watch a TV show on hulu (u.s.) or iplayer (u.k.) from inside Germany, one is usually greeted with messages like these:
iPlayer:
Hulu:
These services usually use your IP address to determine what country you’re from. An obvious solution would be to just run the whole traffic over an HTTP proxy that is standing inside of the country in question. The problem is that while browsers tend to honor HTTP proxy settings, the flash player will try a direct socket connection first. This could be circumvented by blocking ports, but that is one of the more annoying solutions to the problem.
Something interesting can be seen by looking at how the iPlayer does the geo locating. It will check the IP and, if successful, pass out the URL for the actual streaming video. This URL can be accessed from anywhere, the only problem is to somehow get at it.
While VPN solutions work, they usually will tunnel ALL of your traffic over the comparatively slow VPN connection, will require manual enabling/disabling, won’t work with e.g. the apple tv out of the box and are in general a pain to set up. If you want to go this way, I recommend taking a look at privateinternetaccess.com. I used to just grab cheap VPS systems from lowendbox.com, but seeing as privateinternetacces provides me with endpoints in 9+ countries (US for Hulu, NL for NFL Gamepass, UK for iPlayer, Switzerland for Zattoo, …) for 40$ a year, I’d rather just save myself the hassle.
As mentioned, there are however good reasons why one might not want to have all traffic being routed over a VPN connection. I recently came across a pretty interesting service that has a different approach to this problem. The service is Unblock US and they provide a DNS based solution to the whole ‘geolocation-check’ topic. After you signed up (free 1 week trail without payment details) you’ll have to use their servers as DNS servers.
What they will do is redirect all DNS requests to geo-location checks to their own IPs where e.g. a squid server will forward the connection with an IP address that matches the country in question (e.g. the US for Hulu and the UK for iPlayer). The advantages of this approach are:
Only the necessary traffic will run over the slow proxy. Most of the time, the real video will come directly to you via your regular internet connection
You can just put the DNS servers into your router and all of your devices (iPad, AppleTV, Laptops, … ) will be able to automagically use the geo-restricted services
While the service provider might redirect any website to their servers, they still can’t fake an SSL certificate, so anything important should still be safe (you hopefully ARE using SSL/TLS!)
In contrast to a VPN solution, this allows you to access services from more than just one country (e.g. Netflix from the US, iPlayer from the UK, TruTV from Germany, TF1 from France)
The price for the service isn’t too bad either. When prepaying for a year, it will come down a little bit less than 3 Euro/month. Monthly payments will be approximately 3.50 Euro/month.
A downside of this approach is, that they have to ‘whitelist’ services and figure out which URLs/Domains are responsible for the GeoIP checks. With a VPN, you can use ANY service within that country without further actions.
While I haven’t signed up with them so far, I’m seriously considering it once I have some free time on my hands to actually watch all the tv and movies.
Attr_reader for Class Variables in Ruby
First of all: This is a bad idea in general since you shouldn’t use class variables in ruby.
But just in case you ever need to use them and would like to access them using a getter method, this is how it can work:
1 2 3 4 5 6 7 8 9 |
|
This is a bit of magic and even has an eval(), but it works…
Mashup Mix March 2011
It took a while but here is a new mix on 8tracks.
Have fun :)
The Western Digital MyBook Live
I recently got my hands on the Western Digital MyBook Live ( Amazon DE, Amazon US ). It is a 2 TB external harddrive that has only 2 connectors:
- A power supply
- A gigabit ethernet port
Initially, I wanted to use it as a no-hassle solution for OSX Time Machine backups. This worked perfectly and I can easily push 5-6 MB/s over Wifi to the drive. After being happy with this, I decided to see if there is anything else interesting going on with the drive.
Here are some findings:
- The MyBook Live admin console is done in PHP using the full blown cakePHP framework:
- The MyBook Live has a hidden page to enable SSH at “/UI/ssh”:
- It has an 800MHz CPU with 256 MB RAM:
1 2 3 4 5 6 7 8 9 10 |
|
- The internal harddrive is using ext4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
- It is using lots of open source software:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|
- A somewhat recent SVN kernel:
1 2 |
|
- Debian Lenny (I might have added contrib and non-free to this):
1 2 3 4 5 6 7 |
|
- They even deliver a Java VM with their weird mionet service:
1 2 3 4 |
|
Since we’re pretty good on available RAM, there is a bunch of fun stuff we can do (cough)