HNHacker News
TopNewBestAskShowJobs

srpablo

578 karma · joined August 27, 2010

submissionscomments
srpablo··on Where have all the hackers gone?
haha yeah, my comment was mostly a throwback to the genre of articles we saw in the late aughts where people were discovering dynamic programming environments, and would say the line about Ruby/Java but not mention all the cases the Java case was handling that their Ruby `File.read` example didn't. I put it in quotes not to make that exact point, but more to reference how I've seen the conversation go.

Generally I'm extremely positive on Java :-p

srpablo··on Where have all the hackers gone?
Hey, author here, and generally a fan of your contributions here. I'd love your feedback if you're up for sharing it.
srpablo··on Where have all the hackers gone?
Hi! Author here. This is fair; I can see how you feel this way from the article. That said, "I suspect he didn't know or think much about them" isn't a value judgement on him; just as I didn't care much about his point on `for` loops, we all have things we care about more and less about than others. Same with "fruitful conversation" — I meant that for both of us! I think both of us could have had a better time.

I'll try to be more mindful in the future, but I think "the original characterization doesn't trash him" is defensible. If he sees the blog and thinks its unfair, he's perfectly able to reach out (we're not actually very close). I make it clear we value different things but I never explicitly say "this guy sucks" _because I don't believe that._ He's a fantastic dev who's built great systems, but I wish we had a better framework for chatting about Golang.

Edit: I've updated the language with a few more details to better reflect how that whole interaction went down, which was a playful chat between two seasoned devs with ~12 companies between them. I didn't want to spend too much of the article on the anecdote, so I originally cut out some surrounding context (he was excited to "get into it," it's not like I just came at him when he said "I like Go").

srpablo··on “Where have all the hackers gone?” + a way to discuss programming languages
Hi! Author here.

Maybe it doesn't when applied correctly, but IME whether or not the technologies are a good fit aren't even discussed. At least in technical ("soil") terms; discussion is all about risk aversion in non-technical terms ("atmosphere") without saying that's what's happening.

I don't think folks should sweat every technical decision and I think there are many ways to fail with exotic tech (I'd be hard pressed to think of a better choice than Redis or Postgres, for example) but somehow certain technologies seem to be used even though I feel they're terrible in for cases like server programming.

Thanks for the read and thoughtful comment!

srpablo··on Lisp in an “impossible” language, the most complex Malbolge program to date
Finally! A Lisp that lets me also interop with the Malbolge ecosystem!

jk jk, super cool

srpablo··on Starting a Business Around GPT-3 Is a Bad Idea
Note also that a lot of these points, on AI businesses generally, will also apply https://a16z.com/2020/02/16/the-new-business-of-ai-and-how-i...
srpablo··on Resignation Letter
If I say "only weak people would choose to smoke; and I have never been weak" you don't think pointing out that I was once a smoker is relevant? Who's really making the contortions here?
srpablo··on Web Dark Ages
I think the "gatekeeper" of Macromedia/Adobe is a bit of an overstatement; the proliferation of open SWF player projects shows it wasn't an obfuscated or challenging format. Additionally, they partnered with Mozilla to write the the JS engine for Firefox, then ES4 got scrapped. Adobe, having already built and shipped it for Flash, rebranded it as ActionScript 3. But it literally was a JS engine (what was supposed to become JS, anyways) and meant to be shipped in the most "open web" browser in wide use!

Also, before Atom and VS Code, Adobe worked on Brackets, which was a text editor built with web technologies (pre-Electron) with a lot of the same goals.

All this to say… it still wouldn't have been my preference (I love "View Source") but there's plenty of evidence they made attempts to engage the broader developer communities and do a fair bit of work in the open.

srpablo··on Ask HN: What is your blog and why should I read it?
https://morepablo.com

Some tech, some culture, some of my life, whatever was interesting to me that day or few days. Have some favorites/highlights on that front page.

srpablo··on Programming a space invader in OCaml and OpenGL: lessons learned
Some things I ran into:

- How do I run tests? Oh, you can't really dune runtest on executables, only libraries. So how do I run tests on executables? Make a library with the core of the functionality and wrap it, I guess. Wasn't obvious.

