HNHacker News
TopNewBestAskShowJobs

Syzygies

3,995 karma · joined July 17, 2016

submissionscomments
Syzygies··on Living Like Nothing Matters
A far better Conan story is his private opening for Johnny Carson, remembered after Johnny's death:

https://www.youtube.com/watch?v=TazTAqBQakQ

Johnny told him "Just be yourself. That's the only way it CAN work."

Conan spends the entire bit unpacking that advice.

Syzygies··on An enthusiast’s deep dive into mechanical keyboard switches
1. Try a Leopold FC660C keyboard before getting too far down this rabbit hole, and confirmation bias gets in the way of seeing that Topre switches are nicer than any mechanical switch.

2. Then install a Hasu FC660C Controller, and start customizing the firmware. Typing, like sex, is far more about software than hardware.

3. Now prepare yourself for the split/ergo keyboard advocates. They have a point if your hands move. If you rearrange your layout so pretty much anything is nearly home row, but a tap-hold one-finger-each-hand chord, your hands don't move.

Typing is bimodal. Sometimes you're in the saddle, hard at work. Sometimes you're reaching in to find "pause" with a glass of wine in the other hand. A conventional keyboard is handy for reaching in, even if it's secretly a chording keyboard along home row.

Syzygies··on Kamby – A programming language based on Lisp that doesn't seem like Lisp
This is a divisive question, because of survivorship bias. Remember when the WWII Brits wanted to reinforce planes where they saw bullet holes coming back, till a statistician asked why no planes came back with holes in the other spots?

People who use lisp like the parentheses.

I don't, though they're no more objectionable than all the {}; languages. I just don't like unnecessary punctuation.

I coded in scheme for years using a preprocessor that understood

    define-syntax opt
      syntax-rules |
        $ _ (x v) b ...
          let || x | if (null? x) v | car x
            b ...
which is line for line equivalent to

    (define-syntax opt
      (syntax-rules ()
        ((_ (x v) b ...)
          (let ((x (if (null? x) v (car x))))
            b ...) )))
It's a matter of taste, but I'd rather read the former. The key ideas, other than using indentation to carry parenthesis level, are to use $ to hang double indents, and | to open a parenthesis that auto-closes.

I gave this up learning Clojure so I could use other people's tools. Instead I prefer lighter parentheses, and I use this script to tailor fonts for coding lisp:

https://gist.github.com/Syzygies/226253bc38743ef474ee67cbf58...

I have the most trouble with comment characters, in any language. In various languages I used a preprocessor that implemented a practical version of "comments are flush, code is indented" (hey, it cost me one level) and relied on syntax coloring to mute the comments. Again, I gave this up to use other people's tools.

Syzygies··on Analyzing Every Clojure Project on GitHub
Ok, newbie here!

In Haskell I can add a handful of lines to parallelize an "embarrassingly parallel" computation. For example, there are 66,960,965,307 atomic lattices on 6 atoms. A 20 core Mac Studio can figure this out by reverse search in just over four minutes; divvy the work up into piles, and have everyone count the work in their pile. For the problems I care about, everyone's looking for needles in a haystack; they can report what they found with no concern for what anyone else is doing.

So what's the dumbest "try this first" approach in Clojure?

Syzygies··on Common Lisp vs Racket
Wow, I did a double take, you sound like me. When I said something similar praising Haskell's effortless parallelism, someone made a reply that lead to my learning Clojure.
Syzygies··on Common Lisp vs Racket
A document that puts these differences in context is Rich Hickey's "A History of Clojure"

https://download.clojure.org/papers/clojure-hopl-iv-final.pd...

The design decisions in this paper strongly resonate with me. It helped me to overcome my aversion to JVM-hosted languages, and settle down to learn Clojure.

I'm a research mathematician, at one extreme where code is steps up a mountain. I don't need to summit twice, so productivity is far more important than speed. Nevertheless, the fastest Clojure time trials use GraalVM:

https://www.graalvm.org/

Syzygies··on Show HN: Alumina Programming Language
I'm sure you're right. Rust is a popular language in Haskell user surveys, as it's not such a stretch coming from Haskell.

The majority of the lines I've ever written were in C. When I look at Rust, all I see is `{};`

Syzygies··on Show HN: Alumina Programming Language
Rust is a fly-pollinated flower. Without garbage collection, it needs flies.

