Double Shot #2371

Rails ActionCable  - the good and the bad
- A reasonably balanced evaluation from a vendor who offers a more robust commercial messaging platform.
- "slim will build a micro-vm from a Dockerfile. Slim works by building and extracting a rootfs from a Dockerfile, and then merging that filesystem with a small minimal kernel that runs in RAM."
Games and Graphics in Popup URL bars
- A low-res animated emoji canvas built from multiple pop-up windows. Please don't do this.
List of (Advanced) JavaScript Questions
- A frequently-updated site to increase your JS knowledge.
When should you be using Web Workers?
- If you're targeting low-end devices (and you are, if you're a popular web site), the answer is probably yes.
How to set up a serious Kubernetes terminal
- A few tools you should know if you're heading down the k8s path.
One liner npm package "is-windows" has 2.5 million dependants, why on earth?!
- A reddit thread that goes deep into the swamp that is NPM. Depressing stuff.
Every Layout
- Learn how to do CSS layouts in a sensible, modern way.

"Obliteration like you've never seen before" just seems pointlessly tautological to me.

Pretty sad that the fact that the President is a serial sexual harasser and rapist is not the worst thing about him.

Double Shot #2370

Why Dark Gray is Brighter than Gray In CSS
- Because reasons.
VLC 3.0.7 and security
- The new release of VLC comes with some reflections on bug bounties.
What's new in Soulver 3?
- Quite a bit. I reach for this enhanced MacOS calculator app quite frequently, and I'm glad to see it remaining a viable business.
Make the Most of your Browser’s Address Bar
- Why yes, you can set up custom shortcuts in your browser.
Graviton: A Minimalist Open Source Code Editor
- A fresh Electron-based editor.
Home .git
- How and why to version the contents of your home directory.
Weird Ruby: Block Comments
- A vestige of perl in Ruby.
The DevOps Phenomenon
- An "executive crash course" on modern development practices.

Double Shot #2369

Things I Learnt The Hard Way (in 30 Years of Software Development)
- I don't necessarily agree with all of these points, but I'm heartily in favor of thinking and learning.
IPFS, Again
- IPFS seems like a nice idea but implementing it from scratch is still a bucket of pain.
Framework for an Observability Maturity Model
- A white paper from Honeycomb with plenty to chew on.
I never liked technical interviews
- An argument for centering things on the interviewee, not the interviewer. I'm on board with this.
Project Svalbard: The Future of Have I Been Pwned
- HIBP is growing beyond what one guy can handle. Frankly I'm amazed that it got this far with Troy Hunt doing everything. Thanks, Troy.
Micro Frontends
- The ThoughtWorks view of what this means.
Always. Own. Your platform.
- This is why I stick with my own hosting and RSS.
"You are my victim": An Analysis of fear-based enriched extortion attacks
- Just when I thought I'd seen all the twists on phishing...

Double Shot #2368

- Browser extension to add some nice automatic hyperlinking to GitHub repos.
- There's a new OpenPGP key server in town.
- A CDN for JavaScript designed not to download polyfills when they're not needed by the current browser.
The ideal DevOps team structure
- How communication, leadership, and specialization can play into figuring out what's ideal for your own organization.
Shift Left Testing: How to end the tester vs. dev war
- Pushing QA upstream in the process helps keep everyone aligned.
Why ['1', '7', '11'].map(parseInt) returns [1, NaN, 3] in Javascript
- Because computers hate us, of course.
3 Powerful Examples of Destructuring Assignment
- But some JS is actually nice.
Advice From A 19 Year Old Girl & Software Developer
- A nice bit of inspiration for beginning developers.

Double Shot #2367

Engaging Stakeholders with Opportunity Solution Trees: 3 Tactics to Try
- Using an agile visual aid for product discovery.
From monoliths to the modern web - The great unbundling
- Thoughts about the history & future of static site design.

7 Principles That Helped Us Bootstrap a 7-figure Business
- Notes from a co-founder at Gleam, which has grown well without VC nonsense.
Use Honeycomb to trace ActiveRecord calls inside of ActiveJob
- I'll probably need this some day.
7 Reasons I'm Sticking With Minitest and Fixtures in Rails
- Somehow using the defaults has become the contrarian view.
Introducing the new HTML element - welcome <clippy>!
- Or at least, introducing another example of Google's arrogance.
Analysis – Using materialized views in Rails and PostgreSQL
- I might actually have a perfect use case for this. Time to dig in.

Our dog is on her last week, I'd guess...advanced kidney failure. All she wants to do is stay with me. This is making it damned hard to focus on work.

Fortunately, the people I work with understand, so I can cut myself some slack.

Double Shot #2366

Corporations and open source: why and how
- Investigating the (lack of) incentives, and a plug for
How my distributed team communicates so no context is left behind
- Some advice and tips from an engineering lead at CircleCI.
- Open-source Node.js CMS.
The State of Developer Ecosystem 2019
2019 Open Source Database Report
State of CSS 2019
- A few sets of detailed survey results to poke through.
Creating a Collaborative Editor
- A look at some of the hard work that actually goes into implementing CRDTs.
Comparing LibreOffice 6.2 Versions: AppImage, Flatpak, and Snap
- Bottom line: they all work (and I wish they were more used, but that's another story).
Ruby 2.7: The Pipeline Operator
- Meh.
Ship Your Enemies GDPR
- Using the web to weaponize poorly-designed laws.

Sentences whose meanings have changed radically since I was young: "Please don't act surprised when he arrives looking like a girl."

I'm trying to keep up here but man sometimes it's hard.

In the world that my American Government teacher taught me about in High School, I'd be tuning in right about now to watch the impeachment trial of Donald Trump. Sadly, we do not seem to live in that world.

Double Shot #2364

CSS Grid Level 2 – subgrid is coming to Firefox
- I don't even understand Level 1. Behind again.
- Donate some of your bandwidth to create "a community-powered CDN that crowdfunds websites and rewards users, without ads."
Introducing Inkdrop 4
- A cloud-backed Markdown editor & note storage solution.
CSS Grid: No Nonsense Layouts
- Perhaps it's not too late for me to learn Level 1!
Dash for Slack
- Support for temporary channels. Nice idea; channel sprawl has been a real problem for me in past usage.
Plot to steal cryptocurrency foiled by the npm security team
- To be honest I don't feel all that good that NPM's security model is apparently "we try to notice when people break in through the unfixable holes in this mess we've created."
- SSH client designed as an app with good mobile support.
Agile is a Crunchy Nut Frog (and some dirty secrets)
- What, you thought it was all rainbow-farting unicorns?

Double Shot #2361

Why Microservices Should Scare You More
- Some reasons why microservices are not an easy win for every application.
- 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.
- "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
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.

Teenager apparently thinks she’s punishing me by refusing to speak to me.

I'm trying not to laugh in her face.

Double Shot #2360

Broken by default: why you should avoid most Dockerfile examples
- Python-centric, but the principles are general.
- "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.
- A javascript solution to making internal servers visible on your external network.
- "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 #2357

Deployment Pipeline Design and The Theory Of Constraints
- Pulling together two threads of thinking for faster time-to-deploy.
- "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.
- 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.
- Block ads and send garbage traffic to the trackers at the same time.
- 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.

Dear UK: If you send us the blimp, you can keep the flesh version.

Also: we're sorry.

Double Shot #2356

- "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.
- 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.
- 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.

Show more

A Mastodon instance for Rubyists & friends