HNHacker News
TopNewBestAskShowJobs

prophetjohn

870 karma · joined October 20, 2011

I'm a software engineer in Austin, TX.

atxjclark@gmail.com

github.com/j-clark

linkedin.com/in/joshua-clark-0b7a6436/

submissionscomments
prophetjohn··on Rebase and merge pull requests
This is not correct. What you're describing is two different styles of merging: fast-forward and no fast-forward, as indicated by the `--no-ff` and `--ff-only` flags provided to `git-merge`

`git-rebase` will rewrite the history of the current branch. In this case, github will rewrite the history of the branch that you would like to merge such that the base commit (hence the name "rebase") or the commit that was branched off of is the latest commit on the default branch (usually master)

Then when you merge it, you'll get a merge commit or not depending on whether or not you do a fast-forward merge

prophetjohn··on Ruby on Rails Tutorial
For someone who already knows how to program and just wants to learn Rails, the official guides[1] are top notch and a great way to learn the framework without having to read a whole book

[1] http://guides.rubyonrails.org/

prophetjohn··on Giving up on test-first development
I'd describe myself as a "TDD guy." Probably the type that most of the TDD-negative comments are about. I've got quite a bit of experience doing TDD in large applications, mostly web or services for consumption by a web-app and mostly Ruby and JavaScript (a bit of Java as well). Here are some of my thoughts.

- The best test that you can write is a complete system integration test. These are usually driving a browser and integrating with a database for web apps, or making HTTP requests if it's an API / headless service. They're the best because they guarantee that the system works as a whole given whatever initial setup you do.

You can totally write these tests first. And you should. It requires you to stop and think about how the system should behave at the boundaries (interaction with the user and external systems such as a database or API). Then as you start writing the code, you don't have to do a bunch of clicking in the browser, you run a test that takes 2 seconds to know if your thing worked

- The best test that you can write is also the slowest. Got some complicated flow that behaves differently in 10 different contexts? Full end-to-end tests are too slow for this. 6 months of writing tests like this and you're looking a 10+ minute test suite, _at best_.

- If the best test you can write is also the slowest, you need more tests somewhere. If you don't have those tests somewhere, then code you write today is going to break at some point and you won't know until it hits production. This sucks. This is where unit tests come in.

- Unit tests should test exactly that, the unit. That means, the behavior of one class or function. The behavior of an object I depend on is _not_ my behavior. Therefore, if I have dependencies, you should be mocking them out. It's true that this in a way tests implementation, not behavior. But thought about another way, the behavior of one unit might be to call a method on one object and pass the result to another.

Thinking about unit tests in this way and mocking collaborators prevents the issue where you make on change and break a _ton_ of tests. It also prevents you from creating a bunch of duplicate setup when your code is broken up into lots of small objects / functions. If you don't mock your dependencies, you're setting up data for something that isn't relevant until multiple levels down the dependency chain and it's not obvious why that setup is necessary.

- Sometimes things are just too complicated and mocking all the collaborators of an object just isn't worth it. These situations should be pushed as far toward to bottom of your abstraction hierarchy as possible and then you should do an integration test from that class / function down to the bottom with no mocking.

- TDD isn't the only way to have great test coverage or the only way to write well-decoupled components, but it's hard to have bad test coverage and write highly coupled components when test-driving correctly. And when you're a year or more into building an application that's a cornerstone of your business, it's going to be super valuable to have the flexibility of a well-tested, loosely-coupled application. You won't have to spend hours in manual testing to confirm that you haven't broken anything and changes will be easier to implement.

prophetjohn··on Ask HN: Who is hiring? (March 2016)
PolicyGenius | New York, NY (NYC) | Full-Time | Onsite

Software engineer (full-stack or front-end, mid-to-senior) We're looking for multiple new team members to help us build and grow our Rails and React applications.

Our stack:

- A lightly service-oriented architecture with the backends powered by Rails and a mix of Rails, Rails and React or full React on the frontend. Whatever makes the most sense for the application in question

- We use Redux as our flux-ish implementation of choice and believe strongly in a styleguide-driven modular CSS architecture to help keep the UI maintainable. Our values:

- High-quality, robust code. We achieve this with a heavy focus on strong object-oriented design and great test coverage. We're firm believers in the benefits of test-driven development

- Collaboration and continuous learning - we pair program sometimes, we review each others code all the time and we love to pragmatically explore new technologies. We're able to keep our best practices evolving and help each other get up to speed quickly on new things.

