Self-disciplined Surfing at Work

I found, given recent political developments, that I get tempted to access news sites, social media sites, and other non-work related websites at work more and more often lately.    I wondered what I could do to force myself to be more disciplined.

One day as I was rigging my hosts file to point to a particular webserver to do some testing, it occurred to me.    I should make it harder for me to access these sites by modifying the hosts file for this purpose!

What is a hosts file?   If you’re a computer newbie this might be a revelation to you.   The hosts file is a legacy system that has plenty of useful applications in today’s networked world.    I won’t go into them here, but for the purposes of this post, we want to edit the contents of the file.   On most computers, you will need elevated access (Administrator on Windows, root on MacOS) to save changes to this file.

The location of this file on Windows is in the \Windows\system32\drivers\etc folder.   It’s named “hosts” without a file extension.   This follows the UNIX convention, although years ago it was “hosts.txt”.

Normally this file is almost empty but usually has the “loopback” address there as a lonely entry:          localhost

You can leave that there.   On a new line, you can start making entries to start blocking access to websites.   Here’s a few of mine:

Make sure to save the file and close all open browser tabs and the browser itself.   Now when you access twitter in an impulsive moment, you’ll get a nice 404 message.


Note that this technique is also useful for blocking out ads without triggering the “You’re using an adblocker” warning from the website itself.   I recommend adding this in, too:

Bye-bye Google ads!

I’ve done this to my work computers several months ago and I’ve found myself to be tremendously more productive.   Now, if I want my internet fix I pull my phone out while getting coffee.   Hope it helps you too.



If you are unfamiliar with the subculture of Dungeons and Dragons, allow me to enlighten you with one of the rituals of the game.   Role playing games are part narrative where the “Dungeon Master” who is the emcee of the game plays referee as well as storyteller.   Another part of the game besides narrative is rules based where inflection points such as combat between your brave virtual heroes and monsters is decided by chance with the roll of the dice.   When you first start a battle “round” you have to roll initiative.   Usually this is a standard six sided die that is thrown both by the Dungeon Master (on behalf of a monster) and the player character.   Whoever gets the highest value gets to attack first.   This is important because if you are against a tough opponent, dealing a mighty, mortal blow first will likely benefit you due to your foe reeling from your righteous onslaught.

Hold this concept in your mind as we now turn to a team setting in the office.

If you are a manager, then likely you have a team of people who are at various stages of development in their career.   What typically happens with junior developers is a cycle of  work where you the manager fill the employee’s work queue based on prioritization driven from business needs or internal business owner lobbying.   The junior developers will pick a task up, work it, and when they are finished come back to the queue and ask for the next task (or even better just grab the next task off the queue and start).

What do you suppose happens when something comes up, such as a pet project from an executive that appears, usually in the context of a “drive by”?    Nine times out of ten the developer will immediately stop and ask the manager, “Which one do you want me to do?”  What ensues is a painful back-and-forth that might go like this:

“How much more work will the existing project in flight take to finish?”

“How long will the pet project take to knock out?”

Seasoned developers should know better than to engage in this banter.   They should proactively negotiate a deal with their manager.   If the new task takes a few hours to knock out, then it should be done so that the team scores a quick win with management and then the developer can context switch back to the original task.   Nobody is asking you to multitask, we want you to preemptively multitask.   This is computer-speak for pausing on the original task, devoting a time-slice to a new task, and then switching back.

Now that’s one version of initiative that seems to be in scarce supply.    A second type I want to discuss is one that separates employees from “goto guys”.   A “goto guy” is someone you go to when you want something done.   Goto guys anticipate needs and already can tell you three ways to implement it.  Goto guys think holistically and recognize an opportunity in the code / the business / the business funnel / etc and they speak up.    They come to your desk and tell you about an idea they have they want to work on.  EVEN BETTER – they have already done a prototype instead of working on their Facebook likes and they want to show it to you like an eager child showing a parent their finger painting from art class.

