Clojure and Clojurians at Factual : Various Locations

Clojure and Clojurians at Factual

How We Use It

Factual began deploying Clojure to production in October of 2009. We used it cautiously and experimentally at first, confining ourselves to a narrow corner of our stack related to query interpretation.

As we experimented further with Clojure and applied it to more problems, we formed a very favorable impression of the overall language and related technologies. It’s true that Lisp is seen by many as a “weird” language, and to be sure, Clojure is not without its warts. On the other hand, if you’re looking for a fun and productive functional language that runs seamlessly on the JVM, Clojure brings massive value to the table.

SOME THINGS WE LIKE:

  • Significant developer productivity gains for certain use cases

  • Capitalizes on the superior power of Lisp

  • Everything Leo Polovets, Factual engineer, wrote in his answer on Quora: “Why would someone learn Clojure?”.

  • Often allows large reduction in code bloat vs. the equivalent Java solution. An unscientific survey of selected projects where we ported functionality suggests that we need 3X the code when working in Java.

SOME THINGS WE DON’T LIKE:

  • Not always super easy for non-Lispers to pick up

  • Some immaturity around things like tooling, stack traces, and the library ecosystem

  • May not be as performant as Java if you really, really need fast code

Aaron Crow, one of Factual’s early Clojure advocates, has a nuanced take on the matter:

“Please don’t make me write any more Java.”

Before long, we discovered Cascalog, a Clojure-based query language that runs on top of Hadoop. For certain use cases, we found Cascalog to be a huge win over the alternatives, especially when considering clarity of code and developer productivity. Since Cascalog queries provide a higher level of abstraction than pure Java-based MapReduce jobs, there may be concessions made to performance, but the code is also much easier to understand and maintain.

Chun Kok, author of “Clojure on Hadoop: A New Hope“, is philosophical about the trade-offs:

“Why not use Hive?”

Evan Gamble, our most seasoned Lisp veteran, applies Clojure to solve some of Factual’s more challenging Machine Learning problems. He explains his love of Clojure thusly:

“It’s still not as good as Common Lisp.”

Zach Tellman, creator of Aleph, is currently helping us build an engineering team in Factual’s Palo Alto office. Zach describes his seasoned, measured approach to using Clojure to conquer Factual’s complex engineering challenges:

“Yeah, I can hack that together this weekend.”

Of course, like every tool, Clojure is not a silver bullet and we don’t treat it as such. Our broader goal is to have a wide variety of tools in our toolbox, and carefully choose the best tool for each job. Boris Shimanovsky, Factual’s Director of Engineering, clarifies the subtlety here:

“Have you shipped yet?”

Fortunately for those of us who love us some parentheses (and who doesn’t (right?)), Clojure is often chosen as the right tool for a project. We’re now using Clojure and related tech throughout our stack, including:

  • Drake, our open-sourced “Make for data” tool

  • Various Machine Learning solutions

  • An internal API server on top of our entity data

  • An internal task management and resource queueing system

  • Ad hoc querying of data housed in HBase

We’ve also fielded Clojure-based libraries for using Factual’s public API:

We’re becoming more confident in when and where it’s most appropriate to apply Clojure as a solution, and we’re excited about the possibilities and potential gains. Boris elucidates:

“Sometimes, the Lisp weenies are right.”

Read More

Work with Us

If you’re an engineer and interested in helping Factual with hard stuff, check out our current openings.

AI Software Developer, ZenRobotics, Helsinki

Ever wanted to command an AI-powered industrial robot with, say, Lisp? ZenRobotics is hiring talented people, naturally, to save the world! ZenRobotics Ltd., founded in 2007, is based in Helsinki, Finland (We know, there’s the catch you were looking for). We make ZenRobotics Recycler the robotic recycling system, a world first. There are 26 of us, one in three’s a PhD of sorts. No wonder ZenRobotics is officially Europe’s most innovative environmental technology company! We are hiring people who want to achieve extraordinary things. People who have already shipped software. With a codebase the size of an ocean liner. Preferably in Lisp. With a nice machine learning hobby project on the side. For profit. That aside, if you’ve got machine learning / statistics down pat, and years of coding experience, read on: Mother Earth needs you! Your absolute must-haves: You have shipped software previously You show us a portfolio of products you’ve worked, you describe your contribution You dig the code review process, you think you write clean and readable code and tests You have experience with one of the following: Python, R, Matlab/Octave You know intimately one of the following: Lisp (any variant), Java, C/C++ You do machine learning / statistical algorithms e.g. neural networks, decision trees, logistic regression You speak fluent English and want to work full-time in Helsinki To really get us interested, address this wish list: You can apply an acceleration limit in robot motion planning, evaluate whether an ML solution needs more data or a different model family, implement logistic regression given a library of numerical functions … You perhaps have a tech-related (STEM) MSc or PhD, but you might as well be self-taught to the same level You are really enthusiastic about applying machine learning to robotics As to what ZenRobotics would like to offer to you: …here are further words of wisdom from your future co-workers! Nikodemus: “It’s a rare day when you’re only learning one new thing.” Alexey: “We make robots work like no-one else before.” Lasse: “I personally received an award for breaking hardware” Naturally, we also pride ourselves in offering to all employees: A ticket to change the world, for good A superprofessional, utterly not uptight working environment A chance to work with somewhat humble gurus A competitive total compensation … and so we will! Contact us at: ifeellucky at zenrobotics dot com while courageously including the defining “AI” and “Developer” in the subject. 1) Send your CV, 2) describe in concrete terms what software you’ve already built, how, and why, 3) give your answers to our ability wish list above.