- Tree-like heirarchy of dune files confused me since it wasn't really explained anywhere. I wanted my source files in a `src` directory; most of the examples assume your `dune` file is just hanging out with the source in the toplevel.

- Does `dune` handle dependencies (like I would declare them in a rebar.config, mix.exs, or a package.json)? Not really, it plays with opam, requiring one to read a bunch of docs for opam, and its files, and where they should go.

- The syntax of the dune files changed a bit from when I started the project (it was just moving from jbuilder -> dune). Less of an issue now, though I still question the use of s-expressions.

- Can I load an interactive shell with the definitions? There's a command in the documentation for it, but it didn't work quite right when I tried.

- If you look at other projects, you'll see they use opam files differently from one another.

- How do I add a dependency in my current switch (something like npm --save install <library>?) I tried `opam install --deps-only`, but it complained sometimes about the state of uncommitted files.

I understand why it's like this (trying to tie together a ton of use cases) and love developing in it after it's all said and done, but there are a lot of rakes to step on.

srpablo··on Programming a space invader in OCaml and OpenGL: lessons learned
While I didn't try to use Docker (though we did use the same pxhere image :-p), I also struggled to get a productive setup of OCaml. Getting a switch running wasn't the hard part, it was making the environment suitable for real project work. I had a set of Make targets in mind (test, build, shell), some language dev features I wanted (jump to definition, type of expression under cursor), and some properties of the project (pinned dependencies) such that it took a fair bit of fiddling with dune/opam to get it working https://morepablo.com/2019/08/fresco-jesus-ocaml-setup.html

I find OCaml really enjoyable once I got going, but I do think the initial setup is a major barrier to larger adoption. I think a post on howistart.org might be useful, but it'd probably be polarizing since most functions have two major ways of doing it (Jane Street vs. not, Lwt vs. Async, etc.).

srpablo··on The Wonders of the Suffix Tree Through the Lens of Ukkonen’s Algorithm
Not _quite_ a suffix tree, but a similar structure called a GADDAG is sometimes used in word-generating board games (Scrabble, Words With Friends).

GADDAGs are different because they're more like "reversed prefix" trees, but they help with the issues of placing a new word from a dictionary onto the board using the existing letters of another word.

   [1]: https://en.wikipedia.org/wiki/GADDAG
srpablo··on GitHub and US Government Developers
> Should everybody start building additional backdoors in their software that shuts it down if it detects some sort of "bad" software is being created, or possibly hook it up to a Twitter feed and shut down if people are saying bad things about the software operator?

No, I think changing license terms to "won't be used by a company which separates families or violates international human rights laws," and not renewing the contract is fine enough.

> Github emphasized that they don't know what is being done with the on-premises, firewalled software they sold to ICE.

You don't have to know what ICE is doing with your software to know what they're doing more generally.

> What about the guy delivering pizza to ICE headquarters -- is he cancelled too? He doesn't know if the "must separate the children at the border" team or the "let's arrest the leaders of this slave trafficking ring" is eating the pizza.

"Cancelling" isn't a real thing, not distinct from "public opinion," anyway. If people want to direct ire to pizza delivery employees they can, but they're not, so I don't know why you're making this comparison.

> At least to me, some of the other protests in regards to ICE have been even more obviously incoherent, like the demand for Wayfair to stop selling clean beds for detained people to sleep in.

Any endeavor with lots of actors won't be entirely coherent, unified, or consistent. Some people think that Wayfair making profits on selling beds for prisons isn't some great altruism on Wayfair's part, and ICE would have a harder time building prisons if there weren't so many people eager to supply them; I don't know how much I'm on board with that as an effective protest, but I can at least understand it.

srpablo··on Why am I interested in Elixir?
OTP releases let you build something akin to this, where the runtime and all the dependencies are bundled in; so long as you built it for the right architecture (much like a binary), it's a single command to run your app.

This used to be done with Distillery[1], but I suspect its use will go down now that Elixir has native OTP releases.[2].

In either case, there's still work behind it, but it's not like deploying Ruby, Python, or Node, where you have to be pretty careful about library paths and runtime versions.

   [1]: https://github.com/bitwalker/distillery
   [2]: https://elixir-lang.org/blog/2019/06/24/elixir-v1-9-0-released/
