Archive for November, 2010

The Karma Experiment

Monday, November 29th, 2010

I read a lot of blogs (probably too many). I try to interact with at least some of them, but usually the most I can do is muster the occasional comment on the latest post. I don’t really feel like I’m generally giving back to those blogs from which I learn so much. So this month, I’m going to try to change that. Here’s the plan:

Every weekday during the month of December, I’m going to email a blogger that I read regularly.

The idea is that I really want to make an effort to let the authors that I really care about know how much I appreciate them. Worst case this is just some junk email that will get ignored, but hopefully it will at least help brighten someone’s day during the often-stressful holiday season.

Obvious question the first: Which bloggers?

The hand-wavy algorithm I used to choose which bloggers to email is “if {blogger} retired from blogging tomorrow, would that totally ruin my day?” If the answer was yes, email! Otherwise, I considered why I still read that particular blog; apparently this test can also help prune your RSS list.

I’m not going to say who specifically, but my list runs a veritable gamut of talent and renown. I’ve hit everything from blogs that are as (un)popular as mine to some of the biggest names in blogging, and most of the recipients fall somewhere in between. Part of the fun will be seeing whether any of the big names actually reply to fan-mail, while hopefully at least some of the lesser-knowns might appreciate and acknowledge my kind words.

Obvious question the second: What will I say?

Something heartfelt. I really, seriously appreciate each and every one of these people and I will have no trouble coming up with sincere things to say about them.

I’ve always found it kind of strange how when you read someone’s blog long enough you really feel like you know that person pretty well. Then you realize that they don’t know you at all and you feel kind of like a stalker. Anyway, I’ll try not to be too creepy.

Obvious question the third: Why every weekday?

Two reasons:

First, when I came up with my list of bloggers that I considered must-writes, I had exactly 23 names. I debated adding a bit of fluff to round it out to 31, or at least 31-minus-holidays, but I decided that that wasn’t in the true spirit of this endeavour. Then I noticed that December has exactly 23 weekdays.

Second, this works out well for holidays as Christmas Day is on a Saturday, and I really don’t want to hassle anyone on Christmas Day. I’m still going to hit Christmas Eve and New Year’s Eve (and you know my thoughts on New Year’s Eve) but those are working days anyway, so I feel some justification, however slight it may be.

I’m not expecting this to lead to anything.

It’s not a movement, it’s not me marketing myself, and I’m not asking for anything in return. I’m just trying to let the bloggers I care about know that they matter, and that I love what they do. But with that said, it will be interesting to see what kind of conversations or realizations this leads to. I’ll be sure to post an update if I catch anything interesting.

Stay tuned!

Windows Phone 7

Monday, November 22nd, 2010

The other day my boss walked up to my desk and asked me to choose a number between one and ten. I said four. He handed me an HTC Surround, a new handset running Windows Phone 7, and told me to try it out for the day.

It was awesome.

This is the first serious iPhone-competitor I’ve seen so far. Sure, it doesn’t have Android’s openness or Palm’s lovable WebOS, but it has it’s own user experience that isn’t just a knockoff of what Apple came up with almost four years ago. Here are some thoughts from my day of usage:

I’m in love with the interface.

The new hub-scrolling paradigm is a fresh and welcome change to how content is organized on a small screen. Instead of always breaking different information into distinct views, like you would see on an iPhone or Android phone, applications for WP7 are organized as one giant view that you sort of scroll around on. It’s a bit tricky to visualize, but once you’ve used it, you get it. It’s that simple.

And then there’s the transitions! They’re incredible. Anytime you do anything on the phone, it’s accompanied by a fancy-but-not-quite-distracting animation. The way one view flips to another is gorgeous. The loading screen is clean and fun to watch. The whole thing is like one giant production, and it’s really well done.

Lastly, many of the applications I downloaded already use these new UI elements very well. The Facebook app (which admittedly was made by MS) is easy to use and well-organized. Though it’s completely different from the iPhone Facebook app, which I’m a huge fan of, it’s just as good. I was blown away. Twitter was another great example, and this was actually made by the guys at Twitter. They grasped how to use the new graphical features and made an absolutely stellar app out of it — again, totally on par with Twitter’s official iPhone app.

The hardware is good, but not great.

The Surround in particular had a slide-out speaker, and a built-in stand. While this is probably standard fare for Android users, as an iPhone-enthusiast I’m not used to my phone having weird hardware. I probably wouldn’t use the speaker/stand much, but it might be interesting to see what other kinds of hardware are added in future third-party devices.

