Why be functional?
In 1984, John Hughes wrote a seminal essay called "Why Functional Programming Matters" discussing functional programming in what it brings to our field, rather than what it leaves behind. In my efforts to understand functional programming, I ended up writing my own, less academic version of a "why functional programming matters" type of essay. In my case, it's more of a persuasive essay.// read more
filed under: cto dev
A year of mob programming
It's been twelve months since I started learning how to program in a mob. This post describes my experiences.// read more
filed under: cto
Functional first development
This is an introduction to functional first development, a coding and design practice that brings some of the benefits of functional programming to any programming language.// read more
filed under: dev
The 10x developer
This is an offshoot from my work building teams of functional programmers, and the trend toward anarchy in software engineering teams. In this short post, I discuss why 10x developers exist, how they do so much more than average, and some ideas for driving value up across the whole team.// read more
filed under: cto dev
Irrational configuration system to functional data store
This is my CodeMesh.io 2015 conference talk on using a functional data store to replace an organically-grown configuration system in one of our software platforms.// read more
filed under: cto
Where to go from here? Change the world.
Changing the people who create tech changes the people who create culture. If we can make tech more diverse, we can make culture more inclusive. This is my closing talk from Rails Girls Salt Lake City 2015.// read more
filed under: community
Why be functional?
I gave this talk at OC Tanner during a functional programming boot camp for our developers. It looks at complexity, the influence of language design on program design, and how pure functional programming may provide strong benefits.// read more
filed under: dev
How to hire a software engineer
This talk is from OpenWest 2015 in Orem, Utah. In it, I discuss a recruiting, interview, and hiring process that is authentic, collaborative, and people-centered - just like we want our work environment to be. Plus we look at the process from the perspective of both the hiring side and the candidate's side.// read more
filed under: cto
Navigating the Bazaar
This is my presentation on Navigating the Bazaar of Open Source libraries, presented at That Conference in the Wisconsin Dells on August 14, 2013.// read more
filed under: dev
The developers will fix it
Much of our code depends on an ecosystem of open source libraries built by third party developers. Here's my take on getting library updates into production, at least when you have a small team of developers.// read more
filed under: devops
Managing risk and selling value
This is the transcript from my Wordcamp Milwaukee 2013 presentation on the complexity-risk-value formula. I edited and trimmed, got it down to 40 minutes or less, and made it a bit smoother. If you're interested in the C-R-V formula, this is the place to start.// read more
filed under: cto
Civic Hacking with IPython and Pandas
IPython Notebook is a browser-based Python shell that supports rich media like graphs. Pandas is an open source data analysis library. This presentation introduces how these tools used together can be used to explore a civic data set such as parking citations or water use to ask and answer interesting questions interactively.// read more
filed under: dev
Don't comment your code
Comments lie. Instead of writing comments, write specs and functions. This post talks about why and how to do this.// read more
filed under: dev
Migrating from MySQL to PostgreSQL using SQLAlchemy
This is basically a guest blog post. The content was created almost entirely by Paul Morel (owner of Tartan Solutions) and Mike Bayer (author of SQLAlchemy and other fine Python libraries.) I was invited to compile and edit the conversation.// read more
Tech sexism and co-creation of the community
PyCon2013 has ended and I'm seriously depressed. It's not just the energy shift at the end of a good conference. It's also the way tech sexism has once again exploded.// read more
filed under: community
The tyranny of the database
Databases model our world, and to do that they necessarily distort it. This lightning talk prepared for PyCon2013 explores the impact on us as individuals and society as a whole.// read more
filed under: dev
Managing risk and selling value
You're a skilled practitioner of web crafts. You can get Google agog. You can send customers clicking to conversions. You can refactor a repulsive code repository. But you don't know how much to charge. This presentation explores how the three prime factors for pricing your work - complexity, risk, and value - interact with each other and help make the right jobs lucrative for you and your client. This presentation is intended for freelance web craftspeople, bespoke design agencies, and boutique development firms.// read more
filed under: cto
Development environments with Vagrant, Chef, and Git
The Milwaukee PHP User's Group invited me to present about Vagrant, Chef, and Git for quickly standing up development environments. Here's my transcript and slides.// read more
filed under: devops
Another blog reset
Redesign isn't the right word. It seems when I want to freshen my blog, I get down to the nuts and bolts.// read more
filed under: personal
Ramada Plaza Milwaukee kicks my 70 year old mother out at midnight
Dear Ramada Worldwide, your Wisconsin Ramada Plaza Hotel on 13th at College Ave in Milwaukee just kicked my 70 year old mother out of her hotel room at midnight, because I complained about accessibility.
// read more
filed under: personal
MODX can beat up your content management system
Tonight's Milwaukee Web Design Meetup featured a CMS MegaPanel - eight pros in eight content management systems, head to head on development, features, ecosystems, costs. I represented for MODX.// read more
filed under: dev
A quick note on MongoDB replica sets
MongoDB is replying to a replica-set add command with "Need most members up to reconfigure, not ok". The problem is with my configuration.// read more
filed under: devops
Drupal, on GlusterFS, on Rackspace Cloud
I ran Drupal on GlusterFS for a few days. I didn't like it. Here's why.// read more
filed under: devops
Elavon Phishing Scam
A customer received 40,000 mailer-daemon messages yesterday. I bet that was fun.// read full article
Tryton as an e-commerce back-end - Web Framework
This is part three in a series exploring how Tryton might fare as the heavy-lifting portion of an e-commerce package. This third part explores what it means to do e-commerce.// read more
filed under: cto
DjangoCon, part four
Here's the recap of day three, the last day of the talks. Apparently I took good notes on day three, since this is by far the longest post, and the one it took me longest to produce. It was, indubitably, an excellent day.// read more
filed under: community
DjangoCon, part three
Day two is done, and I'm trying to do better at this. I definitely have better notes than yesterday. I have slightly fewer of them too, since the South session was absolutely worthless to me, and I blew off Tilting at Windmills to go up to the room with a stomach ache and a customer who needed help.// read more
filed under: community
DjangoCon, part two
Oh my, I'm not good at this. There are people around live-blogging (and live-noting) the conference, and I'm scraping the sleepiness off my face enough to see the screen, only to realize I don't actually remember yesterday very well. I may be exagerating a little, but I did not take adequate notes (sorry, PyDanny - I heard you on this, really I did.)// read more
filed under: community
DjangoCon, part one
It's two days before DjangoCon, I'm on a plane to Portland, and I've mostly been spending my time reading the Django Book. That has me thinking about what I expect from the conference.// read more
filed under: community
jQuery.multiup plugin for multiple files
I'm a progressive. By this I mean I like things to get progressively more complicated. Don't you? Of course, I don't mean that things should be more complicated than they are — in fact, I think they should be *at most* only as complicated as they are. But they don't have to start off that complicated; they can get complicated *progressively*.// read more
filed under: dev
Blog reset
My blog had been hosted on a legacy shared server account that I don't manage, running Wordpress. I was frankly embarrased to tweet links to it - often it wouldn't come up at all. Now that's all changed. Now my blog is on Django. (But only kinda.)// read more
filed under: dev
High Availability Linode Pairs
Something like a recipe for creating database and application servers that failover on each other. This recipe is for Lighttpd and MySQL, but it can be extended easily for other applications. Later, I'll do one for Tryton and PostgreSQL. I use Ubuntu 11.04 64-bit on two Linode virtual private servers.// read more
filed under: devops
A new OpenERP product and license
Last Friday (June 24, 2011) under an unassuming headline 'Improved OpenERP Website', OpenERP announced the new Enterprise edition of the OpenERP software. The response among community members was swift. Two topics attracted most of the conversation - the new OpenERP AGPL + Private Use license available only to Enterprise edition customers, and apparent policy changes regarding security alerts.// read more
filed under: community
Tryton as an e-commerce back-end - Stalking the Tryton community
This is part two in a series exploring how Tryton might fair as the heavy-lifting portion of an e-commerce package. This part discusses some of my experiences with members of the Tryton community.// read more
filed under: cto
Freaky shadow
The webserver logs showed I was being followed on my path through a website by a computer at an IP address in Texas. It trailed two seconds behind me, on every page.// read full article
Tryton as an e-commerce back-end - About Tryton
This is part one in a series exploring how Tryton might fair as the heavy-lifting portion of an e-commerce package. This first part describes Tryton - architecture, features, community, license.// read more
filed under: cto
Instantiate Blog
The story of how and why I ended up blogging. Again.// read full article