AirPort ♡ Free IPV6 From TunnelBroker.net

After signing up for a (free) account on tunnelbroker.net and creating a (free) tunnel with my ipv4 address as the endpoint I was able to easily configure my AirPort Extreme. View your tunnel, then click on “Example Configurations” and then “Apple Airport.”

In TCP/IP prefs for my MacBooks Network/AirPort Preferences I have “Configure IPv6” set to “Automatically” Then BOOM “ping6 en.blog.wordpress.com” works just fine.

IPv6 without needing my ISPs support and it didn’t cost me an extra dime. Happy World IPv6 Day

Peanut Butter Cup Salad

My wife asked me to recreate the recepie of something we get from the store so we could make it chunkier (yea, thats what I was told) and she could bring it for a potluck/meeting at work today… I got it pretty much spot on, so I thought I’d share it with you.

Peanut Butter Cup Salad

Ingredients

  • 1 cup whipping cream
  • 1 tbsp sugar
  • 1 tbsp lemon juice
  • 2 green apples
  • 2 red apples
  • 20 peanut butter cups
  • 1/2 cup roasted peanuts

Instructions

  1. Boil peanuts until no longer chalky when chewed, remote from water, set aside to cool and dry. If the texture is off-putting to you then don’t boil them, but the “chew” is nice in the finished dish, so perhaps use a more chewy nut instead?
  2. Core and cut apples into 4 wedges, slice wedges into 1/8 to 1/4 inch pieces each with a bit of skin. toss apple slices in lemon juice, set aside. The lemon will help prevent the apples from browning and give them a little bit more “zing” to cut the sweetness of the finished product.
  3. Cut peanut butter cups into desired sizes, chop the last 4 very fine (this is to flavor the whipped cream)
  4. Whip cream and sugar till stiff (if you cut a valley into your whipped cream the sides should not ooze in to fill the gap.) You want the cream just barely sweet, but not overly so, adjust sugar level while still soupy. If you’re feeling really adventurous bloom a packet of gelatin in a small bit of the cream before making your whipped cream, it will make the product last longer and give it a more unctuous mouthfeel (I have not actually tested this…)
  5. In a large bowl mix peanuts, apples, and peanut butter cups thoroughly. Mix them together first because over mixing with the whipped cream will make un-whipped-cream.
  6. Fold in whipped cream in 3 batches with as little “stirring” as possible (otherwise you break the whipped cream back down to just cream.) Everything should be just coated, but not so much that you can no longer see the ingredients (except the peanuts, those will be hard to see).
  7. Place plastic wrap tightly down on the entire surface of the mass in the bowl (cream picks up funky flavors in the refrigerator, and nobody wants their desert tasting like wet yak hair!)
  8. Let rest 24 hours for best taste (it takes time for the whipped cream to really soak in the peanut butter cup flavor.)
  9. Devour

Let me know if you try it and/or have anything to say about it!

elockd [more] publicly available

I’d call this an 0.5 release. It’s now in the code repo that we at Automattic use to put out little open source tools.

I’ve fixed several bugs with the code since the first time that I posted about it. It can handle at least 2k active connections, and at least 100k shared and exclusive locks (split 50/50) and can handle every single connection orphaning its locks at the same time for both shared and exclusive locks.

It’s a pretty good bit of code… not bad for under a week in my spare time.

I suppose that I should explain what it is and does. And why I care.

The idea behind lockd was to build a network oriented daemon which would handle arbitrary locking of… things. The idea was to mix the ease of Memcached with the atomic chewy goodness of MySQls named locks. It’s really handy to have something like this that can be depended upon when you have a very large distributed environment to keep things from stepping on its own toes.

Only one client can have an exclusive lock, and only the lock owner can release it. any client can inspect that exclusive lock to see if it’s held or not. If the owner disconnects from the server then all of the owned locks are released.

Any number of clients can acquire a shared lock, and the result of the locking action includes the number of other owners sharing that lock. The response for the first lock request would be 1 lock acquired, while the second lock request for the lock would be 2 lock acquired (i.e. two people have this lock.) Likewise releasing the lock decrements it, and inspecting the lock shows the number of open handles to that lock. All of an owners shared locks are also released on disconnect.

Oh, did I mention that it also keeps stats for you to use in your munin graphs? Yea. That too.

So… some obvious questions I’m sure you’re wondering:

1: why not just use Memcached? Well Memcached has no knowledge of the state of your connection. I want a lock that goes away if the parent process disconnects for any reason. You could do this with timed keys in Memcached but you run two risks: the first being that you might not get around to updating the lock and resetting its ttl before it expires leaving another process able to lock erroneously, and the second being that given enough data flowing through the cache your lock might simply be pushed off the back end of the cache by newer data — something that I don’t want. Also shared locks would be difficult here.

2. Why not just use MySQL named locks? You can only hold one named lock per connection, and there is no concept of shared named locks.

3. Why not use filesystem locks? Those tend to be difficult for people to code properly, depend on various standards implementations, cant do counted shared locks, and most importantly aren’t network enabled.

4. Whats the big deal about shared locks? They’re super powerful — great for rate limiting, etc.

5. Wasn’t there already something out there for this? I’m not going to say “no,” but I will say “not that I saw when I looked”.

6. Why did you rewrite it in erlang, was the PHP version bad? Yes, sort of, the PHP version played some interesting tricks to achieve a thread-like operational state, but I believe that there are timing issues because of those tricks that cause it to crash in as-of-yet unknown circumstances at high load. The PHP version is also slow when there are a very high number of clients or locks. Erlang was, essentially, born for this particular purpose since it sports great concurrency models immutable variables, and the way that the gen_* things work out I get atomicity built in even with all these concurrent clients grabbing at stuff.

7. Whats the API look like? It looks nice and clean…

“g $key
” — get exclusive $key
“r $key
” — release exclusive $key
“i $key
” — inspect exclusive $key
“sg $key
” — get shared $key
“sr $key
” — release shared $key
“si $key
” — inspect shared $key
“q
” — show stats

elockd

I’ve been working on an erlang port of my php locking daemon in erlang (which is a more appropriate language for this kind of thing.) And I have it all tricked out (ok partially tricked out but hey it’s my first real erlang project and i’ve only spent 2 afternoons on it.)

The api is completely the same between the two (read: simple), and it works great (in my tests.) It supports both exclusive and shared locks, orphaning on disconnect works great for both, stats are working, it’s all running under a supervisor to restart anything that stops, I *think* i’ve done the code well enough that hot code swapping should work as expected. I know there’s a lot of “how an erlang application is packaged” stuff that I don’t know yet.

If i had to describe in a one-liner what this does i would say that lockd is MySQL named locks meets Memcached.

I’m kind of annoyed, however, that “erl -s esuper” doesn’t run the stupid thing, I have to actually run esuper:start(). to get it going. I’ll have to figure that out. You would think that running some precompiled beams/modules/functions/args would be super easy from the outside a-la-init-script, and it probably is but I’m missing something.

Comments on the code are welcome. It’s a pretty cool little thing — my [lack of] mad erlang skills aside.

When I’m ready I’ll be testing it in production, and putting it in a public repo.

My Buddy Boy… Some Bad News

Buddy has been sick off and on for a few weeks now in various forms and to various degrees. He developed this little light, rare, cough… Then a week and a half ago He was throwing up his food and we saw blood. We took him to the emergency vet and had him checked out, we had an x-ray done looking for blockages in his digestive track, there were none. We did see something in his lungs. The normal vet thought it was probably a little bronchitis or similar and advised waiting a few days to see what happened. It got worse and his breathing became labored. We got him back in for more X-Rays just this Friday, and the results suggested one of two things.

There is a very real possibility that he has cancer of some sort. There is a more slim possibility that he has a systemic fungal infection.

Of the two we’re hoping for the yeast infection (and 6-12 months of Meds.) Because of how the X-rays look and how bad shape he’s falling into so fast… If it’s cancer… It’s pretty much a death sentence. So we’re waiting for results on his blood tests to see if its a fungus. And we’ve been trying to have as many good moments with him as we have left. Moments where he’s wagging his tail. Times when he wants to play ball. Even just times when he wants to cuddle. The house is already very different. I find myself crying at random memories. He gave me a face bath on Friday night… I couldn’t help but wonder if it was going to be the last one I’d get.

He’s not even 5 years old now, and he’s been through so much. He’s had such a hard life, medically. He’s survived parvo, allergies, too many infections to count. In the end I’m not crying for him, he’s going to a better place his pains get to end now. I’m crying for me… Because I already miss my friend now and It hurts to think how much I’ll miss him when he’s gone.

There’s very little blame to be had here. We feed him the best, we take care of him as best we can, we play with him, love him.

I wish that I had something better to put here. Something funny, or insightful, or informative.

I really do.