Of course, the standard components were done pretty well. The camera quality (5 MX stills, 720p video) is the same as that of the iPhone 4 (and puts my 3G to shame), though there’s no flash and no front-facing camera on this particular handset. The screen quality was very crisp, though I didn’t have an iPhone 4 on hand to compare it to.

It could be interesting to see how the hardware powering future WP7 devices will stack up to the iPhone 4 and whatever new iteration of the iPhone that Apple releases in 2011. For now, the iPhone still comes out on top, at least from the stock of WP7 devices available in Canada.

Some other misc things I liked:

The soft-keyboard is pretty awesome. The shape of the keys are different from the iPhone, and I found I was making less mistakes while typing. That said, the auto-complete may be a step down. Instead of filling in new words by default, like the iPhone, WP7 tries to guess what you’re typing as you go, and you have to manually select it when it shows up at the bottom of the screen. This is decidedly more work on my part; not only do I need an extra tap to auto-complete, I also have to constantly peek down at the bottom of the screen to find it.

Finally, I need to mention the home screen. I like it. Having applications update their icons automatically with new information is very useful, and grouping content by subject rather than by application has a lot of potential. The People tab, for example, lists all of your contacts, and integrates Twitter/Facebook information if applicable. I didn’t really have enough time to get a good feel for how useful this really is, but it’s an innovative concept nonetheless, and I’m anxious to see what third-party developers will do with it.

I kind of want one of these phones!

The overall impression I got from the Surround was quite positive. My current carrier-contract expires in July 2011, which should be right after Apple’s next iPhone iteration. I’m excited to see how WP7 stacks up at that point, because it looks like I might have a difficult decision on my hands — and that’s a good problem to have.

Security B-Sides Ottawa

Monday, November 15th, 2010

I spent last Friday and Saturday at an information-security conference here in Ottawa. I had a really great time, and just in case you weren’t paying attention to my constant spamming via Twitter, here’s a slightly more cohesive summary of how it went down:

What is Security B-Sides?

Security B-Sides is a sort of unconference for the information security community. It’s free and community-driven, and still attracts some fantastic speakers. There have been eight of them to date, and this was the first to be held outside of the United States.

There are at least half a dozen planned for 2011, so if this is your kind of thing, see if you can make it to one near you!

The organizers did a great job bringing B-Sides to Ottawa.

They would be local information security rockstar Justin Foster, western Canada’s D-List infosec celebrity Andrew Hay, and self-proclaimed “infosec curmudgeon” Peter Hillier.

The event was hosted at Tuscon’s, a blues bar/restaurant in town (the staff there were fantastic, by the way). Justin managed to chase down a myriad of talented speakers, which we’ll get to in a moment. It was a two-day conference, with free admission, free food, and (some) free drinks. Registration maxed out at 125 well ahead of time, and at least on the Friday it looked like a full house. This was especially good for the unconference vibe, as the layout of the restaurant (many small tables) encouraged lots of chatter among attendees.

All in all, it was a total hit. Now, on to the speakers!

First up was organizer Andrew Hay, talking about his D-List status.

Andrew discussed celebrity status within the infosec community, and how other than a few big names there really aren’t that many well-known computer security experts, especially in the B- and C-list range. Therefore, he says, more or less everyone is on the D-list by default. He encouraged all of us to get out there and join the community. He’s quite the role model!

Oh, and his slides featured a picture of himself in a dress. All in all, a solid opening to the event.

Next up was Kellman Meghu, explaining some information security lore.

Kellman‘s talk was hands-down my favourite for day 1. He debunked a number of myths relating to computer security, and told some great stories about common mistakes made back in the early days of the interwebs. It was very insightful, and just as funny — he had the audience in stitches almost the entire time.

One of my favourite things about this talk was that it wasn’t targeted at any particular level of knowledge. Everyone watching could relate to his points and jokes, and all of it was appropriate for the given audience. If you ever get a chance to see Kellman talk, don’t turn it down.

After that was lunch, and then a talk about Star Trek.

Well, a talk about paradigms in information security, but using Star Trek as a metaphor — complete with clips and lame jokes. This one was full of surprises (it was added in a last-minute line-up change), but I couldn’t really relate to it. I’m not even a little bit into Star Trek, so most of the comedy was lost on me, and the material didn’t quite stack up to Kellman’s. A lot of people were into it, though, so maybe it was just me.

