Last Build Date: Mon, 26 May 2014 14:04:44 PDT
Sat, 24 May 2014 00:00:00 PDTMy childhood backyard. Growing up in rural Mississippi had its perks. Most days my brother and I would come home from school, grab a snack from the fridge, and head outside to fish in the pond tucked behind the tree line or play basketball with the neighborhood kids. It was very much a community where everyone knew everyone. I had known many of the kids from my graduating class since second grade and my parents knew their parents since highschool and earlier. As beautiful as my hometown was, it was, like many small towns, economically depressed and void of all but the necessities. As I grew older, I became frustrated by this. We had one small grocery store, one stop light, two movie rental places and not a single fast food restaurant. We had no book stores, no electronic stores, no big-box stores and only a couple of places to grab a bite to eat. Truth be told, the gas station (one of those big ones, forever known as “The BP” long after a name change) was where we picked up most of our take out. When highway 72 was expanded to four lanes, a nearby gas station was converted to a “super” station. It was packed with a pizza place, fresh sub sandwiches, and the best chicken strips that have ever graced the space below a heat lamp. It was the community watering hole. The lack of access eventually wore on me. As I started to grow my design skills (my Hail Mary escape from factory work), I would hear of my peers in larger cities going out to eat, to the movies, or just having a beer at a nearby bar. Beer, by the way, was illegal where I grew up. Not just the consumption of it, the mere possession of it. Portland - Oregon by Patrick M. License CC BY-NC-SA 2.0 By 2007, after a couple of years on the outskirts of Memphis, TN, I had finally had enough and convinced my wife to move to Portland, OR. We knew very little about Portland at the time. In fact, we knew so little about the Pacific Northwest, we moved in the dead of winter, in a sports car, driving through the Cascade mountain range. It’s not exactly something I’m proud of; a hilariously ill-conceived cross-country trip. When we moved to Portland we decided we wanted to be in the center of it all. There was so much life around us; so much happening relative to our rural upbringing. I wanted to be as close to Downtown as I could be so I could go as often as I liked. We eventually settled on the Pearl District. A relatively new residential development that was previously occupied by a rail yard. Finally, I would have the access that I once craved. Almost anything I wanted was a short walk or streetcar ride away. All that I wished for growing up, I would have. Fast forward 7 years and we’re still in the Pearl District. We’ve added a member to our family who now desires access to the things I had while growing up. He wants a yard to play in, a basketball goal and a proper house where he can get excited without disturbing our neighbors. It’s an interesting scenario. The Pearl District and Downtown aren’t exactly teaming with affordable single family homes and the further you move out of the city center, generally the less access you have to the many things a dense urban area has to offer. But, in reality, I only wished for a couple of things out of a new location. The journey begins After thinking about the problem, I decided to list out a set of criteria for a location I would want to live. Other factors will eventually come into play, but I wanted to narrow down the city into “target zones”—that is, zones that meet a set of defined criteria. Walking distance to a grocery store: Living across the street from a grocery store has spoiled me. Walking distance to a rail stop: This will allow me to get to other locations in the city without a car relatively quickly. One could argue the bus system is just as good, but I would argue that it isn’t and I much prefer rail. I defined walking distance as ~5 blocks, but ~10 blocks is still a pretty sane distance. I want to be close to a grocery store and clos[...]
Sun, 30 Jun 2013 00:00:00 PDTHow old are the houses on your block? After stumbling upon a dataset of the Portland metro area released by the City of Portland, I wanted to answer this question myself. The dataset contains 619,000 structures and 544,033 of them list the year they were created. After loading this up in TileMill and adjusting the color schemes, some beautiful patterns begain to emerge. Interesting facts about the dataset 4,452 structures were created during the 1800s. The oldest identifiable building by name is the Oaks Pioneer Church. The dream of the 90s is still alive in 75,434 structures. The 1890s haven’t fared so well, with only 942 structures still standing. The busiest year was 1978 with 10,265 structures listed. There’s a building on SW Stark built in 1899. It contains a Vintage clothing store. Patterns Patterns are everywhere in the data. It looks like 50s-era housing development relied more on the grid system, than say, the 80s and 90s where the cul-de-sac was seen more often. It’s also interesting how a lot of the neighborhoods east of I-205 didn’t exist prior to the 50s. Sabin/Irvington Neighborhood, NE Portland Beaverton, OR Ladd’s Addition, SE Portland North Portland The Housing Crisis With home prices reaching their peak in 2006, and foreclosures on the rise, you can see a decline in new structures. Eventually this would lead to the sub-prime mortgage crisis. 01000200030004000500060007000200020012002200320042005200620072008200920102011201270596086609861746515651042131916194115421603630347 This has been a fun project and I hope to keep working on it. Maybe take into account the size and type of buildings, or the number of stories. Have a look at the map yourself. I would love to know if you find anything interesting! [...]
Tue, 28 Jun 2011 00:00:00 PDT
I’ve added quite a few features to Portland Crime over the past few months: trends, history, and much more. However, one feature request pops up more often than others—public transit crime.
I’ve worked on adding this feature, but I find myself rushing it along due to time constraints and I’m just not happy with the results. Until I find the time to sit down and hash out the design for this feature, I’m going to keep it under wraps.
It’s not all bad news. Just because my efforts haven’t been successful, doesn’t mean others couldn’t use the data in some creative way. With that in mind, I want to share the data I’ve collected with anyone who wants it. Details below.
According to Wikipedia, Portland blocks are 200ft x 200ft. Given teleportation isn’t a reality, it’s assumed you’ll need to cover a minimum distance of 200ft to reach a stop. Therefore, crimes within a radius of 200ft from a MAX stop’s lat,lon point will be counted towards that stop.
There are many factors that can result in one stop having more crime than another stop. Population, ridership and activity to name a few. These numbers are raw counts. They are not adjusted.
Thu, 16 Jun 2011 00:00:00 PDT
It’s an exciting time to be a web developer. Browser vendors are releasing frequent updates, HTML 5 is really taking off and an entire crop of new technologies and toys have surfaced. Node, Mongo, CoffeeScript, Backbone, Polymaps and d3 are several examples of this. Not to mention the proliferation of GitHub has made tracking and contributing to these projects pretty painless.
Speaking of projects, I’ve been working on a few of my own. The one I’m most excited about is Portland Crime. I started Portland Crime back in October of 2010 and shortly thereafter entered it into the city of Portland’s Civic App competition and came away as runner up in 3 categories. At its core, Portland Crime allows you to monitor crime reports in the Portland area. There are also some interesting features such as time of day trends and historical views. The code is open source, feel free to poke around, or even better, contribute to the project.
The next project I’d like to undertake is to start blogging agin. I’ve been working on getting this blog up and running for almost a year. Each time, stopping short of actually publishing anything. I hope to change that, and I hope you’ll stick around for future posts.
Sun, 30 Aug 2009 00:00:00 PDT
I’m an avid console gamer. That means I’m always wondering when the latest and greatest game will be dropped. It was time for an iPhone application.
Logging on to gaming websites on a mobile browser can be painfully slow given most of them are full of ads, images, flash and videos. I wanted something fast and simple that would allow me to see upcoming and recent releases across a variety of popular platforms so I developed TooGame.
(image) (image) (image) (image)
Check it out on the app store!
Sat, 11 Jul 2009 00:00:00 PDTIf you’ve ever tried to do networking with Foundation you know that wrestling with NSURLConnection and NSURLRequest can be painful. Thankfully, we’ve seen a few third party tools step up to alleviate some of this pain. I want to introduce you to a couple of those tools and show you what I’ve been working on as well. UPDATED: Fixed the permission issue on the download link The current crop of tools There are some excellent HTTP libraries available for the iPhone and OS X. So why do we need another one? Balance. There are two particularly popular libraries that I’m going to talk about: ASIHTTPRequest and ObjectiveResource. I’ll explain the benefits and tradeoffs of each and also explain where HTTPRiot fits in to this equation. ASIHTTPRequest ASIHTTPRequest is a highly flexible lower level tool (relative to HTTPRiot & ObjectiveResource). It can do a lot of things and do them well. Besides the basic GET, POST, PUT and DELETE you can also upload files, post form encoded data, handle basic authentication and a host of other really nice things. Not to mention it can handle synchronous and asynchronous requests–something HTTPRiot and ObjectiveResource can’t do. This library is all about flexibility and this flexibility doesn’t take away from how easy it is to use. This is code you should definitely have in your bag of tricks when you’re in need of an all purpose HTTP library. The tradeoff for ASIHTTPRequest is that it can’t automatically convert XML and JSON. There is also no mechanism for setting default configuration options which results in you having to configure things like delegates and selectors for every asynchronous request. To be fair, ASIHTTPRequest was never meant to be used this way, thus I would take these tradeoffs with a grain of salt. ObjectiveResource If you’ve ever used ActiveResource with Rails you’ll probably be familiar with ObjectiveResource’s style. ObjectiveResources is a high-level library that does a lot of behind the scenes work. It’s built specifically to consume REST resources. It can convert to and from JSON and XML (ASIHTTPRequest can’t) and it will automatically initialize models and do all sorts of other work for you. This makes it a great fit for working in conjunction with a Rails app. The tradeoff of ObjectiveResource is that it doesn’t handle XML and JSON that’s not produced by Rails well. I’m not sure what kind of results you’d get if you fed it something like Govtrack’s bill data. ObjectiveResource is also a big library with a lot of moving parts. In addition to the networking code, the library also includes ObjectiveSupport, a nice library in itself that’s loosely based on ActiveSupport. One final thought about ObjectiveResource—there are a lot of methods added to NSObject. Apple doesn’t explicitly say not to do this, but they do warn you of the consequences: “You can define categories that add methods to the root class, NSObject. Such methods are available to all instances and class objects that are linked into your code. Informal protocolsâ€”the basis for the Cocoa delegation mechanismâ€”are declared as categories on NSObject. This wide exposure, however, has its dangers as well as its uses. The behavior you add to every object through a category on NSObject could have consequences that you might not be able to anticipate, leading to crashes, data corruption, or worse.” With all that being said, ObjectiveResource is definitely worth checking out. I know a few people who are using it and love it. HTTPRiot Like ObjectiveResource, HTTPRiot was inspired by its Ruby counterpart: John Nunemaker’s httparty. Hence the name. HTTPRiot serves as a balance between ASIHTTPRequest and ObjectiveResource. You get a certain amount of flexibility and a higher level api. Like ASIHTTPRequest, you can send GET, POST, PUT, and DELETE re[...]
Mon, 12 Jan 2009 00:00:00 PST
Fri, 10 Oct 2008 00:00:00 PDT
Best Practices For Cocoa and CocoaTouch—Invaluable tips from Cocoa developers.