RSSAmplifier

Blog

Sedimental

Thoughts on FOSS and fintech, layered by Mahmoud Hashemi

sedimental.orgRSS feed ↗28 posts

Latest posts

Product Hunt is Dead

First, the good news. It's been one week since FinFam 's beta launch ! The Show HN post trended nicely, netting enough eyeballs to make me confident that FinFam is the world's first and only collaborative financial planner with a marketplace of interactive, open-source expert opinions . I'm especially gratified by the users I'm meeting through the product. Nothing like it. So, launch is going…

Announcing FinFam

In my last post , I mentioned founding a startup. It's called FinFam , and we're building collaborative financial planning. The GitHub of money, if you will. Enough with the telling, time for the show! Here's a 3-minute demo: We launched beta this week and I couldn't be more excited. Let me tell you why. Where's this coming from? Growing up as the son of starving grad students, when it comes to…

What I've been up to in 2025

Been quiet around here. Time to change that! The short version up front: Since starting a family and leaving Stripe, I've pursued the dream that brought me to Silicon Valley. I've founded a startup. After taking some parental leave, helping found a Python non-profit , and a nice long visit back home, I was raring for a challenge. So these days, outside of family, I'm all in on something new.…

Cruising through complex data

This post is a showcase of data wrangling techniques in Python, using glom . If you haven't heard of glom, it's a data transformation library and CLI designed for Python. Think HTML templating, but for objects, dicts, and other data structures. It's been almost five years since the first release of glom . That version now looks quaint in comparison to the just-released glom 23. Out of all the new…

Intentional Creation

Reliably tap into your creativity with the 4 Cs: Consume, critique, curate, create. This is one of my oldest ideas, finally published on the GitHub ReadME Project blog , along with a profile , in June 2022. For more like this, follow me on Twitter or Mastodon . (You can also read it in 中文 here . Thanks Dominic Huang!) We all have creative potential. Whether it gets you up in the morning or keeps…

Changing the Tires on a Moving Codebase

2020 was a year of reckonings. And for all that was beyond one’s control, as the year went on, I found myself pouring more and more into the one thing that felt within reach: futureproofing of the large enterprise web application I helped build, SimpleLegal . Now complete, this replatforming easily ranks in my most complex projects, and right now, holds the top spot for the happiest ending. That…

Thanks, 201X!

Thought I'd take a Sunday afternoon to reflect on, oh I don't know, a decade. Been a long ten years, but it's flown past. This particular decade happens to coincide with my first years of full-time professional software engineering. The Quantity I can't possibly summarize it all, and if I tried, it'd still be colored by what's on my mind right now. But I can point to the artifacts I tried to leave…

Awesome Python Applications

What we can learn from 180+ case studies on successfully shipping Python software. If you're reading this (or hearing this ), you read and write code, probably Python. And for all the code you've shipped, you've probably had your share of missed requirements. Somehere in the excitement of software abstraction, we can lose sight of what really matters, what makes our well-factored modules and…

Announcing glom: Restructured Data for Python

This post introduces glom , Python's missing operator for nested objects and data. If you're an easy sell, full API docs and tutorial are already available at glom.readthedocs.io . Harder sells, this 5-minute post is for you. Really hard sells met me at PyCon , where I gave this 5-minute talk . The Spectre of Structure In the Python world, there's a saying: "Flat is better than nested." Maybe…

Maintainerati 2017: GitHub Design

Last week I attended a Maintainerati event, an unconference/mini-summit for maintainers of popular software, run as a prelude to the GitHub Universe conference. After being brought up to speed on this year's secret handshake of the software elite, I had a great time in the documentation breakout group, as well as moderating a lively discussion on diversity in open-source, both of which deserve…

Plugin Systems

"What are plugins?" and other proceedings of the inaugural PyCon Comparative Plugin Systems BoF . Update: This BoF and post inspired [a talk I gave at PyGotham 2017][pygotham2017]. Within the programming world, and the Python ecosystem in particular, there are a lot of presumptions around plugins. Specifically, we take them for granted. "It's just a plugin." "Oh, another plugin library?" So for…

The Many Layers of Packaging

The packaging gradient, and why PyPI isn't an app store. Update: I turned this post into a talk. The video from PyBay is here , the slides are available here . The long-cut video from BayPiggies is coming, but the "Extended Edition" slides are here . One lesson threaded throughout Enterprise Software with Python is that deployment is not the last step of development. The mark of an experienced…

Developer variants

Software development takes all kinds. I'm not talking about appearances or job titles. I'm talking about motivations and fulfillment. In my years of writing code and leading projects, I've come to learn a bit about how my teammates, and I, experience success, through a few manifest archetypes. The Developer-Mathematician Always a source of conversation, the Developer-Mathematician, seeks truth,…

Announcing CalVer

It's about time. Technologists expect things to get better with time. Your current laptop has more RAM than the last, your current car is safer than its predecessor, and the latest version of your code is certainly the best ever. What if the same be said of versioning systems? Software versioning systems also get better with time. That's why today I'm pleased to announce CalVer , a calendar…

