Published

All published posts

2540 posts latest post 2026-06-16 simple view
Publishing rhythm
May 2026 | 58 posts
The work on autoflake [1] by fake-name [2]. Removes unused imports and unused variables as reported by pyflakes References: [1]: https://github.com/fake-name/autoflake [2]: https://github.com/fake-name
Check out trys [1] and their project sergey [2]. A tiny lil’ static site generator References: [1]: https://github.com/trys [2]: https://github.com/trys/sergey

📢 Announcing find-kedro

find-kedro is a small library to enhance your kedro experience. It looks through your modules to find kedro pipelines, nodes, and iterables (lists, sets, tuples) of nodes. It then assembles them into a dictionary of pipelines, each module will create a separate pipeline, and __default__ being a combination of all pipelines. This format is compatible with the kedro _create_pipelines format. [1] [2] [3] [4] # [5] kedro is a ✨ fantastic project that allows for super-fast prototyping of data pipelines, while yielding production-ready pipelines. find-kedro enhances this experience by adding a pytest like node/pipeline discovery eliminating the need to bubble up pipelines through modules. When working on larger pipeline projects, it is advisable to break your project down into different sub-modules which requires knowledge of building python libraries, and knowing how to import each module correctly. While this is not too difficult, in some cases, it can trip up even the most se...

Explicit vs Implicit Returns in Javascript

Often when reading through javascript examples you will find some arrow functions use parentheses () while others use braces {}. This key difference is that parentheses will implicitly return the last statement while braces require an explicit return statement. It is important to understand the difference between them because it is likely that you will find code examples of both and trying to edit code written differently than you’re used to may have unintended consequences. [1] # [2] Arrow functions are one-liner functions in javascript that have two main syntactical ways to create the code block. with parentheses and braces. Let’s take a look at both ways of creating arrow functions so that when we come accross them in the wild it will all make sense. [3] # [4] Here is an example of an arrow function that will implicitly return the last statement without the return keyword. I believe that these are a bit more restricted in that you cannot set variables inside them. They are ...

Twitter deepdives

Inspired by Chris Achard My ideas # [1] Python # [2] - List comps - Classes - Inheritance - Background - Click - Lambdas Kedro # [3] - Cataloging - Custom datasets - Reusable pipelines - find-kedro Learn kedro in 5 days # [4] Email course inspired by learn d3 in 5 days Mail # [5] - Share your knowledge - Practice - Practice in public - Make practice easy - Share your notes - Digital Gardening - Own your content - Build your audience - Be nice - Have empathy - Learn your way - Continuous learning References: [1]: #my-ideas [2]: #python [3]: #kedro [4]: #learn-kedro-in-5-days [5]: #mail
1 min read
I’m impressed by alive-progress [1] from rsalmei [2]. A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations! References: [1]: https://github.com/rsalmei/alive-progress [2]: https://github.com/rsalmei
I’m really excited about vim-quickui [1], an amazing project by skywind3000 [2]. It’s worth exploring! The missing UI extensions for Vim 9 (and NeoVim) !! 😎 References: [1]: https://github.com/skywind3000/vim-quickui [2]: https://github.com/skywind3000
If you’re into interesting projects, don’t miss out on bashtop [1], created by aristocratos [2]. Linux/OSX/FreeBSD resource monitor References: [1]: https://github.com/aristocratos/bashtop [2]: https://github.com/aristocratos

TIL: Bind arguments to dynamically generated lambdas in python

This past week I had a really weird bug in my kedro [1] pipeline. For some reason data running through my pipeline was coming out completely made no sense, but if I manually request raw data outside of the pipeline it matched expectations. NOTE While this story is about a kedro pipeline, it can be applied anywhere closures are put into an iterable. [2] # [3] After a few days of looking at it off and on, I pinpointed that it was all the way down in the raw layer. Right as data is coming off of the database. For this I already had existing sql files stored and a read_sql function to get the data so I opted to just set up the pipeline to utilize the existing code as much as possible, leaning on the kedro [1] framework a bit less. I have dynamically created lists of pipeline nodes many times in the past, but typically I take data from kedro [1] input and use it in the lambda. I prefer the simplicity of using lambdas over functools.partial. It typically looks something like this. #...
2 min read

python-deepwatch

