musings

Random thoughts and writings.

Show Up, Kick Ass, Go Home

I refuse to work overtime. In the five years I've been at my current company, I've worked overtime exactly once, and that was because our server was literally on fire. Overtime is just not worth it to me.

I'm a salaried employee. A rather well-paid salaried employee, at least compared to many other professions. In the United States where I live (where I am classified as an "exempt" employee), that means that I will not be paid for work done above and beyond 40 hours a week. So, as far as I am concerned, my employer pays me to work 40 hours a week. I show up on time, I kick ass for 8 hours a day, and then I go home.

What I don't do, at least not on a regular basis, is work overtime.

Unpaid overtime dilutes your hourly rate. If you get paid a salary of $60k per year, that's approximately $29/hr if you work 40 hours a week. If you work just 5 hours more a week (45 hours per week), your hourly rate diminishes to approximately $26/hr. You've just devalued yourself by $3 an hour. Further, you've told your company that that's what your worth, since they're already paying you a set amount. From their perspective, overtime is free work, and who would turn down free work?

And for what? I'm an American, but one of the apparent ideals this country seems to hold is absolutely ludicrous to me: I don't live to work. I've written before that I live to live, to do things with my family. I don't want more money; I already have enough that my family and I can live comfortably, if not extravagantly. I want more time.

Time is the one thing I can't ever get more of. No amount of salary negotiations, of GitHub commits, of stand up meetings can ever replace the time with my family that I lose when I work. And "lose" is the correct word here; it's not time I can make back up.

I have to wonder: why do so many people do this? Why do so many people commit themselves body and soul to a company, to work? I don't have any proof, but I personally think it has a lot to do with the illusion of control.

See, in many people's lives, things are simply beyond our control. We can't always protect our children from every little thing; we can't always get that promotion we so desire; hell, we can't even always catch the damn Pokemon that we need to complete our collection. But we can do our job. We can file the correct paperwork, we can write the appropriate tests, we can get all the appropriate projects planned out months in advance. Those are things we can control.

Control is a big deal. Anything we can control, we tend to hold on to for far longer than we should, far longer than is rational (not that humans are always rational, of course). After all, why lose something when all it takes is our hard work to make it worthwhile?

But it's not. Hard work, work above and beyond what you get paid to do, is not worthwhile. It's the opposite of worthwhile, because it diminishes the amount of time you get to spend on other activities. It reduces the time spent with your family, with your loved ones, with your hobbies that give you purpose. It gives us control, but it also wastes our time. It's a time-sink.

Now, at this point in my life, my most valuable commodity is not money, it's time. I can't get any more, no matter how hard I work. I have a limited amount of keystrokes left in my life and I refuse to voluntarily use them up for some company, some effort, some goal that I don't believe in. I've done that before, and it never works out.

Fellow salaried employees: don't work overtime, at least not on a regular basis. Your time is more valuable than that.

Code Is Ephemeral, Concepts Are Eternal

Lots of people ask me things like "should I learn MVC or Web API first?" "HTML or Javascript?" "Angular or React?" etc. After all, there's only so many hours in the day, and what time we have to spend learning is often limited by other factors (energy, work policies, etc.) This leads to the most common question I get from junior programmers: What framework, stack, or language should I spend my precious time learning?

I always tell them the same thing: It. Does. Not. Matter.

It doesn't matter if you pick Angular, or ASP.NET, or Ruby, or Java. It does not matter if you want to build web sites, or IOS apps, or Windows programs. It does not matter if you're a fresh-out-of-school graduate or a 30-year programming veteran. All of these technologies, all of these platforms, will ultimately help you learn the same things, the same tried-and-true best practices. Just pick one!

Remember: you will be obsolescent someday. That will happen, especially in a business where you must continually stay on top of your own learning in order to do your job. You have a finite number of keystrokes left. Therefore you should spend your limited time learning whatever will stave off that obsolescence for as long as possible.

