Why Driving Sucks

I could write a whole lot more about my job at the end of my first week, but I have more interest in talking about what happens before and after that work.

I have time-shifted, so I drive 6:30am – 7:30am and then 4:00pm – 5:00pm.
This is as close as I think I’ll get to the optimistic Google estimate of 53 minutes.
And that’s okay.

For the past eternity, my 5-10 minute commute exposes me to a bad driver or two every once in a while. With a daily 60 minute commute each way, every day is my “lucky” day. And I wanted to just record some of these blessings so I do not forget when the time comes to gripe about occasional public-transport mishaps.

Ending Lanes – there are a couple of places on my commute where 2 lanes merge into 1, with the left lane disappearing. Most drivers are perfectly polite and do not push in all the way at the end of the merging lane. Sadly, when they do, they merge in as little distance as possible, which usually encourages the small minority to overtake in the left lane… and push in at the very front, which then slows down the right lane even more, encouraging even more assh*les to push in front. Every once in a while you’ll even have someone ducking from the right lane into the left, push to the front and re-merge… because… entitlement.

This is actually the easiest to fix, and when I find myself in the left lane, I start indicating to merge early and when a space opens up, I move over half-way to claim the spot while keeping the left lane blocked. If this feels awkward, indicating and just keeping pace with the open space will work too. This usually makes both lanes flow better because now there aren’t any pushing-in cars causing confusion and uncertainty to the drivers at the end of the merge.

Overtaking Lanes – there is a long windy single-lane stretch in my commute, which occasionally widens to 2 lanes for a stretch to allow overtaking before merging back together. It is inevitable on the single-lane portions to get stuck behind a car going below the speed limit. On a 100km/h stretch there’ll be a car doing 90km/h. I wait patiently. Then the overtaking lane comes. I get into the second lane and speed up to 105km/h to get past quickly… and now suddenly the granny turns into Taz, going 108km/h and pulling away from me!?

Theoretically this can be overcome by speeding up till you inevitably go faster, but I don’t really want to see how far that game of chicken would take me. I do not know why people do this. It is anti-social… if you know the car behind you for the last 5km clearly wanted to go faster than you are going, can you not hold back when the overtaking lane comes around? Heck, slow down to 80km/h briefly to make it easier, and then go back to 90km/h; everyone’s happy!

Hanging Right – this is a variant of the last one… most of the way to work doesn’t exceed 2 lanes. The slow traffic is on the left. The fast traffic is on the right. Everyone thinks they are fast traffic. They want to go faster than the slow car they are behind. 85km/h on a 100km/h stretch!? No way! So, they pull in front of me to overtake… at 90km/h… for ki-lo-me-tres.

When I notice a fast driver approaching behind me, I find a way to get back into the left lane, even if I still want to get back in the right lane right afterwards to keep overtaking myself. Even if the car coming up is doing an illegal 120km/h, because I’m not the Police, and I’m not here to stop them from doing anything wrong. It’s usually best to have extreme speeders and Tetris drivers as far away as possible anyway.

Anyway,…
… Future-Jerry…
… That train you are hating so much right now, is really not so bad…
… It is usually moving. It isn’t beholden to the whims of other traffic…
… It may be a bit full, but you can read a book and be blissfully ignorant of those few idiots on the road…

Day 339 – How To: Escape the Box

27 – 100 Online Brainstorming Tools to Help You Think Outside the Box

You have to be right with being wrong. If you attach too much value to never being wrong, you limit your ability to unexpectedly be right. Thinking outside the box (even if ultimately you have to act inside of it) requires letting go of your filters while you try to come up with new ideas.

And we all carry so many filters with us…
Continue reading

Day 320 – Ode To OneNote

46 – 100+ Absolutely Essential Windows Apps

I grant there are many fine examples of great apps on that list.
The finest however, isn’t.

Microsoft OneNote is largely unknown, and often dismissed out-of-hand because “Microsoft“. And granted, at first it may seem on overly simple app that has already been done far better by third parties. But first glances are deceptive.
Continue reading

Day 299 – Greatness: A Guide

67 – Anon’s 100 tips to greatness

4. Get a library card.