Then there was Peter Hillier’s EMR talk.

This was a presentation I was really looking forward to. We do a lot of healthcare work at my 9-to-5, so I took a lot of notes as it’s not every day you get to hear a public-sector security expert discuss electronic medial records.

The main message I got out of the talk was that we’re currently seeing a big disconnect between vendors, doctors and regulators. All the knowledge related to what we need in terms of security and privacy features is held by the vendors, which leads to regulators largely ignoring security features in their legislation. This is frustrating for doctors, which are left to figure out the complex issues of security and privacy on their own.

This sparked some great discussions, and I caught up with Pete afterwards for a quick chat. He’s a stand-up guy, and a huge supporter of the infosec community in Ottawa (I recognized him from our local OWASP chapter meetings, and his Twitter account). Definitely the right kind of speaker for a B-Sides event.

Following a short break, Eric Skinner lectured us on authentication.

As in Eric Skinner from Entrust, the kind sponsor who bought us all lunch. Two things were particularly notable about this presentation:

First, it was a really good summary of modern authentication techniques. It wasn’t boring, even though the information is inherently dry, and the level of depth he went into on each topic was perfect for the given audience.

Second, you would never have guessed Eric worked at Entrust (they sell authentication solutions) if he hadn’t clearly disclosed it. He didn’t push any of his company’s products or services, and was completely fair in his analysis of each method of authentication he covered. This is very important for a conference like B-Sides, and it was good to see Eric do it right.

Wrapping up day one was a security debate.

This was pretty neat. Four security aficionados on stage, debating various security issues, led by the venerable Jack Daniel. I won’t go into too much detail about the topics, but they all led to some interesting conversations. Justin was handing out drink tickets at this point, so the chatter really started picking up in time for dinner.

Halfway done! Take a break if you need one. Otherwise, let’s get to day two:

Day 2 started out with a bit of math.

Specifically, Ahmed Masud explained how algebra can be applied to computer security in place of algorithms. The idea here was that algorithms are always heuristic in nature, and that the only way to ever truly reach 100% security will be with equations and problem spaces.

The math was a bit over my head, and I think a lot of the other attendees were also a touch lost. Interesting concept, though — definitely good food for thought.

Next up was a talk on fuzzing.

This was definitely one of the most popular talks of the entire conference. Karim Nathoo and Mike Sues gave an absolutely mind-blowing explanation of modern fuzzing techniques. It was a real eye-opener for a lot of people (myself included) and they played some recorded demos to illustrate their points. Definitely a winner.

On a somewhat-related note, Karim totally won a Macbook Air through a random draw on day 1. And he gave it to his wife. Having only been married for a month and a half, I’m still not sure if that was crazy or pure genius.

After lunch was Raf’s talk.

Rafal Los is a web application security evangelist for HP, and a funny guy. I met him on day 1 (he gave me a sticker!) and he was in the debate at the end of the day. He’s exactly the kind of speaker you want at a B-Sides event; there was an avalanche of heckling audience interaction during his talk.

Content-wise, he was talking about automated tools for security-testing web applications. His material was very interesting, and covered a lot of quality assurance concepts that I was aware of but had never really thought to apply to security. Very neat stuff.

Next was Ben’s talk on motivation.

Predictably, I loved this one. Motivation is becoming a big interest of mine, and Ben Tomhave‘s talk about how to motivate users with security in mind was absolutely stellar. I think he’s given this talk before, which means he might do so again, and if that’s the case I would suggest you listen in if given the opportunity. Everyone was talking about this one.

Then there was a big discussion about CERT.

I was completely lost on this one. There were a lot of public-sector folk at the conference, and this was less of a talk and more like a discussion among attendees being moderated by the speaker, Adrien de Beaupré. It was apparently very engaging and valuable to a lot of people, but I realized this would all be over my head right from the start when I had to use my phone to look up what a Computer Emergency Response Team was. A great presentation for a B-Sides event, just not my thing at all.

Finally, we learned a bit about Nmap.

I really didn’t know anything about Nmap going into this talk. Fortunately for me, the speaker (Ron Bowes) was a developer, so we clicked on that level. I learned a lot of interesting things (did you know Nmap is written in Lua?) and he did a fantastic job setting up demos considering Nmap is a network scripting framework and there was no wireless at the event.

