HNHacker News
TopNewBestAskShowJobs

whichdan

1,260 karma · joined February 3, 2011

(They/Them) Director of Engineering in Boston
submissionscomments
whichdan··on Joyent Moves to Establish Node.js Foundation
http://jquery.com/browser-support/

jQuery 2.x dropped support for <= IE8.

whichdan··on At some startups, Friday is so casual that it’s not even a workday
A little napkin math for anyone else doing comparisons:

28.9 hours * 52 weeks ~= 1500 hours

---

37.5 hours * 48 weeks ~= 1800 hours

37.5 hours * 47 weeks ~= 1760 hours

37.5 hours * 46 weeks ~= 1725 hours

37.5 hours * 40 weeks ~= 1500 hours

So even if you have 4 weeks off and 10 holidays, Treehouse still expects ~225 hours less work per year, or the equivalent of having 10 weeks off and 10 holidays at a normal 9-5 job with a half hour lunch. Treehouse likely gives 2 weeks off, 10 holidays, and 52 Fridays off :)

whichdan··on Ask HN: What's the problem with AngularJS?
For React, you should be comparing React + Flux to Angular.

The biggest problem with Angular is that it has a very steep learning curve, and writing bad Angular code is worse than writing bad jQuery soup.

- Using watchers/observers are encouraged, which makes control flow impossible to read for sufficiently complex pages. It effectively creates a potential side effect on any variable that can't easily be traced, and multiple watchers can casacade changes to eachother.

- Because of the way watchers/events work, Angular's digest loop implements a TTL, where it will keep evaluating watchers/events until there are no more changes, with a hard stop at $TTL+1. While this solves a lot of problems, it can make it very difficult to monitor state changes in the view, when a console.log/debugger/breakpoint will get triggered ten times as often as you'd expect.

- Angular has a lot of terminology[1], and each concept has its own set of idiosyncracies. When you combine this with the additional bootstrapping logic in Jasmine (and things like isolateScope), it ends up being very complex for a developer's first framework.

- Parent/Child relations in Angular are inferred from the structure of the DOM. This means you need to read your templates to figure out how your app is structured, and you'll end up with tight coupling unless you're diligent about your design decisions.

- It's very easy to let a lot of view logic slip into ng-bind and similar attributes. All of this logic should be extracted into objects and unit tested, but this means that a lot of the convenience of using Angular's declarative syntax end up being minimal at best.

- Like any framework -- expanding on what #quadratini said -- you need to use Angular's built-in libraries to do anything. While the syntax is reasonably similar, $timeout, $interval, $http, $q, etc all need to hook into the digest cycle, and this means you'll be wasting time figuring out when to call $apply or when to wrap a piece of code in $timeout just to get it to play nicely with Angular.

Angular is very powerful and not necessarily a bad framework, but based on my experience using it in a team environment for the past year and a half, unless everyone is senior-level at Javascript, you're going to quickly end up with a lot of hard to maintain, mediocre code.

[1] https://docs.angularjs.org/guide/concepts

whichdan··on Destructuring and Recursion in ES6
I should have been a little more explicit: the string interpolation, though not the focus of the article, is part of what interests me w.r.t. readability.
whichdan··on Destructuring and Recursion in ES6

  const description = (nameAndOccupation) => {
    const [[first, last], occupation] = nameAndOccupation;  
    return `${first} is a ${occupation}`;
  }
  description([["Reginald", "Braithwaite"], "programmer"])
  //=> "Reginald is a programmer"
This is going to make code a lot more readable. I'm excited!
whichdan··on Ask HN: Who is hiring? (February 2015)
Yeah, we're definitely interested in seeing what's possible with isomorphic Ember or React code. We don't necessarily require Javascript developers to come in with Node.js knowledge, but they should be interested in learning and a desire to holistically understand the web stack they're building on.
whichdan··on Ask HN: Who is hiring? (February 2015)
Good catch! I said "front-end developer" but really we're just looking for smart full-stack developers or Javascript developers who are comfortable working across the stack. I've updated my post to reflect that.
whichdan··on Ask HN: Who is hiring? (February 2015)
Boston, MA (Washington Square in Brookline) - Full-Time

Society of Grownups https://www.societyofgrownups.com/

Want a chance to build financial education software from the ground-up?

