Find the time of your next bus, fast! – BusTimes.ca
BusTimes.ca is a Web-based application for mobile devices, designed to help answer the question of “When is the next bus?”
Find the time of your next bus, fast! – BusTimes.ca
BusTimes.ca is a Web-based application for mobile devices, designed to help answer the question of “When is the next bus?”
The Nokia Lumia 900 is a great looking phone, running what I believe to be a great operating system. It was named “Best of CES” by CNET. It is powered by the latest LTE technology. But I won’t be getting it. If you’re in Canada, I recommend you don’t either.
Not that it’s not a great phone. On paper, the phone is actually pretty amazing, and I’d be happy to have one. But instead of being an example of what is right in the Windows Phone, it has become a symbol for what is wrong with telecommunications in Canada.
Before I get into all of that, let me step back a bit, and catch you up to this point. I’ve been an iPhone user for years. I ordered my first iPhone, the iPhone 3G, the first week that it became available in Canada. If I recall correctly, it was actually on the day after it was released (I didn’t get it the first day because I was negotiating with Rogers for a better plan). I was really happy with my iPhone 3G, up until iOS 4.
Like many 3G owners, as soon as I installed iOS 4, the whole experience went sideways. Things that were really responsive before, and could be completed quickly, were suddenly taking 20 seconds to respond, to keyboard press. This included things like Google Maps, Email, and many others.
I quickly moved up to the iPhone 4, and these problems quickly went away. But something didn’t feel right. But I went ahead using my phone as if nothing was wrong.
This year, while talking with one of the post-docs in my research group, I had the sudden epiphany. I was no longer in love with my phone. Somewhere along the way, we had drifted apart. The shiny button like icons that had once thrilled me, no longer brought me joy. Suddenly I realized, I had regressed to my childhood. I had once loved my phone so much, now every time I looked at it, all I could think about was Windows 3.1, with its folders and icons.
iOS had stagnated. The once innovative young company that was happy to break the rules, no longer tried, because the rules were made by it. Instead of releasing revolutionary new systems that would change their users lives, they were happy to release evolutionary new features, that would improve them, slightly, at a price.
I tried everything. I used all of the iOS 5 betas, hoping that I could rekindle the flame, but with big features like Notification center, and iMessage, it was hopeless. I new what had to be done.
After talking with my colleagues, and sleeping on it, many nights, I knew in my heart I needed something new. Android wouldn’t do it. Android at this point was essentially an open copy of iOS. The only one out there that seemed to be innovating was Microsoft.
Windows Phone 7 from Microsoft was a big rethink of what mobile should be. Instead of small icons with little number notifications, it used tiles, that could actually show more meaningful information. I knew that this was something I would have to try. It was very different of course, so with such a big change, a big risk would be involved. The best way to know for sure would be to try it. But nobody I knew had it. Well, not nobody, but no one near by. I had a few friends that had them, but none where I could really get my hands on it.
This would be something that people would have to get their hands on I thought to myself. If I had one, and liked it, I knew I would convert many people, but I’d have to get one first.
As a side note here, I like to create things. This is important to note at this point because as a friend of mine pointed out, there was a way I could get a Windows Phone for free. Well, not exactly free, but while doing something I loved doing anyway, creating things.
Microsoft knew that one of the biggest weaknesses in its platform was the lack of apps. Apple had millions, and the Windows Phone Marketplace, well, not so much (don’t worry though, all the big ones are there).
To entice developers to develop for the Windows Phone, they started a program to give them incentives. They called it the Developer Movement (Canada only). For each of your first two apps you made, you’d get a reward. As pointed out by a friend of mine, there, next to app number two, was my new phone.
So I started learning how to develop for Windows Phone. I hadn’t worked with C# in a while, but I was eager to learn again. From signing up for the program, learning the frameworks, to finishing two apps, all done in under 2 months. (If you’re interested, you can check out my apps at www.laudable.net).
So now you’re pretty much caught up. My second app was accepted April 6th (Good Friday. I was surprised to see my app get approved on a holiday). So now I can choose my reward. A brand new Windows phone. Or a $500 American Express gift card.
I knew, I threw that second possibility in there kind of late. The Windows Phone that the program had up for grabs was a Lumia 800, but one of my friends pointed out another possibility. The Lumia 800 was great, but I could take the gift card of $500, and buy the brand new Lumia 900. The 900 had a few features the 800 didn’t. Front facing camera. Access to the brand new, high speed LTE network. The review were pretty awesome. These all sounded very cool, but could I get it for $500? Apparently, yes I could. The word was, it would be available for $450, no contract.
Well, at least in the States it would be $450. But this is the no contract price. With a Canadian dollar essentially floating on parity with the American and no tariffs on cellphones, there would be little reason it shouldn’t be the same, right?
There is only one company in Canada that will be selling the Nokia Lumia 900, Rogers Communications. Rogers is one of, if not the largest, Wireless communications company in Canada. It has one of the largest numbers of subscribers in the market, and it knows how to use that to it’s advantage, and it does.
But the prices got leaked. No big surprise, the largest wireless company in Canada was not trying to compete with it’s American counterpart. Where AT&T was offering the Lumia 900 for $99 on a Two year contract and $450 with no commitment, Rogers would be offering the same device for $99 on a Three year contract, or $529.99. Why the higher price? Because they can, who else are you going to buy from.
So where does that leave me? Well, I had a decision to make.
I could pony up the extra cash ($29.99 extra for the phone + $63.60 in taxes, and that’s still not unlocked)…
Or I could just take the Lumia 800 from the Developer Movement, not have to deal with the extra hassle, and make a small stand against the greed in the Canadian wireless system.
I think I know which way I’ll be going.
I’ve recently been working on setting up a rails app for a site I’m building for one of my side projects. While I’ve mostly been working on this in my spare time, I decided that it would be important, to one day be able to deploy it to a larger audience (like friends and family). After trying to get rails set up on my old hosting, and being told that Rails 3 wasn’t supported. I recently moved to Vexxhost. Two things enticed me: 1) they’re Canadian; 2) Their hosting is bloody cheap.
So after moving my PHP sites over, I got to work on deploying my currently simple rails app. And that’s when I hit a problem.
ExecJS::RuntimeError in Home#index
Showing /home/jrstarke/apps/___/releases/20120128224905/app/views/layouts/application.html.erb where line #6 raised:
FATAL ERROR: v8::Context::New() V8 is no longer usable (in /home/jrstarke/apps/___/releases/20120128224905/app/assets/javascripts/charities.js.coffee)
Now if you’re finding yourself in a similar situation, Stop. Take a breath. You’re not very far.
The reason you are finding this is because Rails is clever. The .erb and .js.coffee files in application are compiled, compressed, and this all happens dynamically. They call this the ‘Asset Pipeline’.
The problem is that if you’re shared hosting is anything like Vexxhost (and I imagine most that use cpanel are), their servers in their shared hosting are based on efficiency. This compiling of assets dynamically takes time and resources, and really, once you’d deployed it to the server, they don’t usually change much (with the exception of a new version, but then that won’t change much either until the next version).
It turns out that the solution isn’t all that hard, in fact, most of it I found through a great article on the Ruby on Rails site about The Asset Pipeline – In Production Environments.
The trick is that you essentially need to turn off the asset pipeline. During the dynamic compilation on the fly of assets into a more static compilation. This will still compile your multiple stylesheets and javascript into single files though.
Without further ado, to the solution.
First you need to go into your config/application.rb and disable the application pipeline. You will look for the following line:
config.assets.enabled = true
and turn it to false
config.assets.enabled = false
Update (thanks Hien): If that doesn’t solve it: go to your Gemfile and comment out the following 3 lines:
gem 'sass-rails', " ~> 3.1.1"
gem 'coffee-rails', "~> 3.1.1"
gem 'uglifier'
These are all the changes we need to make, but before we can deploy the application, we need to compile the assets, ourselves. This is where you will use the following line.
bundle exec rake assets:precompile
At this point use whatever tool you normally use to deploy your app (in my case, Capistrano). If you’re using Capistrano, don’t forget to commit the new assets that would have just been created in your public/assets folder.
Next you’ll need to log into your cpanel, or whatever actually controls your app, stop and restart it. Even if your deploy tool (like Capistrano) just said it restarted your app, don’t believe it, just restart it. This part caught me for a few hours trying to fix this bug. Even though Capistrano said it restarted the app, it still seemed to hold onto the old gems (sass and coffee) until I actually restarted.
With any luck, try your app now, and if your system is anything like mine, it will have worked.

