I don’t have SQL Server installed on my laptop. In an effort to keep things clean and smooth in case I need to rebuild things, I’ve gone with containers. I can easily copy a folder with all my docker compose files and data to another machine and be up and running.One other benefit is upgrades. This post looks at the process of upgrading/patching SQL Server on my laptop.Getting the Latest VersionA normal process for me in the past (and on my desktop) is to download a patch, run the installer, and then have SQL Server upgraded. Sometimes there’s a reboot…
Author: drweb
Software developers, CI/CD pipelines, and the tools they rely on are increasingly becoming attractive targets for threat groups. The number of cyberattacks on code repositories like npm and GitHub continues to mount as threat actors push their supply chain attacks. Compromising open source packages, fake development tools, and social engineering are among the tactics bad actors use against developers. Researchers with Kaspersky Lab this month wrote that a combination of programmers’ unfounded belief that they are good at spotting threats and jobs that require them to often download and run third-party code “makes them sitting ducks for cyberattackers.” GitProtect.io analyst…
Ctrl+R and fc let you find, recall, and edit any command from your bash history in seconds, and here’s how to stop retyping the same long commands from scratch with bash history and terminal shortcuts you already have. Most Linux users know their shell saves command history, but the way they use it isn’t very efficient. You type a long command, memorize flags, re-enter file paths, and sometimes forget small details like a trailing slash, then you have to fix it and try again. When you want to reuse a command, you keep pressing the up arrow until you find…
AI coding agents are becoming more capable, but evaluating them is harder than it looks. Most benchmarks focus on a single dimension of agent capabilities; for instance, the popular SWE-Bench benchmark only focuses on fixing issues on open source Python repositories. Real-world software engineering involves fixing bugs of course, but it is a lot more multifaceted: in any single week a software developer may also debug complex issues, building a new greenfield script or app, improving test coverage, fix bugs on a frontend repo, research unfamiliar APIs – the list goes on. The OpenHands Index addresses this by building a…
I have seen the knapsack problem show up in quite a few technical interviews. It is one of those problems that feels tricky at first but becomes much clearer once you see the recursive pattern underneath. In this tutorial, I will walk through the 0-1 knapsack problem, show you how to think about it recursively, and get a working Python implementation that you can actually use. The core idea is this: you have a set of items, each with a weight and a value. You have a knapsack that can hold only so much weight. Your goal is to pick…
Use with open(file, “r”) as f to guarantee files close properly Iterate directly over the file object with for line in f for memory-efficient line-by-line reading Use path.read_text() from pathlib for a concise single-call read Pass encoding explicitly to open() to avoid encoding mismatches Build lists of dictionaries for structured text files you need to query How to Read and Parse a Text File in Python The standard way to read a file in Python is with the built-in open() function. You pass in the file path and a mode, where “r” means read. Then you call read() on the…
You can’t make this crap up. You just wish you could. Jer Crane, founder of the small vertical software company, PocketOS, reported on X that the AI Cursor coding agent and a Railway backup misconfiguration combined to briefly wipe out the company’s car‑rental customer production data. Not some of the data. All of it. That’s a company killer. Fortunately for PocketOS and its customers, Crane later reported that Railway had managed to “recover the data (thank God!).” Thanks to that miracle save of reconstructing the missing data from earlier backups, PocketOS and its customers are back in business. But how…
I keep coming back to Python classes because they are the foundation of every non-trivial program I write. After years of using them daily, I have a good sense of what actually helps someone grasp this material quickly and what just confuses people. This guide is the article I wish I had when I started. Python classes are not complicated once you understand a few core ideas. You define a class to create a blueprint, then you instantiate it to get objects that hold data and can perform actions. That is the whole idea. Everything else in object-oriented programming is…
OpenAI has unveiled Symphony, an open-source specification that shifts how software development teams deploy AI in workflows, moving from interactive coding assistance toward continuous orchestration of autonomous agents. Symphony reframes project management tools as operational hubs for AI-driven coding. Rather than prompting an assistant for individual tasks, developers assign work through issue trackers, allowing agents to execute tasks in parallel and deliver outputs for human review. The change reflects a trend in enterprise AI in which systems are increasingly embedded into production pipelines rather than used as standalone tools. Symphony emerged from internal experimentation at OpenAI, where engineers attempted to scale…
WireGuard is a modern VPN protocol built directly into the Linux kernel since version 5.6, and this guide walks through the full server and client setup on Debian 13 (Trixie) using nothing but the standard package manager and a handful of config files. Most sysadmins still reach for OpenVPN out of habit, but these days that often means accepting a slower tunnel, managing a certificate authority, and dealing with a config file that can run to 50 lines before you’ve done anything meaningful. WireGuard does the same job with just two config files, a key pair on each side, and…