Society of Grownups offers in-person and online classes, chats, supper clubs, guest speakers, special events, and presentations—all arranged around things that matter to adults, from good food and fine wine to career advancement, building a home, being a good parent, or simply finding balance. Our cozy storefront in Washington Square can host classes of up to 20 people, events of up to 50, and even more online with your help!

We're looking to fill several new positions, and we need a Back-End Developer (Ruby + Rails), Javascript / Full-Stack Developers (Node.js + Ember), a Mobile UI Engineer (We can try out React Native!), and a Test Engineer (to help us reach TDD zen).

We're backed by MassMutual, so you'll get the stability of a 160 year old company, with the environment of a startup that runs marathons, not races.

We offer exceptional benefits, including health/dental/vision/life/disability, 5% 401(k) matching, flexible hours, and work-from-home days.

Interested? Send any questions, or a short cover letter and resume to jobs@societyofgrownups.com

whichdan··on Ask HN: Event-Driven Programming vs. Object-Oriented Programming
It depends on how you want to handle message passing. Would your architecture be simpler if you could decouple your sender and receiver? It can make it harder to track errors (as in, where the message came from, determining who is listening to it, or tracking down circular logic), but it does give you some very nice options for decoupling. I would strongly suggest looking through the design patterns used in Twitter Flight, which is a framework based largely on an evented system.
whichdan··on Ask HN: How can a programmer optimize learning after getting a job?

  * I sense that what you work on has a lot to do with how much you learn. If true, how do you end up in an environment where you're learning a lot?
Ask during your interview! If a company has a culture of learning, they'll usually be very upfront about it.

  * I sense that who you're around has a lot to do with how much you learn (because of guidance and mentorship). How do you end up in an environment where you're surrounded by the right people?
Again, you'll have to scope this out during your interview. It's definitely true that you need good teammates in addition to a culture supportive of learning.

  * Is it a good idea for more experienced programmers to still take classes? Read books? Etc.
Definitely. I find that I read more programming books now than when I started learning. The big difference is that I'm reading to learn about new concepts and ideas, rather than "how does this piece of syntax work."

  * What are the skills worth having? Is it worth learning all the different frameworks? Being familiar with different levels of abstraction (hardware, architecture, systems level, scripting level...)? Drilling math and logic?
There's value in everything you listed, but becoming proficient in all of them is a life-long task. Find what interests you and focus on it!

  In general, how can a programmer learn as much as possible?
The key is to spend every waking minute programming.

  And a related but tangential question, if you're a good programmer, how did you get good?
Wrote a lot of code, and constantly critiqued everything from the code I wrote to the tools and processes I used.
whichdan··on The Benefits of a Lunch Hour Walk
I love walk-and-talk meetings. They're the only ones where I feel like I can really speak freely. That, and it's quite nice to take 20 minutes to grab an iced tea on a mellow 70* day.
whichdan··on Ask HN: Screencasts of skilled developers?
Why would I take a screencast of myself reading HackerNews?
whichdan··on Why Clojure?
What format would you prefer instead? YAML?
whichdan··on Remote Working – 3 Year Retrospective
I think you're hugely overestimating how many US companies support remote working.
whichdan··on Ask HN: What's wrong with my JS?
As someone who has interviewed 50+ developers in the past six months: that code sample would absolutely get you an in-person interview. Your code is fine and the company was probably just giving you a cop-out answer for whatever reason. Don't be discouraged; you should keep interviewing!
whichdan··on Elon Musk AMA
If you just want to read the questions/responses: http://www.reddit.com/r/tabled/comments/2rh6si/table_iama_i_...
whichdan··on Ask HN: Should I post mediocre and/or small projects on GitHub?
From an interviewer's perspective, they just want to see that you can use GitHub and write some code that looks well-formatted and well-reasoned. Nothing is more disheartening than opening up someone's GitHub profile and seeing 70 repositories, most of which have less than 10 commits, or are just forks.

I'd recommend using GitHub however you want, and when you want to apply for jobs, create a small website on GitHub Pages highlighting your best projects. If you can intelligently talk about your different projects and how you improved between them, that will be a hugely positive signal when applying for a junior position.

