Profile cover photo
Profile photo
Nathan Smith

Post is pinned.Post has attachment
We're hiring senior front-end devs in Boston.

Attached image = Code test.
Add a comment...

Post has attachment
I sent this email to my immediate family members. I figured it's worth reminding my fellow geeks that encouraging your loved ones to "block ads" is akin to running their Windows 98 and anti-virus updates when you're home for the holidays. :)


Mi Familia:

I just wanted to pass this along…

^ You needn't read the whole article, but the reason it's alarming is that ad networks are more frequently becoming the target of hackers. In this case, Forbes dot-com.

For instance, one of Yahoo's ad providers was affected awhile back, potentially affecting 6.9 billion page views.

One of the things you can do to protect your computer is to install one/both of these browser extensions. Think of it like anti-virus software, but for web sites…

1. "Privacy Badger"

2. "Disconnect Me"

Privacy Badger is a free extension, from the Electronic Frontier Foundation.

Disconnect Me offers various tiers, some paid.

I use the Disconnect Me free version.

Personally, I use both Privacy Badger and Disconnect Me.

Not only for peace of mind — excluding potentially nefarious code, because their domains are blocked — but they also usually make pages load significantly faster.

On CNN's site, I counted over 100 extra files that didn't get downloaded, as a result of using these extensions.

See the green/red "99+" and "2" ad block counts, the upper-right of this Chrome screenshot…

Anyway, we live in a new age, where just browsing the web — without necessarily even actively installing or downloading any files — can infect your computer.

— Nathan
Add a comment...

Post has attachment
Not that any of my non-gamer friends care, but last night I posted another +Guild Wars 2 video…
Add a comment...

Post has attachment
Add a comment...

The following is from an email I sent to coworkers at projekt202, sharing my thoughts on the new Atom text editor by GitHub.

TL;DR — Atom looks promising, but Sublime Text is currently better. Atom will have a lot of catching-up to do.


My initial impression of Atom is that it feels a lot like Sublime Text (a good thing).

Here are some things I've noticed, both good and bad…


[1] BAD

It shows hidden files and directories in the sidebar of a project.

With the exception of .htaccess, that's rarely the behavior I want.

For instance, the ".sass-cache" directory is pointless for humans to look at.


[2] GOOD

It has a lot of syntax highlighters built in that you would normally need to install a Sublime plugin for (CoffeeScript, Go, LESS, Sass).​

​Note: Not an endorsement of CoffeeScript or LESS.​



​[3] BAD

​It has that weird "max line length" guide set at 80 characters by default. Realistically, who actually cares about that anymore?

It only ever existed ​because that was the exact width of a terminal monitor/window. And before that, punch-cards…

You can set this to a higher value in the settings.

But as of yet I don't see a way to just disable it altogether.



​I find myself missing the "mini map" that Sublime Text has on the right side of the editor.

I don't think Atom has that. Or at least, it's not enabled by default.​



​I also miss the ability to "peel off" a tab, like you can in: Sublime Text, Chrome, Opera, Firefox, Safari, etc.​

​Atom doesn't seem to allow for that. Though, you can drag to rearrange tabs that are already open side-by-side.​


​[6] BAD

​There doesn't seem to be the concept of "projects" as with TextMate and Sublime Text.

You can File →​ Open a directory, but I don't see a way to say "Associate this collection of files and directories at a project."

​With TextMate and Sublime, you could make a project file (saved outside of your repo) and then drag that to your dock.

That way, reopening a project is as easy as clicking an icon. I'm not sure if Atom has this, but I haven't figured it out yet.​



​There's no vertical selection. Meaning, you can't hold down Option and drag your mouse to select text in "columns."



No JSLint / JSHint.

I'm sure this will come later, via a plugin. But currently, there's no JS validation​.

To be fair, this functionality is via a plugin for Sublime Text as well, not built-in.

A missing ":" shows several resulting errors on Sublime ("!" icons in the gutter, and partial underlines of code).

The same file with the same error, in Atom shows no visual indicator of any error.



​Clicking a file in the sidebar opens the file in a tab. This drives me crazy.

In Sublime Text, it will show the contents, but won't keep the tab open if no edits were made (Saving a file without edits also keeps it open).

One might argue that Atom does it right (I think TextMate worked this way) but I prefer it to be a "glance" not an "open."​


[10] BAD

​No "current line" indicator. Sublime, TextMate, and just about every other IDE has a way to highlight the line that your cursor is on.​

