Why Embedly?

I’m now about 3 months in to my job as a Worker at Embedly. After an adventurous search for my first big-people job, I want to take a look at just how I landed here.

My job search took a bit longer than I wanted it too, but there were a few things that contributed to that, one of them being that the time around Christmas and New Year’s Day is an awful time to get interviews. The search ended with a bang, though, when I got 3 job offers in the span of a week.

My choices were Embedly, E La Carte, and Google.

E La Carte is making tablets for restaurant tables to handle ordering, paying, and playing games. I think they have a big opportunity to be really successful. They have the prototypical startup feel, working out of a house in downtown Palo Alto, and a team that I would have enjoyed working with.

Google is Google. Their company is now a verb. As an undergrad, it was basically a dream of mine to work there. And their offer was significantly higher than the others. And they gave me a rental car and hotel room with a jacuzzi to watch breaking bad in after the interview.

Embedly was a little harder to evaluate at first. What we do is sometimes difficult to explain; it’s the kind of thing that, when you realize you need it once, the general idea jumps out at you. Short of that, the tour is a great demonstration.

The initial hook that kept me interested in Embedly was the team. Only 3 people (at the time), but all with an attitude that really drew me in. Get shit done, and enjoy yourself while doing it. It’s hard to ask for more from a job, and if you can find that kind of job, you’re a lucky person. I’m a lucky person.

Another important aspect of Embedly is the fact that we have a legitimate product with an actual revenue-generating business model that doesn’t depend solely on advertising.

Back to the “get shit done” principle, another good thing about Embedly is that we are flexible in languages and technologies that we use; whatever fits the task. I’m a pretty big fan of python myself, but I think it’s good practice to explore other languages too.

Being able to work quickly is something that drew me to startups in general. At Embedly, I can push code live basically whenever I want to; there are no hoops to jump through.

Beyond the day-to-day, Embedly is at an exciting phase as a business. I started a week after Embedly moved from a shared office space to it’s own office near North Station. We’ve already made another hire since I joined, and we’re still hungry to hire again.

Since I joined Embedly, I’ve spent a lot of time making sure that we do what we do better. Faster, more efficiently, on a larger scale. But there’s also room to do more than what we already do. We have big plans for new features to build that will extend the Embedly service. That’s exciting.

I think that I would have been happy with any of the 3 job options, it was really about choosing the better good. The annoying thing about choices is that you never get to see how the other ones would’ve worked out, but I can definitely say that Embedly was a good choice.

Hey Google Scholar, where is my citation visualization tool?

I have been a bit latent about writing here in the past couple weeks, but it’s not for lack of motivation. Since commencement a few weeks ago, I’ve spent just about every day flinging myself at the wall that is my thesis, trying to get it to crack. My thesis is by far top priority –I have less than 3 weeks to finish up — so I have a hard time letting myself work on anything else. But maybe changing gears for a little bit will be helpful; and this post won’t be entirely off topic.

In doing research for my thesis, I have had more than a few run-ins with Google’s academic paper search tool, Google Scholar. While it is both familiar (in interface) and fast, it lacks some more advanced search features that it seems like any researcher would inevitably want; sort by date comes to mind, and maybe the ability to comment on papers (like Google provides for businesses).

Thinking bigger, what I would really like to see from Google Scholar is a citation visualization tool that would allow a researcher to visually follow citations, jumping from paper to paper. This would make it much easier to get up to speed on a given topic. It is tedious to keep track of the connections between a group of papers by hand, only made worse by the various ways different authors reference their citations in papers (First letter of last name of each author, followed by last 2 digits of the publishing year? How about just a citation number!). Citation information already exists, so visualize it!

Google’s lack of this kind of tool for wading through research papers is perhaps made even more surprising when you consider that the original idea behind Google’s search algorithm draws heavily from a technique called citation analysis, which is all about considering the connections between academic papers.

It doesn’t actually surprise me that Google doesn’t provide this kind of visualization, they tend to be stronger with back-end problems than front-end, user experience type projects. But what they could (and should!) do is provide a Google Scholar API. In fact, considering the ridiculous amount of APIs they do provide, it’s a wonder one doesn’t exist! There is even a thread in the Google API issue tracker requesting a Google Scholar API that has been active since September 2008.