srpablo··on Facebook, Axios and NBC Paid to Whitewash Wikipedia Pages
A common fallacy is "if there are two strongly opposing sides, the answer is probably somewhere in the middle" and the related "if there's two strongly opposing sides, there are ways in which they're both right."

But, this is a fallacy. Vaccines don't cause autism, the Earth isn't even a little flat, and GG wasn't in any way "about" ethics in games journalism — some people were led to believe it was, but they were useful idiots who were purposefully corralled to create a smokescreen. So I'd argue strongly against claims that the Wikipedia page is "biased" if it doesn't mention the ethics storyline. e.g.

notice the lack of cultural hell during "Gerstmanngate" — https://kotaku.com/yes-a-games-writer-was-fired-over-review-...

Or how the "sex for good reviews" accusation was about a game that never received a review from that publication

Or the chat logs that were found of the channers who worked the whole thing — https://www.dailydot.com/parsec/zoe-quinn-outs-4chan-behind-...

It's understandable, for parties with less information, to think this was more balanced than it was, but I hope with appropriate information we could stop giving that side credibility.

A great comic illustrating the dynamic http://chainsawsuit.com/comic/2014/10/15/the-perfect-crime/

srpablo··on Why no one really quits Google or Facebook
lmao, or: it is actually hard to quit these companies even if you're educated, well-informed, and set to do it. Aside from many articles[1] written precisely about this, casual conversations with anyone who tries to exercise their consumer agency and giving them up talk about why it's hard to do.

Has this author ever spoken to anyone who's tried using a smartphone or OS that isn't Apple or Google? "People love free stuff" isn't a sufficient explanation, it reads like someone trying to blame consumers, to say nothing of the ethical implications behind the conscious, deliberate decisions behind each of the scandals they're happy to wave away.

[1]: https://gizmodo.com/c/goodbye-big-five

srpablo··on Inside a Failed Silicon Valley Attempt to Reinvent Politics
Apathy may be a huge part of it, but that doesn't negate the very real policies that are put in place to prevent people from voting:

- Extremely long poll lines, especially in underserved areas or those mostly populated by racial/ethnic minorities.

- Making people vote on a work day without federal holiday means that it's a financial obstacle, and employment risk. Again, this mostly hits the poor and underserved.

- No paper trail, and extremely hackable voter machines, not enough movement to fix them. [1]

- Voting Rights Act rollback: it was almost impossible to vote if you were Black in racist-run parts of the south (really, look at this [6]), and the protection against this got rolled back in 2013. There's been a bunch of voting law changes since [8].

- ID requirements that have been researched thoroughly and demonstrated to do almost nothing to reduce fraud but virtually always lower turnout, usually to minority populations. [7]

Aside from the topic of voter turnout itself, there are many other ways the democratic ideal is attacked by policy, such as gerrymandering[2], or the fact that we often refer to political parties as "half the country" when in reality only ~26% of the electorate voted for the current president[3], it was a single-digit percentage that voted for each of the eventual candidates in the primaries[4], and even "the electorate" is a lot smaller than our adult working population because felons aren't allowed to vote and we imprison more adults (mostly from poor and underserved populations) than any other industrialized nation. [5]

All this to say, yes, there's a lot of understandable apathy in our system, and we shouldn't judge their lack of desire to vote as some kind of moral failing. But there are many people who would love to participate in a democratic process but there are many concrete (and solvable) factors (with evidence and history beyond "an assumption") preventing participation, and the end result almost always favors a small group of people who don't represent the general population and already have a lot of power.

   [1]: https://www.deconstructconf.com/2018/elle-vargas-primary-directive-on-elections-interference
   [2]: https://www.washingtonpost.com/news/wonk/wp/2015/03/01/this-is-the-best-explanation-of-gerrymandering-you-will-ever-see/?utm_term=.58b2297c703c
   [3]: https://www.cnn.com/2016/11/11/politics/popular-vote-turnout-2016/index.html
   [4]: https://www.nytimes.com/interactive/2016/08/01/us/elections/nine-percent-of-america-selected-trump-and-clinton.html
   [5]: https://en.wikipedia.org/wiki/United_States_incarceration_rate
   [6]: http://www.slate.com/blogs/the_vault/2013/06/28/voting_rights_and_the_supreme_court_the_impossible_literacy_test_louisiana.html
   [7]: https://www.washingtonpost.com/news/wonk/wp/2016/02/04/new-evidence-that-voter-id-laws-skew-democracy-in-favor-of-white-republicans/?utm_term=.5ddefa4ccf27
   [8]: https://www.rollingstone.com/politics/politics-news/welcome-to-the-first-presidential-election-since-voting-rights-act-gutted-179737/
