HN user

tjalfi

3,487 karma

Technologist at a law firm; I don't speak for them.

Topics of Interest:

  Compilers
  Programming Languages
  Functional Programming
  Optimal Lambda Reduction
Posts163
Comments636
View on HN
arxiv.org 1y ago

The Lottery Problem: Tracing Stefan Mandel's Combinatorial Condensation

tjalfi
2pts1
www.seltzer.com 2y ago

The Back of the Envelope (1984) [pdf]

tjalfi
38pts8
fitzgeraldnick.com 2y ago

Always Bump Downwards (2019)

tjalfi
99pts72
www.youtube.com 2y ago

Important Optimizations to Apply in Your C++ Programs (2022) [video]

tjalfi
2pts0
www.cs.tufts.edu 2y ago

An Algorithm for Structuring Flowgraphs (1977) [pdf]

tjalfi
58pts5
www.ece.rutgers.edu 3y ago

Cydra 5 supercomputer: design philosophies, decisions, tradeoffs (1989) [pdf]

tjalfi
23pts6
www.patriciabriggs.com 4y ago

Casting Silver Bullets (2013)

tjalfi
57pts16
www.seltzer.com 4y ago

The Back of the Envelope (1984) [pdf]

tjalfi
2pts0
scholar.harvard.edu 4y ago

A Note on Distributed Computing (1994) [pdf]

tjalfi
2pts1
www.eli.sdsu.edu 4y ago

I can read C++ and Java but I can’t read Smalltalk (2000) [pdf]

tjalfi
110pts190
groups.csail.mit.edu 4y ago

Architectural Considerations for a New Generation of Protocols (1990) [pdf]

tjalfi
4pts0
mental-reverb.com 4y ago

The weirdest bug I've ever encountered

tjalfi
133pts36
www.ias.ac.in 4y ago

A tutorial on the principles of fault tolerance (1987) [pdf]

tjalfi
47pts1
www.andrew.cmu.edu 4y ago

Chemical Properties of Dioxygen Difluoride (1962) [pdf]

tjalfi
4pts1
citeseerx.ist.psu.edu 4y ago

Fast Convolution Using Packed Lookup Tables (1994) [pdf]

tjalfi
1pts0
www.imsc.res.in 4y ago

Succinct Dynamic Data Structures (2001) [pdf]

tjalfi
26pts7
palms.princeton.edu 4y ago

A New Basis for Shifters for Existing and Advanced Bit Manipulations (2009) [pdf]

tjalfi
16pts5
web.archive.org 4y ago

My Ugliest Bug (2013)

tjalfi
2pts0
citeseerx.ist.psu.edu 4y ago

Why Programmer-Specified Aliasing Is a Bad Idea (2004) [pdf]

tjalfi
39pts26
www.mdpi.com 4y ago

Current Stimulation of the Midbrain Nucleus in Pigeons for Avian Flight Control

tjalfi
22pts10
cvw.cac.cornell.edu 5y ago

Vectorization Virtual Workshop

tjalfi
35pts4
peter.website 5y ago

Cryptanalysis of Meow Hash

tjalfi
7pts1
www.ittc.ku.edu 5y ago

Faster Random Sampling Methods (1984) [pdf]

tjalfi
19pts3
www.researchgate.net 5y ago

A Portable Machine-Independent Global Optimizer (1983) [pdf]

tjalfi
17pts6
sun.aei.polsl.pl 5y ago

How to Squeeze a Lexicon (2002) [pdf]

tjalfi
9pts1
matklad.github.io 5y ago

It’s Not Always iCache

tjalfi
66pts19
dreamsongs.com 5y ago

Design Beyond Human Abilities (2007) [pdf]

tjalfi
23pts1
www.cs.kent.edu 5y ago

Sorting networks and their applications (1968) [pdf]

tjalfi
27pts7
www.atlasobscura.com 5y ago

The Prison Cell of Ludger Sylbaris

tjalfi
35pts0
www.stuartcheshire.org 5y ago

Consistent Overhead Byte Stuffing (1999) [pdf]

tjalfi
38pts11

That reminds me of Isaac Asimov's[0] story in Asimov Laughs Again about being confused with Arthur C. Clarke[1]. They had similar writing styles, so it was quite common for Isaac's books to be attributed to Arthur and vice versa. Childhood's End[2] was Arthur's most popular and well-known novel at the time.

At a science fiction convention, a woman said to me, "Dr. Asimov, I have just finished your book Childhood's End. I liked it, but I didn't think it was as good as your other books."

Maintaining a straight and solemn face (with an enormous effort), I said, "Yes, ma'am. I was frightfully disappointed in that book, which I thought was quite inferior. I therefore insisted it appear under the pseudonym of Arthur C. Clarke, Jr."

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

