under the sea code monkey
538 stories

Veneida Smith

1 Comment and 2 Shares
Sheriff Says No Jail Can Hold Fair Tomboy of Mountains

Parkersburg authorities refused to pursue Veneida Smith, pretty 16-year-old girl, an alleged horse thief and jail breaker, into her mountain hiding places today. The sheriff and his deputies, opined "There ain't no jail that'll hold her," following the last escape when she sawed the bars in her cell window with a tiny blade of steel smuggled into the jail in her shoe. Sliding to the ground on a rope made with bed clothes, the "Holy Terror Tomboy," as she is known to authorities, evaded pursuit to outskirts of town where she secured her pony and galloped away in the direction of Cairo. Veneida is the veteran of a long string of jail breaks, according to authorities. Once she wrecked her cell with an iron bar because the sheriff refused to give her cigars to smoke. Previously she had broken out of a reform school, and numerous efforts of social workers to reform her were met with this reply: "The devil got me into it, let him get me out." Parkersburg authorities describe the girl as "pretty as a picture, wild as a deer, hardy as a mountain goat, as hard as nails, and able to care for herself anywhere."

Previously, previously, previously, previously, previously, previously, previously, previously, previously.

Read the whole story
20 hours ago
I have a new crush
Share this story

my haskell controlled offgrid fridge

1 Comment

I'm preparing for a fridge upgrade, away from the tiny propane fridge to a chest freezer conversion. My home computer will be monitoring the fridge temperature and the state of my offgrid energy system, and turning the fridge on and off using a relay and the inverter control board I built earlier.

This kind of automation is a perfect fit for Functional Reactive Programming (FRP) since it's all about time-varying behaviors and events being combined together.

Of course, I want the control code to be as robust as possible, well tested, and easy to modify without making mistakes. Pure functional Haskell code.

There are many Haskell libraries for FRP, and I have not looked at most of them in any detail. I settled on reactive-banana because it has a good reputation and amazing testimonials.

"In the programming-language world, one rule of survival is simple: dance or die. This library makes dancing easy." – Simon Banana Jones

But, it's mostly used for GUI programming, or maybe some musical live-coding. There were no libraries for using reactive-banana for the more staid task of home automation, or anything like that. Also, using it involves a whole lot of IO code, so not great for testing.

So I built reactive-banana-automation on top of it to address my needs. I think it's a pretty good library, although I don't have a deep enough grokking of FRP to say that for sure.

Anyway, it's plenty flexible for my fridge automation needs, and I also wrote a motion-controlled light automation with it to make sure it could be used for something else (and to partly tackle the problem of using real-world time events when the underlying FRP library uses its own notion of time).

The code for my fridge is a work in progress since the fridge has not arrived yet, and because the question of in which situations an offgrid fridge should optimally run and not run is really rather complicated.

Here's a simpler example, for a non-offgrid fridge.

fridge :: Automation Sensors Actuators
fridge sensors actuators = do
        -- Create a Behavior that reflects the most recently reported
        -- temperature of the fridge.
        btemperature <- sensedBehavior (fridgeTemperature sensors)
        -- Calculate when the fridge should turn on and off.
        let bpowerchange = calcpowerchange <$> btemperature
        onBehaviorChangeMaybe bpowerchange (actuators . FridgePower)
        calcpowerchange (Sensed temp)
                | temp `belowRange` allowedtemp = Just PowerOff
                | temp `aboveRange` allowedtemp = Just PowerOn
                | otherwise = Nothing
        calcpowerchange SensorUnavailable = Nothing
        allowedtemp = Range 1 4

And here the code is being tested in a reproducible fashion:

> runner <- observeAutomation fridge mkSensors
> runner $ \sensors -> fridgeTemperature sensors =: 6
[FridgePower PowerOn]
> runner $ \sensors -> fridgeTemperature sensors =: 3
> runner $ \sensors -> fridgeTemperature sensors =: 0.5
[FridgePower PowerOff]

BTW, building a 400 line library and writing reams of control code for a fridge that has not been installed yet is what we Haskell programmers call "laziness".

Read the whole story
1 day ago
BTW, building a 400 line library and writing reams of control code for a fridge that has not been installed yet is what we Haskell programmers call "laziness".
Share this story

Crow Murder (Attempted)


In contrast to the rather peaceful imagery of Crow Calligraphy, where corvid nesting behaviour evoked the peaceful strokes of Japanese brush painting — this post is more Sam Peckinpah meets Hieronymus Bosch.

I usually don’t like the term “murder” to describe a group of crows.

