HN user

oinksoft

3,796 karma

https://oinksoft.com/

Posts40
Comments804
View on HN
newatlas.com 6y ago

Eddie Paul: How to build a mechanical shark

oinksoft
1pts0
www.realclearlife.com 9y ago

Cassette Tapes Find New, Unlikely Following in Southeast Asia

oinksoft
4pts3
www.washingtonpost.com 10y ago

The Violin Thief (2016)

oinksoft
3pts0
www.nytimes.com 10y ago

An Art Powerhouse from North Korea

oinksoft
4pts0
www.youtube.com 10y ago

TempleOS: Kernel Algorithms

oinksoft
4pts0
www.48hills.org 10y ago

Don't be a Stanford Asshole

oinksoft
17pts4
dineshdesai.info 11y ago

Hotter Than Death Valley? A Summer Walk Around the Salton Sea

oinksoft
2pts0
www.perladvent.org 11y ago

Perl Advent Calendar 2014

oinksoft
4pts0
en.wikipedia.org 12y ago

Gravity Hill

oinksoft
2pts0
www.oinksoft.com 12y ago

Agile: Software Meets Agriculture

oinksoft
1pts0
www.oinksoft.com 12y ago

Testing One-off Scripts in Vim

oinksoft
1pts0
neopythonic.blogspot.co.uk 12y ago

Guido van Rossum: Tail Recursion Elimination in Python (2009)

oinksoft
1pts0
www.nknews.org 12y ago

Pig livers and blindness: Growing up in North Korea’s famine

oinksoft
6pts0
www.enyo.de 12y ago

Style Guide for Writing Comparisons in Conditions

oinksoft
2pts0
securityblog.redhat.com 12y ago

A minimal security response process

oinksoft
1pts0
www.wral.com 12y ago

Man convicted in hit-and-run killing of Seth Vidal, gets 12-24 months

oinksoft
3pts0
www.sac-home.org 12y ago

Single assignment C

oinksoft
69pts22
www.pell.portland.or.us 12y ago

Discount – a C implementation of the Markdown markup language

oinksoft
1pts0
pypi.python.org 12y ago

Zope.cooties

oinksoft
2pts0
aosabook.org 12y ago

The Architecture of Open Source Applications: SQLAlchemy

oinksoft
3pts0
littlegreenriver.com 12y ago

Joblint: How do Hacker News’ job postings fare?

oinksoft
1pts0
www.washingtonpost.com 12y ago

Man accused of teaching people to beat lie detector tests faces prison

oinksoft
236pts152
newrisingmedia.com 13y ago

Reddit Racism: An Open Secret

oinksoft
13pts10
www.guardian.co.uk 13y ago

Q&A with NSA whistleblower Edward Snowden: 'I do not expect to see home again'

oinksoft
9pts0
github.com 13y ago

Onion: HTTP server library in C designed to be lightweight and easy to use.

oinksoft
1pts0
blog.freenode.net 13y ago

Freenode April 1st quiz

oinksoft
1pts0
www.purdue.edu 13y ago

Impact: Earth A web app for calculating the consequences of a meteoroid impact

oinksoft
2pts0
github.com 13y ago

Tcd.vim: Tab-specific directories in Vim

oinksoft
3pts1
github.com 13y ago

El-get: Package manager for Emacs (like Pathogen for Vim)

oinksoft
1pts0
www.evanmiller.org 13y ago

Write A Template Compiler For Erlang

oinksoft
2pts0

Somewhat related, from my .bashrc

  for a in $(git var -l | sed -nE 's/^alias\.([^=]*)=.*/\1/p') ; do
      if ! command -v g$a >/dev/null 2>&1 ; then
          alias g$a="git $a"
      fi
  done
Which creates a shell alias prefixed with `g` for each of my configured git aliases if there is no conflict. So I get not only the `gst` command you mentioned and ones like `gco` (because I have Subversion-equivalent aliases for common commands), but more complex ones like `gstpup` (stash, pull upstream, stash pop). Combined with `alias g=git`, I seldom type "git" and the setup is pretty convenient. I've thought of making the above alias unconditionally, or report conflicts, as it can be jarring when an alias is missing. I've also considered expanding it to all git commands because sometimes my custom ones live as `git-$command` scripts and not aliases.

ML for the Working Programmer is my favorite programming book! It's fantastic because it is serious and goes into great detail about practical matters in working with SML. Its treatment of SML's module system is without match. It contains generally useful chapters on the implementation of streams, persistent functional data structures, parsers, and proof systems. My favorite thing about the book is its emphasis on designing correct programs. And the cover's pretty cool.

I don't know if this is helpful for you, but I map <c-p> to run the open buffer in Vim in the buffer's filetype's interpreter (or compile and run, etc.). For GNU APL, this is:

  nnoremap <buffer> <C-P> :write !cat - <(echo ")OFF") \| apl --script<CR>
It took some time to figure that out, but combined with https://github.com/ngn/vim-apl, it is not too bad of an editing experience.
Vim Anti-Patterns 10 years ago

Either way, mapping the arrow keys to <nop> seems wasteful. In normal mode I map up/down to :cprevious/:cnext and left/right to :colder/:cnewer, which makes error list navigation effortless. Some other good targets are the buffer, tag and location lists (with a little work you could make them context-aware too). I don't remap the arrow keys in insert mode though, it'd be annoying to have to exit insert mode only to move the cursor a few characters.

The Salton Sea is fascinating. Its bed is as low as Badwater Basin in Death Valley, and were it not inundated, it might be the hottest place in the US. A little while ago I submitted a fellow's account of hiking its perimeter during summer: http://dineshdesai.info/saltonwalk/

