25 ArtLung posts from March, 2010
March 2nd, 2010
L.A.’s ruled by gurus,
and New York’s ruled by shrinks:
at least that’s what my uncle,
in Kansas thinks.
He’s got all my records;
they’ve been thoroughly analyzed.
He’s come to the conclusion
I’m demonically energized.
He said “If you choose to engage,
in experimental sex,
or write freakish novels that are
you can do all these things,
but don’t be surprised,
if you awake
to find yourself
He said “You can sing and joke about,
painful drug addictions;
and make no effort to resolve,
the looming contradictions;
you can do all these things
but wait till I close my eyes;
sin takes its toll
and now your soul’s
“If alcohol abuse
you choose to make light of
and common decency
okay to lose sight of,
indulge your freakish whims
in spite of how you’ve been advised.
Sin takes your soul
and now your soul’s
“If you choose to poke fun
of this country’s racial tension
and sing of things
that Nat Cole King
was far too nice to mention
if you’ve got devil’s catechism
he’s achieved his goal
and now your soul is
“Now if you choose to travel
to exotic places,
and if you choose to sit
on exotic faces,
if you think it’s cute
that a prostitute
is in song canonized,
he’s achieved his goal
and now your soul is
March 2nd, 2010
I’m an expert now at migrating old Blogger Blogs.
I am now a reluctant expert at migrating Blogger blogs to WordPress. If you have a more “modern” style Blogger blog, it’s very easy to import directly from Blogger using the XMLRPC way. Just navigate to Tools → Import Blogger:
Then authorize Blogger via Google:
And voila, you have access to your Blogger Blog, assuming it’s supported.
BUT IF IT FAILS, YOU NEED A PLAN B
But if it fails, as it does for some folks with older blogs, then you must try the long route. Comments and corrections are welcome on this post. Please feel free to spread the word about this post to those left hanging by Blogger.
Step 1: Export your blog to XML from inside Blogger.
Step 2: Choose “Export”:
Step 3: Click “Download Blog”:
The file produced is a in a special Blogger export xml format. It will be named like
blog-03-02-2010.xml. This file should contain all your posts and comments. It will not contain the images you use on your blog. If you host on your own server via FTP though, you should have all those old images.
Step 4: Convert your Blogger XML to WordPress XML (WXR Format):
But WordPress can’t import this file format, first you must convert the file to the WordPress compatible WXR format. You can use the blogger2wordpress online tool: http://blogger2wordpress.appspot.com/ to do this:
Step 4a. (If online conversion from Blogger XML to WordPress XML fails):
Caveat: if your blog is too large, this may time out or fail. If that’s the case, you need to download the command line version of the tool and run it locally. The project is Google Blog Converters. Download the file
google-blog-converters-r79.tar.gz(as of this writing it’s at version 79, that number may change).
Under MacOS, this .gz file should automatically gunzip itself and leave you with a file named
google-blog-converters-r79.tar. My downloads go to a directory called
Downloads in my home directory, so where I’m working is
/Users/artlung/Downloads. I untar the file by double-clicking on the file in Finder or if I’m already on the command line by running
tar xvf google-blog-converters-r79.tar and get a directory called
Step 4.b: Open Terminal, and run:
You should see:
Now it’s time to run the conversion:
google-blog-converters-r79/bin/blogger2wordpress.sh blog-03-02-2010.xml > wordpress-blog-03-02-2010.xml
Assuming the conversion worked,
ls should now show the following files in your
That XML conversion is the hard part. I’ve not had it fail on me doing it that way, but if it is, you may want to check the README.txt file distributed with the blog converters tool.
Step 5: Import WordPress to WordPress:
This is covered pretty well in the document Importing Content: WordPress on the WordPress site.
Step 5a: If the file fails to import because it’s too large:
If the file is too large, then you can try overriding the various file upload limits under PHP, and WordPress: How to Import a Large WordPress XML File and Override the Default Limits
php_value upload_max_filesize 32M
php_value post_max_size 32M
Read more about these PHP settings (which override the settings in
You can also try setting the max limit constant in your
wp-config.php file, just add this line:
/** Increase max upload limit */
But I’ve had mixed success getting a shared server to respect these various limits. So, yes, here’s another step. Ugh. I know this is ugly.
Step 5b: Remove extra whitespace:
If, and only if your XML file is almost small enough to fit, you can remove the leading whitespace from the XML file. Basically under an editor like TextMate you can do a search for
^ + and replace with nothing to remove the leading spaces.
But that may not help enough. In which case it’s much uglier still.
Step 5c: Break up the XML file into segments small enough to fit on upload:
Really, WordPress should support importing a file you can FTP into its upload space, but I can’t find a tool or hack that allows for that.
wordpress-blog-03-02-2010.xml we have can be broken up. To do this you need to edit the text file (XML is just a text file). The way I did it was to make multiple copies of it, named like this:
The nice thing is that for each
element in the WordPress WXR file, there is an element named
. The numbering starts at 1 and in my example goes to 230. So remove everything between and including
for the numbers not in the filename, and resave each file. So in the first example I removed
wp:post_id values greater than or equal to 76.
Assuming each file is under your upload limit, each one can be uploaded the normal way in the WordPress Dashboard: Tools → Import → WordPress. If the files are still too large, you will have to break them up further. Be cautious with the formatting in the XML or you will lose posts.
Now, this does not cover the ways to manage your images, converting your permalinks to a new format to assure old links to your site work, the best way to install WordPress, how to convert a blogger theme to WordPress, or how to assure you have archives pages work and redirect correctly. If there’s call for it, I may write those up as well.
Best of luck!
March 3rd, 2010
Speaking of blog migrations from Blogger to WordPress, here’s a successful one:
Initially Lura was hosted under Windows and IIS. PHP was installed on her former server, but it did not really respond appropriately and the various IIS/WordPress/”mod_rewrite” hacks did not seem to work. So I advised her to move to PHP/Apache. Things went pretty well until I realized that because FTP for that server had been flaky, I didn’t actually capture all the images on her blog. Lura’s backup also lacked those images. To top it off, web.archive.org didn’t have the images either.
That was a pretty catastrophic and terrible error. Luckily, FlareHosting, saved me by being helpful and responsive. They had the prior server available and I was able to carefully find and copy over the missing images to the new server. A run of linklint to verify my work and all was well.
I also had a small bit of fun changing her Art page over from manually maintained galleries to using her smugmug account as the source. It works a lot like how my brother-in-law Rick‘s “angling” page works (which I built back in 2007), basically pulling in a syndication feed dynamically using magpie under the hood.
As far as theme, Lura’s site has been pretty clean for a long time, so it cues off of her basic design in a custom theme. Very minimal, but seems to work pretty well. This was a fun project altogether. Learned a lot, and got to help out a friend!
March 4th, 2010
The inestimable, very funny Eden Kennedy was also stuck with Blogger. So she and her over 1200 posts and 15000 comments (!) were stuck on Blogger without FTP. I’m proud to announce that in the main, things are moved over and working anew. I’ve done the redirects for old archives, though there are some custom Blogger magic (she had 2 other blogs that we’ve placed into WordPress with categories and will be separating out.
But she can blog, and it’s fast (I can’t imagine what it was like to use Blogger to publish via FTP something like a template change with that volume of posts and comments!), and she likes her new theme, and new tools. I’m pleased as punch to have turned this around pretty quick and look forward to further improvements and tweaks. She chose a new theme and she took very fast to customizing it with her various (incredible!) writing and online projects. Did you know that in addition to working on redoing her site she also delivered the manuscript for a book?
March 4th, 2010
Blogger has done work to create a migration tool for Blogger FTP users and is doing great communication.
You can move to a blogspot blog, (which you could do before) or change from self-hosting to being hosted by Blogger/Google by changing the DNS to point at Google’s servers. This is similar to how tumblr handles custom domain hosting.
The real failing here is that this does not account for whatever images or other multimedia you have in your posts.
It’s great that Blogger is doing all this work to communicate the changes, but I don’t think this migration tool is that great a solution. It’s also unclear to me how well this will work if you were hosting your blog in a subdirectory of your site.
This would not have been a solution that would have worked for any of the folks I’ve recently migrated.
March 5th, 2010
March 6th, 2010
if you have had someone close to you pass away in the last few years, i would really like to hear about your experiences related to the web. This can be anything from trying to find a funeral home or caskets, to trying to create a memorial site, or dealing with a remnant social network page. what were good experiences, what were bad experiences, what was missing, and any general reflections on dealing with death in the digital age. thanks.
Go to need some insight on death and remembrance in the digital age and let him know. You know, I met him once, and he was quite a nice fellow.
March 8th, 2010
Leah asked me to implement a simple redesign she had cooked up. She was tired of the heavy and dense site she had, and I am responsible for turning her new design into a clean, purely WordPress driven site. It seems to work well so far. See Leahpeah: flawed but authentic.
I moved a fair amount of stuff around. One thing of note is that I changed her former blog url structure, which included the
post_id as part of it. The way we worked this site was she began to input prior pieces of her site, then I would do selective imports of her posts and pages. Some pages did not make the cut.
Unfortunately the impact of that was that all her old urls were then off. Primary database keys are great if you’re going to stick with the original database. If you import it in chunks, the impact is catastrophic for the permanence of links. So last night I made a list of all the former links using a backup of the site, then did the same thing with the new url scheme. This worked great, and now permanent redirects are in place for all 1115 of her old posts (since 2002!).
It was a lot of work, but so far so good. Her blog is the most trafficked part of her site, and that area is slightly different in terms of including footer blog chrome:
Leah is about to get a bit more attention as she’s now appearing on the Showtime website, and fairly soon will be appearing on Showtime itself. A critical piece of being able to handle the possibility (it is not guaranteed) of high traffic is wp-super-cache, which I have active and ready. We’ll see if a) any traffic comes and b) if her WordPress install holds up. Now keep in mind, Leah’s site has withstood a dooce-ing or two.
Oh, and by the way, for the uninformed: doocing is analogous to slashdotting. Or, wait, actually, what is the best metaphor for “a high amount of traffic from one source all of a sudden because of a mention” — digging? fireballing?
One of the things that made this project go so fast was the fact that we did wireframes of the new Leahpeah.com before we started one bit of code. This helped immensely with the process, and aided greatly through the use of Balsamiq Mockups is really a great tool for rapidly putting together a site and getting to an understanding of what pieces and parts will and won’t be necessary.
March 11th, 2010
A new site launch, for Tyler Peterson, my stepson who I am extremely proud of. Here’s a screenshot:
Once again, Balsamiq Mockups has proved awesome for quickly getting to agreement about basic layout and design.
Check it out, particularly if you’re a college who wants to give a talented running back, great student, and very giving kid a break!
March 11th, 2010
Amy Adams recently confessed that she sometimes finds herself acting like her Gisele character from the movie “Enchanted” to please her young fans.
She tells, “I can’t tell you how many times I’ve had to explain to little girls, ‘Shhh, I’m in disguise!’ One time I was at an airport and I was spotted by an adorable three year old. I thought I’d ruined her life. She looked at me as if to say, ‘You’re not Gisele!’ I thought, ‘I can’t be responsible for her loss of faith,’ so I told her in my Gisele voice that I was in disguise so that Queen Narissa (evil witch) couldn’t find me. And she was like, ‘Oooh!’
March 12th, 2010
I went, myself, back in 2001. That’s 9 years ago. Austin was a great town and I had fun.
These many years later what stands out is meeting the folks from evolt at Evoltageddon 2. That was fun–really fun actually — The Ginger Man was a great bar. At the time I was an admin for Evolt, a community of web developers. There were a few other people I vaguely remember seeing. My memory is fading. I think I ran into Matt Haughey between panels. I attended film panels and web, or really “interactive” panels. I especially remember going to the premiere of No Maps For These Territories, a documentary about William Gibson. I attended the Webby Awards, I think. I had fun, but I didn’t fearlessly dive into the social aspect. I think had I gone 2 years later I’d have been much more social. I can experience some of SXSW via the podcasts they will release after the show is done. Leah will be promoting her various projects and probably participating in a panel.
I miss her, but I know she’ll have a good time!
March 12th, 2010
It’s been a great chance for me to try out Tumblr. I think it’s a great, focused tool. It’s blogging for people who are not interested in the blogosphere. It’s great for sharing images, and it can be great for socializing. I know it’s enjoyable for me to bounce ideas back and forth with Chris.
The downside of posting mostly images is that images seem to be posted mostly without permission. Anil Dash’s YouTube and the Million Mixer March is worth reading if you’re interested in what it might mean for all of us to be copyright scofflaws. I think people ignore the issues of permission and copyright entirely now, after all, it’s just a blog, it’s just Facebook. I view fair use more liberally than I used to. I figure, if someone wants to complain, they will. I worried, for years, about putting up the audio of the Larry King radio stories I captured 2002. It took me 8 years before before I was willing to put them up without permission.
Tumblr is social, but I’m not very social there. It is great to group-blog with friends. I’ve missed that since I sold San Diego Blog back in 2007 (aside: I just posted over there, and got no comments at all, sad).
Back to social blogging — it’s fun to see what CPG posts, and to see if I can find items that are similar or related. Almost like how he and I used to sketch–riffing on each other ideas. Instead of drawings, it’s images and videos. In a way, it’s like the mix tape equivalent for blogging. It’s kind of amazing how my interests in the subjects covered there have stayed so strong, so long. It seems to be about science fiction, aerospace, space travel, comics, Japan, Blade Runner. My 16 year-old self would be right at home posting to New City, though he would be shocked about the ease with which one can use search engines to find interesting and obscure images, so quickly.
One of my favorite aspects of blogging images is you can do interesting at-a-glance visualizations that give a snapshot of what’s on a site. Here’s Tumblr Mosaic Viewer, on New City:
And as a side issue, “New City” is a very old concept of Chris and me. It was going to be the company name we would use for our world domination plans. Here’s an ancient image I made on the Amiga. Circa about 1986-1988
How many of you are regular users of tumblr? How do you use it?
March 15th, 2010
I mentioned moving Leah over to WordPress a few days ago, and that went well. I’ve been migrating over her prior content and deleting unused content a bit since then.
In rooting through the site, I came across this:
… which we put in place when there were folks deeplinking some larger images on her site. It was kind of fun, though she never got the kind of traffic or server impact that imagine Jason Scott got during his MySpace/Goatse adventures.
Anyway, I upgraded her photos area, no, not her flickr account, this predated that. It’s got photos from about 2002. It was run with Gallery, which for its time was pretty good. It had theming, could import photos from the filesystem, and automatically did thumbnailing, and could import videos, pngs, gifs, jpgs, bmps. It worked well.
But it was a pain to maintain and theme. I avoided doing anything with it, and as time passed small changes would cause problems. I had done some includes across the rest of Leah’s site, and these caused problems because I made other changes later. It was running version 1.5.3. I neglected it, and it gathered spam comments and had a big memory allocation error at the top of the page and UGH! The frustration.
Well, with the release of the new version of Leah‘s site on a new server, nice and clean, I had the opportunity to work on a staging server to see if I could upgrade the site and make it work. And so I started. I downloaded the latest version: Gallery 3 RC1. That went well, a nice process altogether, but rather detailed. Image apps have to point at a lot of local resources – ImageMagick or NetPBM, folder paths need to be set — it takes some attention to get it right. It uses MySQL on the backend and Kohana as the underlying application framework. It looked like a go, and loading new photos and making new albums worked fine, but there was no option to import from Gallery 1, only Gallery 2.
Okay, fine, I thought. I’ll just upgrade to version 2. No problem, version 3 is only a Release Candidate anyway. So I did the same process again, though different. It’s a clunkier process, but I got it working pretty fast. Then I went to import my Version 1 Gallery with the import docs, and it didn’t work.
Uh, what? I’m on 1. Gallery 2 can import 1. Only, no, it can’t import my specific version of Gallery. It needed to be running version 1.5.10 to be importable.
So I installed version 1.5.10, clunkier still, but familiar to me. Though I had a heck of a time finding where to fix the install errors, mostly the locations of binaries. The interface is maybe a dozen different tabs with lots of options. And voila, I got it working, rebuilt the thumbnails and things seemed to work okay.
Once I was there, I ran the import from Gallery 1 into Gallery 2. That required lots of rather long processes to determine if my .data files had enough integrity and whether there were any photos that were leftovers from the prior version. Several were, and Gallery 2 fixed that.
Luckily, the instructions on The Gallery Codex are very, very thorough. If you have upgrades like this to do, this is your bible. Follow those instructions very carefully.
So I got Gallery 2 running great, and looking great, and all the photos were imported properly. It did take about an hour and a half to process all the photos into the new format, but working = good. Once that was done, I thought, “well heck, might as well push forward to Gallery 3″ — which worked pretty well, until I came to the process where it was going to import comments.
That process indicated that I had about 12 hours to wait until all the comments would import. I thought, “that can’t be right.” I let it run.
After about 45 minutes I thought to myself. How many comments could these photos have? Turned out that number was about 135,000. Which, uh, was ridiculous.
So I went looking for a way to run Akismet against the comment database in Gallery 2. That sort of worked. So I thought, I’ll try the same thing against the comments that had already imported into Gallery 3 (if I remember right, about 4000). There was no easy way to do either.
So then I was rooting around in the MySQL database for my Gallery 2 install. Running queries, killing off spam comments. I knew I had some comments I wanted to keep, and the thought of deleting them all just because the damn spambots had hit this ancient Gallery so hard irritated me. So, based on my hatred of spammers, I pressed on and worked till I found some patterns I could use to bulk delete. I was pretty tired by that point. In retrospect, I could have gotten much further along had I started ordering the comments by date from the start. Instead I was using the keys in the database, thinking lower meant earlier, but the import from G1 to G2 was not in chronological, so my PK’s were a mess.
So I finally got through that in Gallery 2. And I reimported G2 to G3. It recognized the photos already imported, brought in the comments, and voila! I had a working gallery with all my photos.
G3 has much better organization. It’s definitely cleaner to look at on the filesystem, which is nice. G1 had a separate folder for source files (albums) than the gallery, which was a pain in the neck. Being able to simply rename the folder, and change a few configuration settings made it worth it.
Of course, then I wanted a slightly prettier theme. Well, G3 themes are really not fully baked yet. Some had simple .zip file downloads, some of which point to a github account. They’ve done some great work, but they’re really not ready for the masses to use this in the same way, say, WordPress has been forced to be.
I was going to build a theme from scratch in the same way I’ve been building WordPress themes lately, but I’m holding off for a while.
This was a lot of work, but it was all worthwhile when I came across this photo from 2003, of my wife and stepkids, from 2003:
Seeing this photo made my heart dance. It made all the pain of upgrading worthwhile.
Oh, and for comparison, 7 years later, the kids look like this:
March 16th, 2010
I think the Leahpeah Podcast is due for a new episode.
March 18th, 2010
Gary Come Home (18)
I am 36. (17)
Listening, Thinking, and Gestating. (14)
San Francisco Suggestions? (14)
Ché the Cat 1997-2006 (12)
Migrating an old Blogger blog to WordPress (12)
Today: The Day (11)
Posts That Might Be (11)
I’m 37. (11)
Mom and the Cancer (11)
My Name in Japanese, 1987 (10)
Are you a Respiratory Therapist? Do you blog? (10)
Web pages are dead. Long live web pages. (If they’re made of people) (10)
Mom’s Cancer News (9)
Unsung: 7 Years Blogging (9)
Memo to myself. (8)
Joseph James Crawford (8)
Thank You All (8)
I added a “most commented” page to this site. This continues my evolutionary changing of this site.
In this post, the most commented posts are dynamic, because I added it as a shortcode to my theme. Here’s the code below (and also on github):
'; $posts_per_page = 150; query_posts('orderby=comment_count&posts_per_page='.$posts_per_page.'&order=DESC'); if ( have_posts() ) : while ( have_posts() ) : the_post(); echo ''; the_title(); echo ''; echo ' ('; comments_number('0','1','%'); echo ')
'; echo "\n"; endwhile; else : echo '
Sorry, no posts were found.'; endif; echo ''; // reset the query so when I use it it doesn't // cause posts to be displayed query_posts('tag=NOTAREALTAG'); return $out; } add_shortcode('most_commented', 'mostCommented'); ?>
March 19th, 2010
March 20th, 2010
I’m not sure why exactly they call it “The Big Four Oh.” It is startlingly common to hear it called that. My mom, my mother-in-law. Maybe everyone calls it that. I don’t remember 30 being called “The Big Three Oh” though.
I’m not sure what I think about turning 40 yet. I feel pretty good. Imperfect, moving forward me. Yo holmes, onward.
Previous birthdays mentioned on the blog: 31, 32, 33 (wherein I was recovering from dental surgery and leah was taking wonderful care of me, a habit she has continued!), 34 (it was National Corndog Day. And it is again.). In 2005 I didn’t have a birthday. 36, 37, 38, 39.
Faithful readers, thanks for stopping by. Thanks for being my neighbor!
March 22nd, 2010
The wonder serendipity that was part of the net I remember now gets YouTubed and shared back with the world.
I wrote about Chatroulette last month, here’s some wonderful video that is internet + piano + video + flash-enabled randomized connected chat. It’s a wonderful selection.
Note: there are swear words.
I still have not hat the gumption / guts / foolhardiness to actually try Chatroulette though. But I look forward to more interesting improvisation and performance to come out of it. Artistic agenda + random audience = interesting YouTube. Well, or a trainwreck or offensiveness of the worst kind.
March 22nd, 2010
Frank talk about the interests of governance vs. conservative media in David Frum: Waterloo:
I’ve been on a soapbox for months now about the harm that our overheated talk is doing to us. Yes it mobilizes supporters – but by mobilizing them with hysterical accusations and pseudo-information, overheated talk has made it impossible for representatives to represent and elected leaders to lead. The real leaders are on TV and radio, and they have very different imperatives from people in government. Talk radio thrives on confrontation and recrimination. When Rush Limbaugh said that he wanted President Obama to fail, he was intelligently explaining his own interests. What he omitted to say – but what is equally true – is that he also wants Republicans to fail. If Republicans succeed – if they govern successfully in office and negotiate attractive compromises out of office – Rush’s listeners get less angry. And if they are less angry, they listen to the radio less, and hear fewer ads for Sleepnumber beds.
So today’s defeat for free-market economics and Republican values is a huge win for the conservative entertainment industry. Their listeners and viewers will now be even more enraged, even more frustrated, even more disappointed in everybody except the responsibility-free talkers on television and radio. For them, it’s mission accomplished. For the cause they purport to represent, it’s Waterloo all right: ours.
The article has some real smart realpolitik. It’s too bad the rest of the party couldn’t muster the will to execute on compromises to get something out of a popular idea–healthcare in the USA needs fixing. It’s time to start fixing it.
Regarding the tone and method of the conversation–the Great Republic of the United States of America is better served by better, smarter, more tolerant discourse.
It turns out extremism in the defense of liberty can be a vice, sometimes. (apologies to Barry Goldwater) (and actually, I quite like the full quote better than just the first part. The full quote from Goldwater is apparently:
I would remind you that extremism in the defense of liberty is no vice! And let me remind you also that moderation in the pursuit of justice is no virtue!
March 23rd, 2010
“Or maybe you just moved around a lot growing up.”
That sounds right.
In Islands in the Net I think Sterling refers to the homogenization of American accents as the result of the flattening aspects of “the net.” Net English, I think it how he describes it. Consuming a lot of media–television–I’m sure has had that effect on me. I wonder what my new exposure to more Mid-Atlantic to Southern accents here in Roanoke, Virginia will do to me. Maybe nothing, perhaps my accent is set for life. Can accent change later in life? I don’t know how that works.
The differences in accent and idiom are fascinating everywhere. Some favorites at random and off the top of my head. There are many more that I find interesting than the ones on this list:
- The usage of “dude” in California
- Spanglish (Spanish and English interspersed)
- Tanglish (Tagalog interspersed with English)
- The clipped pronunciation and precise diction of some Filipino nurses
- UK english idioms in film, tv, music (“take a decision” vs. “make a decision,” usage of “Cheers” as a greeting)
- The faux cockney (I think) of people like Lily Allen and Kate Nash–as I understand it they have been criticized for sounding cockney when they’re actually middle or upper-class.
I remember that my father, when we lived in New Orleans 30 years ago, would slip into something like a faux Southern accent sometimes when doing business with someone who’s working class. My dad was a Navy brat, like me. For kids who move around, going to new settings, I think language can be part of what can help you blend in. There’s a bit of “chameleon,” I think, to kids like that. I wonder if or how much I used it that way.
(Oh, and I found the quiz via Meg)
March 23rd, 2010
color me passing strange on the BOX blog is worth a read for Stew, Negro Problem and Passing Strange fans. It aligns with many of my own experiences, particularly the Adams Avenue Music festival and Java Joe’s in Ocean Beach. It also links to some of the lyrics I have posted over the years.
Stew, The Negro Problem, Passing Strange. Awesome.
March 25th, 2010
March 27th, 2010
Back in January, Leah posted a scan of a thank you card we made together. That was really fun to make.
March 27th, 2010
March 29th, 2010