Rust is in part designed to look familiar to C programmers. Rob Pike once famously described C syntax as able to survive a channel that mangled whitespace. That's less of an issue now, but habits die hard. Indentation in place of syntax is nevertheless controversial. That's a toy version of the bigger question: Why should text be required to carry a load that a smart editor can infer? In Clojure, some prefer ;; to ; because the comments stand out better. Um, syntax coloring? I dislike all comment characters, and for many years I preprocessed a practical version of "comments are flush, code is indented".

Ownership is nevertheless pure genius, and one can define more powerful operations on Rust's restricted notion of data than on general data. I'm imagining a "lisp without parentheses" that transpiles monadic parsers on steroids (aimed exactly at Rust data) to Rust. It will take me a while.

Syzygies··on Why women receive less CPR from bystanders (2018)
One never knows till one is in the moment. I watched a wave grab a child. As it happened we both came back out, but it was neither or both, that's how we're wired.

As a professor one of my students had a seizure then stopped breathing, during one of my exams. There were fifty students closer to her than me, yet somehow I found myself giving aid, as everyone else either dialed 911 or swooned "there goes my professor!" There was that second where all these thoughts went through my mind, but then she started breathing.

As for false accusations, there's a principle that accusers should understand but don't: NEVER assume you're the craziest person in the room.

Syzygies··on Ask HN: How do you organize or rename PDF files (books, papers, etc)?
I manually manage by year/folder, synchronizing thousands of items via DropBox. Each folder has all the associated links and metadata I can muster.

By "manual" I mean various scripts, on MacOS. "bib" for example is an Alfred keyword that runs a script scraping the front browser page for bibtex data, and initializing a new folder based on this data. Other scripts write search output files that "Find Any File" thinks it saved; FAF offers a nice Finder-like interface for selectively opening search results.

I've avoided any canned solution. I don't want vendor lock, and I'd rather be crippled by my own lack of imagination than someone else's.

By far the most useful metadata are the dates of access. One wanders continuously through an idea space no software can adequately categorize, yet adjacent items in time are likely related.

The holy grail I haven't coded yet is to generate web pages with URI schemes that open each PDF in a viewer. GoodReader is a nice viewer on iOS with such an interface; stunningly its own browser can't understand these links, but DropBox can. To simplify versions for MacOS and iOS, one can write a custom URI handler on MacOS that recognizes the GoodReader link, and redirects it on a Mac.

The goal here is to meaningfully browse closer to the speed of light than clumsy current standards. Just as lock-picking is both skill and cycles, research is both skill and cycles: One wants to have the right three ideas in close enough proximity for our feeble brains to notice the connection. We have to be in our happy place when we're flailing for hours, days, years; it would nevertheless be nice to accelerate this process.

I've been in constant friction with the MathSciNet team: I believe that it should present itself as the premier playground for machine learning mind mapping experiments, in addition to maintaining its stodgy hand curation. There is some controversy as to how math is organized. Many great mathematicians wander freely; others never read a paper outside their field after the age of 23. Departmental hiring meetings degenerate to "it's the number theory group's turn", perpetuating a dated view of how math is organized. Independent views of the MathSciNet database could give us new understandings of our field.

Syzygies··on Is There a Curse of the Fields Medal? [pdf]
Destroying one career is not the same as destroying a field. Mathematicians like to believe the likely apocryphal tale that Nobel didn't endow a prize for math because the likely first winner was sleeping with his wife. Nevertheless, the Fields medal distorts math far less than Nobel prizes distort the sciences.

Mathematicians pursue math in defiance of the far greater rewards of other paths. I know at least nine Fields medalists and many near misses. Unlike the Nobel prize, neither the quest nor the realization of the Fields medal turned anyone into an ashpile.

Syzygies··on Lessons I wish I had learned before I started teaching differential equations [pdf] (1997)
So, what's interesting about differential equations for someone who doesn't find analysis or physics particularly compelling? Say, a computer scientist with a greater love for discrete math?

Linear differential equations are a great introduction to eigenvalues. There's a chicken-and-egg problem understanding this, and it would be helpful to take ODEs and Linear Algebra together.

As I first read in Feller, generating functions are a formation that runs the full length of mathematics and beyond; the Laplace transform from ODEs is just a continuous version of a generating function.

As Marcel-Paul Schützenberger first made clear, the notions of "rational" and "algebraic" from pure mathematics match up with finite state machines and push-down automata from computer science. One studies these most easily using generating functions. As Richard Stanley explains in Enumerative Combinatorics Vol. 2, there's a third class of generating functions beyond algebraic: D-Finite. Roughly, this corresponds to how one learns to expand the solution to a differential equation in ODEs as a power series. The true significance of this class in both pure mathematics and computer science is poorly understood, but there's something clearly out there as significant as rational and algebraic. That is intrinsically fascinating.