Running from software

So while PyCon 2016 starts in less than 48 hours, some kind of anticipation compelled me to polish off the last of the talks from last year . For some reason I went for a keynote. I'm not typically a keynote attendee, and this time I'd missed something big. 1 Jacob Kaplan-Moss , the herald of Django , really laid something out. I'll give you the short version, but here's a video in case you want a…

Managing Python Ecosystems

You know that old quote: The wider the net you cast, the wider the variety you catch. Was it a wise old fisherman? Or a dogged Python programmer? Either way, words don't come much truer than those. Few, if any, programming languages have embodied the description "general-purpose" as wholly as Python. And with the wide net of that applicability comes a wide variety in use -- and environments.…

Enterprise Software with Python

When I first published 10 Myths of Enterprise Python on the PayPal Engineering blog , there were a lot of reactions. Some I expected: Surprise at Python in the enterprise space. Relief at more attestation of Python's use in the enterprise. And, as with all the best, a few flamewars . But there was one I missed: new developers interested in professional software development. Really I should have…

Designing a version

In modern software development, a project isn't a project without a proper versioning scheme. Weak version management neglects clients like lack of source control neglects collaborators. Dependency management and migration rely on versions. Beyond the technical, a project's version bears a huge impact on the perception of the project. It informs adoption and entices users to upgrade. The version…

Getting a Python job

Every day, Python is the primary programming language for tens if not hundreds of thousands of professional engineers, analysts, and researchers, including yours truly. Given Python's "language of choice" status, what can you do to join those lucky ranks? It's a good question, and one I get often. Recently I was asked more publically than usual. Michael Kennedy , host of the Talk Python to Me…

RWC 2016 Lightning Talk

Today I had the pleasure of talking on stage for ~2 minutes at the Real World Crypto 2016 conference in Stanford, CA. This is a pseudotranscript of that lightning talk. I'm Mahmoud Hashemi and I work as a Lead Developer at PayPal. I mostly focus on Python frameworks and software infrastructure , but for the last couple years I've been working on Application Security. In fact, my first assignment,…

Enterprise Overhaul: Resolving DNS

Originally published on the PayPal Engineering blog . Republished here with minor modifications and updates. Everyone assumes all software engineers are great with numbers. If only they knew the truth. How many people's phone numbers can you recite? No peeking and emergency numbers don't count! Don't worry if you couldn't name that many. Here's the real embarrassing test of the day: How many…

Announcing the Hatnote Top 100

Originally published on the Hatnote blog . Moreso than any other major site, Wikipedia is centered around knowledge, always growing, and brimming with information. It's important to remember that the insight of our favorite community-run encyclopedia often follows the focus of its massive readership. Here at Hatnote, we've often wondered, what great new topics is the community learning about now?…

Repeat the obvious

Bad things happen when we don't repeat the obvious. --> It's 9pm and I'm writing a post for the company engineering blog . Every sentence is a slog. Not because I'm exacting and conciseness isn't my strong suit. My writing is slow because every word is obvious, almost patronizing. Obvious realities bear repetition, and so must you. Common sense is not so common. The majority of ideas floating…

Remap: Nested Data Multitool for Python

This entry is the first in a series of "cookbooklets" showcasing more advanced Boltons . If all goes well, the next 5 minutes will literally save you 5 hours. Contents Intro Normalize keys and values Drop empty values Convert dictionaries to OrderedDicts Sort all lists Collect interesting values Add common keys Corner cases Wrap-up Intro Data is everywhere, especially within itself. That's right,…

Python Community Intro

The PSF just created a new mailing list, "PSF-Community" , then autosubscribed a bunch of people and solicited introductions. At first I was surprised, but I was quickly charmed by the response and joined in on the action. Here's what I wrote : If Alex Martelli is doing it , then brace yourselves because the floodgates are open. I first used Python as a junior in a South Dakota high school, off a…

10 Myths of Enterprise Python

(Originally posted on the PayPal Engineering blog , reproduced here with minor updates, link fixes, etc.) PayPal enjoys a remarkable amount of linguistic pluralism in its programming culture. In addition to the long-standing popularity of C++ and Java, an increasing number of teams are choosing JavaScript and Scala, and Braintree 's acquisition has introduced a sophisticated Ruby community. One…

Designing a fast

I wake up with a jolt, spilling most of my breakfast cereal onto a thirsty couch. My eyes find the clock. Cleaning will have to wait. I'm downing water like there's no tomorrow, but really tomorrow starts in one minute. Still drinking. All work is thirsty work if the day is long enough, and engineering is no exception. Time's up. From the literal break of dawn to sunset, no food, drink, or other…

Colophon

Most blogs, like this one, are reverse-chronological, causing the first post to appear last in the archive. This convention makes a colophon the King's Pawn Game of web authorship; there's no better place to showcase certain implementation details than the first post of a blog. This site is generated with Chert 1 , an open-source static site generator built with Python , Markdown 2 , ashes ,…