To be fair, the task of keeping track of academic research papers is made painful by the various paywalls that many papers sit behind, and perhaps Google isn’t confident enough in their data set (or, the data set is too inconsistent) to provide a robust API. Still, this application would not only be very cool, but could also make research in general more efficient.

There are already tools that basically do what I’ve described (e.g. paperscope for astrophysics papers) from smaller sets of papers. So once Google finally does provide a Google Scholar API to its awesome collection of many papers across many topics, it won’t be long before someone creates a citation visualization tool from it, and probably plenty of other cool mashups too.

P.S. Hey Google, feel free to hire me to work on this :)

Android versus iOS

My cell phone contract is (finally) up in a month or two, so it’s time to decide: Android or iPhone? Both are miles ahead of my current crappy phone (inbox full at 130 texts? really?), but which is the better fit for me?

About a year ago, I was pretty confident that my next phone would be an Android. In addition to being a Google product (they do alot of things pretty well), Android provided a lot of different choices for phone hardware, so I could pretty much choose the features I wanted (hard keyboard!). Stir in the ultra-customizable Android OS, its rapidly growing app selection,  and a few choices of wireless carrier, and Android is sitting pretty in my book.

Then, a challenger appeared!

I must have been good this past year, because Santa brought his A game; spearheaded by a brand new iPod Touch 4G. Playing with my new toy has given me a new appreciation for apps, from email, to calorie trackers, to social media. Of course many apps are available for both Android and iOS, but something about my iPod Touch started to sway me.

I remember being impressed with the iPod’s packaging; a small, efficiently packed, hard plastic case. No big cardboard box, no set of manuals. That’s just one-time stuff though, so what about the daily experience? Apple publishes a pretty all-encompassing set of iOS Human Interface Guidelines that app developers (are supposed to) follow. The idea is to nudge developers towards creating a rich user experience that is consistent between apps.

While Apple does let some corner-cutting slide (if they didn’t, there would hardly be any apps), their guidelines do a pretty good job of creating a user experience where all of the apps seem to work in about the same fashion, even though they all have different developers. In short, I feel comfy in Apple-land.

So where does that leave me with Android? Android answers Apple with its own pretty strong list of User Interface Guidelines, but the Android marketplace doesn’t impose the same sort of approval process as Apple’s app store, so there are a lot more low quality apps floating around, raising the noise floor. Of course, none of this matters once you’ve found the apps you are going to use, and most of them probably come from quality developers who care about user experience.

All this time spent using my iPod has also caused me to change my tune when it comes to the plethora of hardware choices for Android; I’ve developed a taste for high quality hardware. This one isn’t quite as big a deal, but in general (i.e. also with laptops and other electronics) it drives me nuts how many awful devices are released between the few good devices. I really like what Apple does, providing relatively few, but high quality, choices of hardware.

Still, my only experiences with Android have come from briefly stealing friends’ phones to play around, and my feeling of comfort with iOS is something that has come with time. Most likely, the same thing would happen with Android. Also, any complaints that I’ve had about Android breaking from the interface guidelines are echoed with jailbroken iOS devices.

My final decision will likely come down to how awesome the iPhone 5 sounds versus what’s available for Android hardware, and how desperate I am for hardware for testing my Android app(s). Or maybe my employer will make this decision for me :).

Time to go hiking!

It’s been nearly 2 months since I hiked Little Bigelow with Max (currently conquering THE Appalachian Trail)and a ragtag group of Appalachian Mountain Club members (including the dean of UMaine’s College of Engineering). Little Bigelow was my first big snowshoe trek, and was a great hike even though we were socked in with clouds at the top.

So now it’s almost March May (thanks mom). Snow has been mostly gone for a couple weeks, temperatures are reaching the 60′s, and I’m itching for a nice spring hike.

In trying to choose a hike, I grabbed the AllTrails iOS app, which uses google maps to show all sorts of different hiking trails in an area. AllTrails lets users rate, comment on, and add pictures of various hikes; altogether a well done app with a pretty decent user base.

