Double Shot #2361
- Why Microservices Should Scare You More - Some reasons why microservices are not an easy win for every application.
- Anti-patterns - A warning that the concept of "anti-pattern" is sometimes deployed just to shut people up.
- Passive DNS Tutorial - Keeping track of DNS query responses so as to have a baseline available for later incident analysis.
- A highly opinionated guide to learning about ActivityPub - Where you should look for the stuff you should know.
- Entropic - "A federated package registry for everything." Read The Economics of Package Management for the history behind this effort.
- Next Browser - A web browser that you can 100% customize by writing LISP code.
- Wheels Within Wheels Within Wheels - Thinking about larger feedback loops than just "does the test pass?"
- Reasoning about Leverage in Engineering Organisations - Thinking through some of the factors to weigh when introducing new practices or new technology.
Interviewing Red Flags
Some more thoughts on the state of the software development hiring process. This is based on my own experience over the past several years on both sides of the call, as well as on discussions with folks on Twitter. I'd be happy for feedback, additions, or corrections. I'm sure I don't know everything.
It seems to me that there are huge issues in our industry with lack of respect for interviewees. So when I speak of red flags, I don't mean reasons why a company might choose not to hire someone: there's plenty of HR-oriented advice already out there on that. Instead, these are the things that might make you think twice about actually working for a company.
And let me be quite clear: not everyone has the luxury of being super-choosy. There are a variety of ways that you can choose to react to bad behavior on the part of the interviewer and their company: air your concerns on the phone call, send a follow-up email to the interviewer or their HR department, hang up the phone while making it clear why you are upset -- or do nothing at all. If you've got kids to feed and bills to pay, in this society, you may well need to take the job now and worry about trying to change the company later, and that's OK.
That said, here's my list of things that make me cross a company off my list of potential employers:
- Racist, sexist, or other blatantly prejudiced remarks, no matter what tone they're delivered in. No, it wasn't a joke. no matter what they might claim, I don't want to work anywhere that normalizes that sort of behavior.
- Whiteboard interviews that ask me to develop an algorithm to reverse a string, insert an item into a linked list, or similar nonsense. I've never worked somewhere that this was important to know, and if it was, I would look it up. Bonus "no thanks" points if the interviewer doesn't think something like
string.reverse()
is a good answer. - Showing up late, taking calls during the interview, or otherwise making it clear that they have better things to do than talk to you. In rare cases an actual emergency might come up, in which case I'd expect an apology & reschedule.
- Quizzing me on CS fundamentals (which too often is just "trivia") on the grounds that you need to know how things work behind the scenes. Yeah right, and can they explain the quantum physics behind semiconductors to me? If not, then this is just a "my abstraction is better than yours" argument.
- An unpaid takehome coding exercise that's either open-ended on time, or designed to take more than an hour.
- An expectation that people who get hired should not have a life outside of software. This can take the form of pushing you to explain your side projects, insistence that you justify every six-month gap in your employment history, or remarks that "we have unlimited vacation but no one takes it."
- More concern with your references than with your skills. To me, this is a sign of a lazy hiring manager looking for reasons to say no instead of trying to let you show your best side. Anyone can come up with good references, so as a hiring signal their worth is close to zero.
- Refusal to discuss compensation, even to the point of not being able to set a range. Why should I invest time in your interview process if you won't tell me what to expect when it's over?
- Lack of a clearly explained follow-up process. Unfortunately you won't know this until the interview is over. But basic respect says the company should tell you when you'll hear back (and actually get back to you!).
Finally, I really don't know what the state of interviewing is in any industry other than software. I'm told it's not this bad everywhere. I certainly hope that's true.
Double Shot #2360
- Broken by default: why you should avoid most Dockerfile examples - Python-centric, but the principles are general.
- endoflife.date - "This site maintains quick links for checking End Of Life dates for various tools and technologies."
- How to actually hire for "Culture Fit," without resorting to unfair biases - We're thinking about this a lot as our team starts to expand.
- Mr2.js - A javascript solution to making internal servers visible on your external network.
- Rio - "Rio is a MicroPaaS that can be layered on top of any standard Kubernetes cluster."
- Introducting textua11y, a color contrast tool - Play with colors to see what they do to text readability.
- Cake or death: AMP and the worrying power dynamics of the web - " If we continue valuing content that is FAST over content that is RIGHT, and we continue expecting publishers to produce quality content almost for free, then the web will eventually just be cats and hate and we’ll be living in an Orwellian nightmare." And we'll deserve every bit of it, too.
Double Shot #2359
- Unlearning toxic behaviors in a code review culture - With a set of good practices to depend on instead.
- It's still about agile teams - What's wrong with SAFe: "You can't manage agile teams without being agile yourself."
- Why we tore up our terms and conditions - Revolut moved towards plain English, and are justifiably proud of themselves.
- Upgrading PostgreSQL from version 10 to 11 on Ubuntu 19.04 (Disco Dingo) - How to do it without losing your existing data.
- The Future Is Federating Forges - An overview of ActivityPub, ForgeFed, and how they fit with git.
- What are the differences between OpenBSD and Linux? - With instructions on how to try OpenBSD.
- Releasing Comfygure 1.0 - Open source configuration manager designed to help out small teams and deployments.
- CSS Grid Generator - Visually design your grid and then copy the code. Nice free tool from @sarah_edo.
- Ruby 2.7.0-preview1 Released - With that newfangled pattern-matching stuff.
- Billions were wasted on Hadoop startups, and the same will eventually be true of Docker - Have you exterminated a unicorn today?
- Medium to own blog - A tool to help you switch.
- Urql, Grown Up - An alternative GraphQL client library.
- Avoiding the Configuration Spiderweb - Convention beats configuration every time.
- Undervalued Software Engineering Skills: Writing Well - If you want to advance, you really do need to be able to write people language as well as code.
- Tech veganism - It's tough to avoid the ethically dubious gorillas in tech.
- Dents vs. Rats - Prioritize fixing the rats first.
Double Shot #2358
- The Patterns Behind Scalable, Reliable, and Performant Large-Scale Systems - All the links and reading that you could ever want.
- Velocity in Scrum, actually - Velocity is only meaningful if you're actually finishing things.
- Why I'm still using jQuery in 2019 - Because for many apps it still hits a sweet spot of abstraction without bringing in some giant framework and a million dependencies.
- CircleCI docs are built by you: celebrating our open source contributors - There's a line between "encouraging community" and "externalizing costs"...not sure which side of the line this is on, but it's an interesting model.
- Scrum is fragile, not Agile - "Whenever a Scrum project fails, it is because Scrum was not implemented correctly."
- write.as - "Minimalist, privacy-focused, writing and publishing platform." Part of a growing backlash against Medium's drive to monetize their writers.
- Why We’re Switching to gRPC - Because JSON/HTTP is a mess. Of course it's a mess than many of us know well.
- Tests that sometimes fail - Don't just complain about flaky tests, do something about them.
- Introducing Salesforce Blockchain - Really, MUST we?
- 30 Days to Web Development - Online course from beginners from Nicole Archambault that gets quite good reviews.
- jTools - A "collection of lightweight common required javascript web components."
- Open-sourcing our commit verification tool, Wilfred - A tool to bring some process to making sure all is well on staging before pushing out to production.
- Enabling Modern JavaScript on npm - Javascript tooling and versioning remain a mess. Film at 11.
- Prioritizing - Sarah Drasner steps away from the CSS to talk about figuring out how to spend your time.
- How to block fingerprinting with Firefox - Check a box and relax.
- Switch from Chrome to Firefox in just a few minutes - And while we're talking about nicer browser experiences, here's how to get there.
Double Shot #2357
- Deployment Pipeline Design and The Theory Of Constraints - Pulling together two threads of thinking for faster time-to-deploy.
- nextdns - "The first cloud-based private DNS service that gives you full control over what is allowed and what is blocked on the Internet." Currently free while in beta.
- Filenames and Pathnames in Shell: How to do it Correctly - This sort of thing is why I don't write shell scripts.
- Engagement Around the World, Charted - HBR looks at employee engagement numbers.
- Verdaccio 4 released !!! -A "free open source javascript package proxy registry."
- Story Points Revisited - Ron Jeffries looks at the problems with story points and apoligizes for his part in their creation.
- Dependabot is Now Free and It’s Amazing - A walkthrough of what this tool (now a part of GitHub) will do for you.
- On SQS - Tim Bray looks at queuing in general and SQS in particular.
- Small Sharp Software Tools - I suspect Brian Hogan's book here is going to be the best way there is to learn the command line in 2019.
- Upgrading Rails: Interview with Eileen Uchitelle - Well, half of an interview. You'll need to get the podcast for the rest.
- AdNauseam - Block ads and send garbage traffic to the trackers at the same time.
- Waterfox - A free & telemetry-free browser based on Mozilla.
- Mozilla’s Position on Web Packaging - More changes to the free and open web are probably coming.
- Object equality in Ruby - A basic tutorial.
- Building a stateless API proxy - A plan to get finer-grained permissions than the GitHub API offers natively. Well, more than a plan, there's real code involved.
- Is High Quality Software Worth the Cost? - Martin Fowler argues that this is a false dichotomy.
Double Shot #2356
- Coda - "A doc as powerful as an app", this is a no-code tool designed to produce interactive documents that can integrate with other things (like Slack) and work well across desktop & mobile.
- Tuple’s Pair Programming Guide - A collection of articles & videos.
- Measuring Rails Overhead - A comparison with plain Rack.
- Operating with Focus: Putting the 5-Day Design Sprint into Practice - A roadmap for getting to idea validation in a week.
- The rise of few-maintainer projects - A look at how we got to the point where a combo of maliciousness and naivete can ship malware to everyone who uses Node.
- tiptap - A rich-text editor for Vue.js applications.
- DSLs for non-programmers are a hoax - Yup.
- GDPR After One Year: Costs and Unintended Consequences - Be sure to read the comments too.
- The Missing Wireguard Documentation - Help is at hand if you want to switch to a modern open-source VPN.
- Why Codeless Software is Doomed to Fail - Because blocks and lines don't capture most of the interesting problems.
- Krisp - MacOS software to remove background noise from your outgoing calls.
- Introducing Lightning Web Components Open Source - Salesforce throws their hat into the open framework ring.
- Choosing Ruby on Rails for your next Web development project - A broad overview of RoR with links out to more resources.
- WAFL: a scalable MVP alternative - 'WAFL stands for “Well Architected, Functionally Limited.”' Development experience from CircleCI.
- The cult classic Little Printer is back - I'll make an exception to my general IoT hatred for this one.
- Announcing TypeScript 3.5 - Looks like mostly a speed release.
Advice to Less Experienced Developers
I seem to have picked up a fair number of Twitter followers lately who are just getting started in software development. Perhaps I've been in this game long enough to offer some advice. Here are some things I think are worth sharing with folks who are new in their software careers:
- This stuff is hard. Nobody gets it right the first time. You're creating things by just pulling them out of thin air, mental effort, and sheer cussedness. If that takes you a while, that's OK. Even people who've been writing code for years and years still look stuff up all the time. Without search engines, I'd barely be able to add two and two together, let alone write code.
- There are a lot of companies looking for software developers right now. There are also a lot of software developers looking for jobs. It can take a while to find your match. Don't get discouraged! No matter how experienced you are, it takes time. I've been in this business essentially forever, and over my last two job searches my personal pipeline looked like this:
- 75 applications
- 38 responses (Yes, half couldn’t even be arsed to set up an email autoresponder)
- 14 interviews
- 5 offers
- No matter how new you are in the field, there is absolutely no excuse for a potential employer to treat you badly. Keep in mind that they way they act during the interview tells you something about the work environment, and you're interviewing them as much as they're interviewing you. Tip: Keep records of your job search, even after you land a job. You’ll want to refresh your memory next time you’re on the market, because some of the same people will still be hiring. And you’ll want to remember which ones were jerks last time so you don’t waste time on them.
- Many interviewers in this industry are untrained in interviewing, and there's all too much "I suffered so you should too" attitude out there among some developers. You probably will hit a bad interview at some point. If it's bad enough (overt harassment, questions about your personal life, trick questions...) you can just thank the interviewer for their time and end the call. Then email their HR department and calmly explain why you left, and how the company's poor interviewing processes are hurting their chances to hire from a large applicant pool. You probably can't afford to publicly shame them, unfortunately - that's both legally fraught and likely to hurt your chances at other jobs, even with more enlightened companies.
- By the same token, if you have a great interview experience, encourage it! Post a good review of the company's process to Glassdoor, and email your interviewer to thank them (this is good practice even if you're sure you won't get the job). As an interviewer, I always appreciate getting a thank-you email too. Bonus points if it shows additional thought with follow-up questions or ideas.
- Job listings routinely lie about what's "required" because the people writing them don't know what the job really requires. Rule of thumb: if you hit 75% of the bullet points, go ahead and put a resume in. The worst that can happen is they'll tell you you're not a good fit. But be honest about what you really know!
- As a hiring manager, there are things I look for besides code trivia. I care a lot more about whether you can reason through a problem and communicate then whether you know the syntax of a React component without looking it up.
- An online presence helps. Put your sample projects on GitHub, just to start getting something out there. Start blogging as soon as you know anything. Even if yours is the 100th explanation of a particular API, the fact that you bothered to write it up shows that you can communicate, and sets you apart from the pack. Tweet links to your blog posts. Someone will amplify one, and you'll start building up a network.
- Figure out what type of code you like to write, and write more of it. "Full-stack developer" is increasingly a myth.
- Figuring out things on your own is good, but it's OK to ask for help. This applies on the job as well as when you're learning before your first job. But do figure things out! Progamming knowledge tends to build on what went on before. Take a walk, ask on Twitter, read some blog entries...but try not to move past things until you've got some idea what's going on.
- There is plenty of software life outside of the Silicon Valley bro culture. Nobody has the right to ask you to work 100 hours a week, go out drinking to be "part of the team," or belittle you for being less experienced or somebody who doesn't look just like the founders. Don't work for people who act that way, and if you end up accidentally working for one of them, quit. It won't hurt your prospects for the next job.
- Any honest developer is still learning. Any developer who tells you they know exactly how you should tackle every problem is lying. If they don't know they're lying, that's even worse.
- In a collaborative environment, knowing how to write the code is only part of the job. You also need to learn how your team handles things like source code management, automated testing, deployments, downtime and incidents, feature and bug tracking, planning, and a host of other things. Be prepared for a huge rush of information your first few weeks. Almost everyone feels lost when getting started with a new job. Don't worry, it will pass. Tip: Spend part of your time revising the onboarding document that you're given, because most of the time some part of it will be outdated. The _next_ person to get hired will thank you.
- Think about remote work, because being willing to work remotely will vastly increase the number of potentially available positions. Take any chance you get to collaborate remotely when you're learning, whether this is contributing to an open source project or pair programming over the internet with a mentor. But also: think about how you will handle remote work psychologically. Are you able to focus all by yourself all day every day? Do you need to explore coffee shops and co-working spaces? Are you a person who will only thrive in an office?
- It's OK to compromise when you need to. From a position of privilege, it's easy for people to say things like "never work for a company that has a poor interview process." But life looks different when you are down to your last half jar of peanut butter with no money in the bank. If you need to make compromises, try to know that you're doing so, and have a plan for improving things when you can.
- Your career doesn't need to look exactly like mine, or anyone else's. It's easy to give advice, but you don't have to take all the advice you get.
Double Shot #2355
- Micro-services Architecture with Oauth2 and JWT – Part 1 – Overview - Architecture from a large real-world project.
- LSD (LSDeluxe) - Rust-based supercharged version of ls.
- SCAR - "SCAR is a deployment stack for static websites running entirely on AWS, using S3, CloudFront, Amazon Certificate Manager, and Route 53."
- Kolide — User Focused Security For Teams That Slack - Launch announcement for a less-intrusive security monitoring product.
- EmberCLI Mirage - "A client-side server to help you build, test and demo your Ember app."
- Announcing Terraform 0.12 - The changes here are going to make some of my DevOps friends smile.
- GitHub Sponsors - Another tip jar for developers. I doubt it will do much to redress the fact that giant companies get profit from OSS without giving anything back (which is their right, of course).
- More productive Git - Some of the git knowledge that will help you move beyond the basics.
- What is a fork, really, and how GitHub changed its meaning - Hint: the original meaning wasn't about making you stay on a particular platform.
- Tuple - "Remember when Slack stole Screenhero from us?" Why yes, yes I do. Here's hoping this new remote pairing tool is better than what we have now.
Double Shot #2354
- The Negotiability of “Severity” Levels - A dive into what "severity" means in software incident management.
- A useful tool for building serverless Ruby apps with AWS Lambda - Ruby-Lambda takes some of the tedium out of the process.
- Workers KV — Cloudflare's distributed database - Cloudflare continues to build out from a CDN to an edge computing network.
- TechnicalDebt - Martin Fowler considers how our badness at estimating interacts with our tolerance of technical debt.
- Fundamentals of Product-Market Fit - Some basics aimed at prospective founders.
- Ember 3.10 Released - It's a less-popular framework, but Ember is still under active development.
- Managing Software Development: Takes One to Know One - Do managers of programmers need to be ex-programmers? Some folks think so.
- A Modular RuboCop - What's going on in RuboCop development (hint: it's probably time to update your gems).
- 25 Principles to a Healthy Software Development Team and Culture - An attempt to apply John Perry Barlow's ideas on adulting in general to software teams in particular.
- Becoming a bad-ass engineering leader: 5 tried and true lessons from a woman of color - A reflection from a senior engineering leader on how she got there.
- OKRs from a development team’s perspective - There's often a disconnect between the C-suite and the front line when it comes to OKRs.
Double Shot #2353
- Introducing the first Microsoft Edge preview builds for macOS - More browser choices, for some value of "more."
- Ryeboard - Virtual whiteboard system, now in beta.
- Action Policy GraphQL - Use Evil Martians' Action Policy authorization framework in GraphQL.
- Containers, microservices, and service meshes - A look at how modern service meshes fit into the context of previous development.
- Terminus - "Terminus is a highly configurable terminal emulator for Windows, macOS and Linux."
- The State of Makers: No-Code is About to Take Makers by Storm - I remember previous "tell computers what to do without learning to code" efforts dating back at least as far as 5GLs, so color me deeply skeptical on this one.
- A Brief History of OpenTelemetry (So Far) - Basically, the OpenTracing and OpenCensus projects are merging.
- Choking the unicorn (safely separate the frontend from the monolith) - Applying the strangler pattern to modernize UI.
- Pallets - "Toy workflow engine, written in Ruby." Not production-ready but looks promising.
- Typesetting Markdown – Part 1: Build Script - Start of a series about hooking up Markdown to ConTeXt.
- How to invest in technical infrastructure. - A framework for getting out of firefighting mode by making smart investments.
Double Shot #2352
- Cage Fight: Electronic VS Physical Boards - If your team is all-remote, you pretty much have to track work electronically. But if you're in the same space, whiteboards and post-its and magnets still rule.
- An Overview of JavaScript Testing in 2019 - A great roundup with links to many tools. There's a lot going on in this space that I don't know about (but should).
- What it Means to be a Technology Consultant - @laurieontech discusses her career path and current work. This spawned the excellent Tech Career Guide with many other paths to think about.
- How to enable full mitigation for Microarchitectural Data Sampling (MDS) vulnerabilities - Mac owners get to take their pick, remain vulnerable to Intel CPU shenanigans or take a 40% performance hit.
- Contribute to Rails 6! - A step-by-step tale of a first commit accepted to the Rails repo.
- Linux distros without systemd - You're not alone if you don't like systemd (though increasingly I think you're an outlier).
- Addressing Hiring Gaps Through User Research - An important initiative from Automattic: "For our initial research, we’re looking for women and non-binary people (trans/cis/gnc) who may experience similar gender discrimination in the workplace, who have multiple years of experience in a software development role."
- What Should We Do to Prevent Software From Failing? - I suspect "require a license to write critical code" will not be a popular idea with my readership.
- The Art of Command Line - Lots of tips to help level up your command-line skills.
- PostgreSQL 12 Beta 1 Released! - Development marches on.
- Understanding Fake Agile - A look at the many ways to claim victory without changing, with some (deserved) bad words to say about SAFe.
Double Shot #2351
- hacker-laws - A collection of things from Moore's Law to the DRY Principle that developers are likely to run across, with explanations and references.
- Janetsh - Just in case you would like a shell that you can program in Janet.
- A Decade of Remote Work - One developer's reflections on what has worked for him. Good experience, though I'd caution that most general rules have exceptions.
- Conferences, Inclusion, and Money - Heidi Waterhouse nails it: "It’s not ok to make under-funded and under-represented people hustle and scrape to be able to give us the content that makes amazing conferences happen." With concrete suggestions for experienced speakers & conference organizers.
- How to do hard things - A generalized system from learning from small mistakes and feedback.
- A tale of Query Optimization - A very nice example of digging through a puzzlingly-slow query in PostgreSQL.
- Announcing werf — a missing part for CI/CD systems - A tool to glue together source code, Ansible recipes, and Kubernetes.
- How Frontend Developers Can Help To Bridge The Gap Between Designers And Developers - Some notes on easing friction between beautiful designs and implementation - though I suspect the elephant in the room is the waterfall process of designing in the abstract (which, to be fair, does get discussed some in this piece).
- Stupid git tricks: Combining two files into one while preserving line history - I'll probably never need this but it's still nice to know it can be done.
- Mozilla's new Fenix browser comes to the Play Store as a limited beta [APK Download] - If only my phone were new enough to actually run it.
- Dependabot is joining GitHub - Translated: "Microsoft buys Dependabot."
Double Shot #2350
- Why I've started using NoScript - Because ads and tracking and general web suckage.
- Senior Developers are Getting Rejected for Jobs - Because of programming puzzles used as hiring gates. It certainly happened to me, though I view it as me rejecting companies with idiotic hiring policies.
- Dark Theme - For Material Design, which may be my least-favorite design system but it sure has traction.
- Introducing Oak, a Free and Open Certificate Transparency Log - Another step forward from Let's Encrypt.
- Git ransom campaign incident report - Go turn on MFA for your public-facing git accounts.
- Meet the Flexbox Inspector - More fun with Firefox dev tools.
- Your Phone Should Be Like Your Toothbrush - Yup. I'm probably moving back to a flip phone next. Carrying a computer in my pocket has not improved my life.
- Off the beaten path: Less well-known features of PostgreSQL - Certainly I didn't know most of them.
Double Shot #2349
- Virtual DOM is pure overhead - Perhaps the future is somewhat less shiny than we've been led to believe.
- DevChecklists - Structured checklists for common tasks. This could grow into a nice collaborative resource.
- Salary strategies everyone in tech already knows — but you don't - There's some silicon valley bent here, but lots of useful advice nonetheless.
- Gitfolio - GitHub-centered builder for portfolio website with blog.
- Career Growth Frameworks in Software Engineering: A Review - A summary of how things have evolved in software careers, with some advice on what to explore when you're building a framework.
- I Mentor Therefore I Am - Illuminating tech mentorship via the Torah. It works.
- Resilience engineering: Where do I start? - An introductory guide for software engineers.
- Konstellate - A GUI for Kubernetes.
Double Shot #2348
- Can we all please stop using Medium now? - A sentiment I see more and more often. I do link to things on Medium, but it pains me.
- Management Area 3: Operations - An overview of one of the basic skills of software management.
- The Complete Guide to Deep Work - A condensed set of stratgies based on Cal Newport's book.
- Abusing SECURITY DEFINER functions - There's always more to learn about security (PostgreSQL in this case).
- Three.js Fundamentals - A first tutorial on this 3D library.
- The Past, Present, and Future of Rails at GitHub - Conference slides from Eileen M. Uchitelle (and a great story about getting back in sync).
- Some Writing Advice: Don’t Take Others’ Advice - Amen.
- Flexible data tables with CSS Grid - A journey into fluid layouts and user affordances.
Double Shot #2347
- NectarJS - "NectarJS is a cross-platform multi-purpose JavaScript compiler. You can write a JS program from your Android phone, and compile it for Linux or Windows, painless." Still under development.
- Comlink - JS library to make it easier to write code with web workers.
- Electric Zine Maker - Layout and print tool for zines, with a wonderfully retro web site.
- Designing an end-to-end encrypted CI/CD pipeline with Keybase.io - An exercise in mild paranoia.
- Rails 6 adds db:prepare rake task - A little more automation around the task of keeping your database in sync with the code.
- RubyKaigi 2019: A speaker’s report - An overview of what went on and what's coming.
- Opal 1.0 - Milestone & future release plan for this ruby-to-js compiler.
- Faster smarter JavaScript debugging in Firefox DevTools - I really need to learn this stuff this year. No, really!
Double Shot #2346
- Telephant! - New Mastodon client in Go & QML.
- WildDuck Mail Server - "WildDuck is a modern mail server software for IMAP and POP3. Modern being scalable, unicode-first and API-controlled."
- Twilio Super SIM - Coming hardware for IOT devices that need to travel seamlessly worldwide.
- Seven Surprising Bash Variables - For example, did you know about REPLY? Me neither.
- 5 Brainstorming Exercises for Introverts -Some good ideas here for those of us who find traditional brainstorming sessions intimidating & painful.
- Jsonapi::Scopes - Syntactic sugar to make it easier to filter ActiveRecord relations based on JSON-API flavored requests.
- Humane By Design - "A resource that provides guidance for designing ethically humane digital products through patterns focused on user well-being."
- TCP/IP over Amazon Cloudwatch Logs - A rather disturbing proof of concept.
Double Shot #2345
- Full Help - Helpdesk & Knowledgebase system that's bucking the trend by selling you a self-hosted version instead of a SAAS subscription.
- Targets and Estimations in Software Development - "Targets are not estimates, and estimates are not targets."
- Upgrading Rails apps with dual boot - An idea whose time seems to have come. Maybe I'll try it out for Rails 7.
- Mockery of agile - Sometimes there's nothing to be done other than make fun of things.
- HTTP headers for the responsible developer - Things your server can do to help make the internet better for everyone.
- Hacking Code Review: Share a resource - A technique for better code reviews.
- The Pragmatic Programmer, 20th Anniversary Edition - Twenty years on, I'm looking forward to this one.
- git rebase in depth - A tutorial.
- I wrote the book on user-friendly design. What I see today horrifies me - Don Norman on the miserable state of design, especially for those of us in the older portion of the population.
- Weird Ruby: Positive and Negative Strings - Ever used the + or - operators with strings?
- GitHub Package Registry - Personally, I'd much rather see Open-Registry succeed than hand this over to Microsoft.
Double Shot #2344
- How to Become a Strategic Leader - Form vs. function in setting strategy.
- RubyKaigi and the Path to Ruby 3 - I'm trying to be open to Ruby 3 updates but so far all this stuff just makes me want to hide (other than the free performance boost, which I'll take but don't really need).
- service-tools - "A growing collection of convenient little tools to work with systemd services" including a useful-looking monitor tool.
- This Will Surprise You - How to dig into versionitis in your organization's Docker images.
- Open source collaborative text editors - A pretty deep dive into the state of the art.
- Dear Client, Here’s Why That Change Took So Long - An attempt to explain things to a non-developer audience.
- Being Glue - An updated version of an excellent talk from Tanya Reilly.
- Versioning in an Event Sourced System - LeanPub book that I should probably read.
- Technical Details on the Recent Firefox Add-on Outage - Post-mortems are always fun unless it's your own disaster.
- We Can Do Better Than SQL - Depends on your definition of "better" I think, but worth thinking about.
- A Guide to Function Composition in Ruby - New syntax is here in Ruby 2.6.
- OPP (Other People’s Problems) - Camille Fournier offers some decision points on how to pick problems that won't burn you out.
subscribe via RSS