HNHacker News
TopNewBestAskShowJobs

Shoop

872 karma · joined January 30, 2015

submissionscomments
Shoop··on QuickJS JavaScript Engine
Probably Ludvig Strigeus [0].

[0] https://en.wikipedia.org/wiki/Ludvig_Strigeus

Shoop··on SKS Keyserver Network Under Attack
> It's written in an unusual programming language called OCaml, and in a fairly idiosyncratic dialect of it at that. This is of course no problem for a proof of concept meant to support a Ph.D thesis, but for software that's deployed in the field it makes maintenance quite difficult. Not only do we need to be bright enough to understand an algorithm that's literally someone's Ph.D thesis, but we need expertise in obscure programming languages and strange programming customs.

Looking at the code [0], it looks like fairly standard Ocaml. Any particular reason it's difficult to maintain (other than the lack of popularity of FP in general)?

(It looks like the original author of the SKS Keyserver is Yaron Minsky, the guy who convinced Jane Street to use Ocaml.)

[0] https://bitbucket.org/skskeyserver/sks-keyserver/src/default...

Shoop··on Sleep Sort in Perl 6 – Aaron Sherman
Working link http://ajs.github.io/tools/sleep-sort-perl6/
Shoop··on Ask HN: I want to get a Bachelor's in CS online. What are some good programs?
I too spend about 16 hours a week on Hacker News :)
Shoop··on Comparing the Same Project in Rust, Haskell, C++, Python, Scala and OCaml
D is known for having an extremely fast compiler. In fact, Walter Bright wrote one of the fastest C++ compilers (the Digital Mars C++ compiler) before he wrote D.
Shoop··on Nim 0.20.0 (1.0 RC1) released
I believe that's the syntax for enabling a parsing mode. I think it just changed from #! to #? (to allow a nim bash shebang).

Obviously, the yikes is gone now. It was always an experimental feature, so IMO the fear of it was overblown, but it is a pretty scary idea for a feature.

Shoop··on Nim 0.20.0 (1.0 RC1) released
> The undocumented #? strongSpaces parsing mode has been removed.

I remember seeing lots of controversy over this feature a previous time Nim was posted here. Hopefully, its removal will stop people from dismissing the language outright (which would be a shame given all the things Nim has going for it).

(That being said, if people still want to embrace Wadler's Law [0], there's the hot-button topic of case/underscore insensitivity to talk about. [1])

[0] https://wiki.haskell.org/Wadler%27s_Law [1] https://github.com/nim-lang/Nim/wiki/Unofficial-FAQ#why-is-i...

Shoop··on An update on last week's customer shutdown incident
I believe the purpose of these checks is for when people's outdated wordpress install or whatever gets compromised by script kiddies. Generally, the scripts install crypto miners to mine for the hacker until your account gets shut down, running you up a huge bill in the process.
Shoop··on Vim tricks
gf is awesome. Great for navigating scripts that run other scripts and also useful for creating links within a personal wiki of markdown files without a plugin like vim-wiki. While I do use a lot of plugins, I find it's a lot better to select plugins that add to vim's editing language (vim-eunuch, vim-surround, vim-vinegar, vim-exchange, vim-angry, vim-sexp-mappings-for-regular-people, vim-commentary) rather than plugins which agglomerate IDE features onto vim (vim-wiki, nerdtree, etc).

While I do have a few of these IDE-like plugins (undotree, for example), I think it's better to try plugins which embrace the "vim way" first before investing in a full IDE-like plugin. I don't mean to gatekeep by criticizing IDE-like plugins, but just to say that spending the time to learn normal mode as a true language (verbs, nouns, and all) and using plugins that follow this idea is a worthy investment. Then, add IDE-like plugins to work around the frustrating rough edges of vim once you've milked all that you can out of it.

Shoop··on Shady Numbers and Bad Business: Inside the Esports Bubble
Yes. Ninja loses 15,000 subs every day he doesn't stream [0] (The linked article is a super interesting profile -- definitely recommend it).

[0] http://www.espn.com/espn/feature/story/_/id/24710688/fortnit...

Shoop··on The end of Cow Clicker (2011)
Also worth checking out: a response to the article by Frank Lantz, friend of Ian Bogost and character in the article [0].

[0] http://gamedesignadvance.com/?p=2383

Shoop··on The XY Problem (2014)
sshpass works nicely.
Shoop··on Hledger: Robust Plain Text Accounting
To add some context to this, the reason why packages which depend on haskell in arch are such a mess is because "the arch way" is to dynamically link everything. This has its advantages (namely security), but is not super compatible with the haskell ecosystem which is designed with static linking in mind.

Like my parent commenter, I recommend just doing everything through stack. stack-static from the AUR [0] is the convenient way to do this (rather than dragging in a few gigs of ghc dependencies for stack only to have stack create its own local ghc installation as well).

[0] https://aur.archlinux.org/packages/stack-static/

Shoop··on The lingua franca of LaTeX
Maybe you want to check out proselint? [0]

[0] https://github.com/amperser/proselint