I settled on the White Mountains National Forest, mainly due to it’s strategic location between myself and the other people I hike with. Oh, and the fact that it’s a huge region of mountains with tons of 4000-footers. I pointed the AllTrails app at the White Mountains, and settled on the Champney Falls Trail. 7.6 miles round trip to the bald-topped Mount Chocorua, including a waterfall along the way.

After a cold winter which saw me sunrise-summiting Sugarloaf and snowshoeing up Little Bigelow, I’m looking forward to shedding the layers for some beautiful spring hiking. I love being able to hang out atop a summit, enjoying the accomplishment, rather than making a quick turnaround to spare frozen fingers.

As usual, the end of the semester is very busy, but once school is over (May 7th), I’ll be trying to separate some people from their busy schedules for an excursion into the woods of Northeastern New Hampshire.

Radiolab: What Does Technology Want?

I was recently turned on to the addictive Radiolab podcast by a friend; I ended up listening to 6 episodes in a row.

The episode titled “What Does Technology Want?” features guest Kevin Kelly talking about the idea that maybe technology has some intrinsic guiding force that pushes it in a certain direction, similar to how a tree grows toward sunlight.

It seems like a more common perspective on technology is that it’s guided by what people want from it. People wanted to be able to communicate over long distances, so we invented the telegraph. People wanted to haul things, so we invented steam engines.

Instead, the podcast presents the perspective that ideas are bound to occur to someone given the right conditions. The example of the light bulb is used: the concept of the light bulb was apparently conceived separately by several people, all around the same time.

This is a really cool way to think about innovation — as long as you don’t get caught up on the idea that maybe creativity isn’t so much creative, as inevitable; I don’t — and I think I can pick out some examples of it.

In the past 5 to 8 years (ballpark), there has been major growth in mobile computing, carried on the back of semiconductor manufacturing advances and growing data networks. This has led to huge amounts of people getting directions while driving, sending emails from restaurants, and playing scrabble in bed (this guyyy).

In parallel to this proliferation of portable computers, major progress was being made in the field of position, navigation, and timing. Specifically, the Global Positioning System (GPS). Some really smart people worked really hard to solve a surprisingly difficult problem: providing an accurate location of anything, anywhere in the world.

So now we have people traveling all over the place with internet connected phones. And we have a network of satellites in orbit allowing those phones to figure out exactly where they are. I can see a pretty reasonable argument that it was only a matter of time before the idea of location aware services began to occur to (probably many) people.

When I think of foursquare (which I just joined), it seems like an almost obvious idea. Where is a good place to go out tonight? Trending locations. Even better, check-in based specials. Super cool.

Perhaps another example is internet search. As the internet started to snowball, it got to the point where there was way more content than any person could keep track of. Again, it’s not unreasonable to think the it “just made sense” to come up with some way to find specific things. It’s a logical next step. Pepper in a bit of algorithms, courtesy of math and computer science, and soon you’ve got everyone’s favorite ubercompany, Google.

So considering this perspective, can we get some insight on what’s next on technology’s agenda? There are certainly plenty of entrepreneurs trying to come up with the next big thing, but from what perspective are they searching?

I don’t want to tip my hand, but if I ever decide a new idea is strong enough to fully commit to, it’s almost certain that I will have been led to it by things I’ve previously done.

Solving sudokus the hard way

My partner and I recently presented our semester project in ECE 577 Fuzzy Logic:

A particle swarm optimization sudoku solver.

Sounds nasty right? Let’s break it down into a few parts:

A sudoku puzzle.

  1. Sudoku
    • A sudoku is made up of a 9 row by 9 column grid of cells
    • Each cell holds a number between 1 and 9
    • Each unique sudoku will have some of its cells already filled
    • The puzzle is solved when:
      • Each row contains the numbers 1 through 9
      • Each column contains the numbers 1 through 9
      • Each of the 9 little 3×3 squares contains the numbers 1 through 9
  2. Sudoku Solver
    A sudoku solver is something that can fill every cell in a way that solves the sudoku. This can usually be done quickly and efficiently by viewing sudoku as a Constraint Satisfaction Problem. We decided to try to solve the same problem using a particle swarm optimization.
  3. Particle Swarm Optimization (PSO)
    Particle swarm optimization is a stochastic search method that uses communication between particles to move toward a solution. Like other stochastic search methods, PSO is used to find a solution when there are too many possibilities to check one-by-one. Think needle in a really, really big haystack. A particle swarm optimization consists of a swarm containing some (usually large) number of particles. Each particle has a position in the search space, and a velocity that moves it toward a solution in the search space. Particles work together, telling each other about how well they’re doing. An analogy is vultures flying around, spread out over a desert, eventually all showing up at some dead animal.

