HNHacker News
TopNewBestAskShowJobs

mands

753 karma · joined March 31, 2011

Co-founder at pumpup.com
submissionscomments
mands··on I tried Haskell for 5 years
Hi there - we've actually built a lot of our container ecosystem around existing Linux tools, including `systemd-nspawn`, `btrfs` and more rather than creating the whole stack from scratch - and again this is all controlled from Haskell. We experimented with Docker, Kubernetes and more, but found they they made lots of assumptions about what was running inside a container that didn't mesh with our compute model, so using lower-level primitives worked better for us.

We're really lucky also to have one of the main `rkt` developers joining us soon to work on the container side.

mands··on I tried Haskell for 5 years
We're using Haskell to produce an entire compute platform for building, composing, and running type-safe containerised micro-services for data science. This certainly touches on a lot of the areas that Haskell is traditionally known for being good at, e.g. building DSLs, type systems, interpreters, etc.

However, the work also includes a runtime platform that is more low-level, including building our own container system, talking to the Linux kernel, using cgroups/resource management, and distributed message passing - areas where languages such as Go have found a niche, and may be classified as Real World. However for us, Haskell's type-safety, runtime performance, and extensive ecosystem has been a boon even in this domain. We effectively use it as an (incredibly powerful) general-purpose language here, and it's worked more than fine.

We're currently at around 15,000 lines of code with a team of 5 Haskellers, and it hasn't really been a problem regarding performance, understanding the codebase, or with newcomers to the team.