srpablo··on An experimental software development environment
Reminds me of this great Gary Bernhardt talk https://www.destroyallsoftware.com/talks/a-whole-new-world

This almost certainly won't catch on because inertia is very hard to overcome, but how amazing would it be to have computers do more of the heavy lifting for us?

(this is guided by my reaction to the product, where I saw the following:

* Syntax is a detail, you choose one you like without altering the semantics! It's a view layer.

* Static types (present in many other languages, less of a gamechanger)

* Analysis of dependencies of and users of code at-a-glance.

* in-IDE integration with social element of it

These were what struck me as the most novel bits, but I might have missed others)

srpablo··on How the Clipboard Works, Part 1
Pretty sure it's set up by JWZ to redirect on links from HN, not by HN to jwz.org links.

He's written pretty extensively (and in my opinion, not wholly incorrectly) about why the types who frequent this community is not one whose members he cares to appease.

srpablo··on Ask HN: Why isn't Prolog more popular?
I have a few ideas, but the main one is that: independent of the language/semantics, languages only really take off because of a "killer app" use case where they are required. Once that's in place, tooling is built to make it much easier to complete projects in.

As a few examples: Objective-C was only popular for years because it was required to write iOS apps. Ditto JavaScript being the only way to write for web. Ruby only got popular after Rails. C++ was the blessed way to write for Windows in the 90's. Java had a giant marketing budget, "write once, run everywhere," and was looking to be the best way to write for the web (lol applets). This isn't a perfect explanation, but in many of these cases, it wasn't about eager-vs-lazy, control flow constructs, variations in type systems, or anything related to what the language offered you, it was primarily necessity to be on the platform of your choice.

After that, tooling evolved, and they became easier to write major projects in. Why write a web app in Erlang when the JVM has every major templating system, an implementation of CommonMark, several high-performance JSON libraries, model validation, several mature build systems, and thousands of Stack Overflow answers?

This makes it hard for languages like Crystal or Nim to take off, but ON TOP OF THAT Prolog is asking its devs to completely change how they approach programming.

What would it take to make Prolog take off? A killer app. Which, in the 80's, looked like it was AI :-p

srpablo··on I’d Pay You $500k a Year, but You Can’t Do the Work
Wow there's a ton about this that I'm reacting badly to.

* It's a jobs ad; it shouldn't be frontpaged and they're not paying anyone $500k.

* Nobody says "I want 100 steaks for 200 dollars and I couldn't find it; there's a steak shortage!!" Labor markets and scarcity are a thing, I'm sorry this person isn't getting (by their own admission) the same output from their few employees as the world's most valuable companies. I wonder how good their consulting is if their reaction to tech's labor market is "the world is rigged and most developers are useless or untrustworthy."

* I'd be curious to know what the author's tech chops are. There's no shortage of non-tech people who think building an app is "simple" because "I know what I want and explained it to you" and surely the issue, should problems arise, is that the developer was subpar. "I'd pay you, but you can't do the work." Please.

This is exactly the person you avoid in your career, life.

srpablo··on Hard-won lessons: Five years with Node.js
It has maps now! This chapter speaks of them being fully supported in future versions, which have since arrived. http://learnyousomeerlang.com/maps

And even records are hardly a quirk like the ones I listed for JavaScript: as long as you remember that they're just syntax around tuples, you're hardly ever surprised by what they do. You'll never get a runtime behavior you didn't expect.

srpablo··on Hard-won lessons: Five years with Node.js
> Erlang is great but its ecosystem is tiny compared to Node's, and as a programming language it's at least as quirky as JavaScript.

I disagree with this; while the syntax is unusual for many, its semantics are extremely simple and clear. I don't think it has anything quite like:

* JavaScript having `null` and `undefined`. * JavaScript lacking have proper integers. * JavaScript strings being UTF-16, so things like "".length don't work. * Scoping of 'this'. * The unmanageable automatic typecast rules * Semicolon insertion. * JavaScript `with (x) {` (maybe a cheap shot since it's so uncommon, but we are talking about language design).

