Graham Lea Profile picture
Founder @archium_io • Product + Technology + Leadership • Reformed perfectionist • Agile, startups, microservices, UX, and more • Always a work in progress
19 Mar
If you're a programmer who uses the mouse a lot and is suddenly WFH, now seems to me like a perfect time to invest in upskilling on keyboard-first work. You'll be a little slower to start with (while no one's watching!) but long-term your productivity will increase significantly.
How to start? Simply set a timer for 5 minutes and commit to not touching your mouse for that time. You'd better learn to manipulate your browser with shortcuts so you can google other shortcuts! Slowly increase the time by 5 minutes.
You may want to print out your IDE's shortcuts reference card, or even better, many IDEs have a "search for action" shortcut you can use to find stuff. When you find it, DON'T hit enter on the action you want. Instead, note the shortcut, exit the search and use the shortcut.
Read 4 tweets
2 Apr 19
Had a prod incident today. CPU riding at 100% in a typically sleepy webapp. Eventually tracked down the recent changes and the "offending" code that we think is causing the issue. Had the programmer done something stupid? Unlikely, she was one of our very best. But...
This code we found. It was iterating through two lists using a nested for, and that has a cartesian product computational cost: O(MN). This week, M and N had each jumped 4-6x, so the function suddenly had ~30x the cost of last week. Do I think this was bad code? No, I don't. Why?
The code was written in 2012... 7 years ago. At the time it was written, the two lists would have been about 20 items each, and the plan - the business plan - was that they would grow slowly, maybe a handful of new items being added each year.
Read 12 tweets
10 Jul 18
A thread about how to have a nicely-designed monolith. 👇
It’s probably obvious, but you need to split your monolithic codebase up internally. It might already be organised into directories/namespaces/packages of some type, but you might need to go further…
With a monolithic codebase, we need the ability to place fairly tight restrictions on who can see/use what. With compiled languages, this means having *separate compilation units* defined.
Read 19 tweets
16 May 18
Special treat at #yownight with @daveathomas sharing his experience with using legacy transformation as an innovation opportunity.
Highlights to follow…
Some people’s code is legacy straight away if they write it in a way that no one understands it. #yownight
If you try to rewrite the whole legacy system in a new language you’ll join the club of hundreds of thousands of others that have thrown their company’s money away. Rewrites are not a happy story. #yownight
Read 23 tweets