Interview: Nicolas Hatcher, Software Developer at BaseCase

Wondering why we haven’t posted in a while?

Our blog has moved to a different location.
Visit http://blog.basecase.net to check out our latest blog posts.

Nicolas Hatcher moved Berlin after more than a decade teaching theoretical physics at the University of Simon Bolivar, Caracas. We spoke about his role as a software developer and what it’s like working for BaseCase.

What does BaseCase build?

Our main product is a web application that our customers use to create interactive presentations - apps that you can use on the iPad or another kind of device.

The software works by connecting a presentation layer (similar to PowerPoint) with a spreadsheet editor (similar to Excel). It’s an original piece of software. Nobody else is doing this kind of thing.

So you developed an original spreadsheet editor?

Yes, and it’s increasingly compatible with Excel, so users can use their custom-built spreadsheets and in a matter of minutes build presentations out of them. The presentation layer works with drag-and-drop, so you can create a dynamic presentation app without using any programming. The web apps work on any device and apps are shared through the platform with a few clicks.

What programming languages do you use?

We use of course JavaScript, HTML and CSS and we use Python and SQL in the server. It’s a very common stack, nothing very fancy. For niche tasks on the server, we use a variety of other languages, including C, LaTeX and Erlang.

What’s unique about BaseCase software?

It’s the connection between the spreadsheet and the presentation layer. We have something like Excel and something like PowerPoint, working together in one piece of software. The result is a very powerful tool for the life sciences industry.

Are there any unique challenges?

First of all maintaining a complex product is always a challenge - you have a big chunk of code that’s yours, you’re responsible for it. Second, the apps produced on the platform need to run on any device, even less powerful ones like the iPad, and that presents some very interesting challenges. We’re striving to constantly improve the software.

What attracted you to the job?

I have a background in the sciences, and that appealed to me.

What is your background?

I studied physics and taught both physics and mathematics at the University of Simon Bolivar in Caracas.

When it comes to designing software, do you have a philosophy?

Of course, everyone does to some extent. It depends on what you are trying to tackle, whether it’s something completely new, or not. Sometimes you sit down with pencil and paper and sketch out how everything will fit together. Once you have a clear idea you start by designing tests. This kind of test-driven approach is favored at BaseCase and it works very well to make sure that you have a product that’s bug-free.

Were you surprised when you started working for the company?

I come from a university background, so I knew nothing about the startup culture. I was surprised that I could fit in. It was very interesting to land in a small company, with nice people, trying to make something special.

Have you learned anything?

Yeh, I’ve definitely learned from the other developers. I knew nothing about servers for example. Not only about programming, but the environment, about how it works - how you make a program, simple things like ‘where are you going to host this?’, ‘how are you going to test and deploy it?’.

How is a typical task approached at BaseCase?

Typically, our customers want something added to the platform, or improved, and they have certain requirements they need fulfilled. We’ll start with a brainstorm about how to meet those requirements and come up with a good spec for a solution. In the end, if it’s my project, I’ll take that spec and go to work on it.

Do you have the freedom to find your own solution?

Absolutely, sometimes a lot of freedom. For example speeding up the spreadsheet layer. There’s no spec for that, my spec is simply ‘speed up the spreadsheets on BaseCase’, so I’m exploring everything I can think of to solve that.

Can you talk a bit about a larger project that you’ve worked on?

Creating the “Documents” part of the Editor was one major project. Our clients wanted to be able to send a dynamically-generated PDF report to their customers after a meeting, or make a PDF available for download. The PDF had to display content from the presentation, including data that had been inputted by the customer, so the report and the value story was specific to them.

It’s an extremely difficult problem to build something like Google Docs, in which the pagination and everything is right. I knew a lot about LaTeX, and I realized that I could use that to create a solution. We came up with a new Markup language (similar to markdown) that we internally call MarkIt, which has some ideas borrowed from LaTeX that tie it tightly together with the spreadsheet and the presentation layer. On the technical side, the parser is based on a Parsing Expression Grammar, which is one of the most beautiful things I’ve learned in these last years.

Do you always work independently?

No, not at all. We share ideas with each other and have brainstorming sessions etc. I’ve learned a lot from the other developers.

What about the culture here at BaseCase?

It’s a young team, everyone is very friendly, we play a lot of kicker.

And Berlin - you live in Prenzlauer Berg right?

Berlin is an amazing city. Prenzlauer Berg is really cool. Actually, there’s a conference in Berlin soon about a new programming language from Mozilla called Rust, it’s a super interesting topic, might be the next big thing. So I asked myself, where is Mozilla based?’ - I looked it up and it’s a couple of blocks away from my place! That’s Berlin, you know.

You know Open Office? They’re based a few doors down from us here, near Checkpoint Charlie. Berlin is really taking off at the moment, there are a lot of startups, a lot of great ideas going around.

Wondering why we haven’t posted in a while?

Our blog has moved to a different location.
Visit http://blog.basecase.net to check out our latest blog posts.