- Full-stack skills. We're not all experts on all parts of the stack, but anyone can jump in and help wherever and as the team grows, everyone will be encouraged to rotate projects regularly to stay sharp and challenged.

About you:

- You're strong in either Rails or React (even better if both) and eager to work on both the front and back ends.

- You practice TDD and have strong opinions about why you do it.

About us:

PolicyGenius is changing the way America shops for insurance. We're an online education and shopping platform for insurance akin to TurboTax for insurance. It's a big, confusing industry and we're making it easier for consumers to understand insurance and purchase it. Check out our CEO's article in Entrepreneur about how we're disrupting the industry: http://www.entrepreneur.com/article/250095

Questions/applications: Email josh@policygenius.com

All roles: http://careers.policygenius.com/

prophetjohn··on Ask HN: Who is hiring? (February 2016)
PolicyGenius | New York, NY (NYC) | Full-Time | Onsite

Software engineer (full-stack or front-end, mid-to-senior) We're looking for multiple new team members to help us build and grow our Rails and React applications.

Our stack:

- A lightly service-oriented architecture with the backends powered by Rails and a mix of Rails, Rails and React or full React on the frontend. Whatever makes the most sense for the application in question

- We use Redux as our flux-ish implementation of choice and believe strongly in a styleguide-driven modular CSS architecture to help keep the UI maintainable.

Our values:

- High-quality, robust code. We achieve this with a heavy focus on strong object-oriented design and great test coverage. We're firm believers in the benefits of test-driven development

- Collaboration and continuous learning - we pair program sometimes, we review each others code all the time and we love to pragmatically explore new technologies. We're able to keep our best practices evolving and help each other get up to speed quickly on new things.

- Full-stack skills. We're not all experts on all parts of the stack, but anyone can jump in and help wherever and as the team grows, everyone will be encouraged to rotate projects regularly to stay sharp and challenged.

About you:

- You're strong in either Rails or React (even better if both) and eager to work on both the front and back ends.

- You practice TDD and have strong opinions about why you do it.

About us:

PolicyGenius is changing the way America shops for insurance. We're an online education and shopping platform for insurance akin to TurboTax for insurance. It's a big, confusing industry and we're making it easier for consumers to understand insurance and purchase it. Check out our CEO's article in Entrepreneur about how we're disrupting the industry: http://www.entrepreneur.com/article/250095 Questions/applications: Email josh@policygenius.com

All roles: http://careers.policygenius.com/

prophetjohn··on The Rails Doctrine
A very quick Google search for "rails rename column" will show that there's a method called "rename_column"

You can even search for "rails typo in migration" and the first result is a stack overflow post suggesting and explaining how to roll back the migration so you can edit it

prophetjohn··on Ask HN: Who is hiring? (January 2016)
PolicyGenius | New York, NY (NYC) | Full-Time | Onsite

Software engineer (full-stack or front-end, mid-to-senior)

We're looking for multiple new team members to help us build and grow our Rails and React applications.

Our stack:

- A lightly service-oriented architecture with the backends powered by Rails and a mix of Rails, Rails and React or full React on the frontend. Whatever makes the most sense for the application in question

- We use Redux as our flux-ish implementation of choice and believe strongly in a styleguide-driven modular CSS architecture to help keep the UI maintainable.

Our values:

- High-quality, robust code. We achieve this with a heavy focus on strong object-oriented design and great test coverage. We're firm believers in the benefits of test-driven development

- Collaboration and continuous learning - we pair program sometimes, we review each others code all the time and we love to pragmatically explore new technologies. We're able to keep our best practices evolving and help each other get up to speed quickly on new things.

- Full-stack skills. We're not all experts on all parts of the stack, but anyone can jump in and help wherever and as the team grows, everyone will be encouraged to rotate projects regularly to stay sharp and challenged.

About you:

- You're strong in either Rails or React (even better if both) and eager to work on both the front and back ends.

- You practice TDD and have strong opinions about why you do it.

About us:

PolicyGenius is changing the way America shops for insurance. We're an online education and shopping platform for insurance akin to TurboTax for insurance. It's a big, confusing industry and we're making it easier for consumers to understand insurance and purchase it. Check out our CEO's article in Entrepreneur about how we're disrupting the industry: http://www.entrepreneur.com/article/250095

Questions/applications: Email josh@policygenius.com

prophetjohn··on Ask HN: Who is hiring? (December 2015)
PolicyGenius | Brooklyn, NYC, NY | Full-Time | Onsite

Senior front-end engineer / architect:

- You’re a front-end engineer with a sharp focus on clean design and modular, component-based code.

- You have a strong opinion on BEM/OOCSS/SMACSS or the modular CSS architecture of your choice

- You believe in the value of creating and maintaining a living styleguide.

- You’ve contributed to a Rails and/or React app, creating maintainable stylesheets (we use Sass) and JavaScript (we use React and ES 6+).

- You follow best practices (browser testing, refactoring, consistent code standards).

Full-stack software engineer (mid-level):

- You've got experience contributing to a Rails or React application

- You're comfortable at all levels of the stack and excel at one or more levels

- You understand and believe in the value of pair programming and test-driven development

- You've got strong opinions on how to architect a Rails and/or React application

About us:

PolicyGenius is changing the way America shops for insurance. We're an online education and shopping platform for insurance akin to TurboTax for insurance. It's a big, confusing industry and we're making it easier for consumers to understand insurance and purchase it. Check out our CEO's article in Entrepreneur about how we're disrupting the industry: http://www.entrepreneur.com/article/250095

Questions/applications: Email josh@policygenius.com

prophetjohn··on Ask HN: Who is hiring? (November 2015)
PolicyGenius | Front-End/UI Engineer | Brooklyn, NYC, NY | Full-Time | Onsite

The role:

We're looking for a mid-to-senior-level front-end/UI engineer to help us build and maintain the UI of our apps.

About you:

- You’re a front-end developer with a sharp focus on clean design and modular component-based code.

- You have a strong opinion on BEM/OOCSS/SMACSS or the modular CSS architecture of your choice

- You believe in the value of creating and maintaining a living styleguide

- You’ve contributed to a Rails and/or React app, creating maintainable stylesheets (SASS) and JavaScript.

- You follow best practices (browser testing, refactoring, consistent code standards).

- You know how to ask the right questions and are comfortable articulating your thoughts and decisions.

About us:

PolicyGenius is changing the way America shops for insurance. We're an online education and shopping platform for insurance akin to TurboTax for insurance. It's a big confusing industry and we're making it easier for consumers to understand insurance and purchase it. Check out our CEO's article in Entrepreneur about how we're disrupting this industry: http://www.entrepreneur.com/article/250095

Questions/application: Email josh@policygenius.com

prophetjohn··on Ask HN: Who is hiring? (October 2015)
Full-time | Software Engineer | PolicyGenius | Brooklyn, New York (NYC)

We're PolicyGenius and we're building an online education and shopping platform for insurance. We're looking for full-time, mid- to senior-level, front-end and full-stack software engineers to help us build out our Rails and React architecture.

If you're interested, you should email me at josh@policygenius.com. I'm an engineer here, so also feel free to just shoot me a message with any questions.

Further details:

WHAT WE'RE LOOKING FOR

+ You like Ruby and React. You're a minimalist and a pragmatist who likes to write clean code.

+ You have designed, deployed and scaled real-world Rails apps.

+ You consider testing to be an integral part of your coding workflow.

+ You follow best practices (testing, continuous integration, refactoring, consistent code standards).

PERKS

+ Competitive salary

+ Great benefits (we’re an insurance startup after all).

+ Ground-floor member of a startup team.

prophetjohn··on Ask HN: Who is hiring? (September 2015)
Full-time | Software Engineer | PolicyGenius | Brooklyn, New York (NYC)

We're PolicyGenius and we're building an online education and shopping platform for insurance. We're looking for full-time, junior and senior, front-end and full-stack software engineers to help us build out our Rails and React architecture.

If you're interested, you should email me at josh@policygenius.com. I'm the VP of Engineering here, so also feel free to just shoot me a message with any questions.

Further details:

WHAT WE'RE LOOKING FOR

+ You like Ruby and React. You're a minimalist and a pragmatist who likes to write clean code.

+ You have designed, deployed and scaled real-world Rails apps.

+ You consider testing to be an integral part of your coding workflow.

+ You follow best practices (testing, continuous integration, refactoring, consistent code standards).

PERKS

+ Salary range: $100 - $140k

+ Great benefits (we’re an insurance startup after all).

+ Ground-floor member of a startup team.

prophetjohn··on Ask HN: Who is hiring? (July 2015)
Full-time | Senior Software Engineer, Front-end Engineer | PolicyGenius | Brooklyn, New York (NYC)

We're PolicyGenius and we're building an online education and shopping platform for insurance. We're looking for a full-time engineer to help us build out our Rails and React architecture.