Part-time Clojure/Lisp programmer, telecommute, Chatsubo.net

Chatsubo.net is looking for a part-time, telecommute developer who has
the following skills:

  • Clojure, *nix shell, Common Lisp and maybe some Java programming experience
  • Redis database knowledge (or any other nosql data store)
  • experience with EC2 and general *nix systems knowledge
  • an interest in Minecraft

Initially, this will be a relatively short-term engagement with the possibility of a long-term support and maintenance contract to follow successful launch of the product.  Some flexibility in working hours will be required, as the current development group is spread out across several different time zones.  Please contact Kevin Raison at raison at chatsubo dot net for details.

AI Programmer (Clojure) at ZenRobotics, Helsinki, Finland

Ever wanted to command an AI-powered industrial robot with Clojure?

ZenRobotics is hiring talented people, naturally, to save the world!
ZenRobotics Ltd., founded in 2007, is based in Helsinki, Finland (we
know, there’s the catch you were looking for). We make ZenRobotics
Recycler the robotic recycling system, a world first. There are over
20 of us, one in three’s a PhD. No wonder ZenRobotics is officially
Europe’s most innovative environmental technology company.

We are looking for professional programmers who have a passion to get
products done, out the door, and into the wild. Typically this drive
to deliver manifests in the capability to make a strong individual
contribution. You can independently verify technical assumptions and
solutions: e.g. profile code, maybe look at disassembly, write unit
tests for code written by you and by others, and you have a keen
interest to set up experiments for testing real-world phenomena.

Your must-haves:

You have shipped software previously, the larger the codebase the better
You got the skill and the will to solve architecture-level
performance issues
You want to apply at least high-school level physics and geometry
to real-life problems
You come with an attitude to the tune of Let’s Get It Done!
You possess excellent team skills
You speak fluent English
You write clean and inherently reviewable code, you attach your best example
You describe the products you’ve worked on, and how you contributed

To really titillate us, tick all of the boxes on this sweet dream wish list:

You have worked on a product that uses sensors, machine vision,
actuators, or automation
You deliver in some of the following: a functional language (in
order of preference Clojure, other Lisp dialects, ML/Haskell), Java,
C/C++, Python/Perl, R/Matlab
You can apply an acceleration limit in robot motion planning,
characterize how a pinhole camera projects in 2d, apply Bayes’ rule

You perhaps pack a somehow technology-related MSc or PhD, but you
might as well be self-taught to the same level

We, on the other hand, would be proud to offer:

A ticket to change the world, for good
A superprofessional, utterly not uptight working environment
A chance to work with somewhat humble gurus
A competitive compensation

… and so we will! Contact us at: ifeellucky at zenrobotics dot com
to describe in concrete terms, and with references, as to how you
would fit this position.

Senior Engineer, Clojure (etc) at Amazon

[Note, although this job doesn't seem to focus on Clojure, the manager, Annie Groeninger, pitched it as such.- Will F.]
Here’s a link to the posting @ www.amazon.com/gp/jobs/149695 and here’s description:
The Consumer Electronics Customer Experience Team is looking for a senior level passionate software engineer to build a complete e-commerce solution for shopping for electronics. A successful candidate will be an experienced and talented engineer who is excited to work with a team of smart developers to build out our software platform including the customer facing website, the backend services to power our website, and internal tools contributing to our operational excellence.
You will be a significant contributor to our team and to our department. You will have plenty of opportunities to solve complex and broad business problems. Successful candidates should be passionate about providing an exceptional customer experience and writing high quality, well tested, maintainable code. We strive to maintain a reasonable work-life balance through operational excellence and have fun at work.
Basic Qualifications
    * At least five years of relevant software development experience
    * Outstanding Java or C++ skills
    * Strong technical leadership skills
    * Results-oriented with strong emphasis on delivery
    * Strong customer and business focus
    * BS in Computer Science or related field
    * Linux or Unix experience
Preferred Qualifications
    * Experience building complex software systems that have been successfully delivered to customers
    * Knowledge of professional software engineering practices & best practices for the full software development life cycle, including coding standards, code reviews, source control management, build processes, testing, and operations
    * Ability to take a project from scoping requirements through actual launch of the project
    * Experience in communicating with users, other technical teams, and management to collect requirements, describe software product features, and technical designs.
    * Programming experience in Clojure or Scala
Regards,
Annie Groeninger
Manager, CE-CX Dev