Shoop··on Show HN: Uranus – Memo and Task App
I love the UI! Maybe this would get into the hands of more people if it were just statically hosted html + js (maybe on gh-pages) that stored your todo items in browser local storage?
Shoop··on Announcing Rust 1.35.0
Note that there is an open issue to perform the self-update before the update: [0]. Could be a good first patch for someone looking to contribute :)

[0] https://github.com/rust-lang/rustup.rs/issues/1838

Shoop··on Announcing Rust 1.35.0
This update comes with a new version of rustup which has much faster updating, especially on windows [0]. If you'd like to experience this performance improvements, run `rustup self update` before your upgrade!

[0] https://www.reddit.com/r/rust/comments/brtec1/rustup_1183_re...

Shoop··on CMU Computer Systems: Self-Grading Lab Assignments (2018)
Now there is a regrade system that lets you ask for more partial credit if you feel that the autograder was too harsh. That being said, its still relatively easy to get a lot of points off for a small mistake :(. You definitely have to be really careful during 213 exams but thankfully there's plenty of time to redo all the questions 2 or 3 times.
Shoop··on Ripgrep 11 Released
Some builds in this project are out-of-tree (the best practices cmake way with a separate build directory). Some are built in-tree (with json files, libraries, object files, LLVM ir files, and more scattered in the same directories as source code). I can't be bothered to spend the time to learn, write, debug, and maintain the correct grep invocation to do this. rg has saved me the 10 minutes it would take to do this, and 28 seconds * ~1000 grep invocations. I'm a very happy customer.

The project is a fork of LLVM. We're implementing compiler support for a new design for threading on x86.

Shoop··on Ripgrep 11 Released
Here's a blog post from the author explaining how rg works: [1]. It's from 2016 so the benchmarks may not be up to date, including for rg's competitors.

[1] https://blog.burntsushi.net/ripgrep/

Shoop··on Ripgrep 11 Released
I use rg on a very large project (8.5 million LOC, 5.2G of files including the build). Searching with rg takes less than 2 seconds and I don't ever have to think about it. rg automatically handles not searching the build files and autogenerated files which often contain lots of matches but are never what I want to search. Additionally, rg has an excellent --vimgrep feature which makes it easy to integrate with the vim quickfix list.

Vanilla grep, meanwhile takes 30 seconds -- too long to search while maintaining flow.

For me, the whole thing _is_ that it is faster than grep. AFAIK, a lot of its speed is due to breaking compatibility with grep to allow for more convenient defaults (skip binary files by default, skip .gitignore by default, etc) which also happen to be faster. For me this is a clear win-win.

Also, I have an 8 core machine. To be waiting for a 30s search knowing 7 cores are doing nothing makes me sad.

Shoop··on How to Improve MacBook Pro Performance and Thermals
$400 screwdrivers? The screwdrivers pictured were 349 rupees ~ $5.
Shoop··on When to Use TypeScript – A Detailed Guide Through Common Scenarios
Does anyone have a timestamp for Larry Wall talking about types?
Shoop··on Implications of Rewriting a Browser Component in Rust
It's somewhat similar, except C++'s [] leads to memory unsafety whereas Rust's [] on slices has bounds checks and will abort the program on failure. Your program will crash but it won't be an exploitable bug (except for a DOS). .get(), meanwhile, returns an Option so that code written using it can recover from OOB accesses.
Shoop··on MIT Hacker Tools: a lecture series on programmer tools
The unix infrastructure is still in place and widely used by nearly all cs courses.
Shoop··on Bill Gates: The Best Investment I’ve Ever Made
https://outline.com/B7NrVU
Shoop··on An Almost-Secret Algorithm Researchers Used to Break Thousands of RSA Keys
How does a blocking CSPRNG mitigate this attack?

Again, it makes no sense to say that a CSPRNG can start "running low" on entropy.

Here's what djb has to say about this:

     Cryptographers are certainly not responsible for this superstitious nonsense. Think about this for a moment: whoever wrote the /dev/random manual page seems to simultaneously believe that

    (1) we can't figure out how to deterministically expand one 256-bit /dev/random output into an endless stream of unpredictable keys (this is what we need from urandom), but

    (2) we _can_ figure out how to use a single key to safely encrypt many messages (this is what we need from SSL, PGP, etc.).

    For a cryptographer this doesn't even pass the laugh test.
(Unless you're talking about the early boot seeding problem that /dev/urandom has on linux, which is a very real problem).

For reference, here's the classic source I think you're referring to: https://www.2uo.de/myths-about-urandom

Shoop··on The “bicameral mind” 30 years on: A reappraisal of Jaynes’ hypothesis (2007)
(2007)
Shoop··on Mod Function and Negative Numbers (2000)
Python negative indexing isn't modulo. It's just shorthand for array[len(array)-i].

  >>> a = [1, 2, 3]
  >>> a[-1]
  3
  >>> a[-2]
  2
  >>> a[-3]
  1
  >>> a[-4]
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  IndexError: list index out of range
Shoop··on A Brief History of the BEAM Compiler
Elm is still implemented in Haskell. Self-hosting isn't a goal.
← PreviousPage 3 of 5Next →