Archive for the ‘Uncategorized’ Category

Mulled Beer

Posted: 17 September 2011 in Uncategorized
Tags:

I just tried my first mulled beer: BFM La Dragonne.  While the weather is not quite appropriate yet, it is just beginning to get cool here in Atlanta.  I heated it to about 55 degrees C and enjoyed it in a wine glass, though perhaps a tumbler would have been better.  Also while the beer is labeled at 7%, someone scratched it out and wrote 4% by hand.  Not sure what that’s about.  I’m going to save a bottle for Thanksgiving and enjoy it again with family, when the weather is more appropriate.  Christmas might be a better choice, but I don’t have that kind of patience.

Mulled Beer: BFM La Dragonne

Mulled Beer: BFM La Dragonne

Advertisements

Vultures love startups

Posted: 16 September 2011 in Uncategorized
Tags: ,

Great unexpectations

Posted: 13 September 2011 in Uncategorized
Tags: , ,

This week I came across two very appealing technologies from completely unexpected sources. Granted, these aren’t new, but I think they pose interesting challenges to the reigning awesome sauce (Mac OSX, iOS, Android).

Actual innovation in the operating system space from Microsoft? Windows 8 looks like it could be a real challenger.

And the Nokia N9. Just when I had written Nokia off for good, they produce a phone that looks like it’s actually worth looking twice at.

I just published the simple-random ruby gem, which is ported from C# code by John D. Cook.  You can view the source on github or install the gem via rubygems:

gem install simple-random

The gem allows you to sample from the following distributions:

  • Beta
  • Cauchy
  • Chi Square
  • Exponential
  • Gamma
  • Inverse Gamma
  • Laplace (double exponential)
  • Normal
  • Student t
  • Uniform
  • Weibull

Simple examples:

require 'rubygems'
require 'simple-random'

r = SimpleRandom.new
r.uniform # => 0.127064087195322
r.normal(5, 1) # => 5.71972152940515

There are quite a few well-known libraries for doing various NLP tasks in Java and Python, such as the Stanford Parser (Java) and the Natural Language Toolkit (Python).  For Ruby, there are a few resources out there, but they are usually derivative or not as mature.  By derivative, I mean they are ports from other languages or extensions using code from another language.  And I’m responsible for two of them! :)

  • Treat – Text REtrieval and Annotation Toolkit, definitely the most comprehensive toolkit I’ve encountered so far for Ruby
    • Text extractors for various document formats
    • Chunkers, segmenters, tokenizers
    • LDA
    • much more – the list is big
  • Ruby Linguistics – this is one of the more ambitious projects, but is not as mature as NLTK
    • interface for WordNet
    • Link grammar parser
    • some inflection stuff
  • Stanford Core NLP – if you’ve gotten a headache trying to use the Java bridge, this is your answer
  • Stanford Parser interface – uses a Java bridge to access the Stanford Parser library
  • Mark Watson has a part of speech tagger [zip], a text categorizer [zip], and some text extraction utilities [zip], but I haven’t tried to use them yet
  • LDA Ruby Gem– Ruby port of David Blei’s lda-c library by yours truly
    • Uses Blei’s c-code for the actual LDA but I include some wrappers to make using it a bit easier
  • UEA Stemmer – Ruby port (again by yours truly) of a conservative stemmer based on Jenkins and Smith’s UEA Stemmer
  • Stemmer gemPorter stemmer
  • Lingua Stemmer – another stemming library, Porter stemmer
  • Ruby WordNet – basically what’s included in Ruby Linguistics
  • Raspell – Ruby interface to Aspell spell checker

There are also a number of fledgling or orphaned projects out there purporting to be ports or interfaces for various other libraries like Stanford POS Tagger and Named Entity Recognizer.  Ruby (straight Ruby, not just JRuby) can interface just about any Java library using the Ruby Java Bridge (RJB).  RJB can be a pain, and I could only initialize it once per run (a second attempt never succeeds), so there are some limitations.  But using it, I was able to easily interface with the Stanford POS tagger.

So while there aren’t terribly many libraries for NLP tasks in Ruby, the availability of interfacing with Java directly widens the scope quite a bit.  You can also incorporate a c library using extensions.

Naturally, if I missed anything, no matter how small, please let me know.

Update: Here is a great list of AI-related ruby libraries from Dustin Smith.

Image representing iPhone as depicted in Crunc...
Image via CrunchBase

Warning:  this is a rant as old as the iPhone.  I just have to vent into the interetherwebs or else explode.

Complaining to a friend, I’ve managed to work myself up into quite a state.  He just got an iPhone and so we’ve been discussing how frickin sweet they are.  But then I remembered a pix message I got a couple days ago and my blood began to rise in temperature rapidly.  For those without iPhones, when you get a multimedia message (picture, video), you are given a link that is clickable and a big ass username and password that you must either write down or remember and then manually enter into the site you’re taken to.

Ok, I understand they didn’t want to support multimedia messaging on the iPhone.  That was widely known when I bought it.  No big deal.  But here is my problem.  You can slap the username and password into the url and automatically log in from the link to view the message.  It is so easy to do, not doing it is ridiculous.  Security?  Bah!  The damn text message has the password in plain text.  I can only conclude that AT&T does not do so out of pure malice.

In summary, AT&T, please hire a Bangladeshi programmer and pay them the $2 for the fifteen minutes it would take to implement this.

Reblog this post [with Zemanta]
The Blog-O-Cuss Meter - Do you cuss a lot in your blog or website?
Created by OnePlusYou

 

Apparently, I run a rather clean shop. Whodathunkit. And probably most of the cussing comes from my posts on brainfuck.

[Via]