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.

LA Ruby March Meetup With Special Guest Ryan Bigg

We are hosting the next LA Ruby Meetup on 3/12 7:00 pm at Oversee.net HQ!  Special guest Ryan Bigg (aka Radar), co-author of Rails 4 In Action, author of the upcoming book Multitenancy with Rails, and winner of a 2011 Ruby Hero award, will talk about “Maintaining a large OSS project: war stories”. See details and register here.

 

Introducing Roger: A Java RPC Framework using RabbitMQ & Jackson

As my colleague Patrick mentioned in our previous post, we at Oversee’s Retail Group have been using RabbitMQ as the communication layer for the remote procedure calls done from the UI (written in Python) to the backend (written in Java). In Patrick’s post, he described his homegrown Python framework, Chu, for quickly and easily creating RPC clients within Tornado. This post is all about the Java framework, Roger, for creating stand-alone RPC servers.

Our legacy website backends used Java Servlets to send JSON-formatted RPC responses to the Python UI. While we may have moved away from using Servlets and HTTP (mainly for load-balancing reasons as detailed in the previous post), we have always been happy with JSON as a data serialization format. If you’re writing Java, the Jackson JSON library is currently the uncontested choice for parsing & creating JSON. Add on the Jackson Mapper, and you can write all of your code using Plain-Old-Java-Objects, while barely aware of the fact that JSON serialization & deserialization is happening automatically. So, Roger uses Jackson’s ObjectMapper for all of its message serialization & deserialization. And if you want more fine grained control over how your Java Objects turn into JSON, you can add JacksonAnnotations to your request & response objects.

[Read more...]

Introducing Chu: A Tornado RabbitMQ RPC Client built around tornado.gen

Since the beginning of time, ShopWiki has split its architecture into a backend (“The API”) written in Java and a frontend (“The UI”) written in Python. The two communicated over HTTP; the UI would make a blocking request to the API and a servlet class would serve up a JSON response. A load balancer sat between the UI and the API and round robined requests to the appropriate servers. Unfortunately, not all of these RPCs were created equally. Some took significantly longer than others, and spurious timeouts were a possibility due to overloading a single server. The only solution was to add more API servers to the pool to lower the probability of such an event happening.

About two years ago, we began work on several new sites. The basic paradigm was the same: the UI was written in Python (now using a Tornado stack) and the backend API was written in Java. But we decided to change our messaging layer to something that could support a worker/consumer model rather than a blindly round-robined worker/receiver model. We chose to use RabbitMQ, and it has served us well. On the Rabbit server, permanent, named queues are constructed for each RPC type. API servers register themselves as workers willing to handle requests, and each server consumes requests at whatever rate it can. The load balancing is implicit in the model. It also comes with numerous other benefits: easy division and testing of staging environments using routing keys, eventing for cache invalidation and other small one-off tasks, highly granular realtime logging with configurable error levels, and more. But the benefits of the messaging layer as a whole are not what this post is about. This post is about Chu.

[Read more...]

Mobile Traffic: The Undeniable Trend

Mobile Traffic: The Undeniable Trend

In June 2012 a significant trend in Desktop to Mobile user conversion started.

In June 2012 a significant trend in Desktop to Mobile user conversion began.

View Chart Full Size

Starting in June of last year, the Oversee.net network of sites observed a significant trend in the changing landscape of devices that users choose to browse the internet.

We use a realtime parser to analyze the User Agent of all incoming traffic. This information is used to perform accurate targeting for our network of sites along with a highly detailed look into the types of devices that populate our traffic. The granularity of the data ranges from general categories (Mobile, Bot, etc.) to specifics like device model number, browser version and language.

This past June we saw that 78% of our global traffic was attributed to desktop users while 20% of it was to mobile users. By December, we saw our mobile traffic jumped to nearly 27% while our desktop traffic dropped to 72%. Over this 6 month period we averaged a 1% desktop-to-mobile traffic conversion per month. Seeing no significant change in our total unique users during that time period, this increase in mobile users demands attention. The earlier parts of the year showed a much slower conversion rate of just 0.34% per month.

[Read more...]

Spreading the Ruby Love

This year we are super stoked about our sponsorship of LA Ruby Conference, happening February 23 at the Marconi Automotive Museum in Tustin, California.  Oversee.net has invested heavily in Ruby and RoR development over the past year: our travel site lowfares.com and consumer finance site creditcards.org has been ported over the RoR and we are doing all new web and mobile backend development in RoR.  Hence it is only natural that we participate and give back to the LA Ruby community.  Come join us if you dream of cap deploy!

 

Using Explicit Semantic Analysis to discover meaningful relatedness

Using Explicit Semantic Analysis to discover meaningful relatedness

In 1965 the world changed forever. Engelbart and English had created a pointing device at the Stanford Research Institute. They attached a wire to its rear end and decided to call it mouse since it looked like one. The mouse went on to revolutionize the computer world. Perhaps less obviously, it also had a huge effect on the word mouse itself because its semantic nature changed.

  [Read more...]

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.