ppcsf's comments

ppcsf | 8 years ago | on: Ask HN: Who is hiring? (November 2017)

GetSwift | Melbourne (AU), New York | ONSITE | FULLTIME

GetSwift is a software company that aims to optimize last-mile delivery. We are well-funded (recently closed a $24M round) and listed on the ASX in 2016. Our software is used in 65 countries and across 60+ industries, and our clients include companies like Pizza Hut, Little Caesars Pizza, Lion Nathan, Commonwealth Bank of Australia, Mitre10, Just Eat, and Red Rooster.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is varied and includes .NET, Go, Java, Python, Typescript, React, AWS, Kafka, Kubernetes, and Haskell. We hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. The only real requirement is that you're self- motivated and able to learn quickly, but there's bonus points for:

• The ability to code in a variety of languages

• Devops, containers, Kubernetes, aws

• Familiarity with any part of our stack

Our interview process consists of a short code test and a technical interview. After that, we'll be in touch within about a week.

Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 8 years ago | on: Ask HN: Who is hiring? (October 2017)

We are also looking for web designers (or anyone with great HTML/CSS skills and design sensibilities) to help us build out a complete overhaul of our app. It will be a responsive SPA with plenty of complex UX, mapping, and infoviz problems to solve.

ppcsf | 8 years ago | on: Ask HN: Who is hiring? (October 2017)

GetSwift | Melbourne (AU), New York | ONSITE | FULLTIME

GetSwift is a software company that aims to optimize last-mile delivery. We are well-funded (recently closed a $24M round) and listed on the ASX in 2016. Our software is used in 65 countries and across 60+ industries, and our clients include companies like Pizza Hut, Little Caesars Pizza, Lion Nathan, Commonwealth Bank of Australia, Mitre10, Just Eat, and Red Rooster.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is varied and includes .NET, Go, Java, Python, Typescript, React, AWS, Kafka, Kubernetes, and Haskell.

We hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. The only real requirement is that you're self- motivated and able to learn quickly, but there's bonus points for:

• The ability to code in a variety of languages

• Devops, containers, Kubernetes, aws

• Familiarity with any part of our stack

Our interview process consists of a short code test and a technical interview. After that, we'll be in touch within about a week.

Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 8 years ago | on: Ask HN: Who is hiring? (September 2017)

GetSwift | Melbourne (AU), New York | ONSITE | FULLTIME

GetSwift is a software company that aims to optimize last-mile delivery. We are well-funded (recently closed a $24M round) and listed on the ASX in 2016. Our software is used in 65 countries and across 60+ industries, and our clients include companies like Pizza Hut, Little Caesars Pizza, Lion Nathan, Commonwealth Bank of Australia, Mitre10, Just Eat, and Red Rooster.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is varied and includes .NET, Java, Python, Typescript, React, AWS, Kafka, Kubernetes, and Haskell.

We have multiple roles available in web design and engineering.

We are looking for web designers (or anyone with great HTML/CSS skills and design sensibilities) to help us build out a complete overhaul of our app. It will be a responsive SPA with plenty of complex UX, mapping, and infoviz problems to solve.

For engineering, we're hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. The only real requirement is that you're self- motivated and able to learn quickly, but there's bonus points for:

• The ability to code in a variety of languages

• Devops, containers, Kubernetes, aws

• Familiarity with any part of our stack

Our interview process consists of a short code test and a technical interview. After that, we'll be in touch within about a week.

Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 8 years ago | on: Ask HN: Who is hiring? (August 2017)

GetSwift | Melbourne, Australia | ONSITE | FULLTIME | $70k - $90k

GetSwift is a software company that aims to optimize last-mile delivery. We are well-funded (recently closed a $24M round) and listed on the ASX in 2016. Our software is used in 65 countries and across 60+ industries, and our clients include companies like Pizza Hut, Little Caesars Pizza, Lion Nathan, Commonwealth Bank of Australia, Mitre10, Just Eat, and Red Rooster.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is varied and includes .NET, Java, Python, Typescript, React, AWS, Kafka, Kubernetes, and Haskell.

We're hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. The only real requirement is that you're self- motivated and able to learn quickly, but there's bonus points for:

• The ability to code in a variety of languages

• Devops, containers, Kubernetes, aws

• Familiarity with any part of our stack