Thanks to everyone I met and talked to!

Specifically, I’d like to call out Justin, Andrew, and Pete again for organizing everything, Mark and Ken for hanging out with me during the talks, Ben and Nicky for chatting/drinking with me and Norbert Griffin, who came all the way from Newfoundland to volunteer at the event and lent me a charge cable when my iPhone battery died.

Can’t wait to see you all again someday!

OCRI Fall 2010 Day 2

Friday, November 12th, 2010

How Mentoring Works

Welcome back to this semester’s OCRI updates. Back in October, we looked at how to kick off a project. Today we’ll talk about learning programming.

Last Monday I visited All Saints High School here in Ottawa. The students there are creating Flash-based games for a class of grade 3 students at a neighbouring grade school.

The neat thing about this particular class is that it’s not a programming course — it’s a course in multimedia. The advantage this brings is that the students are familiar with the ins and outs of design and publishing; this will give us a chance to put some real polish on the finished products. The obvious disadvantage is that most of the students have very little programming experience. This is backwards from usual, and I’m curious to see how it turns out.

We teach in a one-on-one sort of setting.

It’s not usually very effective for myself or the other mentors to lecture the students on how to program. They have a teacher for that, and if we do it too then the students are more likely to lose their enthusiasm and less likely stay engaged and focused. Plus, there are a few advantages to a one-on-one coaching approach:

  1. I can easily and reliably gauge how much each individual student knows about programming. This helps me decide how much of my attention each group will require.
  2. I can customize what I teach each group. Since the students’ games and programming backgrounds are all different, each group will have a unique set of needs.
  3. I can connect better with each student. This is more rewarding for me and for them, and it makes it easier for the students to accept my help.

Since this was my first session at the school this semester (I missed Day 1), I spent most of my time floating around to each group to see what their game was about. What immediately surprised me was how far along all of the groups were. Normally we use Java, which has a much steeper learning curve, but Flash is easy to pick up, especially for students already familiar with tools like Photoshop.

The other big surprise was how much I learned. While I’m an (Adobe-certified) expert in Actionscript, I’m used to dealing with Flash Builder (the IDE), not Flash Professional (the animation tool). So while I was explaining how and why to define a constant, the students were teaching me how to tween a movie clip.

It will be interesting to see how the next few sessions pan out.

Over the next few weeks, we’re going to be moving away from the design aspects of the games and more towards scripting. Some games will require more of a back-end than others, and especially in those groups whose games are particularly script-heavy, it will be interesting to watch the students adjust from designing to coding.

I suspect I’ll have a fun programming story or two for our next update. Stay tuned!

More on Being Untouchable

Wednesday, November 10th, 2010

I had a great conversation today with usability expert extraordinaire Francis Beaudet about Monday’s post on how to be untouchable, and I thought I’d keep the rest of you in the loop.

Our discussion centered around a post from The 99 Percent entitled What Happened to Downtime. In it, the author discusses how before constantly-connected technology sparked its way into our lives, we used to have a lot more downtime — time to let our minds wander, rather than stay consciously focused. Now that we have smartphones and ubiquitous internet, that downtime is instantly converted to productive time, and our creativity and quality of life suffer as a result.

Give Yourself Permission to do Nothing

This is a thought Francis mentioned in passing that really resonated with me, because it’s really the core of what I was getting at on Monday and what The 99 Percent is referring to as well. We’ve reached a point in society where, by default, you are expected to be doing something productive all the time*. We really have to force that disconnect, that chance to think passively and reflect and really free our minds of intentional thought.

The 99 Percent piece elaborates quite a bit on the benefits of disconnect, and offers some suggestions for working these important breaks into your life. It’s a great read, you should really check it out.

* Francis notes (correctly) that there is a cultural bias here. In many other cultures, it’s common to do nothing for a few hours at a time; something that is easily seen as lazy or unproductive here in North America.

Motivation Hack: Be Untouchable

Monday, November 8th, 2010

I had a busy summer/fall. I was on a lot of projects at work, plus writing blog posts, working on a whitepaper, speaking more than usual, buying a house… and there was something about a wedding in there, too. At times, this could get completely overwhelming. But I found a neat hack to ensure that I was focused, motivated, and in a good mood every morning when I got to work, and every evening when I got home to my then-fiancée. It helped me survive. One simple trick made my tasks easier, and my day more enjoyable. Here’s what it was:

I took the bus to work.

