Category Archives: General

Yet another “Books you should read” list

These lists are everywhere, every blogger at some point puts up there list of “must read” because … because they’re important. Some of the best books I’ve read have been off people’s lists. When you look at a few dozen lists, you notice the same books over and over and over…and you realize, “I should read this book!”. If all these people I respect and follow are recommending it, it must be worth reading. So here’s my list, with commentary, hopefully containing some suggestions that you haven’t already read, and enjoy when you do.

  1. Pragmatic Thinking and Learning: Refactor Your Wetware

    This book literally changed the way I think about my day. Lots of examples about how your mind works, tricks to help you let your mind solve problems for you in the background, and why. It generated a lot of interesting discussion at during our companies book club meeting.

  2. The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win
  3. This is probably my favourite book on the list, it describes a fictional company that has horrible internal practices, and one employees attempt to change that. It feels so real, and I can relate so much of the story to places I have worked. It offered some insights into how we can affect change for the better in the companies we work for.

  4. Clean Code: A Handbook of Agile Software Craftsmanship

    A great book that changed how I write software. It really brought refactoring, and proper program structure to the front of my mind. Before reading this book, I didn’t realize how bad a programmer I really was. I got things done…but not as well as I could have.

  5. The Clean Coder: A Code of Conduct for Professional Programmers

    Along the same lines as Clean Code, but this book isn’t about writing code, it’s about how to be a professional in the workplace. How and when to say no. How to estimate, and when not to. It confirmed many of my practices, and caused me to understand better some of the mistakes I’ve made in the past.

  6. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software

    This was another great story, the author’s original intent, was to follow this company as they created a piece of softare and document how great people can write revolutionary software…however, that’s not quite what happened.

  7. Leaders eat Last: Why Some Teams Pull Together and Others Don’t

    This book isn’t about tech at all, it’s about what makes a good leader, and why. It goes into a lot of detail about the chemicals in your brain, when they are released, their short and long term effects, and why we’ve evolved to have them. It generated a LOT of fantastic converstaion in our book club meetings.

  8. The Drunkard’s Walk: How Randomness Rules Our Lives

    If you’re interested in math, and statistics, you’ll enjoy this book. Great stories and examples helping to understand how randomness works. And some history about statistics, and how we generally misinterpret so much of what we see because we don’t understand how to properly calculate the probability of something happening. The math is also, very easy to follow, it’s not big complicated formulas.

Now for a couple books that have nothing to do with IT, they are just so great that you should read them. They should appeal to the same crowd as the above books, as everyone I know who has read them, has LOVED them.

  • The Martian: A Novel

    I read this book in the span of 24 hours, I started one evening, was done the next. It’s gripping. The first lines of the book are “I’m pretty much fucked. That’s my considered opinion. Fucked.” It’s written as a journal, as a person keeps a log about being stranded on Mars. It’s about the struggle to stay alive after being left for dead when a sandstorm forces the rest of the crew to evacuate.

  • Ready Player One: A Novel

    If you grew up in the 80’s this is a must read. It’s page after page of 80’s movie, video game, and television references. Every paragraph takes you back to your childhood (or whenever you were alive in the 80s). And it’s all wrapped in a great story set in the real world in 2044 after a global energy crisis; and in a virtual world, the OASIS. Once I picked up this book, I could barely put it down, I think I’ve only read The Martian faster.

I hope you read or have read these books and enjoy them as much as I have. Let me know in the comments, if you have recommendations for further reading, I’d love to hear them! There’s so much out there it’s hard to find quality.

Have a great day!

Better technology doesn’t matter if the experience is worse.

I’ve been complaining a lot on Twitter today about the cable company.

About ten years ago I had cable, it was SD, but I could push it to all the TVs in my house. Then I discovered home brew pvr systems like MythTV, and was able to record all my shows, watch live tv, stream music, from any device in the house. And I had a guide I could access from the web, and pick, and reshchedule my recordings, all was well.

Then the cable companies started switching to digital. Which meant you needed a digital box. This is where it started going down hill. The technology was better, I got HD, and the ability to pause and record with the Cable Company’s PVR. But it was limited to two tuners. And they lock down firewire and any other useful way to get content off the device in HD, aside from the HDMI cable.

So for the past several years I have been tied to one TV. I can watch BluRays in other rooms. But for regular TV viewing the other TVs collect dust. I don’t want to spend money on more hardware, so I can PVR shows around the house. Then try and figure out which TV the show is recorded on, and be tethered to watch it there. And whenever a Hockey game comes on, I end up having to sacrifice a recording or two, because again, I’m limited in the number of shows I can tune into at a time. And does the Cable Companies box have nice features that let you know, hey, we’re not recording Breaking Bad at 8 because you want to watch this show live, but we see it’s on again at 2am, we’ll just record it then. My old setup did. It was FANTASTIC at rescheduling recordings so conflicts were eliminated.

