"Thread2 (504356532)" by Tony Hisgett from Birmingham, UK - Thread2Uploaded by tm. Licensed under CC BY 2.0 via Wikimedia Commons.

Concurrency, and Python’s answer to Goroutines

ScoutApp recently blogged an example of fetching a list of URLs concurrently in Go, using goroutines: package main import ( “fmt” “net/http” “sync” ) func main() { urls := []string{“http://www.cnn.com”,”http://espn.go.com/”, “http://grantland.com”,”http://www.newyorker.com/”} var wg sync.WaitGroup wg.Add(len(urls)) for _, url := range urls { go func(url string) { defer wg.Done() response, err := http.Get(url) if err !=…

php-is-alright

PHP is just alright with me

I love to read opinions on language and API design. As a a frequent Python user, I’ve enjoyed talks by Guido van Rossum and others on key design decisions, for example on threading or the GIL (just search for Python and Guido or GIL on YouTube). I’ve never been a heavy C++ user, but find…

Photo by Fir0002/Flagstaffotos via Wikimedia

Sifting the Web for RSS using Common Crawl

RSS is a well-documented, easy-to-consume XML format that can be used by automated tools to identify relevant content on a Web site without resorting to scraping the site’s HTML. RSS is publisher-friendly: items in an RSS feed tend to be “teasers” to the real content, to draw traffic into the publisher’s main site. By Internet…

jslint2

You can’t unsee JavaScript variable hoisting

Yesterday I came across another article exhorting developers to declare JavaScript variables in a single var statement at the top of a function. This supposed best practice is more than a few years old now, but it gets trotted out frequently because variable scoping in JavaScript works differently than in other languages. The linked article…

desk2

This is my IKEA stand-up desk

…there are many like it, but this one is mine. Crunch! Less than a week into the domestic adventure of my wife and I occupying the same home office, she let me know this situation was not working out. As in, the situation of me seated three feet away, nervously bouncing my knee or drumming…

MongDBMap

Show location-tagged MongoDB documents in a Google Map

Last week I presented a process for extracting geotagged data from Wikipedia articles and loading the data into a geospatial index in MongoDB. Given a location, the MongoDB database can return Wikipedia articles about nearby places. This post shows one way to present the data: via a Google Map interacting with a simple REST service…

mongo_wiki_map

Location-based Search of Wikipedia Using MongoDB

In a previous post, I mentioned location as an important ingredient of IoT applications. One incarnation might be a service to find relevant content within some collection based on location and other criteria. Certainly Google, Bing, and many other applications have location-based search capabilities. How feasible is it to construct this type of service for…

mario-bros

Six Degrees of Indirection

“All problems in computer science can be solved by another level of indirection.” – David Wheeler This statement is both generally true and genuinely useful. Very often when faced with a design challenge, an architect’s natural (and best) instinct is to ask some variation of: “How could I hide this messy problem in a box…

dog_cartoon

Location, Location, Location!

The above New Yorker cartoon from 1993 (by Peter Steiner) is iconic enough to have its own Wikipedia entry. One of the defining characteristics of the Internet during its original boom was to mask true identities. Another, perhaps more important, characteristic was to diminish the importance of location. Not only did nobody on the Internet…

phb

11 Tips for Managing Software Developers

I’ll soon be leaving my job of eight years at PacketVideo, with seven of those spent managing a development team. During this time, my team ranged in size from 5 to 35, spanning a range of few feet to 3 continents. I humbly present my experiences as a software development manager, distilled, abridged, and otherwise…