Yeah, that probably doesn’t sound relaxing or motivating to you, but we’ll get to that in a minute. First let’s read into this a little to see why it worked so well for me.

What makes me untouchable?

My commute to work is about 25 minutes by bus. So in the morning, I have a 25-minute ride to work, and in the afternoon, a 25-minute ride back home. In this 25 minutes, I’m only doing about three things:

  1. Listening to music.
  2. Looking out the window.
  3. Breathing.

…And that’s all. What’s probably more telling is what I’m not doing:

  1. Worrying about traffic.
  2. Checking my mail.
  3. Planning my day/next task.
  4. Writing, or doing any work of any kind.

In fact, I just sit there, headphones in, staring out a window — totally spaced. This is what I call my “untouchable” time, because nothing can get to me in that time. I’m relaxed and not paying any attention to anything important, and that completely loosens me up. It clears my head. And whatever was stressing me out when I got on the bus is forgotten by the time I get off. So when I stroll into work in the morning, and when I arrive home after a long day (ready for a long night), I’m golden. I’m calm, happy, and ready to start on whatever’s up next.

Now I’m willing to accept that most people do not associate taking the bus with a calming, almost meditative experience, so let’s look at some other options.

What makes you untouchable?

Everyone has something that gives them that Zen-like, tuned out feeling. And if you just do whatever gives you that feeling once or twice a day, it will have a big impact on your mood and productivity. Here are some ideas to help you find your untouchable trigger:

  • Read. No news, no tabloids. A real, physical book.
  • Meditate. This isn’t my thing, but it works for plenty of people.
  • Take a nap. Just be sure to set a timer.
  • Lounge out in a comfy chair, with a cold drink. I do this too.

And of course, just as important, here are some things to avoid:

  • Don’t do anything that will trigger dopamine. Internet, games, TV, etc.
  • Try not to strain your eyes. Close them if you’re tired and avoid screens.
  • Resist the urge to plan and organize. You’re on break.

A good rule of thumb is if you’re doing something productive, you’re doing it wrong. You can afford a small chunk of time every day to be non-productive. When you’re not super-busy, this happens naturally. When you are super-busy, it’s your responsibility to make sure you still get that downtime. You need it. Trust me.

Your turn.

Do you already do something like this? Tell me about it. Do you have other ideas for making yourself untouchable? Share them.

Friday Update

Friday, November 5th, 2010

I didn’t post anything about OCRI last Friday because I missed our OCRI session which was on the Monday (somehow I had Tuesday in my calendar). Anyway, next Friday we’ll be back on schedule with our every-two-week updates.

Also, I wrote a post for the company blog today that you may find interesting:

Why I Love Working Closely with Designers

Have a good weekend, everyone!

How to Give Useful Advice

Monday, November 1st, 2010

The internet is a fantastic resource for the budding web developer. With plenty of blogs dedicated to improving the web, new tips and best practices are spread easily and often. But is this advice always useful? The veteran web developers of the world have a responsibility to their community to provide advice that is not only correct, but also well thought-out and properly explained. And sometimes, even the pros miss the mark.

Last week, I stumbled across a post from Six Revisions entitled 10 Random CSS Tricks You Might Want to Know About. Thinking that one can never know too many CSS tricks, I figured I’d give it a read and hopefully come away with something I didn’t know before. Instead I came upon a mess of poorly-chosen and poorly-explained advice that some hapless beginner may now completely misuse! Needless to say I was startled.

At first, I thought about leaving a comment denoting my dissatisfaction with the quality of the post, but I soon decided that that wouldn’t have been particularly productive. Better to point out not only the flaws, but also what is done well and maybe add a few improvements, right? So that’s what I did. Open the original article for reference, and follow along with my notes!

1: Set body font-size to 62.5% for Easier em Conversion

This is a neat math hack, but poor advice for the novice web developer. The whole point of using em is that it is a relative unit of measure. Suggesting that you set your body font in such a way that it will be easier to convert em to px implies that you’re not using em as a relative unit at all — you’re just using it in place of px. At that point you’re better off just using px and saving yourself the overhead of converting it at all.

A better tip would be to explain how em really works and to demonstrate how powerful relative measure really is. A timely example would be for a mobile-optimized design: With so many devices out there covering a wide variety of screen resolutions, proper use of em can help ensure that everyone gets a properly-scaled view.

2: Remove Outline for Webkit Browsers