​Perhaps this is in Atom, but the default skin doesn't make use of it. Either way, it's​ harder to tell where you're at when using Atom.

To be fair, Atom does highlight the line number in the gutter, but I prefer the indicator to be more obvious.
Add a comment...

Interesting article on how Google is changing their hiring practices, based on insights gleaned from big data

"Another reason is that I think academic environments are artificial environments. People who succeed there are sort of finely trained, they’re conditioned to succeed in that environment. One of my own frustrations when I was in college and grad school is that you knew the professor was looking for a specific answer. You could figure that out, but it’s much more interesting to solve problems where there isn’t an obvious answer. You want people who like figuring out stuff where there is no obvious answer."

I didn't particularly apply myself in college. I was too busy making video game levels for the Sith and Quake 3 engines (Jedi Knight 1 & 2). That led me to want to have a website, so that I could send links to friends, to download my levels.

And here I am today, doing web (and mobile) development as a career. Completely unrelated to my bachelor's or master's degree.


In case anyone cares, here's an old video game level I made…
Add a comment...

Post has attachment
Nice digestible infographic about CISPA.
Add a comment...

Post has attachment
I just emailed this to my coworkers. I figured it'd be worth sharing.



This was such a great point, from Nicholas Zakas, a (former) lead JavaScript engineer at Yahoo…

> "It's a little bit difficult for us as [front-end developers]… We're kind of unique in our field. That's because the sort of stuff that we do, is not taught in college. ​ That's huge, for the number of people we have doing this…​ So, everybody learned on their own."

I think that's why we (and everyone else) have such a tough time finding good front-end developers, as opposed to good designers or "classically trained" computer science grads ("server side" developers).

aka: Why recruiters are terrible at vetting FED candidates.


Design is self-evident. With (or without) a design degree, good/bad design is obvious.

Formal training in computer science is more measurable: CS degree, certifications, code compilation.

Anyway, that "learned on their own" aspect is also why I feel a (healthy?) sense of inadequacy with every project.

I never quite feel like I know what I'm doing. However, I take comfort in the fact that nobody else does, either.


— Nathan
Add a comment...

Post has shared content
Jack Hoffman is a 7-year-old brain cancer patient.

Yesterday, Nebraska football made his dream a reality.
Add a comment...

I though of a metaphor tonight, of why I don't really care much to argue about CSS stuff. (Soundboard, versus playing jazz.)

The following is an email I sent to a guy whose coworker was arguing with him (and I by proxy, me) over whether fluid grid systems should have percentage based, or fixed-width, gutters.

I was trying to explain why I don't really care one way or the other, and had also (in a previous email) explained that gutters in are configurable via a single Sass variable ($gutter-half).



One of the reasons I don't really like to argue about CSS (anymore) is that a lot of my job, the majority of the coding anyway, is writing JavaScript.

(Either for web-based stuff, or in Titanium – that compiles down to Android/iOS for "native" apps.)

I feel like "I have bigger fish to fry," when it comes to where I spend my time.

By way of example…

The unsemantic-grid-responsive-tablet.css file (the biggest one, with IE7 support and a tablet breakpoint) is 2137 lines long.

That's generated dynamically. Because, when it comes down to it, I'm really not a big fan of writing CSS, so I try to automate the repetitive aspects.

A project I just finished this past Friday — an iPad-centric website that works offline, and in "app" mode — ended up with 1849 lines of JavaScript, just in the tablet-specific JS file.

Needless to say, that wasn't auto-generated because it's more nuanced programming, beyond just having the Compass compiler spit out CSS from a Sass loop.

That's the part of web development that I truly enjoy. Allow me to over-simplify, using screenshots from Sublime Text's mini-map sidebar.

Code that looks like this (Unsemantic's CSS) doesn't excite me, and (probably) isn't worth arguing about…

Because really, once you grasp that class="grid-X" equals width:X% — it's as boring as it is repetitive.

Whereas, code that solves a unique problem, where there's actual functionality being built — such as the tablet JS from the aforementioned project — is way more interesting to me…

It feels like the difference between tapping out a consistent "boom, boom, boom" on a drum — that could just be recorded once and played back via soundboard — versus playing jazz, live.

I think as you "evolve" in your career as a developer, debates like "Should this be pixels or percentages?" and/or "Why did you name your class with 'grid-' in it?" will become less important.


— Nathan
Add a comment...
Wait while more posts are being loaded