Category Archives: MapsKrieg

On Mapskrieg and craigslist Cease and Desist Requests

As I mentioned on Twitter a while back, I got a cease and desist request from craigslist a couple of weeks ago for Mapskrieg (my craigslist + Google Maps mashup for web and iOS). This request came at a pretty bad time (right before I was to move from Chicago to Ann Arbor). I quickly agreed to it and removed the app (I didn’t really have time or money to fight a lawsuit). I also added a passive-aggressive note on that you can still read if you’d like. I contacted a reporter at PandoDaily since I had seen a few other tweets about C&Ds from craigslist. He proceeded to write a pretty badly researched article (he originally was going to post that I made that got very little attention.

Fast forward to Friday and I got a tweet that Mapskrieg’s competitor, Padmapper, also got a C&D. The internet erupts in anger and I realize that I forgot to write a eulogy for Mapskrieg! While I won’t get too deep into the politics of the current situation (I kinda think it’s like complaining about getting a speeding ticket after successfully speeding for 5 years without being caught), I will write a bit about Mapskrieg since it’s kind of a nostalgic topic for me.

The success of Mapskrieg was largely an accident. It wasn’t born out of a desire to build a business or anything like that. I built it because 1) I had just been rejected for a job at Google and wanted to prove to them that I was a false negative and 2) I accepted an offer to go to Michigan for my Master’s degree and I needed to find a place to live. Mapskrieg killed two birds with one stone.

While I had intended for Mapskrieg to simply show me apartment listings in Ann Arbor (something that didn’t and still doesn’t do), I found that the scraper I wrote could just as easily apply to any of the other craigslist areas in the US and Canada. I decided to go large scale and slap some Google Adsense ads on there to help pay for the server. I sent a message to Mashable and they were nice enough to do a writeup of the service. This led to other stories from Lifehacker and other cool blogs. Apparently this bootstrapped Mapskrieg to the point where it had enough Google juice to show up in a lot of search engine results pages. I learned quite a lot about SEO and advertising from running Mapskrieg as a result. I won’t go too far in detail about how much it ended up making, but at one point it made enough to pay for my rent, which was pretty sweet.

During grad school, I was too busy to add any improvements to Mapskrieg. After my first semester I realized that the page loads were getting slower and slower. Mapskrieg was slowly losing visitors. This was because I foolishly kept all listings in the database and pretty much never cleaned up or deleted old ones. The database got to millions and millions of rows or something equally ridiculous. I wrote a script that automated the process of pruning listings. Aside from a few random modifications (including porting Mapskrieg to Google App Engine, then reverting it), that was the last update I made to Mapskrieg. While Mapskrieg started to show its age (using technology from 2007 that I wrote when I was a noob), a new competitor came along that made it even more crappy looking: Padmapper.

(This is starting to sound like some kind of History Channel documentary).

While I could’ve attempted to go head on with Padmapper, I was instead having fun doing other projects like Troubadour Mobile and working at random places like Microsoft and Threadless. Mapskrieg was a really good source of passive income but I always figured that craigslist would contact me to have it taken down some day. I didn’t really want to put a lot of work into something that I had a feeling would eventually be sued. My hunch was correct as I got that cease and desist request last May.

I’m sad to see craigslist taking this kind of action against Mapskrieg, Padmapper and other sites, but I can’t say it’s too surprising. Probably the most surprising part is how long it took them to actually do it. I don’t think these sites ever operated in some kind of legal gray area; they had always been violating terms. My personal defense is that Mapskrieg was always a search engine. If craigslist wants to order Mapskrieg to cease and desist, they should also order Google to do the same. Actually, maybe Google should take the initiative and remove craigslist from their search index preemptively.

Mapskrieg holds a special place in my heart, partly because it was the one my biggest successes (so far). Also partly because the name is ridiculous. I have a feeling that putting Mapskrieg on my resume opened up doors that would’ve been closed to me otherwise. Mapskrieg did what it was supposed to do and never really evolved, but I never expected it to. If we can find a way to remember Mapskrieg in our hearts, then it will never truly be dead (plus I have a backup of it somewhere on another server).

Mapskrieg: rest in peace.

Born: May 6th, 2007.
Died: May 21st, 2012.

(P.S. If you’re interested in reading about how I made Mapskrieg, read this series of blog posts. It’s kind of an interesting look into the work ethic of 5-years-ago Hung):

Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Part 10
Part 11
Part 12
Part 13

The Internet Is For… Downtime.

These last few weeks have been really, really bad for the internet. I mean, in general. What with Media Temple going down due to their nameservers, Amazon EC2 going down, and also the Playstation Network refusing to let me log in… You’d think there was a cyberattack going on or something.

My websites did not manage to dodge all of the bullets either. A few sites were down from the Media Temple thing. I also inadvertently broke a few sites here and there. After the Media Temple downtime, I wanted to try updating a few Ruby Gems to get Passenger Phusion working. Unfortunately my rails apps hadn’t been updated in forever, so updating things broke backwards compatibility. I’ve been working on getting Anime Nano back to full capacity on the newest version of Rails. I think the whole experience was a bit stressful, but probably ended up being good in the long run.

