Machine Learning Hack Night at Oversee.net

Machine Learning Hack Night at Oversee.net

We’re hosting another gathering of the LA Machine Learning meetup here at Oversee.net. Actually, we’re hosting a two-parter, on consecutive Tuesday evenings, May 7th and 14th.

The first evening will be a workshop, where Rob Zinkov will introduce participants to several ML tools, including the R language and RStudio, and the python language and scikit-learn toolkit. He’ll also provide a data set and describe a machine learning problem for participants to test their new knowledge on over the subsequent week.

The second evening will be a show-and-tell session of the best classifiers participants have built. We should learn a lot from each others’ approaches.

Rob has asked participants to RSVP to the meetup announcement, and as part of the RSVP, you’re requested to do a little homework. You need to install the tools, download a data set and a pair of scripts, and run the scripts. When you RSVP, you’ll be asked to fill in some information produced by the scripts. This way, everyone who shows up the first night will already have everything they need. We won’t need to waste time with installation issues, and can get right down to the algorithms.

If you run into any trouble installing the tools or running the scripts, feel free to ask questions in the comments here or on the meetup page.

Oversee.net is hosting another web developers meetup!

Oversee.net is hosting another web developers meetup!

Join us in our lovely offices (with the great view!) on the 44th floor of 515 South Flower Street next Thursday evening, June 28, for CSS Preprocessor Madness (LESS/SASS) with the Southern California Web Designers & Developers Meetup.

We’ll hear about several popular CSS preprocessors, LESS, SASS/SCSS/Compass, and maybe Stylus. The organizer plans a fairly short talk, followed by hands-on exploration. Food and drinks will be provided, and limited parking validation (at the Central Library) will be available.

“Cognitive Architectures for Robotics” talk

“Cognitive Architectures for Robotics” talk

BECCA ArchitectureThe LA Machine Learning meetup is coming to our office on Tuesday evening, April 24th, for a talk about Cognitive Architectures for Robotics by Matt Chapman, assistant organizer of the LA Robotics meetup.

From the meetup announcement:

The Brain Emulating Cognition and Control Architecture (BECCA) is a software framework for feature creation, reinforcement learning and action selection, designed for especially robotics, but is also more broadly applicable. It’s currently implemented in MATLAB, with a port to Python underway, and has demonstrated some very basic ability to allow simple robotics hardware to learn basic behaviors given a defined goal or task.

This presentation will include some demos of capabilities, a review of the published literature, and an introduction to hacking the code base and creating your own BECCA Agents and Tasks.

PhoneGap/HTML5 Meetup

PhoneGap/HTML5 Meetup

Oversee is hosting a meetup, Introduction to Mobile Development for Web, IOS, Android Native Apps using PhoneGap/HTML5, here in our offices on Wednesday evening, March 28. Jorge Garifuna will teach us how to design, build, test, and deploy one app across a wide range of iOS and Android devices using the PhoneGap HTML5 app platform. The meetup is open to the public. We’re providing snacks, beer, and soft drinks, as well as free parking to the first 45 attendees. RSVP on the meetup site to attend.

PhoneGap is very cool technology. PhoneGap’s parent company, Nitobi just got acquired by Adobe. The software, however, has gone into incubation as an Apache Software Foundation open-source project, named Cordova. It’s a JavaScript library providing a common API to different mobile platforms, along with tools to aid in packaging and distributing the apps you build using it.

It should be very interesting for anyone interested in mobile application development.

Saying something nice about programming languages

Saying something nice about programming languages

I recently saw several instances of an interesting proto-meme from a couple years ago: can you find something nice to say about every programming language you’ve used? Here’s my try (limited mostly to languages I’ve used at work or for extended periods), organized chronologically:
[Read more...]

Oversee.net is co-sponsoring SCaLE 10x

Oversee.net is co-sponsoring SCaLE 10x

SCALE 10x banner

Just a quick note to point out (boast?) that Oversee.net has signed up to co-sponsor SCALE 10x. We’re hoping to talk to lots of interesting Linux folks, not least because we’re currently looking to hire several software developers and sysadmins.

Naming the parts of a URL

Naming the parts of a URL

Tantek Çelik has an interesting summary of how different programming languages and libraries break down the parts of a URL. He’d left Perl off his list, so I pointed him to the URI module on CPAN, which he’s added to his table.

One inter-language discrepancy Tantek found has resulted in the silliest bug-report debate I’ve seen in a while. It’s remarkable how upset people seem to get when arguing over whether the “protocol” part of the URL should include the colon or not!