If you interested, you should email me at josh@policygenius.com. I'm the VP of Engineering here, so also feel free to just shoot me a message with any questions.

Further details:

WHAT WE'RE LOOKING FOR

+ You like Ruby and React. You're a minimalist and a pragmatist who likes to write clean code.

+ You have designed, deployed and scaled real-world Rails apps.

+ You consider testing to be an integral part of your coding workflow.

+ You follow best practices (testing, continuous integration, refactoring, consistent code standards).

More information:

https://policygenius.com

https://angel.co/policygenius

prophetjohn··on Ask HN: Who is hiring? (June 2015)
Full-time | Senior Software Engineer | PolicyGenius | Brooklyn, New York (NYC)

We're PolicyGenius and we're building an online education and shopping platform for insurance. We're looking for a full-time senior software engineer to help us build out our Rails and React architecture.

If you interested, you should email me at josh@policygenius.com. I'm the VP of Engineering here, so also feel free to just shoot me a message with any questions.

Further details:

WHAT WE'RE LOOKING FOR

+ You like Ruby and React. You're a minimalist and a pragmatist who likes to write clean code.

+ You have designed, deployed and scaled real-world Rails apps.

+ You consider testing to be an integral part of your coding workflow.

+ You follow best practices (testing, continuous integration, refactoring, consistent code standards).

PERKS

+ Salary range: $100 - $140k

+ Great benefits (we’re an insurance startup after all).

+ Ground-floor member of a startup team.

prophetjohn··on Tell HN: Thank you whoishiring, a.k.a. Matthew Walsh-Cloonagh
Shameless plug for a Chrome extension that I wrote that helps with this a bit (if you use Chrome).

https://chrome.google.com/webstore/detail/hacked-hacker-news...

prophetjohn··on Ask HN: Who is hiring? (May 2015)
PolicyGenius | Brooklyn, NY (New York, NYC)

Positions:

We're looking for full-stack and front-end engineers who like Rails and React to join us in our Williamsburg office overlooking the East River.

About PolicyGenius:

We're a digital insurance broker for the self-service consumer. Insurance is confusing and filled with sleazy sales folk who try to sell you things you don't need. We're all about educating the consumer to help them determine what kind of insurance coverage they need and then to help them find the best deals on insurance.

Want to know more? Check out https://www.policygenius.com or https://angel.co/policygenius/. Or just email me at josh@policygenius.com and I'd be happy to answer any questions

prophetjohn··on How Spelling Keeps Kids From Learning
I'd be interested to hear what the definition of "everyday literacy needs" is, because I've had a similar experience in the US. Unless there is a large concentration of people who are actually mostly illiterate in rural areas, this statistic must be misleading.
prophetjohn··on The Groovy project is looking for a new home
The docs seem to state otherwise

   One instance of where this is handy is for 
   returning a 'sensible default' value if an 
   expression resolves to false or null
http://groovy.codehaus.org/Operators#Operators-ElvisOperator(?:)
prophetjohn··on Show HN: A ReactJS Grid Component with infinite scroll, customization, and more
Angular UI-Grid has horizontal scrolling and is pretty feature-rich overall

http://ui-grid.info/docs/#/tutorial/191_horizontal_scrolling

prophetjohn··on The Groovy project is looking for a new home
I haven't used Groovy much, so I may be completely missing something here, but how is the elvis operator different from a simple guard in Ruby?

Based on the docs for elvis, it looks like

    potentiallyFalsyValue ?: safeDefault
is exactly equivalent to

    potentially_falsy_value || safe_default
in Ruby

Further, the null-safe operator seems to be the same as #try in Rails and overuse of either is probably a bit of a smell that you might be violating Tell Don't Ask

prophetjohn··on Ask HN: Who is hiring? (February 2014)
New York, NY (NYC) - Pivotal Labs

We're trying to change the way the world builds software. We need more software engineers and designers to help us.

Come work with us and get free breakfast and beer, sane working hours (40 hour weeks) and some stiff ping pong competition.

We're hiring for our other offices, as well. Check out http://www.pivotallabs.com/careers and shoot me an email if you have questions.

prophetjohn··on Poll: Where are you currently living?
New York
prophetjohn··on Pivotal Buys Xtreme Labs for $65M in Cash
It's not the same thing. Labs is part of the greater Pivotal umbrella which includes SpringSource, Cloud Foundry and others.

There is no Cloud Application Platform Group at Pivotal Labs. This is also part of the greater Pivotal umbrella. Rob oversees that group and Pivotal Labs, which he founded.

I'll admit that we do sometimes colloquially refer to Labs as just "Pivotal," but that's not what the name Pivotal is referring to in what you're quoting. It's referring specifically to the company named Pivotal (http://gopivotal.com/)

prophetjohn··on Pivotal Buys Xtreme Labs for $65M in Cash
You're thinking of Pivotal Labs.
prophetjohn··on Pivotal Buys Xtreme Labs for $65M in Cash
To hopefully clarify a little, Pivotal is the "joint venture" of EMC and VMware to which the article refers. Big data in the cloud is the idea behind the business.

Pivotal Labs was purchased by EMC, though, and is thus a part of Pivotal. I can't say for sure, but I'm betting that's where the name comes from.

Source: Pivotal Labs employee.

prophetjohn··on Open plan offices attract highest levels of worker dissatisfaction
A lot of you guys would absolutely hate to work where I do. Next week is my last week, but for unrelated reasons.

We're an open office plan and I love it. I couldn't imagine working in an office where everyone is quietly tucked away in their offices. Worth mentioning, is that we're a pair programming shop and everyone on the team is a big fan of pairing all the time.

But it is loud as shit in the team room. We have a Spotify playlist constantly going in the background. When a BA passes a story for completion, this is signified by the ringing of a cowbell, at which point everyone will pound on their desk and play with noise makers to celebrate. That happens a few times a day. When a build breaks, a siren goes off and noises play from the build computer to let everyone know.

I think part of it might be the pair programming. Before I started pairing, I was a headphones kind of guy, too. I liked it quiet and I was easily distracted. But when you're talking through a problem with your pair and you have someone to help keep you on task, it's really easy to avoid being distracted.

I guess the point is, in the right culture and with the right personalities, open office can work really well. No one complains about it being hard to focus on my team and it's rarely quiet. We also get shit done and everyone is pretty happy.

In a couple weeks, I'm moving on to another pair programming shop in an open office, but really only because I felt like it was time for me to see some different challenges. When I'm ready to move on from there, I'll probably be seeking a similar atmosphere.

p.s. I'm a pretty extreme introvert.

prophetjohn··on RedScript – like CoffeeScript, in Ruby
"Full balls" is pretty colloquial, but I imagine it was intentional. It makes sense to me.

Kind of like "balls out" or "balls to the wall." Or even "balls deep." Y'know?

prophetjohn··on An inside look at Google’s data-driven job interview process
Grading 1000 code submissions per day would be challenging. What is trying to suggest, though, was that many of those 1000 would not submit code.
prophetjohn··on An inside look at Google’s data-driven job interview process
Fair point. The companies are small and medium-sized. I'm not convinced that those models can't scale, though. One large-ish company that I know of who still does something similar is ThoughtWorks. They have on the order of thousands of employees and their interview process consists of, among other things, a take-home code submission and on-site pair programming.

If you're getting 1000 resumes per day, I think you would be able to weed out a significant number of them just by giving them a coding assignment to work on. Churning out a resume is easy, but sitting down for a few hours and writing well-designed code takes effort.

prophetjohn··on An inside look at Google’s data-driven job interview process
I think I agree with all of that. Especially the "interviewing is hard" part. But what's wrong with having someone sit in front of a computer to write some code?

At the company I'm leaving, we ask candidates to do a small project as a first pass. If the code isn't awful, we call them in to pair program with us (we're a pairing shop) on the code they wrote to improve it.

The company I'm joining just has you come in and pair (they're also a pairing shop) on projects their team is actually working on for most of a day.

I find both to be pretty good approaches. Better than having someone write code in an unfamiliar setting (the white board) to solve problems which are often, but not always contrived (write quick sort, etc.), at least.

We've had pretty good success with identifying good candidates since we switched over to this model and the place where I'm starting is a consultancy which is pretty well-regarded in the startup community, including HN, so they've probably had reasonably good success identifying talent.

prophetjohn··on An inside look at Google’s data-driven job interview process

    | Google does the same kind of software interviews as anywhere else. [...] 
    | You code on a whiteboard and it's supposed to be compilable in C or Java.
It may seem like a strange idea, but not all places interview like this. The company I currently work for doesn't do this and the one I will start working for soon doesn't interview like this.

The reasoning is that my job is not to stand in front of a white board and write syntactically correct code without the aid of an editor or compiler, so maybe there is a better way to screen candidates that directly test the skills they will use on the job.

← PreviousPage 2 of 11Next →