I suspect there is more to it than that exactly.
I have spent a good 5 minutes staring at my screen trying to figure out what the angle on this one is.

Maybe this is like a secret handshake. I get the library card, and as they hand it over they say something in a significant tone; “The Croissants Were Hot This Morning”, and then I’m expected to say “I Always Douse Them In Monkey Faeces”, and they show me into the back room where they keep the Real Books that nobody else ever gets to see.

Or maybe it is really just meant as an encouragement to just read more.
But that’d be lame for a list like this.

10. Drink your coffee black.

I will never be great.
Also, this is on the list twice, so I may actually be forever un-great now.

A coffee without frothed milk in it is just not really a proper beverage. And I now have to raise serious doubts about the sanity of the person or persons that assembled this list. How could… you know it just… just no.

No.

12. Read more, especially things you disagree with.

Well, the budget is coming up, so I’m kinda golden on that one for the next few weeks. Although I had kinda hoped to interpret it as a piece of comedy performance art for the sake of my sanity.

Luckily there is an endless supply of blogs that write nothing but things I disagree with.

I do take the point that I probably should read a few more of them though.
For a while at least.

16. Find things that inspire you and pursue them, even if there’s no money in it.

This blog is it for now. I know I have had moments of struggle to keep motivated, although there is something soothing about forcing myself to write something every day.

A few of the most inspired days were the ones where I really had no idea what I was going to do. I have 66 chances of forced greatness left, and then I’ll have to be all growed-up and find my muse and motivation outside my self-imposed constraint for the past 10 months.

22. Learn a new language.

I think I may honour this one by learning a fictitious language to help with item 53 below.

44. Get a deck of Oblique Strategies cards. Use them.

I had come across Oblique Strategies once before. Buying a deck of real cards seems a bit archaic, so I might see if there is an app for my phone. There is a website that doles out a “card” on demand.

The idea is that if you’re stuck behind writers block, or lack for inspiration that you pull out a card at random and apply the strategy presented to find a new way out. Or perhaps it can also be used to add a twist when you aren’t actually blocked in some way.

It’s an interesting idea I’ll explore later.

48. Learn to enjoy hunger.

Ah, the trick to losing weight.
Push through the fear and discomfort of my body telling me that it wants food.

I’ve mastered this one.

But I often ignore it as well.
When I’m in Melbourne it’s hard not to enjoy the food on offer. When we have Wednesdays With Friends it is hard not to just keep eating the cheese and dips in front of me. Some days were just not meant for dieting.

49. Make everything either shorter, or longer, than it needs to be.

Shorter is my stretch goal.

53. Get a tattoo. Don’t worry about regret.

Working on it.
I am working on an idea in Qenya written in Tengwar, but I’ll first have to learn the language and then adjust the execution to the available vocabulary. It’s comfortably resting in the back of my head until the right phrase presents itself. No rush.

59. Walk more.

Yes, I should get back in that.
I let it slide a bit.

69. Say no to projects you don’t care about.

That’s all good-and-well, but it doesn’t help me whittle down the endless list of projects that I *do* care about. The logical thing would be to make a ranked list, but I’m worried that as soon as I rank all the ideas and inevitably start work on the highest ranked project that the siren call of the rest will distract me and pull me away.

Is there a solution for that?

81. Dress like a cooler version of yourself.

Even cooler? Impossible!
(I’m going to do some research, because this is now another Project I Care About)

83. Add “adventurer” to your Twitter bio. Then, become one.

Begun.

87. Actually write on your blog. Nobody cares if it’s hard.

HAHAHAHAHAH.
HAHAHAHAHAHAHAH.

Seriously?

I eat blogging for breakfast.

I cannot believe it’s been almost 10 months already though. It is a surreal thought that tomorrow I will have 300 days and 300+ posts behind me. I think I should start planning a party for 365.

92. Learn how to speak in public.

This has been on my list for a while. I’m going to have to work out a topic and context. I always thought that at some point I’d try to speak at a tech conference somewhere. And that’s still an option, but I wonder if it might actually end up being something completely unexpected that kicks this off for real.

Or maybe I should just go on and do it.

Day 293 – Quest For Time

73 – 100 Tips to Manage Your Time Better