(plug - we're at https://www.github.com/nstack/nstack and are hiring more Haskellers)

mands··on Ask HN: Who is hiring? (May 2017)
NStack | London, UK | Full time | Onsite & Remote | Functional Programmers and Full-Stack Devs | http://nstack.com / http://www.github.com/nstack/nstack

NStack lets data analysts to do sophisticated data work in the cloud without a team of engineers. To accomplish this, we’re a building a platform for composable, data-driven microservices, using a mixture of Haskell and low-level Linux systems tech (including containers, systemd, IPC, with some typed DSLs, systems code, and distributed systems thrown in). Our aim is to use the fundamental lessons of programming languages and operating systems to provide an abstraction over infrastructure - think Bash for containerised microservices.

We’re looking for both talented backend/systems programmers -- preferably with some knowledge of typed functional languages and *NIX systems programming -- and smart generalists / full-stack developers to join our team to make this a reality. It’s a challenging role, working on hard problems, and offers the chance to work with a top technical team and shape a company and product from an early stage.

NStack is funded by top-tier investors from the West Coast, the founders are both technical and ex-YC / academia, and our team is lucky enough to include world-class talent for the problem we're solving. Salaries are competitive and include generous stock options. We're generally hiring onsite, however remote within Europe is also possible for the right candidate. We’re looking at a range of positions and experience levels - whether you’ve just left uni or been hacking for 20 years, if you’re interested please get in touch.

Any questions please comment, reach out via jobs@nstack.com, or https://angellist.com/nstack/jobs Cheers!

mands··on Ask HN: Who is hiring? (April 2017)
NStack | London, UK | Full time | Onsite & Remote | Functional Programmers & Data Scientists | http://nstack.com

NStack lets data analysts to do sophisticated data work in the cloud without a team of engineers. To accomplish this, we’re a building a platform for composable, data-driven microservices, using a mixture of Haskell and low-level Linux systems tech (including containers, systemd, IPC, with some typed DSLs, systems code, and distributed systems thrown in). Our aim is to use the fundamental lessons of programming languages and operating systems to provide an abstraction over infrastructure - think Bash for containerised microservices.

We’re looking for both talented programmers -- preferably with some knowledge of typed functional languages and *NIX systems programming -- and data scientists to join our team to make this a reality. It’s a challenging role, working on hard problems, and offers the chance to work with a top technical team and shape a company and product from an early stage.

NStack is funded by top-tier investors from the West Coast, the founders are both technical and ex-YC / academia, and our team is lucky enough to include world-class talent for the problem we're solving. Salaries are competitive and include generous stock options. EU applicants welcome for onsite, and remote is also possible for the right candidate. We’re looking at a range of positions and experience levels - whether you’ve just left uni or been hacking for 20 years, if you’re interested please get in touch.

Any questions please comment, reach out via jobs@nstack.com, or https://angellist.com/nstack/jobs

Cheers!

mands··on Ask HN: Who is hiring? (October 2016)
Hi!

Thanks for the ping, your email hasn't been lost! :) Sorry for the delay, my fault, was at a conference at the end of last week, and unfortunately caught a cold after :(

Check your inbox - cheers!

mands··on Four months with Haskell
Agreed - we're a Haskell-based startup in London and have been utterly impressed at the developers we've met - not just in terms of their programming ability but also as engineers who are able to contribute as a team and work with us to build product according to specs/deadlines.
mands··on Ask HN: Who is hiring? (June 2016)
StackHut | London | Full Time | ONSITE

We’re a London-based startup working on a microservices-based “CloudOS” using a mixture of Haskell and Linux systems technology (containers, minimal distros, init systems, etc.) - with some DSLs, systems code, and distributed systems thrown in. We want developers to spend more time writing core business-logic and less time thinking about infrastructure.

We’re looking for our first technical hires, who will be working with us to design and implement the core platform that will make this a reality. We have a MVP in Python (https://github.com/StackHut/stackhut); it gives a feel for what we’re trying to build, although is only a start.

We’re implementing this in Haskell, and are looking for talented functional programmers preferably with some knowledge of Linux/Unix systems programming. It’s a challenging role, working on hard problems, but the chance to work with a top technical team and shape a company and product from the get-go.

We’re funded by top-tier infrastructure investors from the West Coast, and the founders are highly-technical and ex-YC / PhD. Salaries are competitive and include stock options. EU applicants welcome, although relocation would be required. Any questions please comment, reach out on email (jobs at stackhut dot com) or at https://stackhut.com/#/careers. Cheers!

mands··on Bash on Ubuntu on Windows
I get 9-10 hours on Linux with the UX305FA model (pre-Skylake fanless CoreM, i.e. MBA competitor). Not sure about the UX305LA model (i5/i7, i.e. MBP competitor).
mands··on Bash on Ubuntu on Windows
Asus Zenbook UX305 series - they are well priced and run both Linux and Windows fantastically.
mands··on Why OCaml? [video]
Great talk - for me the module system, and functors in particular, are one of the great strengths of OCaml.

I'm hoping increases usage by Jane Street, Facebook and Bloomberg, along with the Unikernels/Docker tie-up will lead to increased uptake and visibility. I personally find it more suitable to systems space than Go, but with far more features to help build correct code.

(shameless plug - we're using OCaml for our microservices platform in London and are now hiring - https://www.stackhut.com/#/careers)

mands··on Python to OCaml: Retrospective
Yep, a source of constant frustration when moving between them!
mands··on Python to OCaml: Retrospective
Good to see this back up on here - am just about to start porting a Python codebase to OCaml myself (www.stackhut.com) and have been reading this to help. Am thoroughly looking forward to all the typed, functional goodness :)
mands··on Docker Acquires Unikernel Systems as It Looks Beyond Containers
Thanks :) - we're super early in this space, but are incredibly excited by what how we can use both containers and unikernels to help ease the development process and integrate with your current stack.

ps - shameless plug but we're hiring talented OCaml devs (http://stackhut.com/#/careers)

pps - Congrats to @amirmc and the Mirage OS group!

mands··on How the Pomodoro Technique changed my workday
For coding I find that 45m work with 15m breaks (and a 30m long break) work better as you have enough time to get into a problem, and just enough of a break after to send some emails / browse HN, etc.

The overall work ratio is lower (75% vs ~83%) but it's hard to put an qualitative efficiency metric when programming anyway so I'm not so worried.

This ratio also worked super well when writing my dissertation - the 5m break never felt like enough of a reward after.

(there is also a great Pomodoro extension for Gnome if you're running Linux).

mands··on The Microsoft Surface Book Review
Absolutely. Being able to install a -devel package and just get on with things is incredibly important.
mands··on The Microsoft Surface Book Review
Perhaps, but I'd suspect that would manifest itself with a BSOD/kernel panic rather than the same user-level applications breaking in a reproducible manner without affecting the rest of the OS.
mands··on The Microsoft Surface Book Review
I agree, a lot of people tend criticise Windows simply for not being Unix, which is unfair, and I like the design of the NT kernel.

And this is slightly off-topic but I have tried several times to fully embrace the Windows way, learnt PowerShell (ISE rocks), and even spent significant time building a startup using F# in VS and hosting it on Azure. In retrospect it was nice but there were just too many rough edges for me,

* Setting up a nice console environment means using a 3rd-party system like cmder/conemu + Cygwin/Msys/etc.

* Getting git working along with ssh-agent is still hit & miss

* Installing, for instance, Python packages that rely on C bindings requires extra trickery to set up,

* Chocolately isn't bad, but it is just downloading and running installers for you, it doesn't really have a dependency solver like yum or other Linux package managers do (NuGet does but don't think Chocolately uses those features). Plus it's more for packaged software than libraries/tools. OneGet may fix that in the future.

These are all surmoutable issues, for sure, but in the end it was just easier to move back to Linux. Not just for familiarity, but also convenience and ease - for me Windows was like death by 1000 papercuts. A shame, as I much prefer the Windows/PowerShell data model of communicating objects to text. I just wish MS would spend some time working on the overall dev experience outside of VS.

(I'm sure enough people will say desktop Linux has it's fair share of issues and I totally agree. Wireless drivers, Wayland still not quite there, battery usage, and much more. Which is why I'd be happy to pay for Windows if the dev experience was improved.)

mands··on The Microsoft Surface Book Review
That's absolutely true. I've gone back and forth between Linux and Windows over the past 10 years or so - using Linux at work and Windows for casual/office/music production. I used Windows 8.1 for my last job and it was a nice experience overall.

Although the latest Fedora 23 is perhaps the most polished version yet ;)

mands··on The Microsoft Surface Book Review
Mainline release on a modern Dell/Intel laptop with all drivers installed. Same laptop runs Linux fine so unlikely hardware issue.

Updates would crap out with random errors like 80074005 - which a casual user should never see. I got it working again by stopping the update services from the console (net stop ...), deleting the cache and re-running.

The store would be running, then you'd Alt-Tab out and back again and it would be gone. Same happened with other Universal apps, OneNote in particular.

It certainly got more reliable over time, and I have tried the insider builds on a spare laptop and they're better - but the initial 10240 release was sub-par.

mands··on The Microsoft Surface Book Review
No, on a small 11in netbook. I needed a mobile dev environment, and it was either a Surface that could double as a tablet and run Linux VMs, or a netbook running Linux.

You can run Linux natively on the Surface, SecureBoot isn't a problem, but the bigger issues are drivers and a touch-unfriendly UI.

(I went with an Acer Aspire E11 - $150, 8hr battery, and fanless - it may be the best Linux netbook every made!)

mands··on The Microsoft Surface Book Review
Looks like great hardware let down by poor software.

I just gave Windows 10 another try with a view to purchasing a Surface 4 if successful (OneNote + Stylus = :)) - but after a few weeks reverted back to Linux (Fedora).

Apart from the inferior development experience (outside of VS - which is top-notch), there are just too many bugs, unfinished pieces and a general lack of polish. Updates wouldn't install, the Store kept crashing/disappearing, Modern Apps would interact badly with virtual desktops.

Win 10 should never have been released in such a state. I'm hoping the Threshold release out this week will go some ways to repairing the damage and presume will be a better fit for the Surface Book.

Maybe I'll look at the Surface line again in a few months.

mands··on Ask HN: What are the alternatives to Amazon Lambda?
Thanks for mentioning! Working on getting an OS X packaged app out this weekend along with that Linux/Bash-as-a-service up!
mands··on Ask HN: What are the alternatives to Amazon Lambda?
We've been hacking on something in this space for the past few months with StackHut - https://www.stackhut.com. We have a demo in a blog post at http://blog.stackhut.com/phantomjs-cloud/ showing headless web rendering-as-a-service.

We've tried to make it as simple as possible to get your code into the cloud. You write your classes and they're deployed as entrypoints into a lambda-esque service that you can call over JSON-RPC - making it trivial to write and deploy a backend.

As described in the blog, the great thing we think it has over tools like lambda is that you can describe your system declaratively, specifying any dependencies you may need, using a simple YAML file and it takes care of packaging your code. You can run this locally or deploy it to our hosted platform where it scales as needed.

Currently support JS and Python atm, and open-source at https://www.github.com/StackHut. We're super early but would love to hear your thoughts.

mands··on Your company is not “too far along” for YC
Good to know - thanks!
mands··on Your company is not “too far along” for YC
Did any of your existing angel/seed funding partners raise any concerns about you doing YC?
mands··on Powering CRISPR with AWS Lambda
We’ve also been hacking away in the same space with StackHut (http://www.stackhut.com) - build stateless & ephemeral microservices in Python and JS that are deployed as cloud APIs for access over JSON-RPC; with simple type-checking, dependencies, shelling out to any other code/binaries, and more.

Most code is open-sourced at http://www.github.com/StackHut and we're working on making it easily deployable on your own hardware.

mands··on Powering CRISPR with AWS Lambda
We’ve also been hacking away in the same server-less space with StackHut (http://www.stackhut.com).

We're adding support for more languages (JS & Python currently) but also have an entire build chain that let's you specify any Linux OS and language packages you want, and it's also trivial to embed your binaries and shell out to them if needed.

mands··on Python 3.5.0
Yep - can't wait until Python3 is the norm.

Feels like such a step back when I have to use a Python 2.x codebase - so many little annoyances.

mands··on The Rise and Fall of CORBA (2006)
Yes, we've been very happy with Barrister so far, in that it provides a simple syntax for RPC definitions that looks very similar to Java so is not hard to learn. And yes, keeping it similar to standard function/object calls lowers the cognitive load.

Hmm, yep recursion not supported atm, although we are thinking of extending the basic system shortly - there are a lot of other features we'd like to add - true sum types, a dynamic operator, and more.

Python annotations are nice, and a lot of users have asked for a way to annotate RPC functions in their code. Doing this all in a cross-language way will be hard and so we're thinking of keeping the external definition in the meantime.

--

Thanks so much for your advice. We're certainly looking at past attempts, and the research in transferring data is vast - I think it boils down to a trade-off between expression and usability - and for now JSON seems to have found pretty good sweet spot. Perhaps with just a simple schema layer on top that will be suitable for most use-cases. I imagine Thrift, ProtoBufs, etc will always beat it on speed, XML (+XML Schema) on expressibility, etc.

For us, as you have guessed, we are just trying to make it as easy as possible for the majority of users – particularly web and mobile developers. This does also mean we're trying to stay language agnostic and find a type subset that works across most languages - JSON primitives let us get some of the way there.

Thank you so much for all your advice - it's been so helpful and we're really happy you took the time out to try it all and record your thoughts. Would love to chat further - please feel free to drop me an email at HNusername @stackhut.com.

mands··on The Rise and Fall of CORBA (2006)
Wow - thanks so much for going through all the links and getting an example working - on a phone no less!! :) very impressive! Hmm, machineless, now that is interesting - I imagine with phone processors such a thing will become, if not already is, possible.

Yes! I wish there was a way to really define and lock-down exactly what communication/serialisation primitives are required to aid communication between systems. Though I imagine you are right in that we've come quite far with common practices.

Haha - yes the Barrister docs can be a bit confusing - we are getting around to writing a simpler version of them with common examples and use-cases. We really like the schema itself as it does map onto JSON semantics quite nicely.

1) Yep, the messaging format could def be simpler! We just felt that as we're starting out it would be better to stick with standards, even if, as you say, they are nascent. This reduces the amount of things we have to do but also we hope that people much smarter than have thought about the issues involved! Hopefully the client-side bindings will hide most but if needed it's nice to now you can drop down to the JSON format.

2) Hmm, JSON by example, this is super interesting!! I fully understand where you are coming from and it seems so much simpler than JSON-Schema (I was never a fan) Using values as types is quite elegant, and reminds me of some of the type-level programming stuff in the functional circles.

The use of multiple entries in a JSON object seems like a nice way to express sum types - something we are really keen to add to the Barrister IDL (you can extend from an object but I believe there is only a single tree). As you note, although this valid JSON, it may require a custom parser to extract. I'd love to hear more about this technique tho, has it been used elsewhere or is there any further documentation?

3) Primitives - yes, it'd certainly be possible to specify other primitives by encoding them in the JSON string value. Could be risky, as you suggest, when you start looking at regexes and so on - I've not been the biggest fan of defining these as types in the past. Also, how would one go about defining a user-defined type at the equivalent level of a primitive? Super interesting tho, if you have any more thoughts on this I'd love to read them.

← PreviousPage 3 of 5Next →