pashields's comments

pashields | 11 years ago | on: Stages of learning Go, with code examples

Idiomatic means "using expressions that are natural to a native speaker." It's very possible, but not idiomatic, to write functional Java (pre-8). It's often more verbose and difficult to follow because there is no real notion of higher level functions or composition, let alone immutable data structures. The guava wiki has a good example of this: https://code.google.com/p/guava-libraries/wiki/FunctionalExp....

That doesn't mean that idiomatic practices are always virtuous, but non-idiomatic code is only virtuous because it overcomes an inherent mismatch between what the user wants and what the language provides. With many languages (certainly js, java, c++) we see non-idiomatic practices guide changes to the language and then be replaced. Java gained functions to avoid the abuse of anonymous inner classes. ES6 is stealing from transpiled javascript languages left and right.

Making idiomatic code virtuous is the goal of creators and maintainers. Writing idiomatic code means that you have chosen languages, frameworks, and libraries that are closely aligned with the code you need to write and the style you want to write it in.

pashields | 12 years ago | on: The Redis criticism thread

Just to be clear, the criticism is of Redis Cluster, which has been redesigned because the first design was so lax it was effectively unusable. The real issue, is that as of right now I have no idea what the exact semantics and failure conditions of Redis cluster are. I'm not clear that anyone really knows. Salvatore thinks he knows, but we can't be sure that he does.

With all this talk of practicality, what really makes distributed systems practical is when someone can do a formal analysis of them and conclude what possible states can occur in the system. This is not work that database users should do, it is work that database implementors should do. The failure to use a known consensus system is a failure to deliver a database I can understand.

I find this all a bit disappointing since I've been a huge fan of Redis since the early days. It's an amazing tool that I still have in production, but I get the feeling that it's utility will never expand to suit some of my larger needs. Bummer.

pashields | 12 years ago | on: Ask HN: Who is hiring? (August 2013)

Adzerk - Durham, NC - Full-time, permanent - (http://www.adzerk.com)

We're looking for a devops engineer and both junior and senior developers. More info on our jobs page (http://www.adzerk.com/job-openings/)

Adzerk is focused on helping publishers make more money from their ad inventory by building a revolutionary ad serving platform. We believe that making advertising a viable business model for publishers ensures the future of a free and healthy internet. We love nothing more than helping a great publisher be rewarded for their hard work and help them continue to create awesome content.

pashields | 12 years ago | on: Ask HN: Who is hiring? (July 2013)

Adzerk - http://www.adzerk.com/job-openings/ - Durham, NC

We're looking for software engineers, both senior and junior. Our needs are all over the place, from UI to data warehousing, so there is a lot of skills you can bring to the table and many areas to play around in. We've got 10 people on the team right now and we are planning to grow!

Adzerk is a Durham, NC startup that’s helping content publishers make more money from their ad inventory by building a revolutionary ad serving platform. We serve ads for reddit, stackoverflow, and other sites you've probably heard of.

pashields | 13 years ago | on: Courtney Love does the math (2000)

The pre-internet version of this is Steve Albini's "The problem with music" which shows how major labels can end up costing bands quite a bit of money. Originally printed in Maximum Rock 'N Roll in 1993, but reproduced here on Negativland's site: http://www.negativland.com/news/?page_id=17

It's worth the read if only for the amazing end line: "Some of your friends are probably already this fucked."

Apparently, he'll be updating it for the digital age soon based this article from January: http://www.mhpbooks.com/steve-albini-to-update-the-problem-w...

pashields | 14 years ago | on: It's not a talent shortage, it's a hiring problem

People who would work out perfectly in the R&D division of SAS Institute are not necessarily great first hires at consumer web start-ups (forgetting the potential skill impedance mismatches). There are lots of implicit ideas about "how things get done" that are part of any group. These ideas are the culture.

e.g. Does the team practice TDD? Do they focus on unit tests or integration tests? How is work assigned? Does the team prototype ideas or discuss them in the abstract? If someone says something you think is wrong in a meeting, do you confront them publicly or privately? 12-hour days? Do you pick tools that are cutting edge or proven? Duct tape together two open source libs for one feature or write your own? And of course, the classic: Is it better to a) ship early with known non-critical bugs, b) ship on time with no known bugs, but inadequate testing, or c) when all/most stakeholders feel confident the project is bug-free?