Concepts fight obsolescence. Even when ASP.NET inevitably dies, the concepts I've learned from programming in it for ten plus years will still be useful. Concepts have a longer shelf life than details, because details change. Languages are born and die, frameworks become unpopular overnight, companies go out of business, support will end. But the thoughts, the ideas, the best practices? They live forever.

Learn about SOLID. Learn KISS, DRY, and YAGNI. Learn how important naming is. Learn about proper spacing, functional vs object-oriented, composition vs. inheritance, polymorphism, etc. Learn soft skills like communication and estimation. Learn all the ideas that result in good code, rather than the details (syntax, limitations, environment, etc.) of the code itself. Mastering the ideas leads to your mind being able to warn you when you are writing bad code (as you will inevitably do).

Don't fret about the how. How you learn the concepts is irrelevant. It doesn't matter what framework you like, what stack you use, what technology you're currently in love with. Just pick one, learn that, master that, and remember some of the pain you had to deal with for the next project. Write a small project, post it to GitHub, blog about it. Get some experience with it! Experience is king, and nothing can substitute for real-world experience.

Code is ephemeral, concepts are eternal. Code is static; it will die, fall apart, degrade. It may take a long time, years or decades, but it will happen. But the concepts which programming lives off of do not die; they live on.

So again I pose the question: what should you spend your precious time learning?

15 Fundamental Laws of the Internet

(AKA How To Sound Smart In Your Next Online Rant)

Wiio's Law

What is the internet? The internet is, at heart, a communication tool, a way for disparate people across the globe to spread ideas, opinions, and generally communicate with each other more easily than has ever been possible. Unfortunately, communication is hard.

Finnish academic Osmo Antero Wiio formulated a serious of humorous laws that succinctly explain how communication works between humans; specifically, that it doesn't. The set of laws Wiio created are often summarized as Wiio's Law:

"Communication usually fails, except by accident."

So maybe, instead of being angry that people didn't get what we said, perhaps we should merely be pleased when, against all odds, they actually understand what we are saying.

Kranzburg's First Law of Technology

Melvin Kranzberg was a professor of history, specifically the history of technology (and, apparently, a WWII-era interrogator. Office hours must have been stressful for his students). Kransberg formulated a series of laws about technology and its place in history, most famous of which is his First Law of Technology:

"Technology is neither good nor bad; nor is it neutral."

In other words, technology is not inherently anything; it's value is imposed upon it by whomever uses it. Technology itself has no intrinsic value. Perhaps this is why Apple removed the headphone jack from the iPhone.

Sturgeon's Law

Ever wonder why the vast majority of things on the internet are terrible? So did Theodore Sturgeon, except for everything. Sturgeon was a science fiction and horror writer, and he was appalled that most science fiction of his day was utter trash. Hence he coined Sturgeon's Revelation, which is now more widely known as Sturgeon's Law.

"90% of everything is crap."

Yes, everything. Makes me wonder if he included his own work in that statement.

But it's not all tongue-in-cheek: Sturgeon's law has been cited by noted philosopher Daniel Dennett as one of his critical tools for thinking. So not only is 90% of everything crap, the awareness of this fact is important to be properly aware of critical thinking. Yay for not liking anything ever!

The 1% Rule

The 1% Rule is an adage which states:

"Only 1% of the users of a website actively create new content, while the other 99% of the participants only lurk."

In other words, most people just sit in the metaphorical shadows and read what the 1% write. This is particularly interesting to think about in the context of designing communities like reddit or Stack Overflow, since if only 1% of the people will create content, how do the site owners get the 99% to stick around and read things? Unless you get incredibly lucky, figuring out how to make both the 1% and the 99% happy is very tricky, and only a few sites get it right.

Dickwad Theory

If you don't like swearing, you'd best skip this section. The Dickwad theory was put forth in the online comic strip Penny Arcade, and states:

"Normal Person + Anonymity + Audience = Total Dickwad"

Ever wonder why trolls exist on the internet in exponentially greater numbers than in real life? Dickwad theory proposes the reason: when a normal person received total anonymity and an audience, s/he loses all their inhibitions and promptly starts to act like a total raging asshole. Anyone who has been on the internet long enough has encountered someone who proves this theory, and if they say they haven't, it's because they themselves are proving it.

Dickwad theory is apparently also known as online disinhibition effect, but that's not nearly as interesting a name for this phenomenon.

Godwin's Law

The next few laws relate to how people communicate on the Internet, specifically how they use text. This particular adage is the one law on this list that, most likely, everyone has heard of. Godwin's Law was written by attorney Mike Godwin on a Usenet group in 1990, and it states the following:

"As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one."

What's particularly interesting about this law is that Godwin himself deliberately and repeatedly posted this law anywhere he could, according to a 1994 article written by him and published in Wired. He specifically calls it "meme engineering" (as he invented the idea of an "internet meme"), and it remains possibly the most successful case of this yet seen.

Poe's Law

There's an inherent problem in trying to communicate via text: the inflection and intonation that is so readily apparent in verbal speech is missing. Consequently, what would be obvious when spoken might be missed when written down.

Poe's Law (named after Nathan Poe, who wrote the original formulation of it in 2005) states the following:

"Without a clear indicator of the author's intent, parodies of extreme views will be mistaken by some readers or viewers as sincere expressions of the parodied views."

No matter how obvious it is that you are making fun of something, unless you explicitly state that you are doing so, someone somewhere will think you are being serious.

The original text of this law cited Creationism, but it has been repeatedly proven to be true for any sufficiently contentious topic (by which I mean: all of them).

Skitt's Law

One of the more obscure laws on this list is Skitt's Law, which states:

"Any post correcting an error in another post will contain at least one error itself."

I'm tempted to think of this as the Law of Glass Houses, after the famous proverb, "Those who live in glass houses should not throw stones." At any rate, Skitt's Law demonstrates an incontrovertible fact about the internet: if you feel the need to correct someone else, you'd best be prepared for someone to correct you.

Law of Exclamation

Punctuation can actually be a tip-off as to whether or not what you are reading is total crap. The Law of Exclamation says:

"The more exclamation points used in an email (or other posting), the more likely it is a complete lie."

An example of this law is found in the novel Reaper Man by Terry Pratchett, one of his Discworld series. In it, a character states that "five exclamation marks [are] the sure sign of an insane mind." Remember this next time you think you need more than one exclamation point (and are not a teenager).

Cunningham's Law

The modern internet owes a lot to Ward Cunningham, a programmer who among other things invented the wiki. He's also known for having his name attached to a particularly keen insight into how questions and answers work on the internet (though he didn't originate this law; his coworker Steven McGeady did). Cunningham's Law is usually written as follows:

"The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer."

McGeady even cited a site that relies on Cunningham's invention as the best proof of the truth of this law: Wikipedia.

The Wiki Rule

Speaking of wikis, there's another theory that states that there is a wiki for anything. It's called The Wiki Rule:

"There's a wiki for that."

Yes, that. And that. And even that. If you can think of it, if it has at least one fan out there, there's probably a wiki for it, and some of these wikis can get astoundingly large.

Danth's Law

Ever get into an argument on the internet? Stop lying; of course you have. Have you ever been able to figure out who actually won said argument? Danth's Law gives you this handy tip:

"If you have to insist that you've won an Internet argument, you've probably lost badly."

Because if you'd actually won the argument, you wouldn't need to argue that you did.

Law of the Echo Chamber

Let's be real for a second: in a lot of ways, the Internet has made modern life easier and more accessible, but in some ways the promises of this great web of information simply haven't materialized.