[1] https://en.wikipedia.org/wiki/Arthur_C._Clarke

[2] https://en.wikipedia.org/wiki/Childhood%27s_End

(submitter)

Here's the abstract.

Stefan Mandel is the man who won the lottery 14 times. He never disclosed the recipe he called combinatorial condensation, which enabled him to hit the Romanian lottery jackpot in the early phase of his betting career. Combinatorial condensation is frequently mixed up with another strategy known as buying the pot, which Stefan Mandel was pursuing later on. On occasion, he dropped a few hints on combinatorial condensation. The hints are applied in this work to narrow down and assess his initial recipe. The underlying theory resembles what a weekend mathematician, as he once referred to himself, may have encountered in the 1960s. Calculations indicate that he took residual risks that his method might fail. Residual risks explain why he changed his strategy from combinatorial condensation to buying the pot. The cardinality of the (15, 6, 6, 5)- and (49, 6, 6, 5)-lottery schemes shows that Stefan Mandel probably wasn't aware of lottery designs. First concepts on such topics had been available at that time, but coherent theories on combinatorial designs took off only in later decades, triggered by growing computing power, and eventually triggered by Stefan Mandel's publicity and successes in the field. But, as the comparison with actual covering designs reveals, Stefan Mandel most likely pioneered in constructing a (15, 6, 5)-covering design many years before others published about it, which he applied in the Romanian lottery.

These days, we have many better options, but back in the day, Fortran was also used for compilers (e.g., IBM's Fortran H), operating systems (such as PRIMOS[0] and LTSS[1]), symbolic computation (e.g., early Prolog implementations), and real-time control systems[2].

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

[1] https://en.wikipedia.org/wiki/Livermore_Time_Sharing_System

[2] https://webhome.weizmann.ac.il/home/fhlevins/RTF/RTF-TOC.htm...

Jeremy Allison tracked down why POSIX standardized this behavior[0].

The reason is historical and reflects a flaw in the POSIX standards process, in my opinion, one that hopefully won't be repeated in the future. I finally tracked down why this insane behavior was standardized by the POSIX committee by talking to long-time BSD hacker and POSIX standards committee member Kirk McKusick (he of the BSD daemon artwork). As he recalls, AT&T brought the current behavior to the standards committee as a proposal for byte-range locking, as this was how their current code implementation worked. The committee asked other ISVs if this was how locking should be done. The ISVs who cared about byte range locking were the large database vendors such as Oracle, Sybase and Informix (at the time). All of these companies did their own byte range locking within their own applications, none of them depended on or needed the underlying operating system to provide locking services for them. So their unanimous answer was "we don't care". In the absence of any strong negative feedback on a proposal, the committee added it "as-is", and took as the desired behavior the specifics of the first implementation, the brain-dead one from AT&T.

[0] https://www.samba.org/samba/news/articles/low_point/tale_two...

If you're interested in prior art, Ian Currie's NewSpeak was an attempt at a non-Turing complete language for safety critical systems. Most of the search results are for a different language with the same name, but "RSRE currie newspeak" should find relevant links.

At my last job, I had to patch a binary for one of our internal .NET applications. The application was hardcoded to connect to a specific database, but we needed it to work with a different one. Since the original developer was unavailable, I disassembled the application, updated the configuration, and then reassembled it.

I was going to say that maybe the initial lack of generics helped keep compile times low for go, but OCaml manages to have good compile times and generics, so maybe that depends on the implementation of generics (would love to hear from someone with a better understanding of this).

OCaml types are complex enough that monomorphization like Rust or C++ is impossible, so everything is boxed.

The memoir Where Did You Go? Out. What Did You Do? Nothing describes using a heated icepick.

You take a chestnut, and you hook the ice pick. You wait until nobody is in the kitchen, and then one kid presses down on the pilot-light button so that a long delicate blue finger of flame comes out, and the other kid puts the ice pick in the flame until it is red-hot. When it is, he bores a hole in the chestnut. You do as many as you can until somebody comes and asks you what you are doing, and then, according to your standing in the family, that day, you either plead, argue, or say, “Oh, jeez,” and slink away.

I wouldn't want to support it, but similar things have been done before.

Alexia Massalin's Synthesis[0] (pdf) operating system did JIT-like optimizations for system calls. Here's a LWN article[1] with a summary. Anyone who's interested in operating systems should read this thesis.

HP's Dynamo[2] runtime optimizer did JIT-like optimizations on PA-RISC binaries; it was released in 2000. DynamoRIO[3] is an open source descendant. Also, DEC had a similar tool for the Alpha, but I've forgotten the name.

[0] https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&d...

[1] https://lwn.net/Articles/270081/

[2] https://dl.acm.org/doi/pdf/10.1145/349299.349303

[3] https://dynamorio.org/