Our interview process consists of a short code test (if you don't have any publicly accessible code for us to look at), and a technical interview in our Collins St office, 1-2 hours. After that, we'll be in touch within about a week.

Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 9 years ago | on: Ask HN: Who is hiring? (May 2017)

GetSwift | Melbourne, Australia | ONSITE | FULLTIME

GetSwift is an ASX-listed software company that aims to optimize last-mile delivery. Our software is used in 59 countries and across 30 industries, and our clients include companies like Pizza Hut, Mitre 10, Just Eat, and Red Rooster, with many more in the pipeline.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is varied and includes .NET, Java, Python, Angular, React, AWS, Kafka, Kubernetes, and Haskell.

We're hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. The only real requirement is that you're self- motivated and able to learn quickly, but there's bonus points for:

• The ability to code in a variety of languages

• Data science skills (R/ Pandas etc, solid stats background)

• Devops, containers, Kubernetes, aws

• Familiarity with any part of our stack

Our interview process consists of a short code test (if you don't have any publicly accessible code for us to look at), and a technical interview in our Collins St office, 1-2 hours. After that, we'll be in touch within about a week. Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 9 years ago | on: Ask HN: Who is hiring? (April 2017)

GetSwift | Melbourne, Australia | ONSITE | FULLTIME

GetSwift is a logistics software company that's just listed on the ASX. We're looking to grow our small team to keep up with our huge growth and international expansion.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes real-time vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is primarily .NET, Angular, React/Redux, AWS, Kafka, Kubernetes, and Haskell.

We're hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. Bonus points for:

• The ability to code in a variety of languages, particularly of the functional flavour

• Data science skills (R/ Pandas etc, solid stats background)

• Devops, containers, Kubernetes, aws

• Familiarity with any part of our stack

Our interview process consists of a short code test (if you don't have any publicly accessible code for us to look at), and a technical interview in our Collins St office, 1-2 hours. After that, we'll be in touch within about a week.

Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 9 years ago | on: Ask HN: Who is hiring? (February 2017)

GetSwift | Melbourne, Australia | ONSITE | FULLTIME

GetSwift is a logistics software company that's just listed on the ASX. We're looking to grow our small team to keep up with our huge growth and international expansion.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes real-time vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is primarily .NET, Angular, React/Redux, AWS, but we're moving toward an event-driven microservices architecture, using Kafka/Kubernetes/Haskell/React.

We're hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. Bonus points for:

• The ability to code in a variety of languages, particularly of the functional flavour

• Data science skills (R/ Pandas etc, solid stats background)

• Devops, containers, Kubernetes, aws

• Familiarity with any parts of our stack

We are also hiring UX designers to revamp the UX of our rather complex product.

For engineers, our interview process consists of a short code test (if you don't have any publicly accessible code for us to look at), and a technical interview in our Collins St office, 1-2 hours. After that, we'll be in touch within about a week.

For UX designers, if we're happy with your portfolio, we'll give you some paid work to see if we're a mutual fit.

Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 9 years ago | on: Ask HN: Who is hiring? (January 2017)

GetSwift | Melbourne, Australia | ONSITE | FULLTIME

GetSwift is a logistics software company that's just listed on the ASX. We're looking to grow our small team to keep up with our huge growth and international expansion.

As an early-stage employee, you'll have a big impact on the architecture of our product, which includes real-time vehicle routing & dispatching, data analytics/ modelling, and complex SPAs. Our stack is primarily .NET, Angular, React/Redux, AWS, but we're moving toward an event-driven microservices architecture, using Kafka/AWS Lambda/k8s/Haskell/React.

We're hiring at all levels of the stack, but we'd be particularly interested in full-stack engineers. The ability to code in a variety of languages, particularly of the functional flavour, will be highly regarded. Bonus points for:

• Data science skills (R/ Pandas etc, solid stats background)

• Devops, containers, k8s, aws

• Familiarity with our stack

Our interview process consists of a short code test (if you don't have any publicly accessible code for us to look at), and a technical interview in our Collins St office, 1-2 hours. After that, we'll be in touch within about a week.

Email me (joash at getswift dot co), prefixing the subject with "HN:". Include anything you think will show off your skills!

ppcsf | 9 years ago | on: A Taste of Haskell

It's interesting that you said the Haskell allows programmers to build Haxl, with the implication being that other languages would disallow it.

I wrote a port of Haxl to C#[0]. At this point one might expect me to recite the whole Turing-completeness-means-all-languages-are-the-same banality, but my experience porting Haxl has actually led me to the opposite opinion.

Haxl probably wouldn't have been written in any other language other than Haskell. Because Haxl leans so heavily on concepts that other languages have no words for, I think it's inexpressible in C#, or most other mainstream languages. Obviously not literally inexpressible (there's an existence proof of a C# Haxl) but in an Orwellian, "these concepts are unthinkable in other languages" sort of way.

[0]: https://github.com/joashc/HaxlSharp

ppcsf | 9 years ago | on: Probabilistic Programming

I developed a PPL within C#, which I guess has a more familiar syntax for a lot of people. Basically, PPLs allow you to treat entire probabilistic models as primitives, and combine them as easily as we add integers. Let's say we have two models describing the distribution of university grades in America and India, and we want to combine them into a single model, where you have a 25% chance of being an American, and a 75% chance of being an Indian:

  var combined = from isAmerican in Bernoulli(0.25)
                 from grade in isAmerican ? americanGrades : indianGrades
                 select grade;
This is now a new model that can be composed further with other models. Building models like this feels very expressive.

The inference method is also completely decoupled from the model specification process, allowing us to perform a Sequential Monte Carlo just by writing:

  var smcResults = combined.SmcMultiple(100);
or

  var pimhResults = combined.Pimh(10);
for a Particle-Independant Metropolis-Hastings.

There's more examples here: https://github.com/joashc/csharp-probability-monad

ppcsf | 9 years ago | on: Ask HN: Who wants to be hired? (July 2016)

Location: Melbourne, Aus

Remote: Yes, able to overlap 6 hours PST

Willing to relocate: Yes

   Technologies
    - React/Redux, Angular 1x, HTML/CSS, D3.js, Webpack
    - Haskell/ FP
    - SQL, Redis
    - Git, Linux, shell scripting, Latex/MathJax
    - MVC, C#, DI
    - NServiceBus, SignalR, Azure Service Bus
    - Android, Java
    - Python
I've authored a few open-source projects:

HaxlSharp: Composable, automatically concurrent data fetching & request deduplication https://github.com/joashc/HaxlSharp

Probabilistic C#: A monadic probabilistic programming framework https://github.com/joashc/csharp-probability-monad

Have professional experience delivering large real-time web applications, mostly SPAs.

Resume: On request

Website: http://joashc.github.io

Email: [email protected]

ppcsf | 9 years ago | on: Show HN: HaxlSharp – Concurrent data fetching and request deduplication in C#

I'm not sure that "the areas of the complexity spectrum where the problems are too simple for async/await" overlaps with "the areas of the complexity spectrum that async/await can't handle", but I agree that there's an issue there. Async/ await is definitely an incomplete solution, and Haxl attempts to address one area where the abstraction fails. Of course, there are always places where you can do better dealing with the asynchronous/ concurrent primitives, but just like there's a place for both manual memory management and garbage collection, I think there are use cases where these abstractions can provide real value.

ppcsf | 9 years ago | on: Show HN: HaxlSharp – Concurrent data fetching and request deduplication in C#

Yeah, it's certainly preferable to use Task.WhenAll or Promise.all in simple cases.

For more complex cases, I like to make the analogy with asynchronous code. There's a few problems with complex async code that only uses a minimal abstraction, like callbacks:

* Writing asynchronous code is error-prone

* Asynchronous code obscures our intent

* Programmers are bad at reasoning about asynchronous code

So we developed abstractions like async/await and promises, allowing us to write async code in a sequential-looking way. Unfortunately, introducing concurrency into the mix breaks this sequential abstraction, which means certain familiar problems emerge:

* Writing concurrent code is error-prone

* Concurrent code obscures our intent

* Programmers are bad at reasoning about concurrent code

Haxl attempts to reclaim this sequential abstraction, allowing us to write code that looks sequential, but is actually concurrent "behind the scenes".

ppcsf | 9 years ago | on: Ask HN: Who wants to be hired? (June 2016)

Location: Melbourne, Aus

Remote: Yes, able to overlap 6 hours PST

Willing to relocate: Yes

   Technologies
    - Web: React/Redux, Angular 1x, HTML/CSS, D3, Webpack
    - .NET stack: MVC, C#, DI
    - Messaging: NServiceBus, SignalR, Azure Service Bus
    - Android, Java
    - Haskell: STM, concurrency
    - SQL, Redis
    - Git, Linux, shell scripting, Latex/MathJax
    - Python
Personal Projects:

Probabilistic C#: A monadic probabilistic programming framework https://github.com/joashc/csharp-probability-monad

HaxlSharp: Composable, automatically concurrent data fetching https://github.com/joashc/HaxlSharp

Have professional experience delivering large real-time web applications, mostly SPAs.

Resume: On request

Email: [email protected]

ppcsf | 9 years ago | on: Null References: The Billion Dollar Mistake – Tony Hoare (2009) [video]

I think the section dealing with the Optional monad sort of glosses over their composability, which is one of the primary reasons we use monads. Multiple functions that all return an optional can be composed; for instance, if we had

  Optional<WidgetFriend> GetWidgetFriend(Widget widget)
and WidgetFriend had an Optional<FriendName> property, we could simply write [1]

  from widget in _widgetRepository.FindById(widgetId)
  from friend in _widgetRepository.GetWidgetFriend(widget)
  from name in friend.Name
  select name;
and get an Optional<FriendName>, without having to repeat all the tedious pattern matching of Some or None for every call. If any of those calls returns a None, the entire evaluation short-circuits and we get a None result at the end.

Of course, we can still write

  Optional<Widget> widget = null;
which is the problem with not fixing this issue on a language level.

[1] You'd have to implement Select and SelectMany, instead of Map and Bind, to get query syntax like this.

ppcsf | 10 years ago | on: Probabilistic Programming for Anomaly Detection

Stan uses Markov chain Monte Carlo for inference. MCMC algorithms can do very well at approximating the high-dimensional integrals required to calculate the posterior; estimating 1000-dimensional distributions with MCMC methods is not unusual.

ppcsf | 10 years ago | on: Probabilistic Programming for Anomaly Detection

I recently developed a probabilistic programming framework in C#. There's a fun example [1] in the tutorial that should give you a pretty good idea of what a PPL "feels like" to use.

The example is originally from the Anglican website (another PPL), but the general idea is transferable; PPLs make composing entire probabilistic models as easy as adding integers. We can perform complex inference on our models, and even compose our inference methods to form more powerful ones.

[1] https://github.com/joashc/csharp-probability-monad#modelling...

page 1