Sign in with Twitter


Occasional OCaml programmer

123 Following   3,898 Followers   2,936 Tweets

Joined Twitter 6/21/09

It's not that I'm opposed to data driven methods. But there's a hardline advocacy for them that seems statistically naive. @abestanway but even simple models can be overfit. Doing this well requires real sophistication, especially when data is light.And data set size matters. Sure, Google is likely right to use a big data approach to hr. But what if you're 2 orders of magnitude smaller?Sure, simple models often outperform human judgment. But overfitting often leads to entirely bogus models.I find it odd that proponents of "big data" approaches often advocate simple predictive models without much discussion of the pitfalls.
@bobzhang1988 but 95% of code is in main repo. @bobzhang1988 it's not perfect, but we have some other (small) repos for more sensitive bits. So it's not quite mono....
@feminstwerewolf the problems it creates are highly tractable. You solve them by investing in build systems and CI tools. @rickasaurus @mwotton yeah, I'm with you. Getting all the dependencies right for a complex build really is tricky. @rickasaurus @mwotton Enough engineering in the build system will give you deterministic incremental builds.... @rickasaurus Not entirely, but when you have typed tools for dealing with your database, monorepos help you keep those up to date. @rickasaurus Our compile times are decent, but it requires constant engineering to keep it that way. Worth it, though. @mchelen @btbytes Monorepos let you refactor your whole tree to adapt to a new (typed) protocol. Types and monorepos are complimentary.Powerful type systems are enormously important for this, but it's a benefit you only really see at scale, at which point it's often too lateA key part of keeping developer velocity high is keeping the cost of managing interconnections between systems low. @njgoldbaum about 5m lines of OCaml.Indeed, places where we've had loosely goosey types for our protocols have been significantly harder to evolve.And monorepos put all the code together to make these refactorings not just possible, but relatively cheap.Types help you express dependencies between different systems in a way that makes refactoring those interconnections tractable.Combining types and monorepos does a lot to help you keep technical debt down. @yotambarnoy I disagree. PPX was I think correctly designed to unlock possibilities, without trying to solve all of the problems upfront. @yotambarnoy And the end result will be a system that's way more principled and more usable than camlp4 could have ever been. @yotambarnoy This is infrastructure that isn't quite settled yet, but is coming. @yotambarnoy Agreed. But if we treat the AST as providing stable types, and have converters between them, we'll be fine.10yr-old daughter, playing with microscope kit, cut herself on microslicer. Tears. "Quick, get some blood on a slide." "Wow, cool!" Triumph.
Retweeted by Yaron Minsky
There have been some rough patches with PPX, but all told it's made OCaml's tooling way better, and the remaining problems are being solved.Which is just what tools like this are doing. issues like cross compiler version compatibility can be solved by people outside of the core team.It's important to understand that PPX isn't a system for writing syntax extensions: it's a hook to let you build such systems.
@trishume @rhodecode Nice! Great to see these ideas spread out. I wonder if there's any connection, out of it's independent.
Jonas Salk had Asperger's. If anything, autism causes vaccines.
Retweeted by Yaron MinskyTime to announce another Jane Street Tech talk, this one featuring @ArjunGuha talking about Puppet! @kc_srk @eriangazag could you pick an arbitrary base for the merge? Or does the recursive merge point have useful properties? @eriangazag @kc_srk is there a clear semantic account in this case? @eriangazag @kc_srk the post talks about recursive merges, which I normally think of as unprincipled nonsense.Comparing current automation to the Industrial Revolution isn't actually so comforting,
Retweeted by Yaron Minsky
@jacobmcarthur and if we write extensions in in OCaml instead of elisp, startup can remain fast, even as functionality grows...I'm toying with a fresh emacs config at home with some inspiration from spacemacs. Kind of astounding how short and fast it can be.
Retweeted by Yaron Minsky @ezyang might as well be. I was just curious if this was based on pre existing terminology.
@ezyang is "expect test" an existing term of art? I think of inline capture of output as part of the definition. @luqui @ezyang wait, what do expect tests mean to you guys? Does that involve inline capturing of test output? @ezyang so any munging is done by the user, and the munged result is what ends up in the VCS. @ezyang I'm not sure what you mean here. In our case, it's the responsibility of user code to generate deterministic output. @ezyang are you adding expect tests to Haskell? That's exciting...
@Kakadu18 Jenga runs tests, creating .corrected files for all failires. Editor automation can replace original files with corrected. @Kakadu18 our editor integration had a single keystroke to accept all those charges in bulk.
Can confirm. I used expect tests at Jane Street, and have missed them every single time I've programmed since then.
Retweeted by Yaron Minsky @ploeh indeed, we passed this around internally a decade ago when we were deciding to switch to OCaml.
@ryanartecona cram is great, but having that same functionality integrated in a real programming language enables entirely new workflows. @lambdageek we do ignore whitespace only diffs, though. @lambdageek just strings! Textual diffs go a long way.My take on the Travel Ban ruling, w/ thoughts about judicial deference to the Executive Branch in the age of Trump:
Retweeted by Yaron Minsky @samth one makes code visible and obscures data; the other does the reverse. Expect tests let you get something of the best of both. @samth it reminds me of the duality between spreadsheets and traditional programs. @samth but most importantly, they're a tool for making the behavior of your choice visible, in a repeatable way. @samth and expect tests also reduce the cost of test maintenance. @samth lots of development idioms depend on constants. Testing especially so. Making testing easier encourages you to write more tests. @samth the fact that adding a new test is trivial, and the ability to interleave code and output are important too. @samth yes and yes. The lightweight workflow shifts the constants by enough to really matter.We had a similar story with OCaml. Using minority languages can make hiring easier, paradoxically.'s a workflow that's hard to appreciate until you've used it. But you've got to believe me: it's a great way to test.I've said this before, but no one believes me: expect tests are awesome. Add them to your programming language.
@jordwalke @kc_srk @damassi agreed. We'll see how it works out in practice.You must submit to WAX, the workshop on approximate computing! Happening at ASPLOS 2017. Deadline’s February 20.
Retweeted by Yaron Minsky @kc_srk @jordwalke @damassi indeed. It's only useful for concurrency. @jordwalke @damassi I'm deeply skeptical of this story, but I guess we'll learn more as the features to enable it land in OCaml. @jordwalke @damassi which I mostly read as, concurrency without explicit atomic boundaries. @jordwalke @damassi which means, even there, you don't really want "direct style" concurrency @jordwalke @damassi and even where you have it, in the but that is effectful, you should still be explicit about atomic boundaries. @jordwalke @damassi sure, but the languages that support this mostly don't exist. @jordwalke @damassi And one way or the other, readers must be able to see interleaving points in effectful code. @jordwalke @damassi effects system might help, but the details matter. @jordwalke @damassi direct concurrency means you have uncontrolled interleavings along with uncontrolled effects. Very hard to reason about. @jordwalke @damassi this is a transition I've lived through, so I'm pretty confident about it. @jordwalke @damassi and having better subtract for monadic concurrency really does make it easier to read and understand. @jordwalke @damassi In a language with effects, direct concurrency is a bug, not a feature.
@samth @jeanqasaur You might find these interesting:
Judge Robart, a George W Bush appointee, was confirmed 99-0 by the Senate. He is in fact a judge. Not ok for POTUS…
Retweeted by Yaron Minsky"So-called judge?" Appointed by President Bush.
Retweeted by Yaron Minsky