The ideal solution would be to have the Cable Companies unlock the boxes so I can use a computer to push the videos to other TVs in the house. But that will never happen. So why waste the words… then they came out with their networked pvrs, allowing you to record more shows (3-6) at a time, watch anywhere in the house (that you buy another box for) and I’m thinking, great! Sign me up. Take my money. It’s not the best solution, but it’s pretty good, almost as good an experience as I had 10 years ago.

…except, despite the shows already being IN MY HOUSE, I can’t get this system without network upgrades in my area??? What…that makes no sense. The show is already saved on a hard drive IN MY HOUSE, what do the lines outside matter? Is it so I can record six shows at a time…fine…leave that ability until you upgrade the lines outside…but wait, that doesn’t make sense either, as if I buy more boxes, I can record more anyhow. So it’s not a bandwidth limitation. It’s a bad business decision. Rather than getting hardware that can share what we already have coming to the house, they picked something that while potentially superior, is limited. Thus limiting subscribers and pushing people away, giving them a poorer experience.

So, before I found out I couldn’t get this new system where I live (so remote, 20k from Winnipeg in a town with 5000 people that have money…), anyhow, before I found out, I spent 40 minutes on hold last week, and another 90 minutes this week (during which I contacted the on Twitter) before giving up and leaving a DM with my number to call me. Which begs the questions; Why doesn’t your hold system hint at the wait time? And why do I need to resort to calling out a company on Social Media to get a response? Anyhow, the DMs consisting of excuses for the delay answering the phones. Apparently there is an internet service outage they are trying to fix, so customers are calling in and complaining. Which, in my mind, isn’t an excuse, it’s a cause of another failure. Why doesn’t your network have better failover handling and redundancy? And it also doesn’t explain why I waited 40 minutes last week.

Anyhow, the offer I’ve been given is a second pvr box, so I can watch tv on two televisions. However, the experience is still awful. As outlined above, I have to decide where to record shows so that I can watch them where I want to, since I can’t change it. And if two things are recording on a tv where I want to watch live tv…to bad. I have to relocate, or go to the other tv, duplicate a recording there, and stop the one in the other room. Meaning, I now have one recording, split into pieces in different rooms. That will sure be an enjoyable experience when half way through watching the show I have to get up and go to another room to finish watching it.

Ten years, and the experience gets worse every year. Netflix is looking promising…if only I wasn’t tied to the cable company for my internet…

Netflix (or something similar) is going to dominate TV in the near future. Networks are fighting what could be their greatest ally, so they can continue to fight their current foe, limited time in prime time. You only have a few hours each night… which is funny, since very few people watch TV live anymore. I may watch the same day it’s recorded, but the only thing I watch live is sports.

Netflix is the ultimate PVR, with so many advantages it’s mind boggling; it’s cheaper; there’s no lock in to their hardware; I don’t need to setup recording schedules, the content is just there when I want it; no need to worry about storage space; I can watch it on my phone, computer, tablet, etc. It’s only drawbacks are that it doesn’t have new shows fast enough, and it doesn’t do live events…yet. When that day comes, it, or something similar wins. Networks can try and make their own Netflix clones, but they’re all tied to a network. People aren’t going to spend money with dozens of different companies and run a bunch of different applications to get their television. They want one bill, one service.

I may stick with cable (and Netflix) for a little while longer, but it won’t be too much longer. I can get hockey through a Centre Ice package that will be cheaper than cable…and that solves one of my concerns. Now to find a permanent solution to the other.

ps. This was written in one pass, no editing, so I’m sure it’s random and has no structure…sorry.

20 GOTO 10

I was hooked.

10 PRINT "HELLO CAFFGEEK! "
20 GOTO 10

I don’t remember how young I was (under five), but the first time I saw that repeated over and over on the screen, with my name, and nobody repeatedly typing it, a seed was planted. I spent countless hours typing in programs from magazines, and computer books. And countless more hounding my parents to type it for me as they were faster. Games like Face Painter only watered that seed. But it was dormant for a while.

Atari 800XL
Atari 800XL

After the Atari 800XL was no longer a viable computer and had been packed away, I made do without a computer for many years. Unimaginable now. Pretty common in the 80’s. Then, when I was in junior high, fertilizer was added. My parents were able to afford a 286 computer. My dad liked to take things apart and see how they work. So learning hardware and how to upgrade them quickly followed. I built my own computer from spare parts. Shortly after a friend introduced me to Turbo Pascal.
Turbo Pascal
Turbo Pascal 5.0

