Chris Padilla/Blog

My passion project! Posts spanning music, art, software, books, and more
You can follow by Newsletter or RSS! (What's RSS?) Full archive here.

    Brian Eno on Music and Painting

    Sourced from Austin Kleon in his newsletter this week, Brian Eno's 2011 Moscow lecture.

    Eno talks on how music (especially classical music) was a performative, hierarchy driven medium. Recorded music, however, takes out that hierarchy and makes the act of creating music more like painting. Really beautiful ideas, the whole thing is worth a listen.

    Type Hinting in Python

    After spending some time in Java, TypeScript, and C#, I've started to miss typing when it's not there.

    While Python won't keep from compiling if there's a type issue, the autocomplete and clarity that comes with Type Hinting is a boon to productivity and clarity.

    The Basics

    A quick, simple example:

    def say_name(name: str) -> str:
        return "My name is " + name

    name: str is declaring that name is the built-in string type. The -> str denotes that we are returning a string.

    Not Fool-Proof

    Say that there are some conditions to the function:

    def say_name_if_starts_with_j(name: str) -> str:
        if name[0] is 'J':
            return "My name is " + name
        else:
            return False

    I've said this method will return a string, but in some cases it returns a boolean. In statically typed languages, this would raise an error at compile time, and/or my editor may alert me to the issue. In Python, however, these are only hints. So this code flies.

    Let's fix it before moving on:

    from typing import Union
    
    def say_name_if_starts_with_j(name: str) -> Union[str, bool]:
        if name[0] is 'J':
            return "My name is " + name
        else:
            return False

    Why It's Called Type Hinting

    The main benefit here comes later as I'm calling the function. Say I'm in the middle of writing this code:

    name = say_name_if_starts_with_j("Jake The Dog")
    name.capitalize()
    # autocomplete suggests string methods, such as "capitalize"

    Because we've gone through the trouble of typing our return value, my code editor knows to suggest string methods (as well as boolean methods!)

    Hovering over the say_name_if_starts_with_j method now also includes a line recreating my defenition:

    (method) def say_name_if_starts_with_j(
        name: str
    ) -> str

    We're missing some of the compiling and linting benefits of statically typed languages out of the box with Type Hinting. However, it's a feature of the language that still has value in communication!

    Typing here allows for me to be intentional with my methods and allows for an opportunity to communicate clearly the expected inputs and outputs of my function. One less trip to another tab in my code editor or browser can go a long way for keeping the flow going.

    Foolin' With Funk

    Listen on Youtube

    Groovin' on a Sunday mornin'

    Sunset Over Campion Trail Creek

    Quack

    Our favorite time to walk the trail 🌅

    Raspberry Snow Cone

    Listen on Youtube

    Recording a new album! Bit of a rock ballad vibe