I am slowly reaching a startling conclusion.

After looking at many lists of 100 items on the internet.
The suspicion is dawning on me.

That some of these lists…


…might be written by amateurs with very little application of thought.

I was hoping to discover the secret to more efficient time management, handed down the ages by an unbroken line of Tibetan monks. I didn’t need to read past item “1. Value your time” to realise I had taken a wrong turn somewhere.

Some days… nay weeks… it feels like there is just not enough time to climb the mountainous demand on it. It feels like the tasks pile up faster than I can ever hope to finish them. And I just need some kind of system to triage the list down to manageable proportions. Ah, screw it; I just want a Silver Bullet already. Anyone got one?

I suspect I really should give GTD a really good work-out. I am using a cobbled-together variant that has been serving me well, but I think I need a stronger dose of the undiluted stuff. I have many many bookmarks on relevant pages, apps and tools. I just need to read them.

I just need to find some more time to learn how to find some more time.
It feels very ironic.

Day 281 – Nature of Programming

85 – “Hello World” in 100 Programming Languages

This is a more technical post than the usual 365 fare.
Apologies to the non-programmers.

On the face of it, programming is about creating programs that do something useful. Turning a problem into a solution. And hopefully a working one at that.

To me, programming is about quite a bit more than that; it’s the act of taking an abstract idea and trying to encode all aspects of that idea into a correctly functioning piece of software. I use the word “trying” with purpose, because expressions in real-world programming languages are all just approximations of this ideal. Real-world programs always have some level of defects and “good enough” about them.

In the first instance I’d always strive for the ideal though.

Programming languages provide a great many tools to express meaning; comments, named variables and methods, automated tests, type systems, code contracts with formal verification.

The strongest expressions of meaning are always preferred; a formally verified code contract beats using parameter types alone. Boxing-in the meaning through parameter types beats well considered names. And even code comments beat constraints inherent in the idea that are left un-expressed altogether.

Every piece of meaning from the original idea that is added to a piece of code improves the chances of it getting implemented and maintained correctly. Additional meaning might have the compiler catch you in a lie before it becomes a bug. Additional meaning might help you remember the nit-picky details of how things hang together when you try to work on a piece of code years after you originally wrote it.

When I start with an idea, I look at it from all the angles. I try to work out what the underlying truths of the idea are. And then I try to find a way to translate all of these truths into pieces of the program.

Code contracts can expose code paths that can lead to null pointers where my feeble brain told me it was impossible for them to appear. Exploiting the type system can let the compiler warn me when I’m about to crash the Mars lander by mixing up my feet and metres. Expressively naming my methods and variables can help me spot where I’ve forgotten to sanitise a user-input.

And the trick is to push the encoding of concepts as far as possible into the strongest encodings the language has available.

Sure, I could make all my variables dynamic, then add unit tests to verify appropriate behaviour by variable type… but why not use a strong type system instead? Dynamic variables should really only be used where there is no alternative; maybe because some aspect of the strong type system is too strong to express the flexibility inherent in an implementation. But to use them routinely and then patch the hole with unit tests shows a very profound misunderstanding of the purpose of the type system.

Sometimes approaches can be combined to make an even stronger encoding of a concept. Just using Hungarian Notation to differentiate sanitised user input from un-sanitised user input is a good start… but adding program-wide automated testing in the build system to verify that variables using the naming convention for sanitised input only are assigned from sanitised input, or from the sanitisation method reinforces the concept in a way that makes it almost part of the language itself. A visible portion of the code that is verified by almost-the-compiler.

And there will be concepts that are hard or impossible to encode to the ultimate degree.

A variable name can indicate that the assigned value should only ever be a prime number… but there is very little that can be done to guarantee this is true, beyond hoping everyone is careful not to break that promise in the code. There is no way to reasonably implement a strongly typed “PrimeNumber” type.

But that doesn’t mean we shouldn’t keep trying.

And sooner or later, the ad-hoc encodings that have broad use and applicability will turn into new programming language paradigms for the next generation of languages. And they will be harder to program in… but only because they won’t allow us to be nearly as imprecise with our “words”.

You can lament the fact that not using dynamic variables means that you need to put in some extra effort… but all I hear is “why can’t you let me have some more hard-to-diagnose bugs?”