The idealistic goal of the internet was to be democratic, to show us all sides of any possible argument in a non-biased way. Problem is, people are inherently biased, and the internet is run by people, so that bias leaks in. In fact, it leaks so much that more often than not your circle of internet friends is populated by people who subscribe to the same opinions you do.

I therefore propose something I've been calling the Law of the Echo Chamber:

"If you feel comfortable enough to post an opinion of any importance on any given Internet site, you are most likely delivering that opinion to people who already agree with you."

Munroe's Law

There is a corollary to the Law of the Echo Chamber, which I've taken to calling Munroe's Law after the cartoonist who draws and publishes the comic xkcd. A while back Randall Munroe posted the following cartoon, and it has since become something of a meme.

We've all been there. That comic is merely a funny way of stating the following:

"You will never change anyone's opinion on anything by making a post on the Internet. This will not stop you from trying."

Golden Rule of the Internet (AKA Wheaton's Law)

The traditional phrasing of the Golden Rule is "do unto others as you would have them do unto you." Actor and writer Wil Wheaton coined a slightly shorter version which has occasionally been referred to as Wheaton's Law:

"Don't be a dick"

Because sometimes it really is just that simple.

Summary

Many of the laws enumerated above don't apply to just the internet; they apply to life and behavior of humans in general. This is, of course, intentional. After all, the users of the internet are people, regardless of what they want you to think they are.

Did I miss any fundamental laws of the internet that you've found useful? Feel free to sound off in the comments!

Happy Coding!

Mind of the Speaker - How Do You Feel About Your First Presentation?

The first time we do anything, we're terrified. Asking out that first date, submitting that first patch, reviewing someone else's code for the first time. Surprisingly, how we feel about it (e.g. "OH MY GOD I DON'T KNOW WHAT I'M DOING") has very little to do with how well we actually do at it; sometimes we're right and we end up doing terribly, and other times we're wrong and it ends up going well. It's different for each person.

In October of this year (2016), I attended the DevIntersection/AngleBrackets conference in Las Vegas, as I did twice last year. Once again, as I am fascinated with the process involved in speaking for tech conferences, I tracked down as many speakers as would talk to me and asked them three simple questions:

  1. Who are you, and what do you do?
  2. What is the most important thing for a speaker to remember while they are on stage?
  3. What was your first conference-level presentation about, and how did it go?

NOTE: A couple speakers couldn't remember their first conference presentation, so instead I asked them about a particularly memorable one.

This blog post gathers the answers I got to the third question: What was your first conference-level presentation about, and how did it go? The answers I got varied mightily, both in how well they thought the presentation went, and how well they thought it was going to go.

Don't Bother Applying

Let's get the worst out of the way: sometimes you do so bad at your first conference presentation, the conference doesn't want to have you back. Ever.

Kathleen Dollard (.NET coach and Director of Engineering, ROI Code): "Oh, terrible. It was some terribly-named thing like 'Data in the Dog House' or something stupid like that. I absolutely bombed. I was so bad. I won't tell you what conference it was, but it was a conference that [told me], 'yeah, don't bother to apply again.' But [my colleagues] told me, 'you shouldn't quit,' and I said, 'oh, ok, I'll try again.' It was terrible, absolutely terrible."

Technical Issues

The bane of any tech speaker's existence is technical issues, especially ones they can't control and are powerless to change.

Dan Wahlin (consultant, author, founder of Wahlin Consulting): "I think one of the more memorable ones would have been a TechEd one I did. We had some serious technical issues. In that case, I'll have to admit, I don't think I was [prepared], because I just assumed that you show up and everything works; that you're just there to speak. So being prepared for the things that don't go so well, goes a long way."

John Papa (Pluralsight author, speaker): "One of [my presentations] that was not so great, because they're more fun to talk about, was when I was on stage and talking about a topic (I think it was ADO and RDS, one of my earliest talks), and we had some technical difficulties again. The slides didn't work at all. So I had to do an hour-long presentation without slides. Part of the [problem] was, within a minute, I realized it just wasn't going to work. Nothing was working. So I was like, "well, now I've got to teach for the next 59 minutes about this topic without any computer. [But I can say] that it was a good experience, in the sense that I realized that I didn't need the visuals to do it. It was also good to realize [what] Dan mentioned: have backups, be prepared. It was humbling, because I know it didn't go as well as it should have."

Sometimes, though, the technical issues are caused by your own worst enemy: yourself.

Javier Lozano (Owner of LozanoTek): "[It] was many, many years ago on WCF. It went surprisingly well, [and] the reason why I say [surprisingly] that is that I did something very stupid. WCF was in beta, and I upgraded to the latest beta bits. Just the bits, but not my code, and my code wouldn't work. So I'm freaking out thirty minutes before [my talk], trying to undo all that, and it was very, very painful. Out of all of the demos, I was able to get four of them working, rather than the eight that I had to show. It was one of those [things where] I apologised to everybody, because it was a stupid mistake [to] upgrade all of the stuff. That was a lesson that I never, ever repeated."

Wrong Format

Occasionally speakers, who at their core are really teachers, get up to present a session and realize that the format of that session is just completely wrong for their current environment:

Phil Japikse (Consultant, speaker, author, blogger (skimedic.com)): "My very first conference-level presentation was about the data access blocks in .NET, and it went terrible (sic). I do a lot of instruction [and] classroom-style teaching for customers, and I'd been doing that for years. A buddy of mine was running a show, and he knew I was teaching. He had an open slot, and he says 'will you come give a talk on the data access blocks?' I said, 'sure! I use them all the time.' So I built a classroom-style presentation for a code camp, and realized pretty quick that that's not the right format. I was trying to teach like [I would] in a classroom, as opposed to just step back and get people excited about it and move on. So I learned pretty quick to adjust my style."

Someone Else's Content

One speaker had what seemed to me to be a rather unique experience: she was presenting someone else's content!

Julie Lerman (Consultant, Vermonter, blogger at The Data Farm): "It might have been at a Microsoft community event in Boston, oh, a thousand years ago. Microsoft tech [had] developer evangelists at the time, although that's not what they were called. It was people from the community doing [the] speaking, and it was a really big deal, and they gave you the content to do, so it was really hard. My talk was [something] like 60 slides, and I had a half an hour to talk, or something like that. It wasn't my content; I had to do somebody else's talk! The first time I did [that talk], it went so badly. It was so bad; I couldn't even believe that I could be so bad. And then we did a new iteration; we did that whole thing again with the same people, [about] a week later, and I totally nailed it!"

Roller Coaster Ride

A couple speakers had a wild, up-and-down experience doing their first conference-level presentation. In one particular case, a speaker was thrown into the fire, so to speak, and ended up with people clamoring to get into his sessions:

Mark Miller (Chief scientist at DevExpress, expert in great design): "I think my first one was pretty crazy. I substituted for another speaker that couldn't make it because his wife was having a baby. I was kind of irreverent and nobody had ever seen anything like that before; they were used to a professional setting. I had three different talks at that conference, and by the last talk I had people following me and trying to get in to my sessions (because everybody was like 'who's this guy?'). I remember getting into my last session, and there was just a crowd of people trying to get into it. I was trying to get by them, and somebody was like 'who's this guy?' and some other guy [says] 'some hotshot speaker!'"

For at least one presenter, the presentation started out really well and ended, well, differently:

James Ashley (Freelance HoloLens developer at Imaginative Universal, Microsoft MVP - Emerging Experiences): "I can't remember my first [conference presentation], but I'll tell you about one that I remember really well. I'd picked a new technology topic and was feeling sick, so I showed up thinking I would get some small corner room somewhere (this was a conference in Tennessee). Instead I got a thousand people in the room. I totally bombed it. Lost my place, got overwhelmed, barely dragged my way to the end. Yeah, that was great experience."

My head is still spinning from that one.

Preparation

I firmly believe the best way to give a stellar presentation is to practice the hell out of it, and a few of the speakers agreed with me.

Robert Green (Developer Evangelist and speaker, Microsoft): "[Laughs] Oh boy. I might wind up dating myself. I believe my first [presentation] was on doing client-server development in FoxPro. It went fine, because I knew a lot more about it than the people in the room. I go to a talk to learn. I don't necessarily go to a talk to hear the world's foremost expert on something. If I can, that's great, but I go to a talk to learn. So I think people learned a lot in that talk, and so I think it went pretty well. If you want to be a speaker, of course you need to know your subjects, but you don't have to be the world's foremost expert to teach people thing."

Tim Huckaby (CEO of InterKnowlogy, software guy): "I worked on a server produce team at Microsoft in '98. I was just a lowly dev on an architecture team, but all the business people, all the [project managers], were busy. Back then Microsoft had this conference called TechEd. [It was] an enormous conference. And they said, 'well, Huckaby has a personality, let him do the presentation,' since none of them wanted to do it. So I did, and it went amazingly well. I prepared the hell out of it, I studied the hell out of it, I knew the product like the back of my hand, because I'd worked on the product. I just had all this insight that I'd gathered up from the team and my experience. It was the highest rated presentation in the conference. And it was the first time I'd ever done it! They're like 'oh my God, you were awesome,' and I'm like 'really? I though I was horrible.' Because we're all our own worst critics."

People Showed Up!

Because presenters do tend to be their own worst critics, sometimes speakers are just surprised anyone showed up at all.

Jes Borland (Senior SQL Server Engineer, Concurrency): "My was in 2011. I presented at a SQL Saturday, and my topic was completely not technical. It was 'Make Your Voice Heard,' and how to further your career through using forums and blogging and Twitter and LinkedIn. It was great! People had so many questions. They wanted to know how I had gotten started with those things. They wanted to know what my tips for success were. They genuinely looked up to me. Being able to do that was awesome."

Erin Stellato (Principal Consultant, SQLSkills): "My first conference-level presentation was in 2011, and it was specific to capturing baselines in SQL server. I was on the last day of the conference in the last timeslot, and was of course concerned that no one would show up. Lo and behold, people did show up, and I had questions and I had good feedback from that, and it ended up being a great experience."

Credit Where It's Due

One speaker credited his first talk going so well to a person who'd inspired him to do it in the first place.

Pete Brown (Music app and Internet of Things developer, Microsoft): "I was just thinking about this the other day, because I owe a lot of that to a guy who was a vice president at the last company I worked at; his name was Tom O'Connell. He got me in to speak at an event called Explorer 99, and I was talking about a Visual Basic library we wrote to make it really simple to build forms-over-data applications, where all the entities and everything inside the VB app and all the rules [and so forth] were generated from UML models. I thought it went pretty well."

Following the Big Name

One speaker was terribly nervous to even give his first presentation, due to the fact that he was following a big name in his field:

Burke Holland (Developer Advocate, Progress Software): "My first conference presentation was on HTML5 when [that] was a new concept. I was sent to TechDays in Canada, and I had the first session after the keynote in the keynote room. The keynote was by Scott Hanselman, who I did not know and had never seen a keynote from before. So as a speaker, I had to get up there on stage, after [Scott], and be like, 'well, I hope you enjoyed that, and now... this.' And it went great! It was a great experience, but it was absolutely terrifying."

How Was Your First?

As you can see, many speakers did well, and many did terribly. But, considering the fact that I got to interview them at all, their experiences with their first conference-level presentation didn't stop them from doing more.

Have you done presentations of any kind, not just at conferences? If so, do you remember your first one, and how did it go? Share in the comments!

Happy Coding Speaking!

Post image is Hayat Sindi, found on Flickr and used under license