I spent time writing all kinds of things, little paint programs. Terrain tile models for games that I never built. Small little games, reminiscent of those I played on the Atari as a kid. Even writing my own 3d routines to draw, rotate, and shade objects. Some of these I recently uncovered on some 3.5″ diskettes. Maybe I’ll find a drive and see if I can view my first forays into programming (scary they may be). From then on, there was little doubt about what I would eventually do for a living. And here I am today. Still playing. Still learning. Still amazed.

Where were you? What’s your story?

Secure Passwords…are they really?

Why do so many sites require me to enter a weak password? They claim to require a strong password, they also will show a handy dandy password strength meter. However, most of the time they restrict how strong my password can actually be.

They limit the number of characters to 8 – 15. I want a longer password!
They limit the special characters I can use. Why can I use an exclamation point, but not an ampersand?

http://xkcd.com/936/
correct horse battery staple

It’s a password, nothing should be off limits! If I want my password to be “clip clop coconut horse riding swallows” I should be able to use it, it’s simple to remember, and hard to guess.

This is more secure and easier to remember than a password like ‘c0rnf1@k3s’. But on most sites, it would be rejected because it’s just alphabetic.

Let’s check some stats at https://www.grc.com/haystack.htm

The password “c0rnf1@k3s” would take 9.47 months at 100,000,000,000 guesses/second (One Hundred Billion).
The password “clip clop coconut horse riding swallows” which only requires I remember 6 words would take 3.74 trillion trillion trillion trillion centuries.

Now, this isn’t actually quite that strong, as I’ve effectively just replaced letters with words. So, when doing a brute force attack, the attacker would know that, they just need to combine words, instead of letters to generate passwords. That is, if everyone were to switch to this technique, and the attacker included this password scheme. And since this password is only 6 words long it’s pretty weak…right? Well, according to here, there are between 170,000 and 750,000 depending on your definition of a word. Since in the case of passwords the word dog, and dogs are completely different, we could safely say, there are 750,000 one word passwords. I’m using six in a nonsensical order. Which means if I did my math correctly there are about 750,000^6 = 1.77978515625e35 different possibly 6 word passwords. At one hundred billion guesses per second it would still take 5.63992e14 centuries to go through all the possibly combinations, that’s no 3.74 trillion trillion trillion trillion centuries, but it’s much longer than I plan to live. Maybe the attacker gets lucky and it’s the first guess…maybe it’s the last. Odds are it’s somewhere in the middle. But, I can remember it. And it’s secure.

So, if you’re limiting password length or the number of characters, please, do me a favour and stop…I want to use my longer, far more secure password.

Thanks.

I’m an Ass because I give a Shit

Developers get a bad wrap for being difficult to work with. We are often percieved as assholes. We don’t mean it, it’s not our fault, it’s how we are wired. We spend our working lives looking for flaws. It’s the only way to build good software. We weren’t always this way. When we started, we were optimistic. We thought everyone was competent. Why would anyone put letters in a field meant to show the price of a product? Why would anyone enter a negative age? We didn’t check for these things. We got burned. There is always someone who enters a value, or uses a program in a way it wasn’t meant to. So, we spent a lot of time writing code that validated input. We thought it was bullet proof. We prevented the user from entering garbage data. We underestimated people’s stupidity. Which reminds of us the “God builds a better idiot” joke. Over time, our applications and programs became more complex. And with more complex programs, came more complex problems. Not only are we having to protect against bad input, but now we have to ensure the application works if someone unplugs the network cable, or the computer crashes, etc. The initial problem is a simple solution, but keeping that solution working in all the uncertainty is the new problem.

What this translates into, is a hyper-critical outlook on EVERYTHING. We choose our words carefully. We point out flaws not just in the systems we work on, but in everything we see. I do this way to much. I’m looking at a small 4″ fan on my desk. Now, first, I find it silly it even needs a sticker on it that shows you’re not to stick your finger into the blades. However, there are two major flaws with this sticker. First, the grate has openings approx 4 millimeters wide. The only people with fingers that tiny are newborns. Now, there are two more issues with that. First, they wouldn’t understand the picture showing the warning. And second, while their fingers would be small enough, they wouldn’t reach the blade. So the picture should really be showing you not shoving something else in, not showing a finger fitting through the grate. The second, and more important flaw to this warning is that the sticker is on the fan blade. The only time you can read it is when the blade poses no risk! When the fan is on, the sticker is spinning and impossible to discern as it rotates at several thousand rpm. It doesn’t bother me that someone did this. It bothers me that several people saw this after the fact, and didn’t see the issues…they left it. So many projects and products suffer from this.

My last job frustrated me to no end. There were literally hundreds of little things that on their own were absolutely insignificant on their own. But they added up. When I decided to leave it was very difficult to explain that there was no one cause, and thus, no way they could actually keep me there. I’d be told to relax, that those things weren’t important, but they were. We wasted so much time and money on these little things, that I could see the huge potential we had wasted because of all these little things that were out of my control. I was an Ass because I gave a Shit. Had I went numb, and not cared, those things wouldn’t bother me. But I cared about what I did. I wanted to do a good job. I strive for perfection and have high standards for myself.