Day 266 – 100 Secret Tips that Could Kill You if you Read This Post!

100 – 100 Free Blog Tips and Blog Help Every Blogger Should Read

Today I is learning. Better blogging, here I come! I’m a mere 100 tips away from rolling in my very own pile of blogging-money. Wish me luck!

3. Choose a narrow topic and stay focused on your niche

Am I narrow enough?
If not I can work a little harder at the gym.
Maybe I can focus on just a part of my personality instead if all of myself and my life is too broad. I could dedicate the next 99 posts to just my sense of self-worth.

19. Edit the images on your blog to make them more unique and visually appealing

Easy!

Put A Bird On It!

Put A Bird On It!

Check!

24. Learn the most important unwritten rules of blogging

Clearly this section is not going to be any help with that.
Skipped!

31. Write great blog post titles that people want to click

Well…

…okay, but I’m not sure if that’d be considered false advertising.

41. Follow a blog posting schedule that will help you reach your goals

HAHAHAHAHA
HAHAHAHAHAHAHA

HAHAHAHA

73. Use keywords in your blog posts to get more search traffic

Let’s check out what has gotten caught in the stats-lint-trap over the past year.

Jerryjvl the flying squirrel loves Surfers Paradise by night. The Gold Coast of Australia is the best place at night to check your weight in the morning versus the evening. (ed: Something about tidal forces, maybe?)

Signs of stupid people include inability to talk without flapping your arms around, wouldn’t you agree “the day of the doctor”? I often have dream arguments like that with sally louise hately (how did people find my blog trying to find a pole-dancer!?).

Today was almost a disaster day with gmail things going into spam that are not spam as xkcd has explained. Often the problems will continue without michel’s patisserie. Or otherwise a female armour problem.

I cannot say that I’ve got fitbit flex mildew in the band, but then I wash mine regularly, despite my spotify test account that I set up with non-transitive dice.

Proto ice-cream, jaymes diaz, reflection performance, qnap chromecast, squaffins, games.

Also: viagra*.

So, there!

92. Decide if selling merchandise on your blog is a good fit for you

I really don’t think t-shirts with my face would sell.
Alas.


*not an actual search term that found my blog, but here’s to hoping!

Day 231 – Simplify: Technology

I had already simplified the living-room entertainment set-up late last year with a 7.1 Harman Kardon amp and a consumer BluRay player to replace the Media PC that had done confusing duty for years to the dismay of all visitors that want to casually watch some television.

My aim for this year is further simplification though. I had looked wistfully at the Dell XPS 15 for some time as a replacement for both my Samsung ATIV 700 Touch convertible laptop and my custom PC (Silverstone case, 16GB ram, 240GB SSD, Radeon 7850).

I was hoping for something with more compelling gaming performance to come around… but then I realised that halving the output resolution on the XPS 15 probably gives enough performance for my needs anyway.

Then, when I spotted the bargain in the Dell Outlet Store for 40+% off the full retail price I decided Dell was trying to tell me something. So I gave in. It should arrive by the weekend.

That’ll reduce the number of my computers by 1.

The next and last step of my technology simplification plan involves our trusty QNAP 409 that has done faithful duty for a long time. Sadly its ARM 400Mhz processor is a little underpowered for what I’d like to do with it next. And a number of features in the latest models that I’d like to avail myself of.

As well as, eventually, installing enough space to rip copies of all my media off the discs we bought them on so that we can always play anything we own without having to find the right disc first. Yes, it’s lazy and indulgent. What about it?

I am very strongly leaning towards the QNAP 870 PRO model for the following reasons:

  • 8 bays = up to 28TB RAID 5 storage = enough head-room to keep everything
  • HDMI output with 5.1 sound = direct media playback if needed
  • Personal DropBox-alike system for file replication without using the cloud
  • Automated/scheduled backups of specified Windows folders
  • Add-on packages for Java, Python, MySQL, Git, and various web solutions
  • Virtualisation solution that can run multiple Windows/Linux VMs inside the QNAP

It looks like a capable candidate to quietly serve all our existing IT needs as well as some completely new ones within a convenient 60W profile.