HNHacker News
TopNewBestAskShowJobs

rokob

393 karma · joined September 28, 2013

[ my public key: https://keybase.io/rokob; my proof: https://keybase.io/rokob/sigs/ESgkGt6PHMtdoAZiSe232fgfvoTrk5teSdmzHEevRTI ]
submissionscomments
rokob··on Ask HN: Is back end dev generally easier than front end?
When I was hiring for a new startup I asked my old boss how to hire frontend people because he was exceptional at both and had built great teams which were frontend focused.

He told me don’t fall into the trap of hiring frontend skills only. Hire software engineers who happen to really know JavaScript.

This has served me really well. Every aspect of applications that we build has needs to structure code, to collaborate in teams, to build abstraction, to ship with an acceptable level of brokenness, and to have mechanisms for continuous improvement.

I’ve worked in several frontend and backend codebases and they all had aspects of difficulty and toil. However talking to lots of people about this I find that certain parts of the stack work better for your personality and talents.

I used to think of frontend as lessor because the hard things seemed to be on the backend. But then I met high caliber JavaScript engineers.

It is sort of like abstract art. Great artists have a solid foundation and then choose their own path.

It is good to get a feel for both and see what resonates with you. Also spending time on the backend can give you empathy to make you better at the frontend; and vice versa.

rokob··on Remix – A framework focused on web fundamentals and modern UX
You might be interested in inertiajs: https://inertiajs.com/

It only technically is built for Rails and Laravel but reading the “spec” and the code I got it to work pretty quickly with a Rust backend.

It would be nice for more of these frontend niceties to be built around an API contract rather than a particular JS on the server implementation.

rokob··on Tech compensation in 2021
If you know Ruby really well you might want to look at Stripe. You might be able to just apply and get an interview and see where it goes.
rokob··on The Serde Rust Framework
You can add a catch all field that captures those in a map. You can also choose to ignore things you don’t explicitly mention. It is up to you how strict you want the parsing to be.

So you can define a struct with one status field and the right annotations and you will get exactly what you describe without having to write the code and it will still be almost as fast as doing that parsing yourself.

rokob··on Launch HN: MergeQueue (YC S21) – Automate rebasing and merging for your codebase
This was my question too. I considered making a company out of Bors but didn’t think it would work because Bors mostly just works.
rokob··on Show HN: Volument – Our take on website analytics
That sounds a lot like multiple comparisons type I error as a service.
rokob··on Over the next year or so, Google will try out new office designs
I am in the same boat as you and I agree with all you say here.

I have a lot opinions on this and continue to say them internally. I encourage you to say this internally as well.

rokob··on Implicit In-order Forests: Zooming a billion trace events at 60fps
I had some time series data which was append only like this. I started looking into skip lists and realized I might as well make it deterministic where the height of a node is basically popcnt. It ended up looking and behaving a lot like this.
rokob··on Squarespace S1
R&D == software engineer salaries
rokob··on We're Building a Calendar for Work
I was confused by this at first because I was thinking we already had a calendar app that promised all this with the same name that Microsoft acquired. Then I remembered that was Sunrise not Rise. Hopefully this one isn’t as good so that it doesn’t get bought and shutdown.
rokob··on Why nullable types?
Yes Dart has generics which is how you would implement optional types yourself. The type of type system doesn't play a role here you are right. I was thinking of the really good pattern matching I have experienced usually being present with structural subtyping.

Dart is considering adding pattern matching (and real tuples!) and I think they will eventually get there. I just think that would have had to come first to make the case of optionals over nullable types more compelling.

I would call that example destructing in the normal sense and it is basically a form of pattern matching. To do that in an imperative language without pattern matching (i.e. what I am calling imperative destructuring), you end up with code like

  if (maybeFoo.isSome) {
    final foo = maybeFoo.asValue;
    ...
  }
when you really want

  if let Some(foo) = maybeFoo {...}
rokob··on Why nullable types?
I generally agree with you but the one point they make in this article that really matters for Dart is it does not have pattern matching. Dart’s nominative type system makes much of standard FP much harder than you’d imagine. I know Rust is nominal too but Rust has a lot of complexity to support these things.

It is very simple to add a Maybe and Either type to Dart (my code base has variants of these to deal with null issues) but imperative destructing is a pain. You can get most of the benefits of those techniques in user land without the language knowing about it, but I agree it still misses out on some stuff.

If Dart already had pattern matching or was willing to add it first then the ADT version could have been chosen, but without that prerequisite nullable types was the only ergonomic choice.

rokob··on How does a gas pump know to shut itself off? (1981)
Yes literally, https://www.nj.gov/labor/lsse/employee/Retail_Gasoline.html
rokob··on SEC Charges Former CEO of Jumio Inc. with Defrauding Investors
To be fair, this is just what the SEC can do. DOJ can still file charges that lead to jail but they take longer.
rokob··on Reconstructing Twitter's Firehose
> Figuring out how to deconstruct Snowflake was challenging and there is still a lot of analysis left to do.

Why don't you just read the code?

rokob··on Moving from Ruby to Rust
Useful, yes.

> as of Ruby 2.2, there are zero-performance gains using symbols over strings

This is verifiably false. Run this on a newer Ruby and you will see symbols are faster:

``` require 'benchmark'

hashes = [] 1_000_000.times { hashes << { some_key_name: 1, 'some_key_name' => 2 }} Benchmark.bmbm do |x| x.report { hashes.map{|h| h[:some_key_name]} } x.report { hashes.map{|h| h['some_key_name']} } end ```

But that isn't the reason symbols are useful. They signify intent as a constrained set of alternatives. Strings can take on any value, symbols should be limited to a set of things you know. Strings can be modified in-place, symbols are immutable.

`opts = { :adapter => :mysql }` is perfectly valid for scenarios where you are using symbol values. But the shorthand syntax for symbol keys was added later, and I agree is a bit ugly.

If you are generating symbols from input or from strings then they lose some value.

It is easy to explain the existence of symbols in Ruby especially if you are giving proper merit to the Smalltalk lineage. Erlang also has symbols for a lot of the same reasons and most would agree they are very useful there.

rokob··on Inside Rust's Async Transform
Tokyo is a city
rokob··on How I Wrote a Modern C++ Library in Rust
The epilog alone was worth the price of admission. Having one compiler tell the other what to do via code generation is a great way around the lack of ABI compatibility.
rokob··on What We Learned from Analyzing 100M Bugs
Pretty much all of these "most" findings are explainable by the distribution of the installed user base, i.e. they are not real results but just artifacts of the population sizes.
rokob··on WWDC 2018 What's New in Swift Recap
The hasher in the standard library is defined here: https://github.com/apple/swift/blob/master/stdlib/public/cor...

with some explanation for where the seed comes from here:

https://github.com/apple/swift/blob/master/stdlib/public/cor...

Within that code you will see references to Core which by default is this:

https://github.com/apple/swift/blob/82226642c2459c0f5d2054fe...

So you can see the hash function itself is deterministic given the seed it is initialized with. And the seed is generated at process start time during static initialization in C++ so it is effectively a constant for the lifetime of the process.

You can see in the code that there is a way to make hashing fully deterministic by making the seed generation not use random numbers, but it is ill-advised for a variety of security reasons.

rokob··on Phabricator – GitHub Alternative written in PHP used by the Wikimedia Foundation
I used Phabricator at Facebook with a few more than 50 people and it worked pretty well.
rokob··on Ask HN: Who is hiring? (April 2018)
Is "Senior Differential Privacy Research Engineer: Remote" a real thing? I don't see it on any of your listings. I am interested in that position if it does exist :)
rokob··on Net neutrality bill in CA
I have been struggling with this question also. The responsibility of the state government is similar to the federal government in that they are meant to represent the interests of their citizens. Within a state it is undoubtably good policy to provide a mechanism for enforcing a positive social good like utility regulation if that is what the residents of that state want. The flip side is that the internet is necessarily interstate commerce and hence the federal government can always invoke the interstate commerce clause (the same argument they use for drug policy) to do whatever they want. However, as we see states invoking their rights to designate drug policy within their borders this seems to be a natural policy extension.

I think what you are bringing up though is the quagmire that could result from trying to build a network that has to abide by 50 different regulatory systems. I would like to see an independent third party draft regulation on net neutrality that each participating state could then adopt through their own procedures. I know that probably won't happen, but it would be nice to see a form of "collective bargaining" among the states.

Personally, it is good policy for states to support net neutrality if that is what their constituents want. But the implementation might be a shit show.

rokob··on Ask HN: Who is hiring? (December 2017)
Hey it looks like your CSS isn't loading in Chrome due to mixed content protections.
rokob··on SpaceX raises another $100M
Instagram cost $1B, Whatsapp was $19B. In hindsight, Instagram was a steal at that valuation too.
rokob··on Microsoft and GitHub team up to take Git virtual file system to macOS, Linux
Interesting to see them try to fix Git when Facebook considered it (due to similar constraints) and decided to go with Hg instead: https://code.facebook.com/posts/218678814984400/scaling-merc...
rokob··on UC Berkeley research fellow Michael Cohen dies at 25
What is considered a paper in CS is different than in many other fields. That is not to say the content is not worthy of publication, just that they tend to be shorter and often are more focused on a single issue. There are also publications in conference proceedings that are usually an easier review process. Looking at his top 10 by citation count on google scholar shows most in proceedings and under 10 pages. Arguably it is more intellectual work, but the process is less arduous so the rate isn't that insane.
rokob··on Freight startup Flexport soars from ‘unsexy’ to $800M valuation
Ryan is not the typical MBA in the ways that MBAs are usually denigrated in the valley.
rokob··on Web Development in Go
http://carlosicaza.com/swiftbooks/SwiftLanguage.pdf

Swift was designed for writing apps on the mac platforms, primarily on iOS, and although somewhat debatable as a replacement for Objective-C due to it's quirks. If you want proof of that, just read between the lines in the original documentation.

Not to mention, many of the features that were called out originally are direct responses to issues with Objective-C: Optionals, Typed containers, Generics, modules, real first class functions instead of just blocks, final classes, let, etc.

rokob··on React Native Navigation Library
When you really, really, really, really, really want to be on the main queue.
← PreviousPage 4 of 5Next →