When I see someone filling a blackboard with equations, I see someone flailing because they don't know what to do. The best math is simple, and can be expressed as philosophy, like recognizing this formation crossing the sky.

Syzygies··on GHC 9.4.1 is now available
I still don't know a better language for parallelism. Some alternatives can make up for being sluggish by employing parallelism. Haskell is already reasonably efficient (for my problems) and parallelism is trivial to add.
Syzygies··on Faster Ruby: Thoughts from the outside
I love Ruby so much as a scripting language, I ask myself why I don't just use it as an "acceptable lisp" [1] for my research, rather than Haskell. Haskell is more easily parallelized than any other language I've experienced. Alas, my experiments with Ruby 3.1 parallel extensions flunked. Who cares about single core speed?

I was always put off by Rust syntax (it's a fly-pollinated flower, to attract C programmers), but I'm starting to get the genius in its machine model. Learning Rust forces one to understand what's happening at the machine level, but offers better control as a reward. Its expressiveness is a lot closer to Ruby than I had imagined, it won't put me back in the C99 stone ages. So my provisional answer is that Rust is a Faster Ruby.

[1] http://www.randomhacks.net/2005/12/03/why-ruby-is-an-accepta...

Syzygies··on Wet/Dry Vacuum Buying Guide (2019)
Wow, I learned that I could have a wet vac drain.

My yard is absurd clay. I've used my wet/dry vac, along with an electric pressure washer, to dig holes and remove tree roots (easier to cut what you can see).

A drain would increase my work time, at the expense of thicker sludge when I'd have to empty the vac manually. What I really want is to move the mud slurry, not store it. I suppose I should build an open frame to replace the vacuum body, and just use the pump lid.

Syzygies··on Microdosing with psilocybin mushrooms: a double-blind placebo-controlled study
> but only for participants who correctly identified their experimental condition.

So the creatures who can take flight in a light breeze are the ones who can sense the breeze. That sounds about right.

Syzygies··on Thinking with pen and paper
Most of the objections to blackboards or whiteboards can be mitigated by carrying one's own tools. For blackboards, I bring my own Hagoromo chalk [1,2] which has a wonderful touch and is radically less dusty, and several Korean microfiber auto detailing cloths [3]. I use a damp cloth to wipe the board before and after teaching, and a dry cloth as an erasor while teaching. Every month or so, I do a laundry load of all my cloths. I see colleagues in stages I've passed through, such as carrying a sponge, pail, and squeegee, and I've learned to say nothing. If there's a stage I haven't reached yet, however, I'm all ears.

Blackboards themselves also vary in quality; some ceramic surfaces can rival traditional slate. One can't really judge the experience starting with a cheap, dirty board and using institutional chalk and erasers.

I've enjoyed whiteboards in well-funded companies. In academics, it is profoundly embarrassing how often a speaker will have traveled for a lecture, only to find a dirty whiteboard and the local markers dried out. This is why speakers would rather lip-sync to PowerPoint slides. Were I using a whiteboard, I'd also bring my own tools.

Pad and paper is certainly easy, but artists brave serious messes to produce oil pastels for sale. In my case, students are carrying student loans half their lives. I prefer chalk over slides because it forces a live performance. I then share my Notability drawn notes, because they're better.

[1] https://www.amazon.com/HAGOROMO-Fulltouch-Color-Chalk-White/...

[2] https://www.amazon.com/Hagoromo-Fulltouch-72pieces-Yellow-Or...

[3] https://www.amazon.com/gp/product/B00GXRG64I/

Syzygies··on Thinking with pen and paper
I can remember rolling my eyes at a writer using a mechanical typewriter decades after word processors had taken over. Did they thaw out of a glacier?

At the same time I love physical media. As a math professor I defend a widespread preference for blackboards over soul-sucking whiteboards, imagining that musicians will still play grand pianos in a century, and they'll still snicker over Ryan Gosling playing a toy piano under the spotlight in that classic movie "La La Land".

I've hoarded Hagoromo chalk; I'm the one with the chalk attaché case in [1]. I've always carried multiple grades of drawing paper, and I've worked through many hundreds of artist grade felt tip pens, scanning all my math notes for thirty years.

Then, pandemic. Just as World War 2 accelerated women in the workplace, the pandemic has accelerated the uptake of digital tools for visual presentation. To teach over Zoom, we needed to embrace drawing on a tablet. I understand that the pandemic radically accelerated similar trends in architecture.

The algorithmic possibilities of drawing on a tablet are truly addictive; returning to paper feels like returning to a mechanical typewriter. For my purposes, Concepts offers the most involving algorithmic experience; I wrote [2] to support my note taking and diagrams for papers. However, Notability offers the least friction. I can have the same psychological relationship to taking notes on my tablet as I had with phyical paper, with the benefits of algorithmic reuse. (Pushing the envelope exposes how inconsistently Notability handles implicit layers, but one learns to draw around this.)

In a few decades, after all living mathematicians have drawn on tablets since birth, math will be far more visual, conveying ideas with far more immediacy. Math communication is now still largely constrained by its resemblance to typeset prose. Ever leave a startup because reading your coworkers' code put you in "Just kill me now!" territory? I did. Mathematicians write the equivalent of bad code, rarely actually machine-checked, to formalize their ideas. Other mathematicians try to decipher this code, to reverse-engineer the ideas. We declare people who can actually do this as having a gift for mathematics. As I learn to teach combinatorics more visually, my classes swell with students who share my frustration.

I've come to realize this summer that I pretty much despise mathematics. I can't wait for the visual revolution. This revolution didn't take hold on physical paper; one needs a digital accelerant.

[1] https://www.youtube.com/watch?v=PhNUjg9X4g8 [2] https://github.com/Syzygies/concepts-artboards

Syzygies··on A Tutorial on Portable Makefiles (2017)
I'd love to see your ninja files, to see how you handled such things.

Rather than complicating my build.ninja files, I handle build variants in my script. Easy enough to output a new variant, probably faster to use, and certainly easier for others to understand.

People are more likely to adopt ninja as we did if they see it first as the easiest way to manage a small project. Why bother with CMake or other tools, if one can script in one's favorite language? I'm sick of working with bad build description languages; ninja is going straight to the bare metal.

Syzygies··on A Tutorial on Portable Makefiles (2017)
I'm surely also in that range. It took us years to write this project, but 57 C files is a small project. Others find themselves in the range where the build decision-making itself can take seconds, with tools other than ninja. Ninja is pared down for speed; having to declare keywords before I used them made me feel young again.

I had to write these build files over again, and I just couldn't stomach the idea of writing another makefile.

Syzygies··on A Tutorial on Portable Makefiles (2017)
https://gist.github.com/Syzygies/fe8cf2096fcb91dd11b5c8cf763...

The source will be shareable once we get it running again. Other than historical curiosity, people are most likely to use it for assistance in converting old work to the successor program Macaulay2.

The script bin/ninja.rb creates two flavors of build.rb, one that keeps going no matter what, writing error files for each exception, and another for use once everything works. One might be able to craft a single file that does both, but I'll want to ditch these complications once we're done with the conversion, and end users won't want to see them.

It would have helped me to see more examples like this, learning ninja.

Syzygies··on A Tutorial on Portable Makefiles (2017)
Recovering an ancient project sent me back down the "which build tool should I be using?" rabbit hole. Getting a script to grave dig 57 inconsistently styled K&R C files (!) really stresses the build cycle, more than writing new code.

First approximation: No one's happy with any build tool, with good reason. Then I discovered Ninja. It's an assembly language for builds, advertised as a back end for higher level tools, but many people script Ninja themselves.

For me, 15 lines of Ruby code plus some heredoc boilerplate spawned a 138 line build.ninja file. Back in the day, this computer algebra system used to take an hour to build. Make still needs a frustrating number of seconds. Ninja on all my cores is a correct fraction of a second.

Ninja is exceptionally fast, and handles parallelism extraordinarily well. It scales; they use it for Google Chrome. Various tools such as CMake can target Ninja. It is unique for its design goals.

Most importantly, looking at Ninja code is not a "Just kill me now!" experience.

https://ninja-build.org/

Syzygies··on The Fourth Operation: What Comes After Exponentiation
Several comments independently propose incrementation as coming before addition, multiplication.

One can only make sense of progressions like this by finding relationships between the levels. There are at least two ways to see a connection between addition and multiplication: The logarithm, and polynomials. Polynomials are well-studied expressions combining addition and multiplication.

Algebraic geometry studies sets defined by polynomial equations, as linear algebra studies sets defined by linear equations. Tropical geometry [1] is a version of algebraic geometry that replaces addition by minimization, and multiplication by addition.

Pure mathematicians like to hear music in their choices; they want these choices to arise naturally and support deep theories. Tropical geometry passes this test. One wants an inevitability to one's choices, a belief that alien life would reach the same conclusions.

If there are two answers to "what's zeroth? What's fourth?" that itself is interesting. However, one wants extensive evidence to believe that there's branching. Otherwise, we decide that we've simply stepped onto the wrong trail and need to backtrack. Pure mathematicians live in profound fear of just playing house, making stuff up because it sounds good, even if it looks to everyone else like that's what we do.

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

Syzygies··on After Obsidian and Logseq, I give Dendron a try
Mark was my college roommate! Ted Nelson was an earlier Swarthmore graduate whose visions for information anticipated the internet, and remain somewhat contrary to how the internet evolved. Mark took all this to heart. I had a brief influence on Tinderbox, when Mark got interested in hyperbolic geometry as one view of information.

Mind mapping is a critical application of computers, still in its infancy. I have thousands of math articles in digital form that are beyond my ability to track from memory.

My primary need isn't note-taking. I want a "Finder" alternative for managing digital assets, my own folder structure that I independently store and sync. I want to wander through old papers and open them in readers on both MacOS and iOS, at the speed of daydreaming. The timing of my herd paths, and some deliberate annotations, should be my gardening influence on a largely automated process for discovering proximities. I'm still not sure what tools to use, so I slowly write my own.

Syzygies··on Show HN: Pipes puzzle (a.k.a. Net) on a hexagonal grid
Wow! What fun. You have to make this a phone/tablet app...
Syzygies··on Vala Programming Language
Rob Pike famously explained that C needed its space-insensitive braces and semicolons in case code was transmitted through a channel that mangled whitespace.

Those days predate most people reading this, yet many new language syntaxes opt for "familiarity". I wish that all language design went through a filter where every character mattered like the designer was in an episode of Squid Game.

Bill Joy famously explained that syntax matters, a dense syntax puts more on screen. This is true even now. I struggle with this; my favorite syntax is a preprocessor that eliminates the need for most Lisp parentheses. The result is code poetry. Nevertheless, Haskell is more expressive.

(Here's an easy test: Anyone who proposes a way to minimize Lisp parentheses, who hasn't introduced a symbol for missing outline levels, is just pulling out chunks and hasn't used their system to write thousands of lines of code.)

I've written most of my lifetime of code in C, established my career in C, and C syntax is ground glass in my eyes.

Syzygies··on Apple II Documentation Project
Yes! That was the book.
Syzygies··on Apple II Documentation Project
In 1980 as a math grad student, I took out my bank's first student loan for a computer, $3000 ($9000 now) for an Apple II. My annual stipend was not much more. My branch of math at that time was a foot race with no rule against bicycles (they hardly knew what one was) and I saw computerizing my field as an alternative to dropping out. The Apple II didn't really help here; later we managed to bit-squeeze a viable computer algebra system [1] onto the first 128K Macintosh, leading to colleague adoption. Other friends got their start in computing, learning how to program the Apple II in my apartment.

One could learn the Apple II inside-out. I've never had that experience again. My first week I took a soldering iron to it to provide lower case support; I've been the surgeon for friends' computers ever since. There was a book (it must be somewhere on this archive) that explained the purpose of every byte in low memory.

For perspective, I was avidly learning Go as I started grad school, till I read on the back cover of one of James Davies' books that he had dropped out of math grad school to pursue Go. Ouch! The Apple II was a completely different, more approachable scale. I could master it and stay in grad school.

[1] https://www.math.columbia.edu/~bayer/Macaulay/

Syzygies··on A Scheme Primer
Scheme is a language I love. Chez Scheme is even fast. I don't use it because the support for parallel programming looks like 1990. In contrast, one can add a handful of lines to a Haskell program and keep 16 cores busy on a Mac Studio. Even Ruby now cleanly supports parallel execution. We're fast reaching the point where any language that doesn't support parallelism, or only via cumbersome locks and so forth, is a toy.
Syzygies··on It’s 1997 and you want to build a website
Yep. In 1995 the main lesson of the web seemed to be "you can be an author." (Good luck finding bus schedules...) So I cobbled together a Pavoni espresso website in raw HTML, most of my efforts going into the drawings, and for a time it was most of the traffic on our department web server:

https://www.math.columbia.edu/~bayer/coffee/

One wondered then as much as ever about things one read on the web. For example, Kopi Luwak was a legendary coffee fished out of paradoxurus marsupial feces. All references on the web could be traced to a single source, yet apparently this is true.

← PreviousPage 11 of 25Next →