Apparently as recently as the 19th century, coffee was forbidden in Ethiopia (the birthplace of coffee, where its cultural importance is tremendous) by the Orthodox Church. Coffee, along with tobacco, cannabis and khat were considered "cursed plants" because they were reputed to have not dried when Christ was crucified.

The best source I could find is http://www.ijhssnet.com/journals/Vol_3_No_21_[Special_Issue_... which describes the condemnation of khat:

Khat was cursed by God forever to be chewed by humans because of causing a divine displeasure when God came to Earth and all the plants bowed before him showing ultimate respect with the exception of Khat.

This is a real problem with ML. There's competing tooling from SML/NJ and MLton, not to mention interesting, useful projects like MoscowML or PolyML. So finding reusable libraries and such is a real battle, and you can't escape knowing both MLBasis and CM, as well as SML/NJ extensions and differences in the respective Basis libraries. The underlying "problem" is that MLton is too good to ignore, but takes so long for even small programs that it's impractical for day-to-day, let alone interactive development.

That's what's so exciting about new work on MLton like this: A JIT-ing MLton, for instance, could be an amazing thing. It seems like the community has been coalescing around MLton against all odds, and any improvements to it are a big deal.

SML is nicer syntactically than OCaml, but OCaml brings so much to the table that it's hard to ignore (a simpler compilation model, niceties like named arguments, single development target, good community). Also Paulson's ML For the Working Programmer explains SML's warts well, in a historical context. It goes into great detail of some of the limitations of SML's module type safety and some of the nasty things you need to do to make functors generic and reusable, which really turned me off of the language and explained why Caml and OCaml exist. I still love SML but must concede that it's mostly a teaching language. The Little MLer is wonderful.

EC2 is a proprietary service for creating virtual machines on demand in Amazon's infrastructure, it is not a computation system. Much as a relational database system provides a framework for storing and retrieving relational data, a computation system provides a framework for performing (usually large-scale) computations, like transforming text files. It is open-ended, just as an RDBMS imposes no schema. A simple example would the processing pipeline of some web crawler.

Hadoop is one of the better known computation systems, though it does other things too (e.g. persistence with HDFS). Apache Storm is another popular computation system, particularly in the Clojure world. Onyx was created a few years ago, is implemented in Clojure, and competes with Storm (it's the first such system mentioned in the "What is it?" section of https://github.com/onyx-platform/onyx).

Onyx is distributed (meaning there are multiple nodes cooperating, typically over a network), and Jepsen is a rigorous tool for testing fault-tolerance in such systems. Being masterless (no node has central authority) is valuable for fault-tolerance. It means that in the event of a network partition, either side of the partition can continue processing as normal and recover when the partition is resolved. Jepsen simulates these and other fault conditions.

The line count of a diff has nothing to do with how focused the patch is. Some PRs are simply larger than others due to the language in use or the nature of the code being changed.

Presumably a codebase in an array-oriented language would have miniscule PRs, which is irrelevant (discussion of PL merits aside).

This is not limited to ES6+, class/inherits/super are syntactic sugar for existing prototypical OOP idioms.

It surprises me how clearly I remember the first time I used the internet in 1995 (I was barely 7). My father worked on a predecessor to modern email in the 80s and by then was no longer programming, working in telecom instead. He had a keen interest in the internet, but it was a long time relatively speaking before we could justify the expense of a computer, modem, and home connection (service provided by Erols).

He loaded up AltaVista and explained what a search engine was, in terms that I could understand, by relating it to a library catalog. I'd only used those DOS catalogs to that point, and they were picky. I carefully typed on the Power Mac's keyboard, "Davis, Jim".

As the results crawled down the screen, I knew immediately that this was a world apart from reading old Garfield books at the library, that it was something totally new (and daunting). I really didn't know what to make of it.

A few days later I snuck into the office and printed out the career statistics of "Moon, Warren".

It took a few tries to find a non-classic book I've read and own. I was surprised by the neighbors/recommendations for Henri Troyat's Tolstoy:

- George Orwell's 1984, a "Bloom's Guides" edition (Cliff's Notes-looking thing)

- Benjamin Franklin, a graphic-novel format biography of the statesman and scientist

- Gran Pionero de Beísbol, a graphic-novel format biography of Jackie Robison

- Wilma Rudolph, a graphic-novel format biography of the Olympian runner

- Martin and John, "with a frankness about sexuality rarely seen in contemporary fiction ... a haunting, daring, and heartrending debut novel that speaks of gay life"

Those results don't seem to reflect the stated methodology in the "About" section... the only commonality is that three of the five are biographies. I expected more things to do with Russian literature, or literary biographies contemporary with Troyat's.

I'm interested in the project's implementation, it's too bad it isn't open source.

Do those editors use the project's builtin namespace? gettext.install sets __builtins__._ to the translation function so that individual modules don't have to import it.

Are list comprehensions still part of ES7? It's strange that Babel removed the list comprehension transformer recently, but I haven't been following closely.

The Elixir pipe syntax is reminiscent of Clojure's ->/->>:

  (->> (range 1 10)
       (map #(* % %))
       (filter (partial > 40)))
It's nice that in languages like Haskell or ML this is trivial:
  infix |> 
  fun (a |> b) = a b
You could modify this to let NONE fall through, etc.
The “Chad” bug 11 years ago

Practically, those W3C/WHATWG regexes probably are fine, but they aren't correct. For instance they fail to match the valid address c."@".t@gmail.com because they don't handle quoted strings correctly. I'd expect they also match some invalid addresses. My understanding was that only a Perl regex can test an address against the standard: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html