The Bedrock of Software Design | Alex Fedoseev
A simple concept that makes software easier to understand, harder to misuse, and safer to change.
297 posts
A simple concept that makes software easier to understand, harder to misuse, and safer to change.
Over the last three months I have written thousands of lines of code and yet I didn't write any of them, claude.ai wrote them. The world of programming, software engineering, computer science, in my opinion has been turned upside down in a matter of months.
How I code today
I've created a process within the world of Claude Code which I use to design, plan and implement code. Many people have created similar ones and so instead of describing mine, in detail, let me explain the general idea. The heart of it is a series of feature specs (in individual numbered markdown files) and for each feature spec a task list (in a different markdown file as well) ...
A terminal-based coding agent
Clear — An intent-first agentic development language. Write readable specifications. AI agents turn them into real software.
Free online tool for optimizing animated GIF images to reduce file size. Compress GIFs with LZW compression, reduce colors or frame rate, remove duplicate frames.
Based on my own experience, some of my favorite books and blog posts, and advice from friends, I’ve come up with this. What do you think? What should I add? Please comment! This was my opinion back in 2015 I will create a new post showing what has changed!
Personal Effectiveness Rules of Thumb
When you have your best idea ever, always remember that the idea is just 1% of the journey Yes, ideas are cheap. At least in the world of software engineering and product development, everyone and their grandfather have ideas that may be great. The distance between the idea and the reality is great. ...
A multifunctional web development environment that integrates web servers, databases, and various programming languages. It offers multi-instance PHP running, powerful CLI support, and flexible domain and SSL customization, aimed at optimizing web and PHP development processes. Its efficient development environment enhances resource utilization. It includes software such as MySQL, MariaDB, PostgreSQL, PHP, Redis, etc., supports Docker, Node.js, and focuses on security, ensuring a smoother and more efficient development process.
Continuing a theme of the previous blog, I am starting to really believe that programming, coding, software development is going to be forever changed. I say this, among other things, from the perspective of someone who has taught software engineering, development, and intro programming courses.
I have been doing more and more programming using AI tools. In my case, Claude Code in particular. But I think they are all similar and converging. From time to time, the leader switches around. But really, that is kind of meaningless because it is very unclear what it means to be the leader. In other words, what is the metric by which we compare them? There are more or less an infinite number of us...
A visual introduction to big O notation.
I see a lot of bad system design advice. One classic is the LinkedIn-optimized “bet you never heard of queues” style of post, presumably aimed at people who are…
You have heard how in the long distant past we had people whose job was "Computer". They were people who computed. They worked alongside mathematicians and engineers (I suppose) to make complicated calculations. I suppose they worked with strict numerical problems but also with estimates, or solving equations, or computing distributions and so on.
Now of course a "computer" means something else. It's a piece of equipment that does the same. The "computers" from the previous paragraph don't exist any more, the job is no longer necessary. So we distinguish the two by calling them "human 'computers'".
(As an aside, I like finding examples of words - nouns usually - which make a distinction th...
Like the pdp-10 had
I have met a lot of developers in my life.
Late…
👋🏼 This is part of series on concurrency, parallelism and asynchronous programming in Ruby. It’s a deep dive, so it’s divided into 12 main parts:
Your Ruby programs are always multi-threaded: Part 1 Your Ruby programs are always multi-threaded: Part 2 Consistent, request-local state Ruby methods are colorless The Thread API: Concurrent, colorless Ruby Interrupting Threads: Concurrent, colorless Ruby Thread and its MaNy friends: Concurrent, colorless Ruby Fibers: Concurrent, colorless Ruby Processes, Ractors and alternative runtimes: Parallel Ruby Scaling concurrency: Streaming Ruby Abstracted, concurrent Ruby Closing thoughts, kicking the tires and tangents How I dive into CRuby concurrency You’re reading “The Thread API: Concurrent, colorless Ruby”.
Like Heroku, but you own it.
I've hired a lot of developers over the years. More than a few of them have come in with a strong...
A Single Threaded Owner (STO), is a single leader that is completely responsible for their area of the product. I share my experiences implementing this model, including the tradeoffs and challenges. And I give the nuts and bolts of how we implemented it and what we learned.
Analyze how a Git repo grows over time.
piku, inspired by dokku, allows you do git push deployments to your own servers, no matter how small they are.
Fastest way to deploy a Rails app!
Smarter Robotics Collaborate / Simulate / Accelerate RoboDevOps platform to accelerate your development and adoption Get Started Connecting robotics teams to resources We are on a mission to accelerate the development and introduction of smarter robots into everyday life. Our platform empowers iterative development and collaboration helping you accelerate your development process and team performance: Use
No course has ever been this engaging and effective in teaching hard-to-master STEM skills!
Recently I needed to run millions of API calls to an internal service. API calls are IO blocking. This means that when my service calls the…
Open Source Scheduling: Send a link and meet or build an entire marketplace for humans to connect.
Get more from the services you love on IFTTT. Explore the latest tips and tricks, browse by category, or search by name.
Death by a thousand microservices –The software industry is learning once again that complexity kills
Costs exposed: Monorepo vs. multirepo – Julio Merino (jmmv.dev) –In software engineering organizations, there are certain practices that keep costs under control even if those seem more expensive at first. Unfortunately, because such practices feel more expensive, teams choose to keep their status quo even when they know it is suboptimal. This choice ends up hurting productivity and morale because planned work is continuously interrupted, which in turn drags project completion.
The reason I say seem and not are is because the alternatives to these cost-exposing practices also suffer from costs. The difference is that, while...
Service Objects are a popular software design pattern in the Ruby on Rails community. They are used to extract procedural logic away from models and controllers and into their own objects.
Rails design patterns –This article is a high-level overview of design patterns that are commonly used in Ruby on Rails applications. I also mention the cons and pros.
Lago Blog – ORMs are criticized for the wrong reasons –ORMs, often criticized, are typically misused rather than inherently flawed. While they present challenges in visibility and performance, correct usage can mitigate these issues.
The beautiful, fast, flexible, native Mac code editor from Panic.
Rails cache using the Brotli algorithm offers better compression and performance. - GitHub - pawurb/rails-brotli-cache: Rails cache using the Brotli algorithm offers better compression and performa...
Bullet Train is a Ruby on Rails SaaS-in-a-Box that saves developers months of effort and new founders tens of thousands of dollars.
Just to prove that theres never the last word on anything, especially programmers editors. I thought history ended with vscode. But take a look st this, pretty tantilizing! Author says: “Code at the speed of thought. Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.”
Zed – Code at the speed of thought –Just to prove that theres never the last word on anything, especially programmers editors. I thought history ended with vscode. But take a look st this, pretty tantilizing! Author says: “Code at the speed of thought. Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.”
An interesting walk down history lane… of computers
Three-Bucket Framework for Engineering Metrics –Deciding what metrics to track and report to stakeholders. This article is common sense but very useful advice on how yo think about what metrics make sense to measure an engineering team.
Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered, and is instead left to students to figure out on their own: proficiency with their tools. We’ll teach you how to master the command-line, use a powerful text editor, use fancy features of version control systems, and much more!
An interesting study of performance. It seems hard to believe.
Bottlenecks of Scaleups –Common bottlenecks that prevent startups from scaling as quickly as they should. Thoughtworks always has good deep insight about software engineering. This too is an interesting series.
This seems like a very nice simple tool to solve a common problem. My only confusion is that there are a bunch of similar tools to do the same thing. Each has its own DSL, written in ruby or some other language, has its own conceptual steucture, and its own bugs. It’s enough to make me decide to just keep doing it by hand. Heres what the author says: “ Prepper is a simple server provisioning tool, built on top of SSHKit. You can use it to script your server build process. - GitHub - gregmolnar/prepper: Prepper is a simple server provisioning tool...”
This is not a new thing by a long shot. But thw fact that it is published by dhh is a big deal imo. For me it assures me to some extent that it is “correct” and that it will be maintained. From author: “Running Rails from Docker for easy start to development - rails/docked: Running Rails from Docker for easy start to development”
For me, a very provocative set of arguments. Novel insights on how to remove complexity. Or recognizing that you may not need that additional service or technology. The author: “Radical Simplicity is a startup development method to make development faster and more fun that plays well with lean startups”
An interesting idea, model based testing. The aurhor says: “Again, I’m writing about models because I have a deep desire to keep software minimal. While I don’t think it’s wrong to simply buckle up and deal with the complexity and raw magnitude of implementations as many of us do, that’s just not the path that I find appealing intuitively.”
The Case for Models | Concerning Quality –An interesting idea, model based testing. The aurhor says: “Again, I’m writing about models because I have a deep desire to keep software minimal. While I don’t think it’s wrong to simply buckle up and deal with the complexity and raw magnitude of implementations as many of us do, that’s just not the path that I find appealing intuitively.”
When to use gRPC vs GraphQL –Honestly, I wasnt too aware of gRPC, but very aware of GraphQL. So this vomparison could be useful in the future. Author describes the article like this: “We dig into two of the most popular API protocols to see where they work best. “
Manage your IFTTT Applets.
A very interesting concept and scenario that affects scale in surprising ways. In the category of everything old is nee again, this was identified and named back in the 1970’s!
From the readme, this is a promising tool for automating deploymeny of apps to s cloud server. Perhaps one more option post Heroku. They dont mention ruby and rails but imply its covered.
CapRover · Free and Open Source PaaS! –From the readme, this is a promising tool for automating deploymeny of apps to s cloud server. Perhaps one more option post Heroku. They dont mention ruby and rails but imply its covered.
This article is about a few quick thumb rules I use when writing shell scripts that I’ve come to appreciate over the years. Very opinionated....
Social Media automatic posting tool. Seems popular with the cognizenti
Duplication – Code with Jason –Duplication can pose serious maintenance problems to codebases. Developers’ attempts to fix duplication can even sometimes introduce new problems. Certain popular approaches to addressing duplication exist, such as the rule of three and the refrain duplication is cheaper than the wrong abstraction. I think these advice snippets treat duplication in an oversimplified way that doesn’t […]
CodeSee – Bring visibility to your codebase –CodeSee is the world’s first solution for Continuous Code Understanding. CodeSee helps development teams visually understand how your large-scale codebase works, document it, and collaborate continuously.
A Developer’s Guide to Terraform – Semaphore –Terraform is one of the most popular IaC tools available. Learn its benefits and how to use it. This is a nice medium level explanation.
Top 20 Books a Software Developer Must Read (Updated) –A continuous learning mindset is a key quality of a software developer who wants to stay relevant and grow their market value. Vectorly has…
This looks pretty interesting. Sort of what I've been trying to home grow. "Coder is a self-hosted platform that allows organizations to securely provision developer workspaces (featuring remote IDEs and all related resources) for DevOps, platform, and software engineering teams."
Home – Coder v1 v1.32 docs –This looks pretty interesting. Sort of what I’ve been trying to home grow. “Coder is a self-hosted platform that allows organizations to securely provision developer workspaces (featuring remote IDEs and all related resources) for DevOps, platform, and software engineering teams.”
This handbook is for grad students, postdocs and PIs who do a lot of programming as part of their research. It will teach you, in a practical manner, how to organize your code so that it is easy to...
To Thread or Not to Thread: An In-Depth Look at Ruby’s Execution Models An in-depth look at threads vs processes in Ruby web applications, and when you should use each. June 2, 2022 at 07:16PM
The Practical Effects of the GVL on Scaling in Ruby MRI Ruby’s Global VM Lock: frequently mislabeled, misunderstood and maligned. Does the GVL mean that Ruby has no concurrency story or CaN’T sCaLe? To underst… May 28, 2022 at 05:29PM
Efficient Duplicate File Finder. Contribute to pkolaczk/fclones development by creating an account on GitHub.
Threading in Python: The Complete Guide The Thread class allows you to create and manage new threads of execution in Python. Although the threads have been available since Python 2, it is not widely used, perhaps because of misunderstand… April 22, 2022 at 05:17AM
Why do all databases have a public schema in PostgreSQL? I was just curious why all databases in PostgreSQL have a public schema that is accessible to all users. I know I can revoke privileges and grant them to one user but why is that not the default? April 13, 2022 at 02:18PM
A Kubernetes tutorial for complete beginners.
Head-First Kubernetes A Kubernetes tutorial for complete beginners. April 8, 2022 at 03:31PM
Simple, efficient background processing for Ruby. Contribute to mperham/sidekiq development by creating an account on GitHub.
This article will teach you how background processing works as well as the alternatives the Ruby community offers to implement it in your application.
help to kill N+1 queries and unused eager loading. Contribute to flyerhzm/bullet development by creating an account on GitHub.
Scheduled Jobs and Custom Clock Processes | Heroku Dev Center Schedule recurring or time-based jobs on Heroku with the Scheduler add-on or by implementing a custom clock process. March 28, 2022 at 08:19PM
Comparing Ruby Background Processing Libraries: Delayed Job – SitePoint This article will teach you how background processing works as well as the alternatives the Ruby community offers to implement it in your application. March 28, 2022 at 06:52PM
Partial rendering performance in Rails Some numbers about rendering times with different techniques March 28, 2022 at 06:52PM
Getting Started · mperham/sidekiq Wiki Simple, efficient background processing for Ruby. Contribute to mperham/sidekiq development by creating an account on GitHub. March 28, 2022 at 08:14PM
flyerhzm/bullet: help to kill N+1 queries and unused eager loading help to kill N+1 queries and unused eager loading. Contribute to flyerhzm/bullet development by creating an account on GitHub. March 28, 2022 at 06:51PM
brandonhilkert/sucker_punch: Sucker Punch is a Ruby asynchronous processing library using concurrent-ruby, heavily influenced by Sidekiq and girl_friday. Sucker Punch is a Ruby asynchronous processing library using concurrent-ruby, heavily influenced by Sidekiq and girl_friday. – brandonhilkert/sucker_punch: Sucker Punch is a Ruby asynchronous proce… March 28, 2022 at 08:14PM
If you're using ROS on a Raspberry Pi board, check out those useful tips for making more robust, high-performance, and scalable robotics projects!
Using ROS on Raspberry Pi: Best Practices – The Robotics Back-End If you’re using ROS on a Raspberry Pi board, check out those useful tips for making more robust, high-performance, and scalable robotics projects! March 26, 2022 at 04:13PM
There are many ways to scale out your database; many of these techniques require advanced management and expensive add-ons or editions. Database sharding is a flexible way of scaling out a database. In this presentation, Jeremiah Peschka explains how to scale out using database sharding, covers basic techniques, and shares some of the pitfalls. This...
The Basics of Database Sharding – Brent Ozar Unlimited® There are many ways to scale out your database; many of these techniques require advanced management and expensive add-ons or editions. Database sharding is a flexible way of scaling out a database. In this presentation, Jeremiah Peschka explains how to scale out using database sharding, covers basic techniques, and shares some of the pitfalls. This… March 24, 2022 at 03:03PM
I’m increasingly encountering users on Heroku that are encountering the need to shard their data. For most users this is something you delay as long as possible as you can generally go for sometime before you have to worry about it. Additionally scaling up your database is often a reasonable approach early on and something I encourage as a starting point as scaling up is easy to do with regards to databases. However, for the 1% of users that do need to shard when the time comes many are left wondering where to start, hence the following guide.
OpiniDatabase sharding is the process of splitting up a database across multiple machines to improve the scalability of an application. The justification for database sharding is that after a certain scale point it is cheaper and more feasible to scale a site horizontally by adding more machines than to grow it vertically by adding beefier servers.
My guiding principles after 20 years of programming I’ve been programming since 1999. This year I’ve officially coded for 20+ years. I’ve started with Basic but soon jumped into Pascal and C… March 23, 2022 at 02:24PM
Building Scalable Databases: Pros and Cons of Various Database Sharding Schemes – Dare Obasanjo OpiniDatabase sharding is the process of splitting up a database across multiple machines to improve the scalability of an application. The justification for database sharding is that after a certain scale point it is cheaper and more feasible to scale a site horizontally by adding more machines than to grow it vertically by adding beefier servers. March 24, 2022 at 12:33AM
Sharding your database I’m increasingly encountering users on Heroku that are encountering the need to shard their data. For most users this is something you delay as long as possible as you can generally go for sometime before you have to worry about it. Additionally scaling up your database is often a reasonable approach early on and something I encourage as a starting point as scaling up is easy to do with regards to databases. However, for the 1% of users that do need to shard when the time comes many are left wondering where to start, hence the following guide. March 24, 2022 at 12:34AM
3 ways to detect slow queries in PostgreSQL This blog post is about handling bad performance in PostgreSQL and shows three useful and quick methods to spot performance problems and slow queries. March 16, 2022 at 05:35PM
How I test Rails applications When I was a Rails beginner I was amazed by Rails and Test Driven Development. But I often struggled with testing because I did not know… March 14, 2022 at 04:55PM
Sinatra Best Practices: Part One While Sinatra’s one-file approach may work well for your one-off, smaller application – it can quickly become a mess as you add on multiple routes, route-handlers, helpers, and configuration.… March 14, 2022 at 04:56PM
Faster Rails: Eliminating N+1 queries – Semaphore N+1 queries are making your Rails app painfully slow. Learn how to eliminate them from your project. March 14, 2022 at 04:28PM
Heroku's platform was designed with services in mind. If you're building a service oriented web app, you might find this interesting.
How Good Is Your Test Suite? | Codementor Relying solely on code coverage as a measure of test quality is not enough. Introduce mutation and property-based testing to see how good your tests and code actually are. March 9, 2022 at 08:08PM
Randall Degges – Heroku and SOA Heroku’s platform was designed with services in mind. If you’re building a service oriented web app, you might find this interesting. March 10, 2022 at 12:16AM
How to Test Ruby Code That Depends on External APIs Few things are more frustrating than slow, flaky test suites. You’re ready to deploy, wait 20 minutes for CI to run, only to find that a test failure in code you’ve never touched is blocking you. You dig into the source and find the problem: an external API call. It works (slowly) most of the tim… March 8, 2022 at 09:43PM
Learn How to Test Third Party Services With Minitest & VCR In this article we will be learning on how to work with VCR, how to configure it and how to write tests for third-party services. March 8, 2022 at 09:45PM
Advanced Postgres Performance Tips What do you do when indexes aren’t enough? March 5, 2022 at 02:50PM
PostgreSQL Performance Enabling pg_stat_statements This article will help with how to enable pg_stat_statements to analyze queries and response time for the best PostgreSQL Performance. March 5, 2022 at 02:51PM
MiniTest – Writing Test Code In Ruby (2/3) p.s. This is a series of articles and each article builds off another. I suggest starting at Part 1…. March 4, 2022 at 02:54PM
Testing network services in Ruby is easier than you think You’ve started a new project and it’s time for your code to depend on a third-party service. It could be something like ElasticSearch, Resque, a billing provider, or just an arbitrary HTTP API. You’re a good developer, so you want this code to be well tested. But how do you test code that fires off requests to a service that’s totally out of your control? March 4, 2022 at 02:53PM
Code switches at Flickr
Heroku Postgres | Heroku Dev Center The Heroku Postgres add-on is a production database service, offering PostgreSQL, read-only follower databases, snapshots for forks, and local client access. February 1, 2022 at 10:21PM
How to Monitor Network and Zoom Performance & Fix “Your Internet Connection is Unstable” on Zoom how to monitor network performance and Zoom performance and avoid the “Your Internet Connection is Unstable” message of doom. February 1, 2022 at 10:46PM
Flipping Out | code.flickr.com Code switches at Flickr February 1, 2022 at 10:12PM
Remote Teaching: Synchronous vs. Asynchronous | Center for Teaching and Learning | Worcester State University There are two options for instructors to facilitate class sessions remotely: Synchronous or Asynchronous. January 25, 2022 at 05:14PM
A framework for gradual system automation. Contribute to braintree/runbook development by creating an account on GitHub.
January 12, 2022 at 05:08PM
Runbook: A Ruby DSL for Gradual System Automation At Braintree, we like to write tools to automate our work. Our latest tool is Runbook, a Ruby DSL for gradually automating system… January 12, 2022 at 06:04PM
braintree/runbook: A framework for gradual system automation A framework for gradual system automation. Contribute to braintree/runbook development by creating an account on GitHub. January 12, 2022 at 06:03PM
10 BEST Performance Testing Tools | Load Testing Tools (2022) Performance Testing Tools help in the process of determining the speed, effectiveness, reliability, scalability and interoperability of the system, computer, network, program or application. January 12, 2022 at 04:33PM
Scalability is considered a hard problem to tackle. It’s always presented like it’s something magical done with secret, special tools that only big, million ...
Scalable application design without magic – Leveraging client computing power for high performance with many users I needed to design a scalable backend infrastructure that could handle lots of concurrent users. I did this by leveraging the client’s computing power having it handle most of the user interaction workload. January 5, 2022 at 05:21PM
Scalable architecture without magic (and how to build it if you’re not Google) Scalability is considered a hard problem to tackle. It’s always presented like it’s something magical done with secret, special tools that only big, million … January 5, 2022 at 05:23PM
Six Rules of Thumb for Scaling Software Architectures We live in an age where massive scale, Internet-facing systems like Google, Amazon, Facebook and the like are engineering icons. They… January 5, 2022 at 05:26PM
The Best No-Code Tools You Should Use 🧩 And why they are an incredible opportunity for your dev team December 31, 2021 at 02:45PM
Refactoring is a controllable process of improving code without creating new functionality. Design Patterns are typical solutions to the commonly occurring problems in software design.
Refactoring and Design Patterns Refactoring is a controllable process of improving code without creating new functionality. Design Patterns are typical solutions to the commonly occurring problems in software design. December 28, 2021 at 02:37PM
Build internal tools, remarkably fast. Retool is the fast way to build internal tools. Drag-and-drop our building blocks and connect them to your databases and APIs to build your own tools, instantly. Connects with Postgres, REST APIs, GraphQL, Firebase, Google Sheets, and more. Built by developers, for developers. Trusted by startups and Fortune 500s. Sign up for free. December 22, 2021 at 02:21PM
Learning Containers From The Bottom Up – Ivan Velichko What is a Container? Container vs. VM? Docker vs. Kubernetes. How to organize the learning efficiently? November 27, 2021 at 07:27PM
Pivot Table Data Crunching for Microsoft Office Excel 2007,2003, (isbn 0789736012, ean 0789736012), by Jelen B., Alexander M.
Docker concepts and terminology – Code with Jason Host machine The host machine is the machine that Docker is running on. When Dockerizing for development, the host machine is typically the laptop that you’re working on. In a production environment, the host machine could be (for example) an AWS EC2 instance. Images and containers Images and containers are sufficiently interrelated that it makes … October 16, 2021 at 03:20AM
Develop your Kubernetes applications in Okteto Cloud and forget about slow and tedious local development forever
Getting Started on Okteto Cloud in 5 minutes | Okteto Documentation Develop your Kubernetes applications in Okteto Cloud and forget about slow and tedious local development forever August 8, 2021 at 04:54AM
MicroK8s is the simplest production-grade upstream K8s. Lightweight and focused. Single command install on Linux, Windows and macOS. Made for devops, great for edge, appliances and IoT. Full high availability Kubernetes with autonomous clusters.
Why you should build on Kubernetes from day one – Stack Overflow Blog If you’re building a new app today, it might be worth taking a closer look at making it cloud-native and using Kubernetes from the jump. The effort to set up Kubernetes is less than you think. Certainly, it’s less than the effort it would take to refactor your app later on to support containerization. August 1, 2021 at 08:24PM
MicroK8s – Zero-ops Kubernetes for developers, edge and IoT | MicroK8s MicroK8s is the simplest production-grade upstream K8s. Lightweight and focused. Single command install on Linux, Windows and macOS. Made for devops, great for edge, appliances and IoT. Full high availability Kubernetes with autonomous clusters. August 1, 2021 at 08:54PM
Structuring a Large Production Flask Application In the world of Python web frameworks Flask and Django are considered the two major frameworks. Flask is a micro-framework and is… July 26, 2021 at 11:39PM
How to speed up Python application startup time Introduction of Python 3.7’s new feature to measure import time July 24, 2021 at 03:59AM
Set Up A Docker Container To Test Your Rails App Code is never self-contained. It runs in an environment. Docker lets you define that environment in a simple and portable way. That’s why pretty much every automated testing and deployment service works with docker containers. You give them a container, and done! But how do you set up a container… July 3, 2021 at 06:14PM
Creating Local Python Packages with init.py Packages are so confusing in Python. Here are some of the better links I’ve found about Packages for code reuse and distribution June 29, 2021 at 11:06PM
Python Modules and Packages – An Introduction – Real Python This article explores Python modules and Python packages, two mechanisms that facilitate modular programming. June 29, 2021 at 11:09PM
A list of things that we can do when we need to scale a SQL database.
Scaling relational SQL databases A list of things that we can do when we need to scale a SQL database. June 21, 2021 at 05:31AM
Contribute to lbaitemple/ubuntu_server_rpi development by creating an account on GitHub.
Looks like a nice overview of scrum ideas
Plan the time to have your meeting or event by co-ordinating availability with all the particpants using this fuss-free online tool.
Our digital forensics service expert team provides digital evidence and support for any forensic need. We service data breach emergencies, intellectual property theft suspicions, cyber security concerns, and personal forensic investigations. Protect your
Drone is a self-service Continuous Delivery platform for busy development teams
Actually startups take off because the founders make them take off. There may be a handful that just grew by themselves, but usually it takes some sort of push to get them going. A good metaphor would be the cranks that car engines had before they got electric starters. Once the engine was going, it would keep going, but there was a separate and laborious process to get it going.
Ming Chow's website
Skeleton of a rails app
Honeybadger provides exception and uptime monitoring to keep your web apps error-free.
For the past few months, I've become more and more disillusioned by the current state of Ruby's scripting support. Sure, we have optparse, and a gamut of other solutions, but there's no full-stack package for writing robust binaries. Enter thor. The idea behind thor initially came from my work on
Tsung demo site
A ruby profiler. See https://ruby-prof.github.io for more information. - ruby-prof/ruby-prof
Data modeling, versioning and CRUD made easy
Discover the latest devops tools and frameworks
AppNeta's award-winning suite of network monitoring tools allow unparalleled SaaS-based application end-user performance monitoring for 100% delivery confidence. Request a free demo!
Really Excellent article about queues, overloads, bottlenecks and architecture
How to build an application with Sinatra, Rack and ActiveRecord?
🌊 Pretty, common and useful algorithms with modern JS and beautiful tests - jiayihu/pretty-algorithms
An introduction to real-time WebSocket apps with Rails
Almost every web app requires a sign in form.In Ruby, the popular choice is the Devise gem for Rails.
Comprehensive data proxy to knowledge about real world - molybdenum-99/reality
Jesus Castello walks through the basics of cryptography using examples in Ruby. This is an excellent primer on crypto.
Welcome, subscribers new and old to another week, another newsletter and a new entry in the Catalog of Smells!
Database load can be a silent performance killer. I’ve been optimizing the query performance of a web app I run designed to get people involved in open sourc...
Parth Modi generates executable docs for his Rails API using swagger-docs and swagger-ui.
VisuAlgo was conceptualised in 2011 by Dr Steven Halim as a tool to help his students better understand data structures and algorithms, by allowing them to learn the basics on their own and at their own pace. Together with his students from the National University of Singapore, a series of visualisations were developed and consolidated, from simple sorting algorithms to complex graph data structures. Though specifically designed for the use of NUS students taking various data structure and algorithm classes (CS1010, CS1020, CS2010, CS2020, and CS3233), as advocators of online learning, we h...
A book about Docker.
A perennial challenge among software engineers and everyone else...
Documenting All Ruby Specialities.
Toptal enables start-ups, businesses, and organizations to hire freelance developers from a growing network of the best custom software engineers in the world. Find freelance developers to work full-time, part-time, or hourly who will seamlessly integrate into your team.
Simplify API development for users, teams, and enterprises with our open source and professional toolset. Find out how Swagger can help you and get started today.
The Official home of the DB Browser for SQLite.
:dolphin: Beautiful, performant feature flags for Ruby. - jnunemaker/flipper
In this blog post I am going to try to do a introduction on writing tests in the style of Behavior Driven Development (BDD) specifications, also called specs...
The title says it all. Seems like the bane of service architecture is the scope
Nice overview of choices of IDEs for Python and data science
CI is a practice that makes preparing for a release easier. CD may refer to "delivery" or "deployment," which are similar but not quite the same.
A copy of the chapter 14 about Caching of the “Learn Rails 5.2” book (Amazon Link, Apress Link) which was published in April 2018 by…
Web performance is an extremely important metric in the digital world. Learn tools and tricks for its improvement and enjoy both better Rails-related and General Web performance.
Accurately test your Internet connection speed with this powerful broadband speed test. Improve your bandwidth speed with the truth.
I’m a designer at Sentry and a writer at CSS-Tricks.
Excellent advanced info on crating dB indexes, looking at query plans to understand performance.
This is RonJeffries.com, the combination of new articles, XProgramming, SameElephant, and perhaps even some new items never before contemplated. Copyright © 1998-forever Ronald E Jeffries
An excellent review of the various issues you have to consider when deciding the put your rails app into production.
Title says it all.
Excellent detailed article about benchmarking a rails app and then introducing a tool that replaces malloc and purports to provide a 2x improvement
An interesting google tool for checking a web sites performance and other behavior.
Good description of how to use fibers in ruby.
Useful faker for rest apis.
An interesting perspective on test driven development
Funny and true.
Crazy code, interesting to look at!
Nice review of some more advanced ruby features.
Good insights about becoming slave to rules without remembering why you’re do8ng it!
A tool to allow me to launch multiple apps locally to get a new SOA service going for debugging.
I’m back looking at statistics. This KS test is one of the basic statistical tests to compare two samples.
Really really interesting use case for REDIS, and a great scalability pattern
You know I’m into scalability right now. Here’s a short article with lots of the basics.
Two part series on using queues to communicate between services.
Quite good explanation of thread safety in Ruby apps
Back in September 2014, we were three years into our cloud cadence. And we were still running our testing the way we had tested before moving to the cloud. We were trying to do things faster, we were trying to optimize our automation, but we were struggling.
A great analysis of this terrible example of the impact of bugs
Good introduction to Cloud Computing and Machine Learning
The new rails guide on multi databases in activerecord
Excellent performance tips
This looks super useful if you have very large data sets. The Unix shell is surprisingly fast and able to create parallel flows.
Serverless architecture is the new hotness. It sounds good for the right situations but this article argues that it might not be all that.
Always great to see another clarification of this important technique.
Super useful modern rundown of low hanging fruit performance tips for rails.
This is a useful and detailed guide.
A great analysis about a question that I had not thought of but is pretty interesting now that you mention it!
Wonderful and instructive collection of python snippets for fun and profit.
One of many instructions for getting Docker to run a ROS environment on MacOS.
Very nice detailed set of guidelines for a scalable node backend
Kind of fun collection of all the laws, rules etc. that you might come across in our field
Scaling is an important topic that I care about. Here’s one person’s guide to making it to 100k. It’s a very complicated topic.
There are many of these building blocks. Use this to mock a web service that your system depends on. That way you can test your system without incurring the costs (in money and time) of calling the service.
A great new tool!
Looks like another wonderful rails deployment solution. Definitely will check this out as an alternative to Heroku.
I am not sure I agree with all of this but it does make for interesting and thought provoking reading.
Some good ideas in here. I agree with much of it. Pick up an insight or two.
Micromessaging: Connecting Heroku Microservices w/Redis and RabbitMQ
A brief article explaining different architectures for Microservices on Heroku.
tags: reddis rabbitmq queueing
Heroku Postgres | Heroku Dev Center
How to share a postgres database between two separate Heroku applications!
tags: heroku ...
This was written in 2014:
"I’ve been digging pretty deep into the Software Engineering literature to prepare a new course I am developing and came across this. It’s always fun to have a top-10 list even in the driest of topics, so here is Barry Boehm’s “Timeless Principles (+) and Aging Practices (-) of Software Engineering!"
TimelessPrinciplesandAgingPractices
For each decade, I’ve tried to identify two timeless principles headed by plus signs; and one aging practice, headed by a minus sign.
From the 1950’s + Don’t neglect the sciences. This is the first part of the definition of “engineering”. It should...
Based on my own experience, some of my favorite books and blog posts, and advice from friends, I’ve come up with this. What do you think? What should I add? Please comment!
Personal Effectiveness Rules of Thumb
When you have your best idea ever, always remember that the idea is just 1% of the journey Yes, ideas are cheap. At least in the world of software engineering and product development, everyone and their grandfather have ideas that may be great. The distance between the idea and the reality is great. Here’s Steve Jobs about ideas
...
Other than the headline, which is amusing, I am not sure about the methodology or significance of this study in US News (do they still exist?). And it seems that many professions, e.g. College Professor, don’t even get mentioned. Is it because they don’t even make the top 100? I doubt it. Anyway, Here’s more about the US News and World Report’s assessments:
“All jobs aren’t created equal. In fact, some are simply better than the rest. U.S. News 100 Best Jobs of 2014 offer a mosaic of employment opportunity, good salary, manageable work-life balance and job security. Some careers offer just the right mix of these compone...
It’s obvious if you think about it, but this article drives some points home. If you use some kind of web service to read, listen, watch, charge, use, borrow or share stuff, that company not only knows what you’ve (read, listened to, etc.) They also know much more specifically how you did so: Did you stick with it to the end, did you do it from a particular place, at a particular time? Did you do it in one sitting or over a day or a week or a month?
If you then combine such observation across a farily large group of peope you can learn amazing things. Like how many people finish your book, or how far through it they get before abandoning it. Do they listen to the whole song? At what episode...
This article is a bit harsh/one-sided, but I still thought it was interesting to see an attempt at comparing programming as practiced in two very different contexts.
What’s the difference between college-level and corporate programming? | Ars Technica:
Programming in school and programming in the real world are so inherently different to the point where there’s actually very little overlap. CS will prepare you for “real world” software development like athletics training would prepare an army for battle.
In a vaguely related article, think about this: In the moder...
I don’t know if I mentioned that I’m teaching Engineering Entrepreneurship at Olin. What a cool school! While the two course have existed at Olin, I was asked to re-invent them so to a great extent they are new.
Here’s a blurb that appeared in the ...
I was amazed today when in a group of 25 undergraduate engineering students, only three had heard the word kluge. When I explained what it was, it still did not ring a bell. When I asked how they refer to an ugly, clunky, scotch-taped solution, inelegant and embarrassing, but which basically works, they came up with “hack”.
Query: Is the word “kluge” becoming obsolete among the geek community?
We all want to be star engineers, right? Here’s an intriguing article from about ten years ago engineers from top companies helped to dispel the myths about star performers and uncover the surprising secrets of stellar achievement for engineers.:
“In 1985, I was asked a series of questions, and have been tracking down their answers ever since. Bell Laboratories (then part of AT&T Corp. and now mostly belonging to Lucent Technologies Inc.) was perplexed. It hired the best and the brightest from the world’s most prestigious universities, but only a few lived up to their apparent potential for brilliance. Most developed into solid pe...
One of the tensions that I have seen in teaching software engineering is whether something should be viewed as legitimate research or part of the craft of computer engineering.
It’s a slippery slope that I myself didn’t have a good articulation for.
I came across this in a newsgroup which I think is a pretty good description. The writer is referring to Researching Information Systems and Computing...
I remember wondering about this when I was in college — this is before I really knew anything about computers.
I noticed that our computer center charged by the minute of processor time and it was a lot! I remember people freaking out because their random prime number generator ran overnight and the department got billed an unexpected $1,000.00. And they were in trouble!
So it must cost a lot to get these computers to do all these calculations, I thought. So, I asked the local expert, how much does it cost, then, when the computer isn’t doing any calculations? He laughed. He said, it costs the same, whether it’s calculating or not. How weird.
Here’s an interesting ...
Great review article:
“In this article I digested a number of MapReduce patterns and algorithms to give a systematic view of the different techniques that can be found in the web or scientific articles. Several practical case studies are also provided. All descriptions and code snippets use the standard Hadoopâs MapReduce model with Mappers, Reduces, Combiners, Partitioners, and sorting. This framework is depicted in the figure below.” (from Highly Scalable)
Worth reading if you are interested in how Hadoop and friends might apply to the problems that you are trying to solve: “MapReduce Patterns, Algorithms, and Use Cases”
An interesting article in Forbes about Software Developers and Development in general, The Rise of Developeronomics. While here and there he is promoting old chestnuts which may or may not be true there is a core argument which is quite intriguing. It goes something like this:
All companies are becoming software companies, meaning they are driven by software whatever their business actually is. Hence a key resource to a successful business is an effective, efficient and scalable capability to create innovative computer driven systems. Programmers are scarce. Hence the way to invest in the future is to culti...
Are you thinking about hiring a software developer to build your system? Here are “8 Things You Ought to Know If You Do Not Know Anything About Hiring a Software Developer“. He says:
“I did not come to this industry with a software background. I studied math, physics, business, then finance. But over the past 12 years or so, I have learned quite a bit about how to pick a software… “friend”. So let me share with you 8 things I would want to know if I was starting afresh.” (from “8 Things You Ought to Know If You Do Not Know Anything About Hiring a Software Developer“)
Can I be your friend?
From an article called “Effective Customer Consultant Relationships”:
“As a customer, how can you get the most out of your consultants? As a consultant, how can you deliver what your customers really want? I have been on both sides of this relationship and experienced both successful and unsuccessful results. In this post, I will go through the typical aspects of these types of relationships and identify action items that I have used to forge effective and lasting customer consultant relationships for both parties.” (from “Effective Customer Consultant Relationships”)
If you are a tech consultant or are thinking of hiring one, this article has some excellent advice.
If you are interested in design and especially design and architecture of software, and you have a philosophical bent, you will enjoy this essay… I can’t even attempt to summarize it’s content, and even the abstract from the paper itself is quite inscrutable:
“Conceptual integrity arises not (simply) from one mind or from a small number of agreeing resonant minds, but from sometimes hidden co-authors and the thing designed itself.” (From Designed As Designer)
What can I tell you. The author is the Richard Gabriel, a luminary of the computer world. Here’s the article: Designed as Designer.
Due to an unusual set of coincidences I have 3 different Macintosh computers in my office today so I could run performance comparisons. After a brief bit of research I came across XBench, a free, open source benchmarking suite. I am not positive that it is the state of the art, but it’s quite popular. Here’s what I found:
Mac Pro, Early 2009, with 6 Gig of memory and a Solid State Disk (SDD) (MacPro4,1)
Overall: 234.09, CPU: 198.42 Memory: 474.51 Graphics: 379.61
MacBook Air, Late 2010, with 4 Gig of memory and a SDD (MacBookAir3,2)
Overall: 126.07 CPU: 149.17 Memory: 198.90 Graphics: 159.94
Macbook Air, Late 2011, with 4 Gig of memory and a SDD (MacBookAir4,2)
Overall: 199.85 CPU: 205.25 Memory: 508.89 Graphics: 316.38
I know, you want to know the units, and I don’t know them. But still you can see remarkably that the brand new MacBook Air is almost as performant as the huge towering Mac Pro, Pretty amazing and telling.
Just one phrase that jumped out of the new missive from Zuck about privacy:
“As a matter of fact, privacy is so deeply embedded in all of the development we do that every day tens of thousands of servers worth of computational resources are consumed checking to make sure that on any webpage we serve, that you have access to see each of the sometimes hundreds or even thousands of individual pieces of information that come together to form a Facebook page.” (fromOur Commitment to the Facebook Community)
When I tell (non computer) people that it takes hundreds or th...
I’ve been an avid user and recommender of Pivotal Tracker, an excellent, simple to use, Scrum based project manager. I still love it a lot. 
But, today I came across a very clean and simple alternative called Trajectory.

You may want to check it out. I can’t say why we need Trajectory where we have Tracker. My guess is that Trajectory is much less than a scrum system, maybe it’s a structured way to communicate stories and design between client and developer.
Why doesn’t every one love Rails? I am surprised when I run into someone (Pat?) who’s not so sure about Rails. Usually it’s about scalability.
[I warned you this is a geeky post]
When I am designing or building a system and am questioned about whether writing it in Ruby or Rails is a good idea. Or if someone asks me my opinion or for advice about whether it makes sense that his or her developers are recommending Rails for a big site.
What I believe is that scalability has to do with the overall system architecture — caching, queueing, horizontal scalability and so on. It does not have to do with the programming language. (What the LivingSocial guy said about this wasn’t quite ...
Some choice quotes to introduce a good lecture about Engineering:
‘…[snip], Napoleon dismissed Robert Fulton’s claim of a steam-powered ship: “What, sir, would you make a ship sail against the wind and currents by lighting a bonfire under her deck? I pray you excuse me. I have no time to listen to such nonsense.”
Or consider the pronouncement of Dr. Dionysus Lardner, professor at University College in London, on the prospects of a new form of transportation: “Rail travel at high speed is not possible because passengers, unable to breathe, would die of asphyxia.”
Or hear the opinion of the commander of the army’s cavalry in 1938, just before ...
This article is called “Fact and Folklore In Software Engineering” and while it is about that, the part that was more interesting to me was the first section talking about Scientific Discourse:
“This article is about why some “facts” refuse to die, and about how to avoid being fooled by opinion disguised as scientific “fact”. We start, therefore, with some observations on science and facts.” (from “Fact and Folklore In Software Engineering”)
Here he goes on to describe “The messy workings of scientific discourse”. It’s clarifying explanation of a process that we understand intuitively but actually ...
A seminal article about an advanced topic in software testing: Mocks aren’t Subs
“The term ‘Mock Objects’ has become a popular one to describe special case objects that mimic real objects for testing. Most language environments now have frameworks that make it easy to create mock objects. What’s often not realized, however, is that mock objects are but one form of special case test object, one that enables a different style of testing. In this article I’ll explain how mock objects work, how they encourage testing based on behavior verification, and how the community around them uses them to develop a different style of testing.” (from Mocks aren’t Subs by Martin Fowler)
I’ve been working quite a bit on the Open Source Digital Voting foundation project over the last 9 months or so. It’s really weird but I’ve turned myself into a mini-expert on how elections are organized and run here in the USA. It’s fascinating and way complicated. OSDV is a non-profit organization dedicated to developing a suite of election (as in Democracy) hardware and software.
The umbrella name for that project is TrustTheVote: an open source project, which will work closely with election officials around the country to learn requirements and then develop software which in turn will be offered free of charge to those who want to de...
Follow along as I develop the course: Brandeis University Web App Dev, Mobile App Dev and Incubator I’m fortunate to have the opportunity to co-teach 3 courses next year at Brandeis University. It’s something that I have wanted to do for a long time now and I am looking forward to it. As an experiment, I thought I would publish the course notes as I am developing them and perhaps get some feedback, suggestions or even volunteer guest speakers.
Here are the blurbs:
Web Application Development: *An introduction to web programming that covers t...
Who would think that our advanced space fairing craft have a YERO (Year End Rollover) problem? From an article about the YERO problem:
“The YERO problem relates to the shuttle orbiter’s computers needing to reset through a change of year, which could cause a glitch on orbit.” (from Nasa News)
I’ve been reading more about the pre-Shuttle space program. One factoid which is almost hard to believe was that the computers on the Apollo had the power of a modern day digital watch. I bet they didn’t have a YERO problem 🙂
I heard about this book, “Dreaming in Code”… it looks really interesting but kind of depressing to read which is why I didn’t run out to buy it. Building software is just really really hard and for some reason no matter how smart and experienced we are, projects still can easily run themselves into the ground.
I’ve often heard (and said) why can’t we build software the way we build bridges? People building bridges don’t have the kind of disasters that we have in software. (Note: Joel on Software’s blog’s logo is a bridge…)
Anyway, you should check heck out this post from ...
Guardian Unlimited Technology | Technology | Why we all sell code with bugs
Fun article about why there’s always bugs in software. If that’s a surprise to you, well… read this article!
(tags: software development bugs)
Nine Steps to Delivering Defect-Free Software
Another article on the question of developing ‘bug free code’…
(tags: software development bug)
Devshop.com – Really smart project management, just for software teams.
This looks like an interesting entry into ‘on demand’ project management. See the site for screenshots. They are still looking for beta testers.
(tags: ajax cool Programming Methodology Software tools)
The Joel on Software Discussion Group – Why I Hate Frameworks
If you get too carried away with frameworks and architecture, this is a good reality check.
(tags: architecture funny)
Just add this one to your reading list:
“(XP) challenges many of the common assumptions about software development. Of these one of the most controversial is its rejection of significant effort in up-front design, in favor of a more evolutionary approach.
To its detractors this is a return to “code and fix” development – usually derided as hacking. To its fans it is often seen as a rejection of design techniques (such as the UML), principles and patterns. Don’t worry about design, if you listen to your code a good design will appear.” (From “Is Design Dead?”)”
Thought-provoking.
Technorati Tags: software, recommended, technical
Adam Bosworth’s speech Adam Bosworth’s an interesting guy, and very smart, and has been deeply involved in web services and many related technologies for years. He really knows this stuff. And it’s interesting, because one of the key Web Services technologies is SOAP, a loosely coupled, “webbish” way of doing remote procedure calls.
[Aside #1: If you feel your eyelids getting heavy around now, I appologize for not labeling this entry as “GEEK” but I thought it was border line]
...