What is the environment that would be conducive to this behavior?   What can we do as managers to encourage and reward employees that bring this attitude to work with them?   I don’t know but I wish I could figure it out.   Sometimes it seems people get worn down by the corporate grind and lose that edge that motivates and pushes us.   If I see this second kind of initiative I will laud the employee and remember it come bonus or review time.

Ataribox inches towards release


Read more on ArsTechnica:   Ataribox

If you ever visited my home, you would know I have a trove of 1980s Atari computers and game console parts stacked on a wall.   Besides the nostalgia of that time in my life where my brother, cousins, and friends spent hours around the TV playing games (and programming!) I honestly hope that Atari has a second life.

The unit purportedly is priced below $300.   Still no release date, but as the article I’ve linked to states, at least this isn’t a 3D rendering of a prototype.


Managers want a menu


Here’s a typical scenario that you might recognize.   Your boss sends you an email about an issue in the production environment.    You research the issue and immediately find that there is a fast way to fix it, but it is kinda/sorta like a hack and you’d eventually have to refactor it in the future if you wanted to extend the functionality of the feature.    You study the problem some more, and realize there is an opportunity here to add more functionality for the users of your product while fixing the issue your boss sent you – the problem with this approach is that it will take at least a week longer than your quick fix. You may have already intuited that there is a third option, which is between the first two I mentioned – industrialize the quick fix but it will take longer to get into production by several days.

Many times in my experiences I’ve found out, ex post facto, that a junior developer will opt for the quick fix band aid.   This is one way how fragility and technical debt get injected into the codebase.  Similarly, you will find that some seasoned developers will choose the option with the longest implementation time to market because they are driven to create the best possible solution they can – and let everyone know that it has to be done perfectly if it’s worth doing at all.

What developers fail to recognize here is that management has to weigh in the balance multiple competing agendas.   A few that come to mind are: customer experience, breakage, and prioritization.   The customer experience is something everyone in the company should be interested in.   For this particular issue your boss told you about, you should without being asked, try to find out the volume of the issue, and the run-rate.   In other words, when did the issue happen, and how many times a day / how many users a day does it affect?   Once you quantify the issue, a severity can be gleaned from the results.   If the volume is high and impacts revenue then that’s what breakage means.  (I tried to find a good definition of breakage but Google kept pushing hair product results at me???) Breakage can be thought of as opportunity cost but that’s not technically correct.   You’re not giving the user an alternative you’re removing a an opportunity because the feature is broken.    Lastly, if there are high priority features that must wait while you repair existing features that might jeopardize the timeline and release date of the pending launch.

Using empirical metrics calculated by debug logs or sales figures will quickly help you ascertain what the priority of a quick fix is.   If the breakage is small or (if you’re lucky) zero, then you can wait until a scheduled release and opt for an industrialized fix or potentially the “Boy Scout fix” which is the second option outlined above.   If you respond to your boss quickly with data that supports your recommendation you will have hopefully scored big with her because she will notice you have anticipated business questions and delivered a menu of choices that have accompanying data to lend credence to your conclusions.

Why I hate UCE (Unsolicited Commercial Email)


The seedy underbelly of the internet is home to denizens of the dark – spammers, the “darknet” black market warez sites, illicit porn.   Today we’ll shine a bright light on a technically illegal but incredible consumer of yours and my time – unsolicited commercial email spammers.   You might drop by the friendly website at Spamhaus and read their definition of spam. According to them, spam must be both unsolicited and bulk.  Unsolicited is self-explanatory, but bulk deserves a one liner: a bulk email is one that was not hand written. It’s a form letter blasted out to a mailing list where key fields such as name and job title have been dynamically inserted (think Wordstar mail merge!)

Sample email where the SPAMMER couldn’t figure out their spam software:

My name is {!User.FirstName} {!User.LastName} and I am your local Regional Director here at SignalFx. I would like the opportunity to meet with you and discuss your current Infrastructure monitoring and Application Monitoring. We will only take about 30 to 45 minutes.  I know that your time is important so we would be glad to do this over lunch or happy hour if that works better for you.

SignalFx is the most advanced monitoring and alerting solution for modern infrastructure and applications. Our mission is to help cloud-ready organizations drive high levels of availability and performance in today’s elastic, agile, distributed environments.

Since I have a LinkedIn profile, and because companies such as the one I work for commonly use an easy to crack pattern for email address name conventions, I get inundated with spam.   I get about a dozen new spam emails a day.   Let me take some time to tell you why I despise spam with such a visceral hate.   It interrupts my work momentum.    I have to read my email for a large part of my day.   When I find myself scanning the boiler plate salutation sent from a spambot site such as Marketo or ConstantContact (née ConstantSpam) it derails my train of thought and I find myself instantly angry at the distraction.

On occasion, I’ve interacted with the spam authors who crank the spam out from their spam factories day after day.   I’ve received several nice replies however the mainstay is rudeness, bitchiness, and worse.    Here are the three reasons they send me spam.   They want to sell my company something and they don’t care what my role is.   I’m an application developer manager.   Why the fuck would I want to read your sales pitch about PMI Certification?   Clearly, spammers think I control the budget for all of IT as well as I’m snowed under by requests for QA, DevOps, training, and of COURSE consulting services.   I’m inundated by requests to hire everyone from every consulting agency.   If the account managers who blast out their spam only knew that I receive about 50 NEW emails from agencies a week they would realize that I would have time for little else if I read every spam email and sent a reply back.    I get that they’re trying to generate a sales lead, but when all of your competitors cold call and send spam, how are you different?    How on earth do you think you will be heard?

One thing I’m thankful for is getting rid of my work phone.   I used to get a cold call every other hour on some days…I’m not exaggerating.   Because of the selfish nature of business – every salesman for himself – these account reps do not care that they are interrupting me.   They want a sale.    After getting rid of my work phone you would likely not be surprised to know that somehow my personal mobile phone number started to ring about once a month.   I tracked down the online scum agencies that do this and threatened them with legal action and got the info removed.

Productive Conference Calls


Conference calls are a necessary evil.   Many times you find yourself working with consultants who are contracted to complete a project that your company doesn’t want to hire dedicated people to build and you need to work with them smoothly to complete the project.    What I’ve noticed about conference calls, and meetings in general, is a lack of basic understanding of how to best use everyone’s time and what to do to get the best experience out of the meeting.

  1. Have an agenda.   I mean, this one is a no brainer.   A written, bulleted point agenda does wonders for letting people know if they even want to participate in the meeting or not.   Time is incredibly valuable and you want to make sure everyone maximizes the time spent.
  2. Invite only people who will contribute.   Do you find when you invite people that they in turn forward it to 5 other “friends”?   Those extra people show up and either play with their phones or play on their laptops the entire meeting without contributing anything.   What they’ve done is cheapen the meeting as well as not being productive at their own jobs.
  3. If you are the one on the phone, or if there are multiple parties on the phone, learn to respect the rule of the conch, meaning : shut up and listen every other sentence.  There is nothing worse than having someone drone on and on without letting someone else interject a question, correction, or some other thought.   You might as well record your soliloquy and email everyone the YouTube link versus a conference call.
  4. Keep conversation at a high level unless you are working on a specific incident or issue.   This one takes context – sometimes you’re working on a specific issue…again, see #1.   Why would you keep things at a high level?  Well, you’re not going to solve world peace in 30 minutes.    Parceling out todos, giving an update on an issue and maybe 1 or 2 other material things is all you should hope to accomplish.
  5. Choose a conference method that has good audio (even better, video).   So much time is wasted figuring out logistics.
  6. Are you screen sharing?   If so, ZOOM IT so that people on the other end can see what you’re sharing.   They’re not looking at a 5K retina Steve Jobs miracle screen most likely.