aturley's comments

aturley | 8 years ago | on: Show HN: Blank – A stack-based programming language I wrote 21 years ago

I wrote Blank back in the spring of 1997 when I was a senior in high school. I had gotten kind of into a programming language called Befunge (https://esolangs.org/wiki/Befunge), and I decided to write my own weird programming language. I'll admit that it was highly derivative of Befunge, but I threw in my own little twists. For example, Befunge programs were written and executed in a fixed 2 dimentional grid, while my language was 1 dimensional and you could add and remove segments from the program. It was the first C program of any size that I had ever written.

Blank lacks the inspired audacity of languages like Brainfuck and Whitespace. It has almost none of the playfulness of Befunge. Missing, too, is the outright user-hostily of INTERCAL. It was bad, but so mediocre in its badness that it wasn't really worth remembering for most people. But it was mine.

I had never taken a programming class and I'd never really had any sort of adult who could help me much with programming at that time, so this was basically something that I did through sheer stupid stubbornness. The folks on the Befunge mailing list were nice to me and were very polite in the face of my teenage ignorance and over-confidence. In retrospect I probably could have spent the time doing something better, but one of the wonderful things about being young is that you can waste some time exploring.

aturley | 8 years ago | on: The Snake and the Horse: How Wallaroo's Python API Works with Pony

You can mostly do this by making all of your objects "ref", meaning you can have multiple readers and writers but you can't share the objects between actors. However, you can run into multithreading quickly because so much of the system is built on top of actors. For example, you can have a mutable (ref) string, but you can't easily print it out because the stdout stream is managed by an actor and you can't send a ref object to another actor.

Once you get used to reference capabilities they aren't really a big deal, but it can be hard at first, especially if you aren't thinking about your program executing thing concurrently.

Even after years of programming, most people (myself included) still instinctively think of concurrently executing code as the exceptional case, rather than as the common case. Pony makes it easy to write concurrent programs, but it makes you be explicit about how to do it safely. So I guess I see it less as a premature optimization and more as a different way of thinking about problems.

aturley | 8 years ago | on: The Snake and the Horse: How Wallaroo's Python API Works with Pony

That's a tough one. Python's dynamic typing means that you can write concise code as long as everything is of the correct type. But the consequence of this is that it is easy to accidentally express the wrong thing and only find out about it at runtime.

Pony's type system requires that you be a bit more explicit, but the tradeoff is that you get better guarantees about the correctness of your program. As your program grows in size these guarantees become more and more useful, or at least that's what I've found.

One part about Pony that can seem like an impediment to expressiveness in Pony is reference capabilities. Pony forces you to think about how objects can be accessed from different actors, which can sometimes make it hard to do things that seem like they would be simple, especially if you are new to the language. The payoff for this is that once you get the reference capabilities correct the compiler guarantees that your program will not have race conditions. In some ways, I'd say that if you're writing multi-threaded code then expressiveness that doesn't offer any safety guarantees is a false economy, because you'll probably end up rewriting the "expressive" code many times to get things right.

Python's a great language, and I don't mean to disparage it. I've used it quite a bit in my career, and for certain types of problems it is still the first tool that I reach for. In my mind, Pony excels in some areas where Python is somewhat weak, so they can live comfortably together in your programming toolbox.

aturley | 8 years ago | on: Some high level information about the Pony programming language

I'm glad it was useful! As far as the naming of pony-stable goes, we've had some conversations about that. We use Pony where I work, and sometimes we can confuse ourselves when someone says "Pony stable" (especially back when we were maintaining our own fork of Pony).

aturley | 8 years ago | on: Why we used Pony to write Wallaroo

That's great! We're collecting stories about peoples' first impressions of Pony (https://www.ponylang.org/categories/my-first-pony), so if you're interested in contributing to that please get in touch.

I'm an engineer at Wallaroo Labs and I've been learning Go so that I can add a Go API to Wallaroo. Your analysis looks pretty spot-on based on my experience.

The buildmodes is go definitely make it easy to call Go from other languages. The trickiest thing I've run into so far with calling Go is that you aren't supposed to hold on to Go pointers outside of Go code, so I'm having to jump through some hoops to hold on to objects between calls.

I have an RFC for Pony that I need to finish up that will let you call Pony function from C. I'm planning on getting around to that soon, as I think it will help improve our FFI story.

aturley | 8 years ago | on: Why we used Pony to write Wallaroo

Sorry to hear that. As far as I know the documentation should be up to date, but it's entirely possibly you've found an issue.

If you like you can hit up the mailing list (https://groups.io/g/wallaroo) or the IRC channel (#ponylang on freednode, https://webchat.oftc.net/?channels=wallaroo) to see if anybody can help, or if you think you've found a bug you can file an issue in github (https://github.com/ponylang/ponyc/issues).

UPDATE: I'm glad to hear you got it working!

aturley | 8 years ago | on: Why we used Pony to write Wallaroo

Pony does not do preemptive scheduling. Pony actors have behaviors, which can be thought of as methods that handle messages that are sent to the actor; these are the unit of scheduling, and a behavior runs from beginning to end without preemption. Multiple behaviors can run at the same time, but only one behavior per actor can be running at any time.

There is currently no equivalent to Distributed Erlang, but that's something that the creator of the language has been looking into.

aturley | 8 years ago | on: Why we used Pony to write Wallaroo

I'm not sure which features of Erlang modules you're interested in comparing to Pony classes, but I'll take a stab at trying to answer.

Pony classes are defined using a "class" keyword. Classes have properties and functions, where functions are like methods that you would find in a language like Java. Pony supports structural subtyping via interfaces and nominal subtyping via traits, and it disallows multiple inheritance.

I'm not sure how much that helps, but if you have more specific questions I'd be happy to try to answer them. I'm a little rusty on my Erlang, but hopefully it will come back to me.

aturley | 8 years ago | on: Why we used Pony to write Wallaroo

I'm also an engineer at Wallaroo Labs. A while back I wrote up some information for people who were interested in Pony:

https://gist.github.com/aturley/49b60c98306d90ffc2f981515827...

I've been using Emacs as an editor. We use a combination of make and pony-stable to build projects. For package management we use pony-stable. LLDB is your best bet for debugging, and if you follow the link above there's a link to the pony-lldb project, which is an LLDB extension that makes it easier to work with a few Pony datatypes.

aturley | 11 years ago | on: Ask HN: Who is hiring? (October 2014)

TheLadders -- Software Engineer -- New York, NY

- What We're Looking for -

TheLadders (http://www.theladders.com) is looking for full-time lead software engineers with experience building backend systems using JVM technologies. You will be responsible for helping to set the technical direction of the team, mentor other engineers, and contribute to the design and development of our products. If you're interested, email me at [email protected].

- What We Do -

Our mission at TheLadders is to help people advance their careers by providing access to information and intelligence about jobs, jobseekers, and their professional networks. From the user's perspective this is accomplished through our websites and mobile apps. Under the hood, we have a technical infrastructure that uses Java, Scala, RabbitMQ, Storm, Clustrix, Couchbase, and a variety other technologies to deliver useful information to our users.

- Who We Are -

Our engineering team is committed to growing and improving. We like to share things that we've learned on our developer blog (http://dev.theladders.com/), each engineer is given a yearly conference budget, and we have a weekly meeting called The Conclave where engineers share what they know and what they've learned in the last week. We also take care of our engineers, with unlimited vacation, comprehensive health insurance, and competitive compensation.

aturley | 11 years ago | on: Who's Hiring (October 2014 Edition)

TheLadders -- Software Engineer -- New York, NY

- What We're Looking for -

TheLadders (http://www.theladders.com) is looking for full-time lead software engineers with experience building backend systems using JVM technologies. You will be responsible for helping to set the technical direction of the team, mentor other engineers, and contribute to the design and development of our products. If you're interested, email me at [email protected].

- What We Do -

Our mission at TheLadders is to help people advance their careers by providing access to information and intelligence about jobs, jobseekers, and their professional networks. From the user's perspective this is accomplished through our websites and mobile apps. Under the hood, we have a technical infrastructure that uses Java, Scala, RabbitMQ, Storm, Clustrix, Couchbase, and a variety other technologies to deliver useful information to our users.

- Who We Are -

Our engineering team is committed to growing and improving. We like to share things that we've learned on our developer blog (http://dev.theladders.com/), each engineer is given a yearly conference budget, and we have a weekly meeting called The Conclave where engineers share what they know and what they've learned in the last week. We also take care of our engineers, with unlimited vacation, comprehensive health insurance, and competitive compensation.

aturley | 11 years ago | on: Ask HN: Who is hiring? (June 2014)

Company: TheLadders (http://www.theladders.com)

Location: New York, NY

Postion: Full-time on-site software engineer

TheLadders' mission is to match people with the jobs that are right for them. In order to do that we need a strong engineering team.

Currently we are looking for a software engineer to join our Platform Engineering Team. This team is responsible for developing and maintaining the software and systems that power our websites, mobile applications, and marketing.

A few things about us:

* We try to use the right tool for the right job; maybe a shell script, maybe multiple Storm topologies communicating via RabbitMQ and reading data from internal web services. And while we have found some tools that work, we're always willing to incorporate new ones if they give us a new way of tackling a problem.

* We know that engineering is all about understanding tradeoffs, not applying the same solution over and over again to every problem.

* Sometimes we get to work with fun new tools (Scala, Clojure, Storm, Elastic Search), sometimes we work with old standards (Java, Python, Bash). Sometimes we write cool new code, sometimes we are on call dealing with a production issue.

* We think pushing code into production is only the beginning of our job. We are responsible for what we put out in the world, including monitoring and maintainence.

A few things about you:

* You're an engineer, but you know how to think like an operations person.

* You cut your teeth in open source software, and know how to find documents, read the source, ask for help, and report a bug.

* You're excited about glamorous work, but you're willing to sometimes do shit work, because in the end somebody has do it.

If this sounds interesting and you think you'd be a good match, or if you're interested in learning the skills to become a good match, please get in touch with Andrew Turley ([email protected]).

aturley | 12 years ago | on: Ask HN: Who is hiring? (November 2013)

Company: TheLadders (http://www.theladders.com)

Location: New York, New York

Position: Full-time on-site software engineer

We are looking for great software engineers to help us match people with the perfect jobs. If you are committed to building solid software as part of a cross-functional team, we would love to hear from you. Our current stack includes JavaScript, iOS, JVM languages (Java, Scala, Clojure), MySQL, Couchbase, ElasticSeach, and RabbitMQ. While it is nice to find people who have experience in these areas, the first qualities we look for are curiosity and a willingness to learn how to do new things.

As an engineer you will help us tackle big technical problems. We have millions of users and thousands of jobs, with historical data going back nearly a decade. In order to provide our users with an experience that they are willing to pay for, we need to build smart, scalable solutions. You will be at the heart of this, designing and building products using your skills and the best available technologies.

We are committed to taking care of our engineers. We offer competitive pay, comprehensive benefits, and unlimited vacations. We also want to help our engineers grow. Inside the office you'll see this in things like our onboarding process (http://dev.theladders.com/2013/03/theladders-on-boarding-a-r...), code reviews, technical discussions, and our developer blog (http://dev.theladders.com). Outside of the office it will take the form of conferences and training programs, paid for by the company.

If you would like to learn more, please send me an email at [email protected].

aturley | 12 years ago | on: Ask HN: Who is hiring? (October 2013)

TheLadders - http://theladders.com - New York, NY

Help us find the right job for the right person.

We're looking for Frontend Developers to help build a site that's useful and enjoyable. Currently our list of technologies includes Javascript, jQuery, Sass, Compass, Backbone.js, Require.js and Jasmine, so if you have experience with these things and are passionate about them, then great, we'd love to talk to you. But we also know that things can change quickly, and the tools we use today could be obsolete in a year, so what we're really looking for is smart people who are excited about frontend development.

We take care of our engineers by providing great benefits and pay, as well as sending them to conferences and training courses to make sure that their skills stay sharp and that they are familiar with the most current industry practices and news. Our engineering team is also a recognized thought leader in Jessica Fletcher-based internet memes. And our "Make It Sew" attitude means you'll never be far from interesting and challenging work that keeps the company running. To learn more about what we do, take a look at our developer blog (http://dev.theladders.com/).

If you're down with the truth that I'm swinging, please send me an email ([email protected]) and let me know why. Priority will be given to emails that include ascii art of cats, ALF, or boats.

aturley | 12 years ago | on: Ask HN: Who is hiring? (June 2013)

Company: TheLadders (http://www.theladders.com)

Location: New York, New York

Position: Full-time on-site software engineer (H-1B negotiable)

We are looking for great software engineers to help us find the right jobs for the right people. Our current engineering projects are based on JavaScript, Java, Scala, MySQL, and iOS, so if you have experience in any of these areas then we would really like to talk to you. We are also doing things with Storm, Elastic Search, Scala, Erlang, Couchbase, and Riemann, so if these things tickle your fancy please get in touch. And finally, if you're interested in building software the right way and you want to work with a group of smart engineers who will help you learn and grow then by all means send me an email.

As an engineer you will help us tackle big technical problems. We have over one million users and thousands of jobs, with historical data going back nearly a decade. In order to provide our users with an experience that they are willing to pay for, we need to build smart scalable solutions. You will be at the heart of this, designing and building these solutions using your skills and the best available technologie s.

We are committed to taking care of our engineers. We offer competitive pay, comprehensive benefits, and unlimited vacations. We also want to help our engineers grow. Inside the office you'll see this in things like our onboarding process (http://dev.theladders.com/2013/03/theladders-on-boarding-a-r...), code reviews, technical discussions, and our developer blog (http://dev.theladders.com). Outside of the office it will take the form of conferences and training programs, paid for by the company.

If you would like to learn more, please send me an email at [email protected].

aturley | 13 years ago | on: Ask HN: Who is hiring? (May 2013)

Are you a great software engineer who is looking for a job in New York City? TheLadders is hiring.

http://www.theladders.com

At TheLadders we help match the right people to the right job; we can't do that without the right software, and we can't build the right software without the right people. We hire engineers who demonstrate an ability to work well on a team, a desire to hone their skills, and the expertise to contribute to our success. As a engineer you'll participate in the entire product lifecycle by designing, implementing, and maintaining the systems that keep our business running. While we're primarily a Java/Clustrix shop, we have projects in place or in the pipeline based on Storm, Elastic Search, Scala, Erlang, backbone.js, Couchbase, Riak CS, Datomic, Riemann, Sass/Compass, and iOS.

We are committed to taking care of our engineers. We offer competitive pay, comprehensive benefits, and unlimited vacations. We also want to help our engineers grow. Inside the office you'll see this in things like our onboarding process (http://dev.theladders.com/2013/03/theladders-on-boarding-a-r...), code reviews, technical discussions, and our developer blog (http://dev.theladders.com). Outside of the office it will take the form of conferences and training programs, paid for by the company.

If you would like to learn more, please get in touch by emailing me at [email protected].

page 2