I don’t understand what’s going on, and I think understanding would ruin the magic.
Common Lisp in the desire to be as cool as possible includes in its specification the Common Lisp Object System, or CLOS, which itself can be introspected and altered in great detail using the MetaObject Protocol, or MOP, as described in The Art of the Metaobject Protocol. Unfortunately, MOP didn’t make it into the ANSI standard, but most implementations include MOP as it is described in the book, and a compatibility package :closer-mop (available in Quicklisp) makes using the symbols described seamless between implementations.
One of the features of MOP is the ability to make an instance of a CLOS class funcallable, that is allow a class instance to be a valid first argument to funcall. This behavior in a lot of ways can resemble the traditional method model from other languages, but that’s not how I intend use it here.
I’m going to show and tell an implementation of a generic finite state machine that uses the MOP concepts of
funcallable-standard-class to marshal the flow of incoming events to the machine and the concept of CLOS generic method dispatch to handle the execution of transition handlers for any given state of the machine.
These features will allow us to build a structure that lets us focus solely on the problem at hand and defer features like event data binding, state-dependent method selection and unexpected state handling entirely to the language without pushing the boundaries of any specific feature.
The design we’re going for is such that we can define a class with a
state slot that will hold
:keyword name of a state. We’ll make instances of this class funcallable so that when we make an instance we will be able to simply
(funcall fsm-instance fsm-evemt) repeatedly and have the machine dispatch to the correct event, perform any logic, and transition to the next state based on the input.
We would be able to query the state of the machine with
(state fsm-instance) and receive a keyword, and we should be able to drive events into the machine until we’re in a desired or unexpected state. Any attempt to feed the machine an event while the machine is in an invalid state should result in an error.
Holy Balls, this is hilarious. My friend Joel witnessed a disastrous first date, and twittered the whole thing.
I’ve decided now would be a good milestone because the HTTP server functions, and has a set of exported APIs that let you reply to the requests it generates.
The quick set of terrible benchmarks I performed on the “Hello World!” example show me a requests/second throughput of 1500-2500 depending on the mood of ab (and the state of the number of sockets available on localhost). I intend to run it through a more serious (and HTTP/1.1 supporting) tool in the future, but for now ab has convinced me that the decisions I’ve made so far have not been abysmal.
The examples directory contains a bunch of example programs, or in the earlier cases, code snippets demonstrating various levels of functionality.
In the near future, in addition to covering the issues in the README, adding additional polish, and any bugs or blatant performance issues that come up I would like at some point to add support for:
- HTTP Clients
- SSL Sockets and Servers
- SSL HTTP Servers and Clients
- Async wrappers around FS calls
- Websockets (RFC6455) support
- Mongrel2 ZeroMQ handler support (through m2cl)
- Mongrel2 ZeroMQ protocol-compatible server
- SPDY Support (Somewhere down the list, maybe)
Any feedback is welcome however way you want to deliver it to me. This initial version stands to serve as a basic starting point for the concepts I wanted to convey, the take on the core APIs I wanted to offer, and a proof of a series of related concepts and architectural decisions. It may (hopefully) be useful as a stable base for progress, rather than chasing an otherwise potentially unstable head.
Jason also gave me the opportunity to stretch the idea of the graph format. The first graph I ever did for him, I think, was a Venn diagram that said “Diagrams” on one side and “Things That Venn Thought Of” on the other. The middle was blank. About a year later, I went back to the Venn to try to make sense of the most world-changing of modern inventions.
You’ve never had less excuses to not own this 21st century classic by this up-and-coming, though inexplicably universally respected author.
This is an overview of how I believe a real software project lifecycle can and should be managed when the tools at your disposal include a GitHub repository and a CI server. The explanation favors Jenkins but shouldn’t be exclusive to it.
It was originally written for work to finally get down in writing my opinions on project code, build and release management for the project I’ve suddenly started leading. I’m sharing it here because I believe these guidelines to be more generally applicable to any project that actually makes releases and has more than a single team member.
And so it spoken hereinwithsuchthat in which there was such that as well the process herein follows is described within which such as much with respect to the following as is described thereafter henceforth ignoring here forth the following colon and subsequent newline, in so much that one may or may not be plural and the other must remain singular:
First off, this appears to be some sort of retarded ass holiday special. Too many of those if you ask me. I’m watching the intro, which is pretty much a summary of an old car driving past people with other old crap with a painting stuck into the too-small-for-it back seat. It transitions to black and white footage of a child, or now, children unwrapping christmas presents with narration. This serves as a setup to the annoying narrator in a horrible sweater showing off one of her pointless bears of a useless childhood to try to convince you that other people’s garbage can, indeed, be somehow overpriced treasure.
They’re not even pausing on items, just wandering around and showing shiny things that people previously owned. If I may opine, the entire point of the show would appear the juxtaposition of old junk with sudden wealth, and this show so far leaves out the entire second part of this tried and true formula.
Oh, back to the wood paneled room with a tree and an annoying narrator. Clip shows mean you care, set up the footage!
Maybe, just maybe this time they will actually walk through an entire presentation for an item rather than panning around and cutting people off. Nope. They absolutely inject the narrator into every single discussion and splicing content together to create a narrative that can’t even be slightly cared about. Even as someone who would otherwise be attracted to the antiques presented, this show serves more to, if you forgive the language, jerk itself off for no reason other than the ability to do so.
Oh! Great scott! A few thousand pounds, the first price named for arbitrary jewelry. It’s some long-lost jewelry, apparently. This is important to the old dude they earlier presented as import. The first time they’ve actually stopped on an item, and declared it worth in the five digit range. Obviously something of that nature warrants an interview with anyone and everyone involved. You want to be on what the other side of the couch holds? That’s right, a freaking christmas tree opposite the interviewer in the annoying sweater.
Onwards to the auction of stupid jewelry. It’s Lot 150, if you’re ever curious. The auction is supposed to show that the money that was quoted by the professional was far too small. It will sell for thirty-one thousand British. Not bad for an old chunk of metal. The old lady that owned is pretty pleased, and they much comment on the fact. Though, the setting moved from the large wood-panneled room into something resembling more of a library setting. The number of trees that are scattered throughout that house must generate a mess.
So the expert, during the interview I’ve been complaining through, is explaining how terribly wrong he was. Apparently the ten grand he pulled out initially was the largest amount he was able to come up with at the time, but his explanation for the 31K figure was “well, duh, obviously, it’s rare, shut up.”
Oh my fucking god. They are now making terrible puns around things. I’m actually suffering as I watch this, but I must soldier on.
The clip takes to a silver bull. They’re some sort of silver cups in the shape of a bull’s head. I have to admit, I don’t hate it. And if I could use them rather than just have them sit around for no reason, I would own them. 1869 was the year on it. And there are 12 in a set. Bulls are the rarest, he claims. Interesting right?
Oh, burn. The lady with the cups doesn’t even own them. So when they become incredibly valuable, she’s screwed. Let’s wait for the price. 150K, british, for the lot. Stupid bitch gets nothing and now has to know that she has to drag that much value around town for no reason. Way to go, guys, hope you can buy insurance on the go.
Oh come the fuck on, this is dumber than hell. It’s a train set. I don’t want to hear old people complain about toys and how awesome it is that it’s still around. They made it out of Tin, brass, and a few wood accents. It’s a freaking toy and they’re going to be talking about how awesome it was that it was ever made.
Now it’s German. Good job guys, you found a German toy trains. Even their children are trained to run trains from birth. Apperantly no one even wants it, and the only reason it has value is because only stupid people want them and they are rich. 50K for insurance. Good one. It’s a fucking train.
And another jump! A field with a castle in the background, and they’re staring down a rolex watch. No one cares about it. I care so little, I’m going to take this time to just go ahead and pee for no freaking reason. And you get to know nothing about the rolex. Consider, though, that if you’ve even read this far down you have serious problems. This is pretty idle to produce, and I assure you that I’ve only read it with a buffer of around three words around the cursor. The mere act of consuming this content, in full or even in significant part can be very well considered indicative of some sort of mental failure.
I also took the time to eat pizza. There were some watches, then a 10K painting, and we’re back to fucking toys. This show is so utterly useless if their idea of a good antique time is showing off a bunch of useless fucking toys. This is is an ugly ass wooden train and it looks like a fucking sex toy. SO fucking retarded. Let’s see what two blocks of wood coming together, and it’s either 20 or 5K, because no one has any idea and telling someone that they have crap is apparently fucking useless.
Are you kidding me? They’re talking with the irritating narrator in the christmas chamber showing off fucking christmas cards from the olden days. I can’t believe people actually give even a third of a shit about things like that. That was obviously a lead-in to an “offsite” as I will term it to look at more stupid fucking christmas cards. The first magic of innovation was a pop-up card of a church with a dude in a window. Truly inspirational.
This christmas thing is being ground into the ground. And now it’s basically the American’s fault for making christmas red and stupid shiny. They have this tiny little icon-looking picture of santa creeping on a kid. It’s owned by an ugly ass lady that’s fat, and it’s worth another ten grand.
There’s going to be another hour or so of this show, so I hope that you’re super pumped about the remainder. I might start considering easing off the livebloging of the entire program so that you can recreate a proper image in your mind’s eye and instead focus on just mentioning things on occasion and padding the remainder with boundless bitching. I can provide complaints in spades, and I don’t think I even need subject matter. I could just endlessly bitch about one thing then bitch about it in circles based on the earlier bitching.
BOXES! It’s an old man with a bunch of fucking gold boxes, the first one being worth at least five fucking grand. So he has a pile of fucking boxes worth thousands a fucking pounds a pop. Russian cigarette case? Twenty fucking grand. BRITISH. The total, apparently, is fifty to sixty. That’s pretty fucking nice, and he sold some of them and made 55K. I would keep some, I figure if they’re that old and still in one piece, they must work pretty well.
Now we’re on to the obligatory vase. It’s pretty pointless, and I guess kinda big. The dude claims it’s 200 years old, the appraiser is going to be like “no, older” I guess. We’ll see what he says about it. I’m not even sure if I’m going to pay enough attention for it to even matter. He said a year, but that sounds like math.
Oh, a thousand. Maybe the math even wasn’t hard. It was just garbage. The price tag!? 10-15. It seems they just like that range. “Oh, that’s old, how about 10K, get the fuck out of here let’s look at some fucking christmas cards!” They’re going to take it to auction.
More boxes, with some mail in it from 1903. A cup with some crap. They’re cups that are royal or something. Mass produced garbage, I guess. Hopefully it’s cheap, yes, it’s cheap according to them, but the wrapping was worth about four hundred.
Guitar. Potentially played by Bob Marley. This is starting to sound more and more like ebay. And now we’re pricing on speculation. That’s even better. We’re quickly approaching zero content for the time consumption.
What do you think is next? More boxes? Yep. Boxes. They’re going to probably boxes that are made of money. BUT. They are probably fake. Are they fake? Yes, they’re fake!? Let’s find out. He paid many many money for them, thousands, apparently, but they’re fake. Suck it bro! Oh, damn, he got a refund. That’s pretty unfortunate when I was hoping to see someone actually learning a lesson. Let’s follow this up with a speech from the dumbs narrator.
I’m going to skip this section, because it’s far more than boring and I think the time for the next few minutes might be better spent doing anything at all, maybe even just drooling.
I’m going to cut this short. It’s an antique show, and a christmas special at that. It’s dumb, and no one really cares about it. I’ve chosen to poop. Good day.