Rather prejudicial, I always think. In the case of this gathering, however,  it seemed apt.

Incredibly, (spoiler alert) all participants in this brawl did walk away — but the ferocity was something I’d never seen in my all years of crow-watching.

The crows are pretty fractious at this time of year. All of that bucolic nest building has the side effect of making them hyper-sensitive to territorial infringements, — by traditional foes (raven, eagle, cat,  racoon, coyote) — or their fellow crows.

On Sunday morning the crows were particularly loud. I assumed it was the usual group protest directed at the new raven in the neighbourhood.

Crows in the Poplars

I was first preoccupied with the raven, who seemed especially oblivious to the crows on this particular morning . She carefully ran through a full repertoire of calls and meticulously groomed her lovely feathers.

The crows weren’t bothering to swoop and harass her, and I noticed that their anger seemed focussed elsewhere. I walked over that way to see what was bothering them.

Just then, all hell broke loose. From a distance, it looked like a muscular black feather duster exploding in the middle of the alley way.

As I got closer the individual participants in the melée became more distinct.

Crow Fight 1

It seems that two or three crows are at the centre of the brawl, with one of them pinned to the ground.

Crow Fight 2

The fighters are surrounded by a vociferous crowd — like a scene from Gladiator, with some Hogarthian figures passing judgement from the sidelines.

Crow Fight 3

Crow Fight 5

Crow Fight 6

Just as I was thinking that this fight might need a human referee, a corvid one seemed to step in. Abruptly the flapping stopped and “discussion” resumed..

Crow Fight Mediator

Miraculously, the combatants, aside from some ruffled feathers, looked relatively unscathed.

Indignant, but uninjured.

Crow Fight 9

The warring factions decide to suspend hostilities, and live to fight (and nest) another day.

Crow Fight 8

Of course, someone always has to have the last word …

Crow Fight Aftermath

The crowd dispersed as far as the nearest trees and wires where they continued to comment on the event for quite a while.

Political panel

Political panel “unpacks” the issues.

Eventually the tribunal concluded and all participants went back to their own territories. There they resumed the more tranquil business of finding just the right twig to complete the perfect nest.

Crow with twig



Read the whole story
1 day ago
2 days ago
Share this story

Living Room: Making RC programmable

1 Share

For the last three months, Jonathan Dahan, an RC alum from our Summer 2, 2014 batch, has been back at RC building Living Room, a system to make RC physically programmable. Living Room is installed in Lovelace (a room at RC) and is made up of a projector, some cameras, and a database. It can recognize physical objects and can project onto the wall in response to what it sees. Living Room is inspired by Realtalk (a computing system being built at Dynamicland, a genuinely different and exciting community center in Oakland), Natural Language Datalog, and Linda.

We’re supporting Jonathan’s work because we think Living Room will make RC a richer experience for Recursers and alumni: a physically programmable RC will make it easier to see what projects other Recursers are working on, and will make it more likely that projects persist from one batch to the next. We want to give Recursers more control and ownership of RC’s physical infrastructure, and supporting Jonathan’s work is a great way to do that.

Katherine Ye (S’13) started a research blog where she, Jonathan, and other Recursers working on the project are keeping their notes. We’re planning on having the system running by Never Graduate Week, our annual alumni week, in May.

How it works

The system consists of a central Datalog-style database that stores facts about the world, and independent processes that can query the database and add facts of their own. There’s a projector that draws pictures in the room, and cameras that can see what’s going on. Everything drawn on the projector is computed each frame from the facts in the database. The database is accessible over the network, so processes can run anywhere.

The project is in the early stages, but it runs. It’s also surprisingly performant. In January, Jonathan and Alex Warth (m1’18) were able to project video from a webcam in real time by having one process put each frame into the database, and another read the frames out and draw them.

How to get involved

If you’re a member of the RC community, stop by any Thursday or Friday before May 18th to pair with Jonathan.

If you’re not yet a part of the RC community, you can still follow the development on GitHub, follow the research blog, and join in the State of the Room video chats weekly at 12:30 pm EDT on Fridays. All the code is open source so you can play, learn, and make your own.

If you’re interested in joining a friendly, welcoming community of people working on becoming better programmers, consider applying to RC. You can join us for a six- or 12-week retreat, or try one of our new one-week mini retreats.

Read the whole story
2 days ago
Share this story

Crow Calligraphy

1 Share

Nest Building Triptych

It’s that time of year again.

Most of the local crows seem to have suddenly become enrolled in some sort of corvid witness protection program.

The normally gregarious garden visitors, and dog-walk-followers, are suddenly either absent altogether, or shifty and secretive.

