Code Monkey home page Code Monkey logo

Federico Mastellone

Education

B.S. in Computer Science Engineering, ITBA

Summary

I’m a Scrum Alliance Certified Scrum Developer and I have been following agile practices for many years, on-site or remotely with companies from different regions. I have worked in Java projects with the usual Hibernate/Struts frameworks and used all the object oriented patterns you can imagine, mostly when trying to make sense of big spaghetti PHP codebases. In the end I got tired of trying to make everything fit into objects and switched to functional programming to never look back!

Haskell

But mostly, I have been a silent participant of the Haskell community for more than 10 years. I made contributions to Haskell's Cabal package manager when I needed for a private project and read the most significant papers and books, from "A History of Haskell: Being Lazy with Class" to "Parallel and Concurrent Programming in Haskell"

Principles

“Premature optimization is the root of all evil”

Donald Knuth.

Always keep it simple and don’t overbuild.

If you're going to break something you better break it early, committing and merging often is a good practice and when an error is found it's complemented very well with git-bisect.

But to find errors you need proper testing, "Program testing can be used to show the presence of bugs, but never to show their absence!". So in addition to defining the base cases by induction with HUnit, I use QuickCheck and Hedgehog, that coupled GitHub Actions are your best friends. Evolving code without testing is dangerous!

The best way to evolve the code or understand legacy code is refactoring it, making small steps until it gets easier to understand and fix errors. When extracting, renaming, refactoring in general I follow the steps detailed in Martin Fowler's book Refactoring. Although it's mostly object oriented the methodology can still be applied to functional programming (The downside of doing small / atomic commits is that you have to remember to merge squash to keep the log uncluttered).

Having code that looks nice and everybody can understand is important. Style guidelines can vary from company to company (and generate a lot of bikeshedding) but I always try to be as standard as possible and use as few dependencies as possible (back to "don’t overbuild" mentioned at the begining).

External

Linkedin: https://www.linkedin.com/in/fmaste/

Federico Mastellone's Projects

cabal icon cabal

Official upstream development repository for Cabal and cabal-install

cardano-node icon cardano-node

The core component that is used to participate in a Cardano decentralised blockchain.

fmaste icon fmaste

Config files for my GitHub profile.

ghc icon ghc

Mirror of the Glasgow Haskell Compiler. Please submit issues and patches to GHC's Gitlab instance (https://gitlab.haskell.org/ghc/ghc). First time contributors are encouraged to get started with the newcomers info (https://gitlab.haskell.org/ghc/ghc/wikis/contributing).

haragan icon haragan

Haskell web framework for a multi master database

haskell icon haskell

A mixture of Haskell quick reference guide, research logbook and tutorial full of external references

hgrep icon hgrep

Building a Haskell grep as a research project on Monads, Arrows, IO and concurrency

http-types icon http-types

Generic HTTP types for Haskell (for both client and server code)

mafia icon mafia

A framework for packaging Haskell software

nomad icon nomad

Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.