I was also surprised to see Mapskrieg going down late last week. Apparently I hadn’t verified the domain for Google Apps and Google decided to close my account. The one that was serving Mapskrieg via App Engine. This was really annoying since all of the “act now or we’ll delete your account” emails were classified as spam in gmail and I am pretty sure I had verified the account previously. If Google doesn’t want my money then screw them. I figure I can actually serve the site for cheaper than App Engine since a few other apps live on the same server. The App Engine thing was a fun experiment but there are still too many limitations in the datastore to base a real app on it. Specifically, datastore writes cost way too much and indexes take way too much overhead in disk space (which you eventually need to pay for).

So now I’m back to running most sites on Media Temple, though I may diversify in case Media Temple continues to have downtime issues. It was a stressful few days, but at least I got to practice my sysadmin skills a bit and update my server in the process.

Mapskrieg iPhone/iPad App Launch!

It’s been about 4 years since I announced the launch of Mapskrieg, my Google Maps and craigslist mashup web app. Since then, I’ve gone to school (again), worked for Microsoft and quit, and made a few apps. Today, I’m happy to announce the launch of my newest app, Mapskrieg for iOS!

I’ve been working on this app for a few weeks, and I think it’s ready for public consumption. It’s basically Mapskrieg, but developed natively for the iPhone and iPad. In the past, I’ve taken a sort of iterative approach of releasing fairly minimal apps and improving on them. For example, I released Threadless as an iPhone only app and later added the iPad support. I wanted to release Mapskrieg on both platforms so the launch would have a little more bang. Plus I think the iPad app is the better of the two, and I really wanted that one to stand out for the release. I’ve been getting much more comfortable with mobile development, and I’m very happy with the rate at which I was able to conceive and release this app.

That’s not to say I didn’t struggle or learn anything new with it. While a lot of the concepts are borrowed from my Threadless iPad app, I had to do a lot of stuff I hadn’t done before. For example, since Mapskrieg is going to rely on iAds to make money, I decided that both the iPad and iPhone versions would support iAd. Apple, in their infinite wisdom, made the split view controller a very useful and now, standard, design paradigm. Unfortunately, they don’t provide any support for using it with iAd at all. What the fucking fuck, Apple!? So I had to basically recreate the Split View (well, the landscape mode at least) in order to support iAds. It’ll be well worth it if I can rake in some iAd dough, though!

This post also comes almost 1 year after I quit my job at Microsoft. That milestone probably deserves its own post, but I’ll just say that I have not yet regretted my decision in the very least so far. This is as fun as it gets, folks!

Edit: Oh, I forgot to link to a demo video that I recorded for a contest. Check it out in case you don’t have an iOS device:

MapsKrieg in a Mashup Contest – Vote For Me!

I keep forgetting to mention this. A while back there was this cryptic ad on Facebook about mashups and it led to a sponsored contest. I figured I would enter MapsKrieg and I sort of forgot about it. Checking the visitor stats, I noticed some people were coming from a contest poll page. So MapsKrieg was chosen as a finalist in this contest!

The prize is $4000, which is pretty neat. So please check out the finalists and vote (preferably for me)! Mine is #2, “Home & Apartments.” I wonder why they just didn’t label it “MapsKrieg?”

MapsKrieg – Craigslist + Google Maps Mashup Launch!


I did a bit more work on MapsKrieg (the official name of my craigslist and google maps mashup) in the past few days, and I think it’s ready for initial launch now.

If you haven’t read my previous posts on MapsKrieg, it’s a mashup that scrapes craigslist apartment listings and displays them using the Google Maps API. I’ve been on the hunt for an apartment in Ann Arbor, MI where I’m going to go to grad school. I had seen the coolness of HousingMaps, but I noticed that it only supported a very small number of cities. I figured I’d build a similar app that listed more cities, since craigslist has expanded quite a bit since that HousingMaps was created.

If you’re wondering about the name, here’s my thought process: I was originally calling the project “Craigsmaps” since that sort of made sense. But the domain name for that name is already taken. So I came up with a bunch of other stupid Web 2.0 names that didn’t really click (Abodr, (okay, just kidding)). So I switched the “craig” and the “maps” and it became “mapscraig” which reminded me of “blitzkrieg” which became “mapskrieg.” And there you have it.

Currently MapsKrieg supports 286 different craigslist locations. I haven’t added any areas outside the United States, though if I get requests, I’ll add them. And I’ll probably add new cities as their added to craigslist if people request them, too.

As far as technical stuff goes, I built the site on the CakePHP framework, which was a new experience for me since I had been doing stuff in Ruby on Rails for the past year. The app uses Google Maps’ API for displaying the data that’s pulled directly from craigslist listings. Of course, all the data is cached in a MySQL database, so the site is decently fast.

MapsKrieg took about two “man weeks” worth of time to complete. It was developed over about a month, though I didn’t work on it every day, and I didn’t work all day on the days I did work on it. I’d say that’s pretty good, considering I hadn’t really done much programming in PHP/Javascript before, and I had to learn the Google Maps API (which was surprisingly easy).

Anyway, go ahead and try out MapsKrieg and let me know what you think. The interface could probably use some tweaking, but I think the app “works” fairly well. But I’m open to any questions or comments.