I recently I’ve been having some problems with my MacBook Pro. At first, I would seem to get disconnected from the internet randomly. After a few weeks, I finally figured out what the pattern was to the problem.
One morning sat down on the couch, opened my MacBook, and as was becoming normal, I was unable to connect to the internet. The AirPort icon on the menu bar was fully black (meaning that the signal was good).
So I went into the browser and tried to to the router address. To my surprise, I could fully connect to router. I mean fully. I could log in. I could change the settings. I could ping different websites. It all worked flawlessly. But as soon as I went back to my browser and attempted to connect to a website, any browser, it would complain that I wasn’t connected to the internet.
I would turn off the Wi-Fi a few times, and eventually it would connect fully. So then an idea came to me: Maybe it was related to the fact that I just woke it from sleep. I thought back. Every time I could remember, I had just opened the computer, and it would have difficulty connecting.
So I tried it. I made sure I could access different websites. All signs were a go. Then I closed the lid, and waited for the status light to start flashing. After it did, I would wait a few seconds, and then open the lid. I logged in, opened Chrome, and tried gmail. Gmail is currently unavailable it would tell me. So I opened Safari, and tried again. Same story. After going to the AirPort icon turning it off and on a few times, it came back. I decided to try it again. Sure enough same story. So I tried it a few more times.
After having successfully reproduced this exact approach 6 times, I decided it was time to call Apple. I talked to a rep one day, who walked me through a few steps, that failed to get any results, and before we could go through everything, I had to leave for a meeting. I called back a few days later, and got a Wonderful rep. named Ryan. After 17 minutes on the phone, my problem was solved. I was ecstatic.
So the solution to the problem was actually pretty simple. I post it here, so that it might help others (or me if the problem recurs sometime). Remember to back up before hand, as it is possible that you might lose something.
I would also recommend storing your Wi-Fi password on your computer (especially if your password is as complex as mine is).
Here’s what worked for me:
With any luck your computer will now no longer have issues with your wireless network. This worked perfectly with my D-Link DIR-655 router, on which I could reproduce the wireless network issues flawlessly. Since I performed the steps above, my wireless connection has worked flawlessly.
Update: If this has worked successfully for you, you can go ahead and delete the SystemConfiguration folder that you copied to your desktop. It was designed as a backup, and is no longer needed.
I’m Looking for advice as to what the best software is for creating online communities.
I’m currently trying to set up a Graduate Students’ Association in my Computer Science department at the University of Victoria.
After talking to a number of Graduate students in my department about what they think would be useful to them, I received a number of great suggestions. Based on the suggestions, I came up with 3 features that I think would be useful:
There are many possible choices, but it all seems to come down to trade-offs.
There are two major options for hosting the community. You can either choose to use an As a Service model, where someone else manages the infrastructure, or the Host your own, where you take the software and run it on an infrastructure you control.
The obvious trade off here is Control for maintenance and cost. By going with an as a service, you will decrease costs, and maintenance, but you also decrease your control. By hosting your own, you increase the three.
In the maintenance category, I would like to reduce as much maintenance as possible, as this will likely be run by busy grad students. At the same time though, if we lose all control, we are completely at the liberty of the service to decide what we can do, and how long we can keep it up.
Again, it is possible that we can use a number of different systems (such as a blog system, a forum and a wiki), or we can find a system that does all three.
In this case we have a trade off between consistency and maintenance versus precision. Of course, if you use 3 systems, you have to deal with maintaining 3 systems, and if you have 3 systems, it is unlikely that the three systems can be consistent.
In the precision category though, any one system will likely be good at a small number of features, and will be less good a others. So by going three systems, they’ll likely be better at the particular thing they do.
For this, I’d like to make the ease of use as easy as possible. If it is really hard for the users to go from one aspect to the other, like the discusion forum to the wiki or the blog, they are less likely to do it, unless it is absolutely necessary. If it’s not possible to link to the other systems consistently, this will be particularly hard.
I’ve use WordPress for blogs before, and they work pretty well. I’ve also considered CMS systems like TikiWiki, but it appears to be particularly buggy. I’ve also used Drupal, and it’s particularly bad for maintenance (which makes me die a little inside).
So this is where I look for advice from the community. What software can you recommend?
Are you having some weird networking problems and want to report a bug to Google Chrome? The most helpful thing you can do to speed up the process is get a network log so that the Chromium team can have a better chance at diagnosing the problem.
In this tutorial, we will walk you through how to collect a Chrome Net-Internals log, and a WireShark Capture.
Pre-requisites:
Wireshark is a tool for collecting network traffic. This will allow the Chrome team to get a better idea of what might be causing the network issues.
Before attempting to make a network log, it is important to try to reduce the background noise. Normally our computers have a number of programs running in the background, many of which are connecting to external sources. To give yourself the best chance for success, turn off all unnecessary programs, for the duration of the log. After you finish, feel free to turn everything back on.
To collect your network logs, perform the following steps:
about:net-internals
the Description describing your network interface (It will likely have the growing number next to it). Press the Start button to the right of this connectionYou will now have both a Google Chrome net-internals log, and a wireshark log. Make sure to keep track of where you saved them, and when appropriate, attach them to the bug report.
If you have any questions about this tutorial, please let me know.
Update: After further testing, the issue seems to be with the NSS-SSL library, rather than SPDY, however the steps below will still likely resolve your speed issues.
Update #2: I am no longer having this issue. It appears to be some odd interplay between the NSS-SSL protocol in Chrome/Firefox and the Traffic shaper at my University, that has since been reconfigured. This means that it is now more important than ever that if you’re experiencing this issue, to report it to the Google Chrome team.
Are you trying to connect to your Gmail, and it seems to take forever to connect? What about Google Docs? Google Plus? All of the above? It might not be Chrome that is the problem, but actually Google’s SPDY protocol behind the scenes.
So what is SPDY? It is a protocol that Google uses, where it keeps a single persistent connection to Google for all of your Google Accounts information. This is utilized by a number of Google Services, including Gmail, Google Docs, and most recently Google Plus. When this is working properly, it allows Google to do what Google does best: Speeding up the web. However, when it fails, it will bring down your Google world, in a thunder of Loading icons.
The most important first step is it make sure that the problem is actually Google Chrome. To do this, try a different web browser, such as Internet Explorer if you’re on Windows, or Safari if you’re on a Mac.
If you tried a different web browser and the problem still happens, then it is likely due to a different problem, such as a slow internet connection. If however tried the same thing in a different web browser, and it worked fine, then it is probably Google Chrome.
Google knows about this issue (I know, because helped provide information for one of the bug reports), but so far they haven’t narrowed it down.
If you are finding that you have a problem like this, then it might be useful to provide some details to the Chrome team so that they can hopefully make it better. At this stage, this is optional, but highly encouraged. This will be your best bet at getting any Google Chrome issues resolved though in the long run. If you are willing to collect a log, you can do so by following my tutorial How to collect a Network Log for Google Chrome.
Disclaimer: This fix is only temporary, and your best bet is to comment on the open Google Chrome Issue for this phenomena.
The good news is that there is a solution you can use for the problem (although it is temporary, as I will cover after). This wasn’t discovered by me, but rather one of my colleagues (Christoph Treude). Essentially what you have to do is disable spdy and Chrome’s enhanced SSL, which can be done using the following steps:
...\chrome.exe"
into
...\chrome.exe" --use-spdy=off --use-system-ssl
(note: the command line arguments have to go after the quotation marks)
cd /Applications/Google\ Chrome.app/Contents/MacOS
mv Google\ Chrome Chrome
#!/bin/sh # This will execute your Google Chrome with SPDY disabled, and set it to use your System SSL /Applications/Google\ Chrome.app/Contents/MacOS/Chrome --use-spdy=off --use-system-ssl
pbpaste > Google\ Chrome
chmod +x Google\ Chrome
If you had this problem and this solution worked for you, I would recommend you add your voice to the discussion on the bug, as during my last correspondence, they suggested that this might be a problem localized to my network (which it might, but I suspect it isn’t). This solution is only temporary, as if you end up creating a new shortcut somewhere, or you update Google Chrome, you will likely have to redo the fix, or the problem may come back.
If you found this solution worked for you, but you didn’t collect a log above, perhaps now would be a good time to do so. However, first we will have to disable the fix above (as the problem will not exhibit itself while the fix is in place). Don’t worry, once you have your log, you can easily turn it back on using the steps above.
...\chrome.exe" --use-spdy=off --use-system-ssl
into
...\chrome.exe"
cd /Applications/Google\ Chrome.app/Contents/MacOS
mv Chrome Google\ Chrome
So you’ve decided to help out? I’m glad, this will increase both of our chances at having this resolved. As I mentioned above, you can collect your Network Log by by following my tutorial How to collect a Network Log for Google Chrome.
If you found that this worked for you, you’re not alone, but unfortunately, as I mentioned above, this solution is only temporary, and you will likely need to redo it the next time you update Google Chrome, or change your shortcuts. So perhaps now would be a good time to help Google Chrome find a long term solution. There is already an open issue for Google Chrome about this phenomena, and you can easily submit your information to that issue. If you need help doing so, let me know, but the Network Logs mentioned above would be highly beneficial to this process.
So what do I think would be a better solution? For the most part, the average user doesn’t even know what Google Chrome is doing behind the scenes.
The solution above would work, but it isn’t exactly, user friendly. I suggested that in a case like this, perhaps after a few seconds of attempting to connect with SPDY (Google themselves have suggested that users spend less time at slow pages), and not getting any data (which Will Chan said was the case in my case), maybe it would be a good opportunity to say to the user that it’s failing to connect with one method, and to attempt connecting with another.
In this case, the system could try something like the solution above does, disable spdy and ssl, and try then. Sure it’s not a perfect solution, but unless you have to do something explicitly in Chrome (which few people do), this would probably stop you from Switching to an alternative browser.
So last weekend, I wrote on Google Plus about how I was looking for a new side project. Although I still haven’t decided on one, I did decide that as I find one, it might be fun to document the journey and the lessons learned.
Lesson one: Finding a side project is hard.
You always want to have something that is going to be meaningful, and perhaps even help people (it’s always easy to minimally do something that helps yourself, until you actively try to do this, then it’s next to impossible to notice any problems you are actually finding.
What I’ve figured out so far:
So if anyone else has some ideas, or questions that might help me narrow it down, I’d love the feedback. Comments, or emails are greatly appreciated.
As I mentioned before, I’ll write about the side project as it unfolds, and I’ll tag it as “Side Project” for easy finding.