From time to time, I come across a statement that every service on the Internet must have an API, or people behind this service are doing it wrong. This phrase usually applies specifically to publicly available API.
As a user who stands to benefit from increased number of services allowing third-party applications and mashups, I certainly [...]
Entries Tagged as 'software engineering'
On Dangers of Prematurely Making API Public
February 6th, 2010 · 2 Comments
Tags: Internet · software engineering
Normal Accidents in Complex IT Systems
January 11th, 2010 · 3 Comments
Designing a fully-automated or nearly-fully-automated computer system with many moving parts and dependencies is tricky, whether a system is distributed, hyper distributed or otherwise. Failures happen and must be dealt with. After a while, most folks grow up from “failures are rare and can be ignored” to “failures are not that rare and can not [...]
Tags: distributed · infrastructure development · software engineering
Standalone Web Front Door a Must in EC2?
October 13th, 2009 · 4 Comments
Most of you have probably heard about a recent outage at BitBucket. In a nutshell, their systems hosted at AWS came under a UDP flood DDoS attack, which led to significantly increased traffic, which led to saturation of their local network interface, which led to their being unable to connect to their data stored on [...]
Tags: cloud computing · infrastructure development · software engineering
The Concept of Hyper Distributed Application
August 18th, 2009 · 1 Comment
Most folks in the industry are familiar with “distributed applications.” If app components are running on multiple hosts and need to communicate with each other using network, the app is said to be distributed.
Distributed applications are known for complexity of assuring all components are on the same page as to what’s going on around them. [...]
Tags: Internet · distributed · software engineering
Electrical and Plumbing Analogies in Application Monitoring
August 10th, 2009 · Comments Off
Water and electricity are two components without which a modern home can’t function well. Both are provided as a utility, and both have strictly defined access points from which they can be consumed – taps for water and outlets for electricity.
But there are also differences. Every child knows that electric shock can cause injury even [...]
Tags: software engineering
Developer’s Attempt to Define Cloud Computing
July 6th, 2009 · 6 Comments
I have been closely following cloud computing for many months now. As a developer, I get often frustrated by lack of clear and widely accepted definition of what cloud computing actually is. This is a problem, because without a definition, every imaginable operation performed over the Internet all of a sudden became a “cloud.” It [...]
Tags: cloud computing · software engineering
Full Data vs Incremental Data in Messaging
June 25th, 2009 · 1 Comment
My recent experiments with messaging for a distributed application led to a realization that I would like to share with you in this post. It’s not an earth shaking discovery but you may still find it interesting.
Do you remember an old Unix command to create tape backups called dump? Remember its concept of levels? To [...]
Tags: rabbitmq · software engineering
Why I Sometimes Prefer Shell To Ruby or Python
June 11th, 2009 · Comments Off
Shell was among the first things I got familiar with when I was introduced to Linux. It’s not a typical programming language, primarily due to lack of easy-to-use high-level data structures such as hashes and arrays (anticipating your objection to this – note I said “easy-to-use”). This may explain why I often get funny looks [...]
Tags: python · ruby · software engineering
Branching In Git When Working On Big New Features
May 31st, 2009 · Comments Off
A note to self.
When starting to work on a new big feature, always set up 2 branches for it. Say FEATURE_work and FEATURE_integration. Do your regular development in FEATURE_work committing as often as you want. When you reach certain milestones (but entire feature is still not ready yet), squash merge FEATURE_work into FEATURE_integration. When entire [...]
Tags: software engineering