Is it possible to deep watch a single python function for changes? Shallow Watch # [1] keeping track of a python functions hash is quite simple. There is a__hash__ method attached to every python function. Calling it will return a hash of the function. If the function changes the hash will change. [ins] In [1]: def test(): ...: return "hello" [ins] In [2]: test.__hash__() Out[2]: 8760526380347 [ins] In [3]: test.__hash__() Out[3]: 8760526380347 [ins] In [4]: def test(): ...: return "hello world" [ins] In [5]: test.__hash__() Out[5]: 8760525617988 [ins] In [6]: def test(): ...: return "hello" [ins] In [7]: test.__hash__() Out[7]: 8760526380491 Using hashlib provides a consistent hash. import inspect import hashlib def test(): return "hello" [ins] In [17]: m.update(inspect.getsource(test).encode()) [ins] In [18]: m Out[18]: <sha256 HASH object @ 0x7f7b7b70fde0> [ins] In [19]: m.hexdigest() Out[19]: '1f2ff4c69eb69b545469686edd6f849136e104cd535785891586d90620328757' [i...
1 min read
Looking for inspiration? autoreload [1] by stevekrenzel [2]. A small python script to watch a directory for changes and reload a process when a change is detected. References: [1]: https://github.com/stevekrenzel/autoreload [2]: https://github.com/stevekrenzel
Check out madzak [1] and their project python-json-logger [2]. Json Formatter for the standard python logger References: [1]: https://github.com/madzak [2]: https://github.com/madzak/python-json-logger

Four Github Actions for Python

If you are developing python packages and using GitHub here are four actions that you can use today to automate your release workflow. Since python tools generally have such a simple cli I have opted to use the cli for most of these, that way I know exactly what is happening and have more control over it if I need. h2 img { width: 100%; box-shadow: .5rem .5rem 3rem #141F2D, -.5rem -.5rem 3rem rgba(255,255,255,.1);} img{ max-width: 100% !important;} If you are developing python packages and using GitHub here are four actions that you can use today to automate your release workflow. Since python tools generally have such a simple cli I have opted to use the cli for most of these, that way I know exactly what is happening and have more control over it if I need. - Lint - Test - Package - Upload to PyPi Lint With flake8 # [1] flake8 is pythons quintessential linting tool to ensure that your code is up to the standards that you have set for the project, and to help prevent hidden...
Check out justmarkham [1] and their project scikit-learn-tips [2]. 🤖⚡ 50 scikit-learn tips References: [1]: https://github.com/justmarkham [2]: https://github.com/justmarkham/scikit-learn-tips
Check out Textualize [1] and their project rich [2]. Rich is a Python library for rich text and beautiful formatting in the terminal. References: [1]: https://github.com/Textualize [2]: https://github.com/Textualize/rich

Variables names don't need their type

So often I see a variables type() inside of its name and it hurts me a little inside. Tell me I’m right or prove me wrong below. Examples # [1] Pandas DataFrames are probably the worst offender that I see # bad sales_df = get_sales() # good sales = get_sales() Sometimes vanilla structures too! # bad items_list = ['sneakers', 'pencils', 'paper', ] # good items = ['sneakers', 'pencils', 'paper', ] Edge Cases? # [2] It’s so common when you need to get inside a data structure in a special way that itsn’t provided by the library…. I am not exactly sure of a good way around it. # bad ?? sales = get_sales() sales_dict = sales.to_dict() # good 🤷‍♀️ Containers are plural # [3] Always name your containers plural, so that naming while iterating is simple. prices = {} items = ['sneakers', 'pencils', 'paper', ] for item in items: prices[item] = get_price(item) Before I start fights 🥊 in code review, am I inline here or just being pedantic? References: [1]: #examples [2]: #edge-cases...
I’m really excited about cpython [1], an amazing project by python [2]. It’s worth exploring! The Python programming language References: [1]: https://github.com/python/cpython [2]: https://github.com/python
I recently discovered scully [1] by scullyio [2], and it’s truly impressive. The Static Site Generator for Angular apps References: [1]: https://github.com/scullyio/scully [2]: https://github.com/scullyio
I came across pydevto [1] from lpellis [2], and it’s packed with great features and ideas. Unofficial dev.to api References: [1]: https://github.com/lpellis/pydevto [2]: https://github.com/lpellis