Virginia Traffic for Android – 2.0 Release

This release adds two big new features: ‘My Roads’ and alerts.  My Roads allows you to make a custom region of just the roads you care about, so you can check out the status of your commute without having to skim through every incident in the region.  Alerts run in the background and use the Android notification bar to let you know when there is a problem on a road you care about.

My Roads

To set up the roads that you care about, switch to the My Roads region, where you’ll see a big button inviting you to set your roads.

Click that button (or press the menu button and choose Set My Roads) and you get a list of some major roads to select from.  Click the roads you care about to select them.  If you want a road that isn’t listed, press the Add a Road button at the bottom of each list.  Enter the name of the road and press “Add”.  Note that you’ll usually need a road number for this to work; use whatever gets highlighted as the road name for incidents on that road.  In my case, I commute on Hampton Blvd. in Norfolk, so I’ve entered VA-337.  Tunnel delays also get listed by their road number, so the Midtown Tunnel is US-58, the Downtown Tunnel is I-264, and the HRBT is I-64.

Alerts

If you want to be alerted when there’s a problem on your commute, first set up the roads you care about in your ‘My Roads’ region, then press the menu button and choose Settings.  Check the Enable Background Alerts box; this will make the app download updates in the background and alert you if necessary.  You can change when and how often the app will run in the background, and how you’ll get alerted (light, sound, vibration).

Other changes

The app asks for three new permissions: Vibrate, Get tasks, and Receive Boot Completed.  These are all necessary to make background alerts work correctly.

In the menu, you’ll also notice that you can increase the font size.  There’s also a button there to email me, so if you have any problems or suggestions I’d love to hear about them.

In addition, I’ve made some major changes under-the-hood to how the list of incidents is fetched from the server.  This makes the app faster, more responsive, and less likely to crash.  I’ve added a small advertisement to the bottom of the Incident List screen.  This app incurs some expenses for me; in addition to all of the time I’ve spent developing it, I have to pay for a server to host all of the data that the apps pulls from.  This is just a way for me to try to recoup some expenses.

24 Game Solver

My wife teaches elementary-school math, and I’m somewhat of a math nerd, so the 24 game is right up our alley.  Basically, you’re given four numbers, and you have to find a series of operations that makes 24 from those numbers.  For example, given 1, 2, 3, and 4, you might respond that  1*2*3*4 = 24.  Some sets of numbers are harder than others (much harder).

One day, my wife and her class were having trouble solving a particularly hard set, so she emailed me for help.  It took me a while to find the answer, and all the while I was thinking to myself “Self, I’m a programmer.  Why am I doing this the hard way?”  So now I’ve created the easy (cheater) way.  Go to http://jebware.com/24 input your 4 numbers, and it will tell you how to make 24.

Right now it does addition, subtraction, multiplication, division, and exponentiation.  However, it doesn’t understand the commutative property, so you’ll get a lot of answers that are essentially the same, like (1*2)*(3*4) and (4*3)*(2*1). I wrote it in javascript, and if you want the source or you want to improve on it, I made a repository on GitHub.

On Third-Party Android Markets

I’m not sure what happened in the last two weeks, but I got directly contacted by three different companies.  All three have third-party Android markets, and they wanted me to participate.  That’s all well and good; I have a moderately successful freeware app, so I’m getting used to companies emailing me out of the blue to tell me about their Android-related products.  Two of these companies started with short email pitches of why I should participate, and left the ball in my court to act.  I’m not going to name these companies here, so that their names aren’t associated in any way with what comes next.  When I found some time, I looked at what they had built, read through their developer agreements, and signed up.  Win-win.

Appslib, on the other hand, is wildly unprofessional.  Here’s the first email
Well that’s interesting, I certainly didn’t sign up for any account on my own.  I would have remembered that.  I’ll just ignore them and hope they go away.
Thanks for posting my application?  I didn’t post a thing.  This is getting pretty pushy.
Huh. I’m glad to know my app runs on tablets, even though I didn’t ask for it to be tested.  At least they’re waiting for my confirmation to publish the app.  Let’s just search their listings to be sure. Nope.  They lied again.  They stole my app and published it without my consent.  Well, they have a Twitter account and it’s active, so I’ll tweet at them asking what gives….

Crickets…

No response on the twitters.  I guess they just don’t care.  They’ve already put my app out there, as though I had signed up with them (I didn’t), agreed to their Developer Agreement (I didn’t) or published my app to their market (I didn’t).  With dishonesty like this throughout their business, I’m going to assume that the whole thing is a fraud, and recommend to other developers and to consumers to steer clear of Applib, they’ll probably steal from you, too.

Please let me know if this happened to you, too.  We need to fight back on this.  Publishers can’t just take our hard work and do with it as they please.  It’s theft.  And it’s wrong.

The “November Nor’easter”

That’s what the local news is calling it, at least. I went out yesterday and got some pictures. Keep in mind that I did this about five hours after high tide, so the water had already gone down a little bit from its morning peak.

These folks were trying to tow their minivan out of the water. I took this picture right after their rope snapped.
Police were blocking this street from both directions so that nobody would even try to get through. Which is probably good, because I saw people attempting some pretty stupid things.

Submerged cars. You’ll notice this becomes a theme.

These people were out taking pictures with their dog; I saw one of their pictures later on the local news’ website. I tried taking my dog along for this expedition, but she gave up after two blocks.

This vehicle wasn’t abandoned yet, I think the owner was still sitting in it.

Probably wishing you hadn’t parked your BMW on that particular block.

You want to know what’s sad? So far these pictures aren’t even tidal flooding. They’re just areas that don’t drain.
In the middle of this shot is Smith’s Creek. On the left is a road, Mowbray Arch a.k.a. the Smith’s Creek Annex. This is the only picture in this set with tidal flooding.

Remember that BMW? When I came back by a tow truck was fishing it out. I hear that the waiting list for tow trucks is getting pretty long.

“Neither rain, nor sleet, nor gloom of night”. What you can’t see in these pictures is that it was still raining hard. And the wind was blowing at 50 mph gusts.

Virginia Traffic 1.1.1 Release – Bugfix

Today I’m releasing an update (version 1.1.1) to the Virginia Traffic app which fixes a small bug that had been bothering me for a while. Here’s a quick shot of what the bug looked like before:

As you can see, the incident list had moved up to obscure the dropdown and button at the top. Now here’s what the screen is supposed to look like:
If you’re not an Android developer, thanks for dropping by, and you can stop reading here. The bug is fixed, so please continue to enjoy Virginia Traffic. If you want to know the geeky details, keep going…
I have one big LinearLayout that encompasses the whole screen for the main Activity, and I had previous set the android:clipChildren property to false. Ooops. If you look at the documentation, this means that child objects aren’t being limited to drawing within their bounds. So I had a ListView that was coloring outside the lines, so to speak. Every time I scrolled the ListView, I think it had some trouble syncing up between the exact position of the screen and due to some rendering issue was drawing outside of its boundaries in an attempt to have a smoother draw of the ListView. Setting android:clipChildren to true fixed the problem.