Huey
October 23, 2024

dnlserrano

When machines could see you

In 2024, Geoffrey Hinton was awarded the Nobel Prize for his contributions to artificial intelligence. A key milestone in his work came in 2012 with AlexNet, a neural network he developed with his students Alex Krizhevsky and Ilya Sutskever, sparking a revolution in AI. But more than a decade earlier, in 2001, Paul Viola and Michael Jones first gave machines the ability to see you in real-time. Seen in historical context, Viola-Jones is nothing short of a technological sleight of...

3 days ago

dnlserrano

Balinese dancers

When Balinese dancers are performing the Ramayana monkey chant dance, they move their hands and arms percussively. Secury Hashing Algorithms are a family of cryptographic hash functions published by NIST, a United States laboratory for the promotion of American innovation and industrial competitiveness by means of… you guessed it, establishing standards. SHA-0 (fka “original SHA”), SHA-1, SHA-2 and SHA-3 are all a part of SHA. All of the algorithms up until SHA-3 (excluding), were designed by the NSA and all...

over 2 years ago

dnlserrano

New York city subway

14.23.34.42.50.59.66.72 Do you know what this sequence is? About the New York city subway and computer science data structures — a blog post on real life city navigation and abstractions for efficient search. If you live in New York city maybe you guessed it. The sequence represents a trip on the New York city subway (or so I’m told). Stops 14, 23, etc. up until 72. The New York city subway is a skip list: it works just like the...

over 2 years ago

dnlserrano

Okapi BM25

Just recently learned about Okapi BM25 as a better information retrieval function for search engines (after the widely used “vanilla” TF/IDF) and it is hands down the best comp sci name I’ve come across. “Okapi BM25”, damn. Some history. Karen Spärck Jones was a pioneering British computer scientist responsible for the concept of inverse document frequency (1972); Elasticsearch still uses TF/IDF as part of its full-text scoring algorithm as of today. it’s cheap to run and tremendously useful. TF/IDF stands...

over 2 years ago

dnlserrano

Data Intensive maps

In Designing Data Intensive Applications, a great book by Martin Kleppmann, each chapter starts out with a fun map. It’s a distinctive and fun way to break the usual boring tone of entering a new monotonically incrementing chapter. The book reads like a mix of a distributed systems bible and a (quite large) pocket book for the majority of your state-of-the-art solutions for designing applications for massive scalability. It lays out general concepts and then goes in deep on different...

almost 4 years ago

dnlserrano

Tensorflow Serving in Elixir

I’ve been learning more about Tensorflow Serving lately. If you are where I was at around a month ago and you’re not super familar with it, TF Serving is a “flexible, high-performance serving system for machine learning models, designed for production environments.” Follow a set of conventions (over configuration), and you can get a Tensorflow model up and running faster than ever before, powered by highly-optimised C++ code that runs blazingly fast. It is the de facto way of isolating...

over 4 years ago

dnlserrano

Behaviours and Dynamic dispatch

This is going to be a quick one. Recently I had the opportunity to take part in the refactoring of some Elixir code. It looked something like this. Picture more interesting (and complex) logic in place of the classic, old and honestly a bit boring beverages example: defmodule Beverages do def prepare(beverage_type) do with :ok <- roll_up_sleeves(), {:ok, quantity} <- random_quantity(), {:ok, preparation} <- prepare_it(beverage_type, quantity), {:ok, _beverage} <- serve_it(preparation) do {:ok, "happy days!"} else error -> {:error, error} end...

almost 5 years ago

dnlserrano

Learning Rust

I’ve been learning Rust lately. I have also got back to playing futsal with some friends. Weirdly enough, these two worlds intersected a few weeks ago. This is a summary of my experience learning Rust. Starting with reading about it here and there, eventually getting the book, doing a Hackathon project at Onfido using it and then spinning up my own personal project as a way to further experiment with the language. At this point, Rust is a pretty well-known...

almost 5 years ago

dnlserrano

Mutation testing in Elixir

I first heard about mutation testing when attending a Ruby meetup here in Lisbon. At the time Tadas presentation focused on mutant, the Ruby library for mutation testing by mbj. It sounded fun, but not very practical. I think that was because I didn’t understand the full scope, goals and philosophy, so to speak, of mutation testing. This post will help explore mutation testing and why Elixir is a good candidate to give it a shot. I will then introduce...

over 5 years ago

dnlserrano

ExUnit Deep Dive

Elixir ships with ex_unit, its default testing framework. I never cease to be amazed at how fast ex_unit is. It also ships with a lot of nice handy features I end up using daily in my job. It is part of why developing Elixir is such a nice experience with fast feedback cycles and useful, simple error reporting. But what happens when we run mix test? ...................................... Finished in 1.9 seconds 38 tests, 0 failures Randomized with seed 280579 Going...

over 5 years ago

dnlserrano

Playing with FFmpeg C code in Elixir

Foreign function interface is a well-known mechanism whereby a program written in language X interoperates with another program written in language Y. This approach is useful in cases where, developing with language X, you realise you now have a very hard and complex problem that has been solved by a library written in that other language Y. One of such examples is dealing with video. FFmpeg is arguably the most common library for dealing with streams of video, and it...

over 5 years ago