It’s nesting time, and I’m resigned to not seeing so much of Marvin and Mavis and the others until later in the summer when, if we’re lucky, they’ll come back to show off their offspring.

But I don’t give up on watching crows for these few months.

Instead I watch for the calligraphy in the sky.

Big Twig

The crows start to exist in my consciousness as quick brushstrokes, furtively flitting by with tell-tale beak attachments.

The latest cargo for the nest in the poplar trees has been grass, leading me to believe that we’re at the finishing, soft furnishings, stage of construction.

Crow with Soft Furnishings for Nest

There are only a few short days to gather clues as to who’s nesting where. Just now, the trees aren’t quite leafed out, and the nests under construction are still visible.

But the crows are smart and have tactics to confuse.

I believe it’s Eric and Clara who are building in the poplars and  they have at least two nests on the go. I imagine they will decide which of the two to inhabit (or perhaps they have a third that I haven’t spotted at all) once the leaves give them full camouflage.

It’s a bit of a mystery/thriller, illustrated with simple silhouettes.



There are characters other than crows in this year’s storyline. Ravens have decided to try the charms of city living in our neighbourhood this year.

Raven Call in Poplars


I’m thrilled. The crows are considerably less happy. Ravens will steal eggs from the their nests, so they’re on the “naughty” list, along with eagles, hawks, racoons etc.

As such they are mobbed relentlessly, making for a very busy crow spring.

Not only must nests be built – but ravens must be energetically harassed from dawn to dusk.

Raven Mobbed by Crows

Sometimes, it all just gets too much for the tired corvids.

One day last week I watched this raven in a tree, surrounded for about twenty minutes by a harmonious crowd of crows.

One crow even seemed to getting very close – perhaps trying for a diplomatic detente.

Raven Crow Detente

Note: Video follows, so if you’re reading this in email format, click HERE to go to the blog so that you can see the video.

For a moment it seemed that a crow/raven understanding might be reached …

… but talks broke off and hostilities resumed. I guess the crows were just taking a much-needed breather.


So, at this time of year, keep an eye on the sky for calligraphic messages from the crow world. You  might just learn where it’s going to be best to avoid (or at least to use an umbrella when walking by) later in the season.

See Dive Bombed by Crows! for more on this …

Twig Gift




Attempted Corvid Diplomacy
Corvid Diplomacy Failure

Download video: http://videos.files.wordpress.com/OKROoo5t/attempted-corvid-diplomacy-large_hd.mp4

Download video: http://videos.files.wordpress.com/OKROoo5t/attempted-corvid-diplomacy-large_dvd.mp4

Download video: http://videos.files.wordpress.com/OKROoo5t/attempted-corvid-diplomacy-large_std.mp4

Download video: http://videos.files.wordpress.com/OKROoo5t/attempted-corvid-diplomacy-large_fmt1.ogv

Download video: http://videos.files.wordpress.com/5icHfUul/corvid-diplomacy-failure-large_hd.mp4
Read the whole story
10 days ago
Share this story

Meet Ferdinand

1 Share

Around this time last year I was both delighted and intrigued when a reader emailed me about a very usual crow showing up in her yard.  Unlike its flock mates this crow was not black, but white and brown, like the kind of milked-down coffee that inspires the comment “would you like some coffee with your cream?”.  Understanding what would cause such a unique coloration in her crow sent me down a most unexpected rabbit hole where the science of what I call ‘caramel crows’ turned out to be somewhat subject to mystery.

Within months of publishing that article, I couldn’t believe my luck to encounter a caramel crow of my own named Blondie.  Whereas the science of their pigmentation may be up for debate, their beauty most certainty is not and I considered myself exceptionally lucky to lay eyes on one in person.

Photos of Blondie from 2017

Now, it seems my perception of their rarity may not have been quite justified as I have since discovered yet a second caramel crow, who I call Ferdinand, in a completely different part of the city.  Unlike Blondie, who lives exclusively in a residential area, Ferdinand’s haunts include a public park.  I won’t give his or her precise location, but if you’re a Seattle native I encourage you to use the clues provided in the text and photos of this post to see if you can find Ferdinand.  If you do use the hashtag #FoundFerdinand to update us on its activities but remember not to give away its precisely location.  This is both to encourage people to get outside and explore on their own, and to protect Ferdinand’s safety.  If seeming him in person is not possible I hope these photos will suffice.  As a last bit of fun feel free to let me know in the comments who you think wore it better, Ferdinand or Blondie.








Read the whole story
11 days ago
Share this story
Next Page of Stories