These questions aren't nearly as binary as I've presented them (and there are many more). If you and your potential new team don't agree on these issues that's a poor cultural fit. Like a poor technical fit, it doesn't necessarily mean you shouldn't be hired, but it does merit significant consideration.

pashields | 14 years ago | on: First Language's Don't Matter

I can't agree with this. It's true that many languages work well as starters, but there are certainly some that don't. I think java is a classicly bad first language. There is a lot of ceremony which will take you a considerable amount of time to understand (public static void main) and it's also heavy handed on object orientation. Whether these things are useful in long run is debatable, but it's an amazing amount of conceptual overhead. Worse, unlike the overhead of low-level language like C, the pain in a language like Java comes from complex abstractions. Understanding pointers is difficult for many people, but it's mostly based on whether you understand how in memory storage works. There's a more straight forward path to that than to understanding the how/why of OO.

pashields | 14 years ago | on: Python’s Valentines Day Gift to Clojure

Some (potential) context to this is that at Clojure Conj there was a discussion of the potential for clojure expressions to become a standard data serialization format. The idea is that clojure data is significantly more rich than something like JSON.

In fact, as I understand it, some of the changes to the reader in 1.4 are aimed at working on this goal. You can read a little about this at http://dev.clojure.org/pages/viewpage.action?pageId=950382

pashields | 14 years ago | on: Path uploads your entire iPhone address book to its servers

I'm at a loss as to how this is surprising anyone. How did people think that these apps found other users you know? This is built to support: A) finding existing people on the service and B) so they can (theoretically) send you notifications if a friend joins. If you want those features (and it seems that users do), this is the only way to do it. Admittedly, most apps are more explicit about it with a "find friends from address book," but if you want to lower the friction as much as possible, this is the way to do it.

pashields | 14 years ago | on: Dear business people, an iOS app actually takes a lot of work

The author hints at, but doesn't push the issue that the cost is all really in the customization. If you were to build an app using only standard apple components, the cost would be significantly less (at least 2x). Those custom components take a lot of effort, particularly when you end up hacking Quartz.

A quick example, I implemented a very good looking custom badge system for an app. The result looked just liked design, could be generated programmatically, and worked like a charm. It also took me a couple of days to implement the whole thing in quartz. If I were doing this as consulting, that's a $2-3000 feature. These things add up very quickly, particularly if someone wants to "try a few out."

pashields | 14 years ago | on: Clojure Conj Slides

I really hope Byrd and Friedman's talk from thursday night was taped. Highlight of the conference so far for me.

pashields | 14 years ago | on: CoffeeScript Means Giving Up on JavaScript

I like having things like list comprehensions. I like having a sane scoping system (as opposed to jsl and "best practices"). I'm also pretty fond of the syntactic sugar being offered (the existential operator in particular).

Coffeescript just gives syntax to common patterns being used in js. For the most part, it feels like a bunch of really nice macros that encapsulate those patterns, making them less error-prone, easier to read, and easier to maintain. I'm not really sure what the concern here is, since most of the post seems to assert that people who use coffeescript don't know js, or that these shortcomings could be addressed equally as well by a large framework system. I can't imagine anyone actually believes the former, and while the latter may be true I don't know why that framework will be so much easier to learn, use, and maintain than the equivalent coffeescript.

pashields | 14 years ago | on: AFNetworking: A Delightful Networking Library for iOS and Mac OS X

We've only experimented with converting over to AF, but the experience has been fairly pleasant. In particular, Mattt has been very receptive to talking a few things out with me and even sent me a follow up this morning when one of my complaints was fixed. Interacting with the community is important for this sort of project, and Mattt has a good start on that.

pashields | 14 years ago | on: Cringely predicts the second coming of Java

This doesn't make any sense. It's relatively easy to horizontally scale web servers. Perhaps at huge scale this would an issue, but I would imagine it's relatively easy for most developers to line up servers/instances behind a load balancer and have at it. The database is always going to be harder to scale because it holds state.
page 1