whichdan··on Ask HN: What to Ask in a Job Interview in Response to “Any Questions?”
If they've already answered all of your questions, let them know what you were intending to ask, and what your take on their answer was. It shows that you did have questions, were intersted in the answers, and that they did a solid job of explaining the company/position to you.
whichdan··on Apple has lost the functional high ground
I've experienced a similar issue with my 2012 iMac: after waking from sleep, I find that all of my terminal tabs are in a "Restored" state, so the history is correct, but anything running ends up detached. It's frustrating, and only started happening with Yosemite.
whichdan··on Ask HN: I'm going to present technology jobs to 400 16yo,what should I tell them?
Something that might be relatable: show a few screenshots of Angry Birds, and talk about the different roles that went in to making it, such as UI programmers, physics programmers, project managers, designers, etc. That also gives you a great starting point for showing how "a programmer with a physics background" can build anything from games to spaceship software. You could also use Angry Birds as an example of entrepreneurship, both in the sense of "what would a minimum viable Angry Birds be?" and how it took several less popular game launches to get to that point.
whichdan··on Mistakes Node.js Developers Make
Using commas is a little bit nicer if you tend to log objects frequently.
whichdan··on Obfuscating “Hello World” in Python
Brainfuck relies on pointer arithmetic, while this is using bit shifting.

Brainfuck commands: http://en.wikipedia.org/wiki/Brainfuck#Commands

Bit shifting: http://stackoverflow.com/a/141873/58740

whichdan··on Why I like XSLT
The cool thing is that jQuery/Sizzle can use normal DOM selectors on an XML document, so there is a little flexibility there, and like you said, MutationObserver is pretty excellent.

Getting rid of the noise is my biggest concern. Ideally, a developer should never have to know about or touch the HTML that's being generated. It's a lofty goal, for sure.

whichdan··on Why I like XSLT
I'm very interested in working on a Javascript framework where you work directly with XML (for data and event binding) and let XSLT handle transforming it to HTML -- imagine React, except you work with XML instead, and treat it as an interface for your HTML.

Email me if you'd like to chat about it!

whichdan··on AWS CodeCommit
Does GitHub need to do anything beyond hosting git repos, though?
whichdan··on Skifree in JavaScript: Rough patch in life and need something to occupy me
Nice! I'd recommend changing from keyup to keydown -- it'll make everything feel snappier.
whichdan··on Ask HN: Why there's no a quick guide for setting up a VPS?
Consider server administration to have the same learning curve as picking up a new language: everything will feel unfamiliar at first, but once you get used to it, you'll start recognizing patterns and similarities between each tool that you use.

Let's say you're deploying a new Debian VM; at the bare minimum, you need to know:

- Basic Linux commands (top, tail, cat, cp, mv, ls, cd, rm, mkdir, et cetera)

- Casual vim/nano usage

- Casual less usage (mainly Ctrl-B/F)

- Knowing that `man [command]` and `[command] --h` are the easiest ways to decipher a tool

- iptables/fail2ban (security)

- Basic MySQL setup (almost everything can be done in a gui)

- Basic Apache2 configuration (vhosts, enabling mods)

- How to manage packages (apt-get update; apt-get upgrade; apt-get install [whatever])

At that point, you just need to read a few tutorials to fill in the gaps, and to figure out how to get Apache to serve files from your language of choice.

The easiest way to go about all of this is to setup a VM locally, document each step you take while configuring it, then repeat that a few times until you feel comfortable. Then you can figure out how to automate everything!

whichdan··on Ask HN: Beautiful Text Editor for OS X
Have you tried the Soda[1] theme for Sublime? It's very slick, but assuming you've tried it, our definition of beautiful is wildly different.

Do you have examples of other apps which you consider aesthetically pleasing?

[1] https://github.com/buymeasoda/soda-theme/

whichdan··on How Do You Want to Be Recruited?
As an engineer involved with recruiting: how would I stumble across your profile/resume, and how much time do you expect engineers to spend clicking through LinkedIn profiles? Would it be a positive or negative sign to you if the company that's recruiting you is having engineers filter out candidates instead of writing code?
whichdan··on Why a linked list always come between me and a great job offer
I would argue that recursion is very important. Could you elaborate on what makes it bad practice? Sure, in languages without tail-call optimization, using it instead of a loop will incur more overhead, but certain problems (like traversing directories in a filesystem, nodes in an XML document, or any tree structure) are impossible to implement otherwise. Do you have a specific scenario in mind where recursion was a poor solution to your problem?
← PreviousPage 7 of 24Next →