I don’t expect perfection from everyone, but I do expect you to want to improve. I do expect you to care about what you do. It’s not coming from a place of negativity, which it’s often misinterpreted as. It’s coming from optimism. I see the potential, and I want to push people towards it. I want to realize the potential I see. Is that to much to ask? Does that make me an Ass? If so, I’ll wear the label with prid. I’m an Ass.

Change and working conditions.

It’s funny what can affect our ability to be productive. Well, actually it’s not funny. It’s serious. And it’s been studied to death. But it’s funny when you apply some of the changes and realize how drastically a simple change can affect your mood and productivity.

I, as has been mentioned before, recently changed jobs. My current employer is a consulting firm. The offices are nice. While it’s an open area, we’re rarely working at the offices. We’re typically on site. Each site has a different setup. Currently, I’m in a room, slightly smaller than it should be, but with four other devs, all working on the same things. At times it gets a little noisy, but for the most part, it’s quiet. There are no phones ringing. Rarely spontaneous meetings breaking everyones conversation. And we have a window.

That light does wonders for morale. At least for me, since I was so used to having no sunlight for 8 hours a day, and in the winter, when it’s only just starting to get light out when you walk into the building for your shift, and it’s starting to get dark when you leave, having no light during the day is an absolute energy suck. I feel so much better working in natural light.

This weekend I cleaned my home office. It was a mess. It was the room that everything was being dumped in. I should have taken a before picture. But now, after cleaning up and disposing of a lot of the clutter. As well as putting up shelves, and cleaning off the desk, I find I want to use my computer and work on projects at home again.

My last job was so negative that I didn’t even want to touch a computer when I got home. I had lost my drive to learn and try new things. It’s a great feeling when you once again love what you do, and where you work.

I have some big ideas for projects. And I can’t wait to turn them into reality.

The Real World

Typically that phrase is a negative thing. We use it when talking to high school students. How they need to prepare for the real world, where they won’t be coddled and protected by their parents.

However, sometimes we end up in a place that’s the opposite. And the “real world” is a good wonderful place.

I am now employed at a great company. It’s only been a week, but so far so good. It’s a strange feeling not worrying all day about every little thing you do.

Having blockages removed quickly and efficiently.

Being able to work.

I’m once again able to enjoy what I do, and have started a few side projects.

It’s great being in the Real World.

Eliminating Waste

Like too many projects we start in life, this site became forgotten. Barely started, and with good intentions, I just didn’t find the time to follow through. I have many ideas in my head for projects I want to start…but sadly, that’s how I think of them. As things I want to start. Not as things I want to finish.

A recent talk by Joel Semeniuk at the Prairie Developer Conference in Winnipeg, MB got me thinking about waste. The talk at the time was about Kanban, and how anything started, and not finished, is waste. Unmerged branches, projects not yet deployed, or anything else that’s not “Done. Done.”

I remembered this site. This thing I started a couple years ago. And I realized…it was waste. It’s unfinished. I read and enjoy great blogs by other developers. They help provide insight, solutions, and sometimes a spark. A spark that puts you in the zone. Even if only for a little while, but it motivates you. It makes you strive for perfection.

Which ties into reviews. I, like most developers, find reviews pointless. Along with timesheets, but that’s another rant. This review, in my mind was a giant waste of time. It wasn’t long, it was basically a quick survey where you evaluate yourself. Then later you sit with your boss and go over it. However, what I consider “meets job expectations” and what my boss may consider “meets job expectations” are likely different. And it has been pointed out before that they are, that I was “above average” or “exceeding”. But how is this helping either of us? Should I do less? No…that’s probably not the point. Does it actually help me become better? No. I strive to improve on my own. And if you’re in IT and not striving to learn and improve, you’re in the wrong industry. So if our views were so different, and he already knew how he would rank my work, why were we going through exercise? I really don’t know. Seems like a lot of waste when you calculate the number of employees doing this, and their bosses time, and what could be getting done during it. It seems we only do these because HR says we should. Because they help some employees…so it must help everyone right? Or at the very least, not hurt. All wasted time and effort for little to no business value. At best it breaks even, more thank likely it’s a cost to perform and store these that never provides any overall benefit to the company.

Ultimately, I’m hoping in the next couple days the team and I get a Kanban board up on the wall, with WIP limits (that’s going to be a hard sell) and that we use and enforce the proper flow of tasks through it. I guess we’ll see how it goes.

To sum up, the point of this 500 word rant is that we need to eliminate waste, even if it’s one small step at a time. And I’m going to try and turn this waste of a site into something that can provide me value. Somewhere that I can reflect, and hopefully as a tool to better myself.