This page aggregates together stuff having to do with Joey from elsewhere on the net.
author: Neal Stephenson
average rating: 4.06
book published: 2015
date added: 2015/05/22
Long lazy chilly blackberry winter day, spent reading novels. 500 or so pages in 3 novels. It's been a long time since I read like this!
I recently had to implement a thread-safe wrapper to fcntl locks, which involved implementing my own inter-thread locking code. Because POSIX is horrible. http://git-annex.branchable.com/devblog/day_286-287__rotten_locks/
Take a look at this implementation: http://source.git-annex.branchable.com/?p=source.git;a=blob;f=Utility/LockPool/STM.hs
- First we have the unsafePerformIO of doom on line 46. (Actually safe in this application.)
- But then, look at how nice the implementation of
tryTakeLockis! (line 70) It uses
waitTakeLockand converts it from a blocking wait to a one-time try, by simply using the
orElsecombinator included in Haskell's STM implementation.
STM is awesome, and the orElse combinator is an awesome improvement on top of it, described in beautiful concurrency:
In particular, blocking (retry) and choice (orElse), which are fundamentally non-modular when expressed using locks, are fully modular in STM.
Root canal in 2 hours. Maybe I'll find moments where I am able to chew on a tricky change to propellor's types.
I've gotten ghc's type checker to generate an awesome error message like this when it detects conflicting port resources. Just need to find a way to integrate this with propellor's already complicated Property types.
Couldn't match type ‘'Propellor.Resources.Conflicting’ with ‘'Propellor.Resources.NonConflicting’ Expected type: 'Propellor.Resources.NonConflicting Actual type: Propellor.Resources.Conflict (Propellor.Resources.UniqueList '['Port 443, 'Port 80, 'Port 443])
(Or maybe I'll just think about buddism. Life is pain.)
Not actually true that all computer languages become turing complete in time. For example, I understand that Coq and Agda can intentionally only be used to write programs that can be proven to halt. So, unless the halting problem is solved, they're not turing complete, though still useful.
I think CSS should be a less-hifalutin' instance of the same thing, ideally. Turing tarpits and all that.
A rather fascinating idea for a strongly typed compiler of web snippets of calculus of constructions. http://www.haskellforall.com/2015/05/the-internet-of-code.html
Or, see this post for some example use cases: https://www.reddit.com/r/haskell/comments/36d12v/haskell_for_all_the_internet_of_code/crdo2sj
Raises interesting questions beyond the technical...
- How does copyright apply when a program contains an url that defines the value 'four' as code? (Incidentially proving it's even.)
- Are these system F expressions the preferred form of source code or not? What about if they can be automatically translated to and from your programming language of choice?
Thinking about implementing this soon http://ikiwiki.info/todo/emailauth/
Sittin' on the front porch, shaking a handful of beans to accompany to Feufollet while waiting for haskell code to compile, as you do.
Had a long dream last night about rebuilding my car's wheels from scratch. My attempts kept turning out to be square.
Has anyone noticed that arm boards just keep running for aproximately forever? I have now ancient nslu2's, thecus, etc that still run fine, although they're now too old to bother with.
No moving parts, no power supply (just 5v in), barely any capacitors to plague out. Just not much to go wrong. The only arm board I've ever had die was stuck by lightning.
(Compare with laptops which are fully consumable.)
Managed to prevent cat bringing a chipmunk into the house. She brought in a little lizard instead.
Planning a trip to Louisville Ky this fall for Derbycon. I've never been to a hacker conference before and this one is a 4 hr drive and I've heard it's a good one.
My sister is getting a monorail for her farm. Monorail!!!
How did I manage to not watch "War Games" until now? I wrote
wargames(6) in 1998!
[edit: Just to be clear, I wrote the manpage, not the program it documents.)
Creek wade, goats & chicks, yummy homegrown lunch, playing Hive in the sun on an upturned washtub, excellent conversation, wildflower hike, and later chicken Larb cooked by a Thai grandma. And home in time for golden hour!
Developer playthrough of Scroll's tutorial https://downloads.kitenet.net/videos/scroll-tutorial.ogv (tnx @josh_triplett for the idea)
I think there's an important assumption here: You're compiling. Not the computer.
Historically, distributions have been very heavy on developer labor to get dependency trees packaged up, one piece at a time. This makes hundreds of dependencies a real grind. Also makes it really hard to deal with packaging new versions fast enough.
What automation there is, tends to be tools of the "give me a tarball and I'll give you a skeleton source package that will work with maybe some tweaks, and you can take it from there".
One of the reasons Nix and Guix are interesting to me is that they lift package building from declarative source packages to programs. This could allow writing the "jquery package" program once, and then parameterize it, and apply it to the whole universe of jquery packages.
I think Nix has gone some of this way with haskell packages; at least they seem to be able to add new ones and update existing with very little busy-work. Probably not all the way though.
There are some challenges. Such a program needs to have as an input the current dependency tree of jquery packages. Copyrights still need to be manually reviewed (ugh).
Also, the right versions of things need to be picked when selecting what to package for upgrades.. Or do they? If versioned dependency information is available, the packaging program could lift it into the package manager's dependency system, and simply package all versions of everything, and let the package manager pick appropriate versions. Nix and Guix seem to be making the right choices to allow this kind of universe of versions of software to be used.
This is, perversely, one reason I've been reluctant to dive into either Nix or Guix. Using their languages this way means you're doing Real Programming when you package stuff. I am doubtful about using the Nix language for large-scale programming; it's a weird DSL. And Guix's Scheme is great, but I'm not a schemer. If I were writing a jquery package conversion program, I'd want probably something like Aeson for automatic import of json into strongly typed data, etc. I'd want to be able to compile my system and know if it broke. I'd want to use advanced type system features to prevent foot-shooting by users.
author: Jo Walton
average rating: 3.73
book published: 2015
date added: 2015/04/16
author: Joan Slonczewski
average rating: 3.42
book published: 2011
date added: 2015/02/01
author: Ed Finn
average rating: 3.74
book published: 2014
date added: 2014/12/18
author: Greg Egan
average rating: 3.91
book published: 2002
date added: 2014/11/17
List of feeds: