Friends

> Recent Entries
> Archive
> Friends
> User Info
> www.speirs.org
> previous 15 entries

Links
Photography
April Speirs
Projects
Xjournal
FlickrExport
Feeds
RSS feed
Del.icio.us RSS
Flickr Photos RSS
Reads
Buzz Andersen
Brent Simmons
James D Davidson
bbum
Michael McCracken
Gus Mueller
Other
Amazon.co.uk Wish List
Technorati Profile

May 16th, 2008


firewallender
12:15 am - Expressing gratitude and sadness in one fell swoop:

As per my doctor’s orders, it’s past my laptop’s bedtime. But, my laptop just got an upgrade to Leopard today, so it was out of commission for a bit. I’ll give it, or rather me, some slack.

I had what should be by all accounts a great day. I’m still feeling rather low though. I’ve been fighting off depression (which feeds my insomnia… or vice-versa?) for the past couple of months. It’s a strange dichotomy, because I’ve been more active lately, so in some ways I’m at the healthiest point I’ve been in a long time, but in other ways I’m at a very low point. Suffice to say, I’ve been pushing myself to stay active, for better or worse. I’m going to focus on the better in this post to cheer myself up.

Many good times have been had due to said pushing. I can’t believe how quickly time’s been flying lately. A few highlights from this week:


LOL, this picture cracks me up
The Skillbit Startup Wake at McLeod Residence

It's Wil Wheaton and Cassie!!!!!
Emerald City Comicon, namely, chatting with the glorious Mr. Wil Wheaton

Go, Speed Racer, Go!
Scott, Mike, and Max’s Birthday Party in Ballard (and my first Flaming Dr. Pepper)

Celebrating Mom
Mother’s Day at the Seattle Art Museum with my lovable family

Dierks Bentley and Cassie
And at iLike, Dierks Bentley, country music star and all around nice guy

I wish I had some shots of my bike rides to add - they’ve been lovely. All in all, a lot of crazy fun going on at work and outside of work. And tomorrow starts a whole ‘nother weekend. I figure I might be the luckiest girl in the world, so I need to snap out of this feeling sad rubbish. Ah, if only my head and heart would get on the same page.

Originally published at Firewallender.com. You can comment here or http://firewallender.com/2008/05/16/gratitude-and-sadness/#comments for extra awesomeness.
Tags:

(Leave a comment)

chanson
06:45 pm - CocoaHeads Silicon Valley at Apple on Thursday, May 15, 2008
The next CocoaHeads Silicon Valley meeting will be on Thursday, May 15, 2008 — that's tonight! — at 7:30 in the Garage 1 meeting room at Infinite Loop 4 on Apple's main campus. That's inside and upstairs at Apple's Infinite Loop campus in Cupertino. See the web site for directions.

This month's main presentation is on the Best of Both Worlds — an introduction to Cocoa development by Scott Stevenson.
This talk is a combination of an introduction to Cocoa, as well as a series of advanced tips and tricks that even relatively experienced Mac programmers may not know about.

The idea here is that we want to give all of the people who are new to Mac and iPhone development a chance to get started, but we also want to do something special for our advanced programmers. So rather than choosing one, we're just going to go ahead and do both.
Joel Norvell will also be presenting on how to edit PDF forms using Cocoa — he's done a lot of work with PDFKit and Cocoa, and I'm looking forward to learning from him.

Thanks a ton to Scott Stevenson, Steve Zyszkiewicz, Michael Jurewitz and Joar Wingfors for organizing!

In general, at a CocoaHeads meeting we do some introductions, have a presentation including Q&A time with the presenter, and then have an open Q&A and demo-your-cool-app period. After the meeting there's more independent mingling and discussion until it's time to go at 9:30. Often a subset of the meeting moves to BJ's Brewhouse in Cupertino, which is right in front of the Apple Infinite Loop campus on De Anza Boulevard.

(Leave a comment)

windowsmobile
[hennell]
12:47 am - Devicescape
If you use any form of Wi-fi network which requires you to log in, you'll probably be aware of the irritating problems with signing into them. My Uni requires me to type in a 9 digit number followed by @students.lincoln.ac.uk and then type my password before I can get anywhere, which is both time consuming and very annoying. I'd wondered about hacking something together to get round it, but never found the time to work out if I actually could. Having recently won a years worth of BTopenzone wi-fi roaming service however, I've found myself logging in more and getting more frustrated, so have looked into it again. Hence finding Devicescape.

Its a free program thing for Mobiles, laptops PDAS etc, which lets you automatically log into wi-fi hotspots (You can also manually confirm), without all the silly typing, you 'just connect'. It has support for Universities, work and roaming netoworks, and you can request sites you'd like added if they're not there. (It can also work on private home networks although I don't know what that adds). I'm going to admit I haven't technically used it yet, only read up, installed and joined, but it looks pretty good so I figured I'd share reguardless. I'll probably make a post some time tomorrow if I've managed to get it working, to say how it works etc.

Still check it out, see what you think. I'm hoping this will actually allow me to easily get online with my pda, without five minutes of annoyed tapping with my stylus...

(Leave a comment)

May 15th, 2008


spike
12:09 pm - FAILse positive
( You are about to view content that may not be appropriate for minors. )

(7 comments | Leave a comment)

May 14th, 2008


evan_tech
[evan]
02:59 pm - what you need to do in response to the openssl fiasco
If you have used a Debian-based system to generate SSH keys in the past two years, your keys are likely no good. This document has instructions. In brief:

1) Delete your bad keys: .ssh/id_*. Fix all systems where you're trusting those keys (think .ssh/authorized_keys); someone has already published a table of all private keys, so it's just a matter of time before your system is brute-forced.

2) Update your systems. I see an "openssl-blacklist" package show up on both my Debian stable and my Ubuntu whateverletterthey'reon one. You'll get some debconf prompts about it clobbering stuff, including potentially your host keys, which means the next time you connect to the machine you'll get the "host keys have changed" message.

3) To make yourself feel less anxious, try running ssh-vulnkey to print an analysis of keys in standard paths on your system. (Run it as sudo ssh-vulnkey -a to check all users on your system.)

(8 comments | Leave a comment)

edbook
01:44 pm - vine maple in the Ohanapecosh River Valley - six years waiting to be seen
vine maple branches with abundant leaves in springtime, Ohanapecosh River Valley, Mount Rainier National Park, Washington, USA ©2002 Ed Book (all rights reserved - DO NOT COPY)   http://edbookphoto.com
vine maple - Ohanapecosh River Valley, Mount Rainier National Park

©2002 Ed Book

Nikon 990 digital capture

... )

Peace

(5 comments | Leave a comment)

May 13th, 2008


evan_tech
[evan]
10:05 pm - type-safe printf
printf is a function with a complicated type. In C we used to just give up and tell the compiler "this function takes some other stuff that you shouldn't worry about" with the amusing "..." builtin. These days compilers have special support for annotating printf-like functions to provide type-checking. The other side of this is that an implementation of printf necessarily has a little tokenizer/parser for run-time processing of the format string, along with the associated performance penalty*.

Yet pretty much all programs that involve format strings ought to have the format strings known statically. Even a mini-language like printf turns out to have enough power to not be able to safely process untrusted input, as the "poke" instruction (named %n) demonstrated by creating a completely new class of security vulnerabilities. And without the compiler to help with type coercions, it's easy to write something invalid, especially when you're playing fast and loose with integer and pointer sizes across platforms.

Perl and Ruby neatly sidestep this problem by using string interpolation: at parse/compile time, the compiler scans the strings for bits to be expanded and just rewrites the "format" string to the equivalent concatenation of literal strings and variable values, which then uses the normal language's support for pasting strings together. (Prove it to yourself: perl -e 'use strict; print "$x";' aborts with a "compilation error".) But sometimes you really just want something like printf, and both those languages fall back on "figure it out at runtime" for that.


Supporting printf at all proves to be pretty difficult in more strict languages which generally require all types to be known. OCaml's compiler does some crazy hacks where sometimes a quoted string is interpreted as a format, a six-parameter type that, for example, needs its own concatenation operator. Haskell at least encodes it in the user-available language with some typeclass magic that gets you to more or less to feature parity with dynamic languages -- failure at runtime if the parameters don't properly line up.

But it turns out there's a nice paper that provides a type-safe encoding of printf that doesn't rely on any fancy language features. The paper is structured like this: (1) "wouldn't it be nice if printf worked like this?" (2) "oh wow check it out, here are the functions!" I've been staring at it for a week and though I can sorta see how it works, it's unclear to me how anyone would come up with it. Here's an overview from a person who lacks sufficient brain to say much smarter (me).


To start with, you don't use a string for the format string. This sorta seems like you've already given up, but you could imagine a macro expanding a format string into the proper expression here, much like how Perl/Ruby's interpolation works. Since this is functional code we're talking about, it ends up being an expression involving some functions. Format string concatenation ends up being encodable as composition, which means you end up with the same operator as Perl (.) for pasting them together.

The basic task then is that you need print (some magic here) to be able to give you a function of varying types, depending on what the magic is, so that print format1 3 "foo" can be type-checked that format expects an int and a string. So the type of printf must be (some magic type involving an a) -> a, where the polymorphic a is a function produced by the magic. And here's where the magic drops, painful in its simplicity:

lit :: String -> (String -> a) -> String -> a
lit text k s = k (s ++ text)

int :: (String -> a) -> String -> Int -> a
int k s val = k (s ++ show val)

printf :: ((String -> String) -> String -> a) -> a
printf fmt = fmt id ""


And that's it. lit is what converts a literal string into a format, while int is the placeholder for an int. So "my int is %d\n" would be expressed as lit "my int is " . int . lit "\n". If you drop this in to GHC you'll see that the type of printf (lit "my int is " . int . lit "\n") really is, as you'd expect, Int -> String -- it's waiting for you to give it an int so it can dump out the formatted string. The result of printf is just a plain function, so you do all the normal sorts of things you'd want, like partially apply it or pass it to map. The formatters are plain functions, too, so you can add your own formatter that, for example, can accept a list (as he does in the paper).


So how's it work?

Look at the two formatters, int and lit. The k parameter to the formatters is a continuation: it's where each formatter should pass the string constructed so far when the formatter is done. Then the s input parameter is the string as constructed so far. You can mentally expand printf (lit "foo" . int) as (lit "foo" (int (id))) "", where that empty string is your starting string and id is the innermost continuation which just gives you back the string that's been constructed.

You can also look at int like this, just with some added parens for clarity: (String -> a) -> (String -> (Int -> a)). It takes the continuation as a parameter, and the function it returns is sorta the same shape as the continuation but with Int -> a in place of a -- that's how it tacks on its need for an int to the greater formatting requirement.

But from there... uh, the types just work out. I don't know. It's pretty much magic.


[Edit: a commenter on reddit linked to this discussion of the general technique, which I haven't read yet but looks promising.]


* Though I'd argue you're in a pretty bad place if printf performance is your bottleneck.

(16 comments | Leave a comment)

balatro
02:35 pm - Lego Indiana Jones Demo
For all my friends who were fan of the Lego Star Wars games, there's a demo out for PC for Lego Indiana Jones. No word yet on 360 or PS3 demos.

PS: I'd rather have the Lego Batman demo but I guess beggars can't be choosers. :)
Current Mood: [mood icon] chipper

(1 comment | Leave a comment)

May 12th, 2008


edbook
10:20 pm - Facebook - I did it, see
Ed Book's Facebook profile


Peace

(9 comments | Leave a comment)

cheesepuppet
08:09 pm - New blog I love.
It's not new exactly, but it's new to me. It's called Fake Plastic Fish. It's written by a woman in California who is trying to drastically reduce her use of plastic. It came at just the right time, as I've been mulling this issue over myself. Where does all the plastic in the world go when it's discarded? I know we can recycle some of it, but certainly not all, and anyway, our household alone tosses tons of plastic every week in the form of packaging. What happens to it? Aren't we just filling up landfills? Beth answers these questions and many more. It's fascinating stuff!

Here's a quick intro to her and what her journal is about, including a photo of her surrounded by the plastic she's collecting.

Here's a basic outline of the problem. Why should we care about plastics?

Here's an answer to the question, "Should I be using those Evert Bags that keep veggies fresh?" I did, but after reading this, I'm going to stop.

Edited to add the following -

I really like Beth's perspective on the issue of plastic:

Now, do I think that plastic is the biggest environmental problem in the world? No. Because I have no idea what our biggest problem is, if problems can even be ranked that way. What I do know is that plastic is something that I can handle. I don't own a car, so I can't cut down my driving to save petroleum. I don't own a house, so I can't remodel to make my home more energy efficient. But I am a consumer. And I can control what products I choose to buy. And I can be an example and share through this blog the discoveries that I make. So that's what I'm doing!



Tags: ,

(5 comments | Leave a comment)

balatro
03:25 pm - Coffee Crisp
I just suddenly remembered one year when both [info]epi_lj and [info]zippyfish were aghast that I never tasted Coffee Crisp. So, weeks apart, they both sent me a case. I come home and find one case in the big mailbox out front. And then I find a case on my doorstep.

Needless to say I was swimming in chocolate for a while. :)
Current Mood: [mood icon] amused

(12 comments | Leave a comment)

evan_tech
[evan]
09:20 am - related posts
Dear Wordpress,

The links added to posts via your "related posts" feature are rarely (perhaps never?) actually "related" to the post you add the links from. This harmful in two ways: one, every time I click one of those links thinking the page author had more information for me to read (like Greg Linden's blog, which often has great related links), I find unuseful content and it frustrates me. Two, and maybe more worrying for you, you're training me to ignore those links; if you ever do improve the quality of the matching system later I'll never discover it.
Tags:

(Leave a comment)

islandboy
02:53 pm - Aileen's album has arrived!
Order from www.aileengilchrist.com

ETA: Her first album Breath of the Spirit has just become available on the iTunes Music Store too!
Click here:

Face To Face album packaging - 1

Face To Face album packaging - 3
Current Mood: [mood icon] excited

(3 comments | Leave a comment)

May 11th, 2008


islandboy
12:16 am - Enabling
I'm always impressed at how tactfully yet forcefully he can transmit a principle to those who really need to learn it.

Dave on enabling mothers

"Those convinced against their will are of the same opinion still"
Current Mood: [mood icon] impressed
Tags:

(3 comments | Leave a comment)

May 10th, 2008


evan_tech
[evan]
03:18 pm - concurrent editing
While I'm on the subject of concurrent editing:

My reading group read Designing a commutative replicated data type a few months ago. The basic idea I've retained from the paper (is has been some months) is that one way to avoid conflicts is to design your data representation such that conflicts are impossible by making all operations commute, demonstrating the theory by presenting a design for a multiuser simultaneous editor. ("Like SubEthaEdit" is what I kept saying to people, but apparently few people I know have heard of it.) By representing positions within the buffer as adddresses related to characters you currently know about, and having a globally-defined resolution strategy for two edits to the same position, you can safely allow edits to come in from clients in any order and maintain consistent state.

(Commuting operaitons sounds like darcs, doesn't it? In fact, this fellow was discussing darcs's patch theory in connection to concurrent editing, though I suspect ultimately it's the wrong model...)

The paper's really pretty clever in a bunch of ways (like: how do you make a globally-consistent addressing scheme in the presence of simultaneous edits?) and a friend and I sat down to implement it as a web app with a bunch of Javascript. I had planned to target the release of App Engine but the lack of Comet (again, that bites me) sorta turned me off to the whole idea. And I have so many other projects I ought to be finishing first... He, however, powered on to get something that seems to mostly work but is a bit on the inefficient side.

PS If you're curious, the model Gobby uses (Gobby is another simultaneous editor) is described here. It's again the "hope we update often enough that there's no conflict" design I mentioned in the previous post.

(7 comments | Leave a comment)

> previous 15 entries
> Go to Top
LiveJournal.com