Anthony Corletti cloud computing. startups. music. etc.

Question Answering NLP in Go

I’ve wanted to do more software development in go but have found myself bouncing back to python or ruby due to familiarity with libraries, web frameworks, and ML/ AI tools.

About a week ago I stumbled onto, spago a ML library that is written in go that’s designed to support neural network architectures in NLP based tasks.

Figured this is a great way to start teaching myself more about the language given that there are more and more tools like this that are enabling robust ML/ AI applications in golang applications. I’m unsure if anything will be as robust as something like tensorflow or pytorch, but for now working with something like spago and golearn is a great start. See my previous post on building a K-nearest-neighbors implementation with go and golearn.

So let’s walk through an example that illustrates how we can build a simple service that does question answering NLP with spago.

Read more ...

Machine Learning with GoLearn

It’s really easy to build a K-nearest-neighbors implementation in go using golearn.

After searching for ways to start writing more go, especially ways that provide alternatives to familiar languages and frameworks, I’ve wanted to find machine learning libraries in golang because I tend to rely on python microservices and the rich ecosystem of ml libraries.

I’m writing this post using go1.14.4 so let’s dive in to installing golearn and writing up a quick example K-nearest-neighbors implementation.

Read more ...

Breezy ML with StreamLit

Building lightweight ML applications with python, pandas, streamlit, and scikit-learn is a breeze.

Let’s run through a simple example app to illustrate this.

Read more ...

Clean Rest API Error Messages with Python

A great practice in software development is clear error message communication.

Something like "An error occurred. Please try again later.", simply will not do because it’s simply easier to be explicit.

Our goal here would be to ensure that a consistent interface is communicated to our client applications regardless of request.

Tools and frameworks like Ruby-on-Rails make this really easy with it’s ActiveRecord implementation (Active record is literally a design pattern btw).

You’ll find that in most “fully featured” frameworks with ORMs like Rails, Django, Sails, etc, there is some sort of implementation that enables a clean interface for transmitting error messages, but often we don’t want to carry the bloat of these frameworks along.

Enter: types.

Read more ...

Fullstack Kubernetes

I’ve often wondered what it would be like if all software applications (databases, APIs, UI clients, pubsub, secret managers, etc) ran on the same infrastructure, so I’d never have to worry about working with different infrastructure patterns e.g. CDNs, Kubernetes, VMs, Functions, the one off PaaS or BaaS everyone forgot about, load balanced, multi-region, auto-scaling groups, etc!

I wanted; a familiar frontend, a lightweight and unopinionated API layer that plays nice with top data science software and can also be made available as a standalone service, a data layer with a natively distributed design, high fidelity pubsub (ideally with some delivery guarantee), and a secrets manager – all to run together on a kubernetes cluster.

Read more ...