HN user

davidgrenier

388 karma
Posts4
Comments262
View on HN

I was speculating two oscillators with periods p and q could be composed (as long as there was no way for them to interact) to create an oscillator of period p*q/gcd(p,q) but wondering why large primes wouldn't be a problem.

I guess this is my answer.

I think his argument was restricted to a human-produced mathematical result being ported to a Lean program where one would be just as likely to commit a mistake. However I disagree as well, I recall the difficulty of expressing what I wanted to Coq being a barrier to expressing it incorrectly.

Good teacher, his Number Theory book felt really good though I have no comparable in Number Theory. I must say Number Theory and Combinatorics are the most difficult topics I got acquainted with in undergrad.

Bouty makes excellent chair. Looking at their website I'm thinking Arista/Kadera/Fira. The model of chair I have doesn't seem front page but it is the Sity 9002.

The piston gave after 10+ years of service. Contacted them, warranty is for life, they had someone show up and replace it for free.

Someone mentionned in the Mastodon thread that they have an Android phone with nothing-from-google on it. I speculate his installation is even more responsive than whatever default the product came with and I'd like to do that.

I have a terrible Vankyo Z1 table that is very slow. Where do I start?

Note that lightweight threads (even in CSP style concurrency model) can be even lighter and faster. F#'s Hopac library seems to meet such expectations with this simple program:

   #r "nuget:hopac"

   open Hopac
   open Hopac.Infixes
   open Hopac.Extensions

   seq{1..1000000}
   |> Seq.Con.iterJobIgnore (fun _ -> timeOutMillis 1000)
   |> run
Runs in 1.824s real, 17.635s user and 0.088s system time in under 186000KB, hence less around 200 bytes per thread.

10M threads sleeping 10 seconds taxes this machine to:

22s real, 4m user, 0.506s system @ 140 bytes/thread.

This looks brutal, for a lot of people John Reppy's book Concurrent Programming in ML (as in SML not Machine Learning) is going to be much more accessible. Pick the CSP-style library in the programming language of your choice.

Go with goroutines and channels

Clojure with core.async

F# with Hopac

It would be a very interesting project to roll your own in C# using Microsoft Robotics Studio's CCR (Coordination and Concurrency Runtime) (though I speculate those are buffered channels by default).

F# is extremely expressive, has algebraic datatypes and just about everything C# has to offer. It has a REPL so you can write your code interactively and make fast and safe progress. .net is practically first class on Linux now.

Start your .fsx script with: #!/usr/bin/dotnet fsi

When startup time becomes a problem you can compile the file to an assembly instead.

Yes, maintaining your proficient in QWERTY is only a matter of not stopping to use it altogether when switching to a new layout. It'll just be a matter of time spent to become fluent in both. I recommend Colemak however.

I personally didn't maintaing typing on QWERTY, interestingly my brain still has the QWERTY mapping for tablets.

I had never heard of the concept of closest average neigbor before. When I read it, I assumed it meant: draw a straight line between the two bodies, that is the current distance between the two bodies, now average it over a couple of years of motion of these two bodies in space.

Memory Allocation 3 years ago

Yes, this is what Ur/Web does albeit this is limited to Web Server requests. I'd argue all programs could be short lived and memory management becomes a matter of sizing program's scope/role to the amount of memory you can greedily consume. Certainly many sorting program (for e.g.) can leak until they terminate. Then, cheap instantiation and communication between programs.

Memory Allocation 3 years ago

Oh another thing, I'm not a fan of the premise:

"As a general-purpose memory allocator, though, we can't get away with having no free implementation."

I have a belief that the future of software are short-lived programs that never free memory. Programs allocate and terminate. Short-lived program communicate with each other via blocking CSP-style channels (see Reppy's Concurrent Programming in ML).

If you could also educate me on why this is a bad idea I would appreciate.