HNHacker News
TopNewBestAskShowJobs

cracauer

162 karma · joined November 5, 2012

Martin Cracauer
submissionscomments
cracauer··on European Lisp Symposium
Interesting stuff. Lisp or not. Lisp programmers often tackle interesting problems.
cracauer··on On Lisp (1993)
Excellent book to learn compile-time computing.
cracauer··on These years in Common Lisp: 2023-2024 in review
Too bad the jobs are all gone by now.
cracauer··on Show HN: Use an old tablet as an extra monitor
Tablets should have a HDMI/Displayport in so that you can directly use them as displays.
cracauer··on Compile time regular expression in C++
C++ finally catches up to Perl :-)
cracauer··on OpenSSL 1.1.1 End of Life
The FreeBSD experience with the upgrade also shows that this is not a smooth enforced upgrade.
cracauer··on U.S. v. Google
This is bad in one aspect:

Google pays Mozilla a lot of money, mainly to keep Google search the default search engine in Firefox.

If that turns out to be illegal it could create a financial crisis for the Firefox browser and hence reduce diversity in web browsers.

cracauer··on All-AMD Ryzen Notebooks for Linux Gamers: USB4, AMD GPU? and PCIe-Gen-4.0
Disappointing that this test doesn't report on how well suspend/resume works.
cracauer··on Linux becoming a Windows / OS X clone
The OP could solve most of those problems by switching back to FreeBSD.
cracauer··on Almost every publicly available CVE PoC
I would like to have a resource like this, but instead of the PoC I want to see the diff that fixed the flaw in the software.

Anything like that around? I know it isn't trivial.

cracauer··on Land of Lisp (2010)
You can have type checking in Common Lisp:

https://medium.com/@MartinCracauer/static-type-checking-in-t...

cracauer··on s/bash/zsh/g
I have libraries of functions written in pure sh.

I use those functions in both scripts and my interactive shell (which is bash).

I cannot do the same with zsh as my interactive shell if scripting is supposed to stay POSIX/bourne shell. Which I want as I often do this in systemwide scripts or modify existing scripts (all plain sh). The incompatibilities do matter.

cracauer··on Learning Common Lisp to beat Java and Rust on a phone encoding problem
> It's also dynamically typed which disqualifies it for large collaborative projects.

You can add type declarations and a good compiler will check against them at compile time: https://medium.com/@MartinCracauer/static-type-checking-in-t...

cracauer··on LLVM 13.0
Sadly format did not make it.
cracauer··on Only Three Countries in the World (Officially) Still Use the Imperial System
Surprising. You wouldn't normally think of Liberia and Myanmar having their shit together.
cracauer··on Take care editing bash scripts (2019)
This is why my directories with shell scripts have a "make install" target. For execution they are copied to a place where they are unlinked before written new.
cracauer··on Garbage Collection
When using generational GCs it is of utmost importance to match the policies for moving things between GCs to the actual pointer interconnection pattern.

This can go really bad, for example in systems that keep caches/repositories of preallocated things for faster re-use. If they are anchored at global variables, or near global, then you need to treat those preallocated things special. You can't just go and move them every time even when knowing you will never collect them.

Generally, GC works better if you don't do tricks/optimizations with memory allocation and let just everything flow freely into the heap. If you do have to optimize allocation you generally have to teach your GC about your hack.

cracauer··on Garbage Collection
I am a friend of simple garbage collectors. Let initial placement be decided by running code.

Let later placement be decided by the order in which the heap is scavenged. That is what e.g. re-unifies array-of-pointer target instances. You scavenge the array of pointers and in the default case you line up the instances the pointers point to beautifully one after another. Even if the initial allocation had interleaving other memory. In that case your code gets faster after GC than before the data is first GCed.

cracauer··on Garbage Collection
Not wasted space. Unreleated space would do.

Keep in mind that you only have a tiny amount of L1 data cache lines. They are gone so quickly. If you can get a couple more struct instances in an array into those cache lines (without the cache lines holding unrelated nonsense as a byproduct of a memory fetch) that is a huge win.

The issue of L1 cache lines is more important than the size of the L1 cache. The granularity of the cache lines uses up the size of the cache very quickly if all cache lines are padded up with 3/4rd nonsense that you don't need right now.

cracauer··on Garbage Collection
I don't have anything new. I might have to re-write a GC for Clasp. Then I know :)

A better questions would be whether anybody has a moving, precise GC running on LLVM. Clasp with MPS runs, but that might be coincidence/luck.

cracauer··on Garbage Collection
Sure, you can change any of the individual properties.

But if you cannot move memory (adjust pointers like most GCs do) then you will have to deal with fragmentation, which slows down allocation (or causes other drawbacks).

Moving GC can also make the program faster due to memory compactation and hence being more efficient wrt CPU cache and TLB.

cracauer··on Garbage Collection
A GCed piece of nontrivial code can also be faster than a malloc/free solution.

The reason being that allocation can be much faster. The GCed code can allocate memory with as much as an increment of a pointer (and that is atomic, so no thread locking needed).

malloc/free always do full function calls, and they might/will descent into dealing with fragmentation (aka finding free space). Likewise, free() isn't free and cross-thread allocation/deallocation can further complicate things.

cracauer··on Garbage Collection
If you are interested in optimizing generational GC with operating system facilities:

https://medium.com/@MartinCracauer/generational-garbage-coll...

And a review of LLVM's GC facilities: https://medium.com/@MartinCracauer/llvms-garbage-collection-...

Overall message is that there are many different ways to get to the destination, and creative solutions are mixed in.

cracauer··on Lisp-Flavored Programming Languages
A quick look at what Quicklisp has to offer for libraries should quickly convince people that fooling around with anything but Common Lisp would be very energy-consuming.

http://blog.quicklisp.org/

cracauer··on CVE-2019-14287: Sudo Bug Allows Restricted Users to Run Commands as Root
No question about the headlines overstating.

But I don't think this is a rare situation. For example you can allow a bunch of users to restart and change a buildbot infrastructure (which runs as its own user, not root).

cracauer··on Google Forcing Nest Cameras’ Visual Indicator Light To Be On
Those LEDs should be in-series with the camera's sensor power circuit. No software control at all.
cracauer··on Google to Offer a Best Price Guarantee on Certain Flights
ITA's customers before the Google acquisition were not interested in sharing large infrastructure that would make contiguous querying (as opposed to on demand when a consumer searches), presumably mostly for cost reasons.

The QPX search engine is actually the same behind Google flights and all the airlines and what Orbitz used to use. The limitation pre google/flights was the on-demand querying only.

Now the contiguous querying, obviously, gives you a load of useful historical data. After running it for a couple of years now they seem to feel confident that they can predict prices changes with enough accuracy that the payouts for misses will be an acceptable price for the publicity, or increased use of their other travel products.

(disclaimer: ex-ITA/Xoogler, opinions my own)

cracauer··on Why Lie Detector Tests Can’t Be Trusted
They write an article on polygraphs and do not mention Aldrich Ames?

WTF, NYT?

cracauer··on ZFS on Linux still has annoying issues with ARC size
I still have this bug. https://github.com/zfsonlinux/zfs/issues/8396

Page faults from NFS client side aren't served by the server when they should (readonly map, reading a page). I could imagine this is related.

cracauer··on Building the New Twitter.com
All that work, and still I had to use right-click "open image in new tab" to see the text of a meme?

Is anybody in there actually using that thing? (those in user-facing changes authority?)

Page 1 of 3Next →