The next step is to figure out how to massage the concept of a sudoku into a particle swarm optimization. There are two tasks here:

  1. Figure out how to represent a sudoku as a particle
    We decided to let each particle contain a filled out sudoku puzzle, representing a position in the 81 dimensional (9 rows by 9 columns = 81 cells) search space. Each particle contains another 9 by 9 matrix of velocity values, as well as some bookkeeping stuff for the PSO.
  2. Come up with a fitness function to evaluate our particles
    We eventually settled on a fitness function that scores:

    • 10 points per correct 3 by 3 square
    • 9 points per correct row
    • 9 points per correct column
    • 1 extra point for each cell that satisfies an extra constraint (intersection of: row and square, column and square, column and row, or all three)

We whipped up an implementation in python, and used the PyQt4 bindings to build a Qt4 Graphical User Interface (GUI) so we could watch what was going on in the simulation.

The PSO sudoku project.

Unfortunately, we saw very limited success as far as actually solving sudokus. In almost every puzzle we attempted, our swarm would work well for a while, but eventually get clumped up on one partial solution, and stop improving.

On the bright side, I got to get even more familiar with python (<3), and also got my hands dirty with the model-view architecture of Qt4.

A blog? That’s so 2000′s!

Yep, I’m late to the game. But I still think it’s worth creating a presence.

Over the past few years I’ve definitely had times where I’ve felt the need to write something down somewhere, but never really followed through. This will provide me a platform to do that. So what kind of stuff will I write about? Errything.

It seems like I always have some kind of random thoughts occurring to me on all sorts of topics:

Interview prep work.

My first shot at an android app logo

  • Stuff I wish I was good at (playing with vector art in inkscape recently).
  • More abstract stuff. I’ve been thinking a lot lately about how perspective (student vs. teacher, technical vs. non-technical, social/economic situation, etc.) influences things. Very general here.
  • Life stuff. This summer looks awesome, more on that later.

I don’t expect anyone to relate to everything I post, but I hope my friends and family will each find some portion interesting.

It’s 5:30am, and I’ve got a day full of DSP demos tomorrow; time for sleep.

blog.init()

So I finally bought myself a personal domain. anrope.com. It’s something I’ve been meaning to do for a long time, and finally convinced myself to do (after 1am, of course).

Here’s a quick review of my Easter night:

  1. Decide I should try to register the domain for my oft-used alias “anrope”
  2. Become excited that it’s still available
  3. Get sidetracked for an hour considering going Peruvian (points if you get this). The Nuevo Sol is the currency of Peru, and it’s currency symbol is “S/.” (as opposed to our $), which means I almost spent 100 times more than I meant to. Whew.
  4. Spend another hour learning the “domain registration game”. Lots of nasty reading, Hacker News and this nice list ranking registrars by domains registered were easily the most helpful. I settled on name.com, the 11th ranked US registrar. After grabbing a coupon from retailmenot, I finally bought my domain. I probably over-researched, but I do that a lot.
  5. Set up my new domain to use the same web hosting account as the Cobbossee Colony Golf Course website, which I maintain. I was happy with how easy it was to point anrope.com at a subdirectory on the host. The more nerve-wracking part was reconfiguring golfcobbossee.com to separate the two sites, without stepping on any SEO toes. I hope I did that right.
  6. Install a WordPress blog. As much as I usually prefer doing things myself, the SimpleScript setup of WordPress was seamless and super fast.

So, $8 and a few hours later, I’m now writing my first blog post on anrope.com. Feels good.

Almost 5am, but time for another post!