This could alternately have been called “Break Accessibility for Webkit Browsers”. It’s a horrible tip, especially for an impressionable designer just getting into web development. Forms are focused for a reason — so that the user can see where she is in the page. When this is removed, it weakens keyboard accessibility and annoys power-users that navigate through forms sans mouse. There is no good reason to do this. Ever.

A much better tip would be to promote proper use of the CSS :focus pseudoclass. Instead of removing the border, change it to something that better matches your design. Or change the background color or some other property so that it’s still clear when a form element is highlighted. Whatever you do, make sure you aren’t breaking an important accessibility feature.

3: Use CSS transform for Interesting Hover Effects

This is a good tip; there are plenty of interesting new effects coming out in CSS 3, and anyone that has worked on a website with me can tell you that I’m a huge fan of rollovers. What irks me about it is the example they chose — using the scale function to resize text. This is ridiculous for two reasons:

  1. You don’t need scale() to do this, you could just as easily change the font-size property.
  2. Artifically scaling a font makes it look uglier. You won’t get this side-effect using font-size.

The article should have either found another way to show the benefits of the scale() function (images are a classic) or chosen an effect that suits text rollovers better, such as text shadow.

4: Target IE6 and IE7 Browsers without Conditional Comments

This is my least favourite “trick” in the entire list. The whole reason we have conditional comments is because before they came along it was a pain in the ass to target browsers like IE6 and IE7. Why anyone would condone reverting to exploiting browser bugs via CSS to target specific browsers is beyond me. Conditional comments are much, much better suited for the job.

Predictably, my preference for this tip would be to explain why conditional comments are better than awful, outdated hacks. The main advantage is that they allow you to localise your browser targeting to one spot in your mark-up, rather than all over your CSS file. This makes it much easier to maintain and has the added bonus of avoiding ugly character-based hacks all over your otherwise-gorgeous styles.

5: Support Transparency/Opacity in All Major Browsers

This one is largely okay. It’s a good tip, and the example is solid, I just found the introduction a bit lacking. A possible improvement would be to mention that originally, every browser had their own transparency hack and it wasn’t until CSS 3 that opacity was officially added to the specification. This way the novice developer following along gets a touch of back-story regarding why Internet Explorer is different from its counterparts.

6: Use !important to Override Normal CSS Precedence Rules

This is a good tip (I’m willing to bet a lot of people don’t know about !important), but it only explains half the problem. What isn’t covered is when to use !important, and that’s just as, well, important. The example given is too simplistic to be useful.

The ideal tip would describe a case where using !important is necessary. Like those times when you’re dealing with some poorly-auto-generated HTML, and you need to override some inline styles.

7: Centering a Fixed-Sized Element

This example is poorly explained. It reads a lot like “do this magic CSS, and *poof* your content will be centered!”. That’s not how CSS works, nor is it a good way to learn. Why not explain how the styles work? They’re not obivous. Furthermore, why not provide a few alternatives? If the dimensions of the container are known, for example, the math gets quite a bit easier — and that will be a very common case.

This tip would be more useful if the inner workings of the sample CSS were clearly explained. Educating a reader is always better than conjuring up a magic block of code with no elaboration.

8: Easy Web Fonts with Google Font API

This is one of two tips that is already really useful. There are no glaring errors, the example is current, and the content is still likely unknown to a large number of developers. There’s even a bit of history regarding the current state of @font-face! I wouldn’t change a thing.

9: Prevent Line-Wrapping of Text Elements

This tip again fails to mention when it should be used. “Sometimes” is too vague, and even the example of link text isn’t really justified (are there advantages to no-wrapping link text? what are they? when else is this useful? etc). By answering a few more questions, this could be considerably more useful advice.

10: Vertically Align Text

This is the second already-useful tip. It explains the problem, introduces the solution, and explains some of the solution’s shortcomings. Exactly the kind of information necessary to really understand this tip.

§

There we have it; a few tweaks and these potentially-harmful tricks can flip into advice that is decidedly useful. We can draw a few conclusions from our observations above:

  1. Start with the problem. Clarifying the problem up front shows that your advice is practical.
  2. Be specific. Removing ambiguity makes advice easier to use.
  3. Explain yourself. Justifying your reasoning helps your subjects learn.
  4. Provide compelling examples. Make sure you hit both what and when.

So the next time you’re offering some advice, don’t just stop there — offer some advice that is really, truly useful. Your community will thank you.