DomainSponsor’s distributed server architecture

DomainSponsor’s distributed server architecture

DomainSponsor is Oversee’s domain parking division. When people have domain names that they’re not ready to use yet, we show ads on them. DomainSponsor gets around a billion visits per month.

To serve ads on millions of pages per day, we used to use a fairly traditional LAMP stack. We used Apache with mod_perl to run a fairly complicated tangle of Perl code which queried several back-end MySQL databases and other back-end servers, in order to choose what to put on each page. One of the biggest problems we had was that we wanted to be able to easily add new (possibly buggy) features for A/B testing, knowing that many of those features would fail and be discarded. The old way we did this was to have a separate cluster of servers running the test version of the code. The trouble was that the test cluster was never 100% identical to the main production cluster, and the redirect needed to send a sample of requests to the test cluster introduced a delay, so we had problems with test results not being reproducible when we later launched the same feature in the main production cluster. [Read more...]

How to find the CPAN Authors’ FAQ

How to find the CPAN Authors’ FAQ

dagolden just pointed out that the CPAN Testers’ CPAN Authors’ FAQ doesn’t show up well in search results.

If you’re the author of a Perl module on CPAN, and you want to know how to get better results from the awesome world-wide team of testers, take a look at the CPAN Authors’ FAQ. If, like me, you’re a user of CPAN, the FAQ is still interesting. It taught me a little more than I knew before about what goes on behind the scenes of CPAN.

Modernizing Perl

Modernizing Perl

At Oversee, we use a lot of Perl.  There are many web developers who think that Perl is obsolete.  The current “cool” languages for server-side web development seem to be Ruby, Python, or even Javascript.  The scornful developers base this opinion on the undeniable fact that Perl’s been around a long time, and there’s a lot of really crappy unreadable old Perl code floating around the Web.  What those critics often don’t realize is that Perl has been evolving quite a bit over the last few years.  This evolution is taking place on 3 fronts: language, libraries, and usage.

The language itself is changing, and new major versions of Perl are being released more frequently than in the past.  Perl 5.8 was the only major release for 5 years; since then, Perl development has moved to a roughly annual schedule of major releases, and there’s been a lot of conversations about just how much backwards compatibility these new versions need.  Perl 5.10 is bundled with most newer Linux distros, Perl 5.12 was released last spring, and Perl 5.14 is coming next spring.

Perl libraries are able to change faster than the core language, because new, incompatible libraries can be created alongside old libraries.  Because of Perl’s “There’s More Than One Way To Do It” philosophy, it’s possible to create libraries that provide major changes in the language, while still running on the same underlying core interpreter.  The most substantial example of this is Moose, a “post-modern object system” for Perl.  Moose takes ideas from Perl 6, Smalltalk, CLOS, Java, Ruby, and other more obscure object-oriented languages, and combines them into a very flexible and succinct way of creating and using objects in Perl.  In a sense, Moose creates a new OO dialect (related to both Perl 5 and Perl 6) on top of Perl 5.

Perhaps the biggest change in Perl is not what the language or the libraries provide, but what sophisticated developers are taking from it.  Starting with the publication of Damien Conway’s “Perl Best Practices” in 2005, there’s been a growing recognition that “There’s More Than One Way To Do It, But Some Ways Are Better And Some Are Worse”.  Many of Conway’s recommendations are still widely accepted, and there’s now even a tool (perlcritic) to automatically check Perl source for compliance.  However, some of his suggestions are now seen as outdated; in particular, the OO approaches he recommends have been obsoleted by Moose.  More recently, several prominent Perl authors have written about the latest consensus on how best to code in Perl. The 2nd edition of “Effective Perl Programming” by Hall, McAdams and foy came out last spring, and Chromatic’s “Modern Perl” was just released last week.

Many of the usage changes are simply a matter of encouraging programmers to more consistently use features that have been available for a while.  For example, in a recent blog post a Perl programmer talks about getting his colleagues to adopt the 3-argument form of the open() function and lexically-scoped filehandles (instead of global filehandles), both features introduced in Perl 5.6.0 in 2000.  The trouble is, there are lots of Perl examples which have been copied from older Perl examples, which might do things in ways that are more error-prone than necessary.

To summarize, Perl has changed as much as any other part of the world in the last 10 years.  If you rejected Perl based on old stereotypes, it might be time to take another look.  If you know and love Perl, it still might be time to go back and learn some new ways of using it.