Main quirks I can think of for Erlang are when people trip up over "strings", <<"binaries">>, and iolists. But I'd love to hear where others run into proper semantic quirks.

srpablo··on Reflecting on one very, very strange year at Uber
> I'm of the opinion that the average software engineer in the USA is already overpaid and underworked with excellent benefits and low incentive to unionize.

I happen to agree that, relative to other industries, we're overpaid and get to live pretty lavishly for the little sacrifice that working on building systems with code entails.

That said, when you look at the value we generate for the people we work for, and remember how we are necessary to their wealth generation, I think it's worth having a conversation about organizing.

srpablo··on Tell HN: Political Detox Week – No politics on HN for one week
Many of us were skeptical when visible HN leadership expressed sentiments over and over like this:

https://twitter.com/paulg/status/785769454516916228?lang=en

And we, in turn, were criticized for daring to express our thoughts that, if Trump were elected, YC would play the typical role of the moneyed, comfortable, and powerful, and not use any of its significant power to work towards a better end.

Anyways, cool to put a moratorium on political discussion < 15 days before the electors vote and 45 days before Inauguration. I feel relieved, and not proven right at all.

srpablo··on How to use Elm at work
While I love Elm, after the recent release that replaced Signals, it's going to take a long time for me to bet anything with money on it. My toy app didn't have many dependencies, but when so much breaks on upgrading the runtime it's a hard sell.

(Not to disparage the change or the work behind it! I think it was the right call, and again, love the language and community. Just expressing, after the last experience, that I'll wait until 1.0 since the language is still undergoing drastic changes)

srpablo··on Go’s march to low-latency GC
I'll always be a little bitter about their VODpocalypse and retroactively muting streams with copyrighted music.

Software should serve people and they eradicated countless memories/achievements, eliminated a priceless historical record.

I don't mean to diminish how untenable the previous situation was, and I'm sure I'm underestimating the difficulty/cost of what they ended up doing. I appreciate their work, engineering, and use the service regularly. But it's an "Our Incredible Journey" part of their story and I don't want to let them off the narrative hook for it. They made ~$1b on this content, after all.

srpablo··on Abuse is indefensible
> Completely irrelevant and not true in my opinion.

Hardly, when talking about brash/abusive behavior in the context of an industry where women are underrepresented, I think it's plenty fine to mention that there might be a connection to be made.

> the gender of the poster makes no difference

Eh, I don't agree. It's well-observed in social sciences that men are given more leeway to be abusive than women are; one example is how often words like "abrasive" or "bossy" come up in performance reports: http://fortune.com/2014/08/26/performance-review-gender-bias...

Or just look at our popular media: how many male antiheroes on TV have enough audience to support them vs. women antiheroes? For every Walter White or Doctor House or Tony Soprano, how many unlikeable women are there? Roxane Gay writes about this pretty well. http://www.buzzfeed.com/roxanegay/not-here-to-make-friends-u...

> Does the gender issue really have to be shoehorned into every story?

Per above, I don't think it's "shoehorned." And I think it's fine if we talk about it more than we currently do, because there's plenty to suggest we don't talk about it enough or are insufficiently introspective about it.

srpablo··on Ask HN: What should I do if I feel burnt out?
Don't burn out. Tell them, in very frank terms, about the technical debt and demand a reasonable timeline. If they give you pushback, tell them to do it themselves or fuck off. You don't have to use those words, but you may have to.

The fact is, you're putting in 15 hour days to give them a chance to get extremely wealthy. You deserve to do so in a way that lets you live a life you are happy with. Always a relevant link http://www.jwz.org/blog/2011/11/watch-a-vc-use-my-name-to-se...

Employment in a startup can be very rewarding, but it needs to be mutually beneficial. If you're getting taken advantage of, bite back. A good friend doesn't just praise you, they criticize you when you're failing, and in this situation the company is failing you, as both an employee and a human.

Good luck.

srpablo··on What happens when you talk about salaries at Google
Decades of highly-reproduced social study performed by professionals called a "myth" by a simplistic narrative 1-liner by anonymous commenter on HN. Cool.
← PreviousPage 2 of 3Next →