All blogs / Software / engineering practice
mike.mainguy
Software / engineering practiceJava / JVMRuby / RailsEngineering management / careers
- Posts
- 310 from 19 Nov 2007 to 20 Jun 2025
- Posting
- now and then
- Kind
- personal blog
- Feed
- https://mikemainguy.blogspot.com/feeds/posts/default
2025 2
2024 3
2023 10
- MACH TEN Addendum: for companies wanting to use MACH platforms
- Scaling teams: Two strong oxen or 1024 chickens?
- Now not to do identity management (read this nintendo) [from 2019]
- Composable Software Architecture
- ChatGPT and generative AI will not eliminate programmers
- A Practical Application of Machine Learning
- web xr and the immersive web
- A Story About Artifical Intelligence
- The Metaverse versus The Immersive Web
- Why Digital Transformations Falter
2022 5
2021 4
2020 2
2019 2
2018 1
2017 4
2016 13
- Five simple steps to select the ultimate software development tool
- News media bias and how to read through it
- The end of election 2016 is near! (Thank God)
- My perspective on female programmers
- Honor, Dignity, and Victim Culture
- Headless rasberry pi 3 install for OSX for non-noobs
- Do you test your IT operations and business processes?
- Let it crash
- Problems in the internet of things
- Painting while blindfolded
- The craft of software development
- Process versus flexibility
- Navigating The Internet of Things
2015 19
- Lies, Damn Lies, and Virtualization
- Sideways customer service
- The (slightly tongue in cheek) role of the database administrator
- How to design a useful javascript framework
- Why I'm pushing your buttons
- Real world Internet of Things
- Please use ANSI-92 SQL Join Syntax
- Amdahl's Law, Gustafson's Law, and user experience stretching to optimize parallel web design
- The Programmers Code
- Simple thoughts versus simple solutions
- the myth of asynchronous JDBC
- Installing Varnish on Cento6
- Refactoring 101 for complete beginners
- The Hazard of Not Taking Things Personally at Work
- Installing virtualbox guest additions on Centos 7 minimal image
- My (potentially bad) parenting advice
- Accuracy Versus Precision
- Trail of tears architecture anti-pattern
- Minecraft is the new Doom
2014 13
- Why software estimates change and inflate
- Easily changing java versions in OSX
- Why OSX sucks and you should use ubuntu instead
- It's not NoSQL versus RDBMS, it's ACID + foreign keys versus eventual consistency
- Things to remember about information security
- Avoid hibernate anemia and reduce code bloat
- Success, Failure, and Tradition
- We are not our code
- Through The Looking Glass Architecture Antipattern
- Women in technology
- Testing Love and Polyamorous TDD
- The brokenness of java in the cloud
- Continuous integration versus delayed integration
2013 14
- Web application framework popularity over time
- Running off the jetway or how to make decisions under pressure
- Running and software development
- Using Olark online chat component
- Fun with character encoding and when to use ISO8859 instead of UTF-8
- MQTT over websockets with javascript apache and active mq
- An unflattering commentary on Rackspace cloud server security
- Java's problem is that Jidigava idigis gididibidigeridigish
- Software is design, how ruby is better for that job than java
- Fixing Perverse Incentives in Software Development
- When to refactor code
- Apologetic Agile Development
- java static fields
- Database pagination on mySql and Oracle
2012 30
- Ubuntu 12.04 on macbook pro
- Developer's Creed
- Effectively communicating software requirements - PART 1
- equals and hashCode for dummies (again)
- Fixing Hibernate, DB2, H2, and Boolean Issues With a User Type
- How to juice your java performance
- Use computers for repeatable tasks, use humans for creative tasks
- How to shoot yourself in the foot with HashCodeBuilder
- Clean code is an important quality, but not the MOST important
- Java programmers: Code to the interface, even if the interface is a class
- ya ain't gonna need it until ya need it
- All java archeditects read this
- The Notoriously Tricky "Step 0"
- Exploiting the Cloud for Personal Productivity
- Always Pull Branches When Merging
- Confessions of a Morning Person
- Lotus Notes, A Lesson in Poor User Experience
- The VB Model versus the Delphi Model
- Disruptive changes fuel innovation, innovation creates disruptive changes
- Being too early devalues your time
- Why some people think messaging is more scaleable
- Run your enterprise like a startup
- Aggressive control freaks make great programmers
- Using Mongoid, MongoHQ, and Heroku
- Governance Gone Wild
- Architectural Antipattern: "Through The Looking Glass"
- The Best Practices Myth
- people are not interchangeable cogs, they are more like the wind
- The difference between Black Swans, Flying Green Monkeys, and Unicorns
- All software is a commodity
2011 57
- Java classes, objects, and instances demystified (hopefully)
- The java collections framework for newbies
- Is your team a cross country team or a soccer team?
- How to ask intelligent questions
- stop branching! agile is soccer, not american football
- I beat ruby on rails by 6 months
- Gorillarinas, Putting the agile skirt on a waterfall Gorilla
- Promiscuous programming
- Two factor developer personality type scoring
- My javascript parseInt("08") surprise!
- JIRA, Pivotal Tracker, and Playnice.ly for issue tracking
- Should I use mongodb, couchdb, or redis?
- Amazon silk using webkit and SPDY
- Using git in an agile environment
- cross platform mobile development with phongap, rhomobile, and titanium
- What's the difference between macports and homebrew?
- Using Devise for authentication in rails 3
- defining IaaS, PaaS, and SaaS for cloud computing
- Another Ruby 1.9.2 gotcha hashes are not arrays
- Lucid Charts and Gliffy for online diagramming
- Push versus pull deployment models
- Groupon makes me tired
- The overhead of annual enrollment in the US
- Heroku is a bus, Engineyard is a car
- The economics of scaling software development teams
- Ruby 1.9.2 changes and i18n on Mac OSX
- git and github not change mangement tools
- Avoid Bowfinger Syndrome
- javascript sleep method
- Adding methods at runtime in javascript, ruby, and java
- Object Oriented Javascript
- Git for dummies
- The difference between urgency and importance
- Deciding on NOSQL vs RDMS
- Technology decision matrix (Using Ubuntu, Redhat & Suse as examples)
- Hey GOF, It's not a good metaphor unless you can drop it on your foot
- Coaching a winning team
- The Joystick Soccer Coach
- The ruby and java fightclub
- Productivity, billable hours, and expert craftsmen
- The difference between Scalability, Performance, Efficiency, and Concurrency explained
- Computus in scala and java
- Amazon EC2 Collapse and designing for cloud computing
- How important is the devops movement
- Parsing RSS in java and Jruby
- If it's stupid but it works, it's still stupid, it just also happens to work
- Simple software estimation guidelines
- Monoglot Developers are like Stereotypical Arrogant Americans
- Hard problems versus hard solutions
- Example of the difference between Ruby and Java
- Excellent customer service requires fixing broken windows
- This difference between agility and speed
- Change your change management process to support agility
- The SIDPERS-3 boondoggle
- anti-fragile software
- Is time a side effect of universal expansion?
- Your enterprise domain model should not be represented in code
2010 62
- Making the MQ versus RPC decision
- My experience at Denny's and three rules for success
- Rails, Grails, and convention over configuration
- The internet is causing the world to shrink
- If IDE's Were Star Wars Characters
- Why you should purchase Intellij.
- GWT is not a substitute for a web developer
- Architecture and Scaling Cloud Applications
- Just enough math to be dangerous
- Cloudant couchdb is free
- Rails and grails package management
- Rails and grails job scheduling
- Technology and programming trends
- Hacked Server on Rackspace
- Overloaded terms in the Ruby community
- Ruby on rails and groovy grails comparison
- jQuery ajax performance tuning
- Amazon EC2 versus rackspace cloud hosting
- db2 locking and MVCC
- HTTP 1.1, rfc 2616 and reading comprehension
- Secure your rackspace cloud server
- Cloud Computing Gotchas part II
- Cloud Computing Gotchas
- garage sales part two (geocoding and rendering)
- Garage sale maps
- tether droid eris to Ubuntu 10.04 machine
- My verizon bill
- What should I post online?
- Active Directory Authorization with Java
- Why windows is useful in the cloud
- firefox 3.6 and google chrome
- Why windows will not work in the cloud
- Kmart pharmacy customer (dis)service
- tech search
- Programming with eclipse
- Linux in the cloud (Ubuntu 10.04 vs RHEL 5.4)
- Cavemen, Exploding Nails, and Software Development
- Open development
- Window decorations in ubuntu 10.04
- NoSQL versus RDBMS
- The Psychology of user interfaces
- Technical Leadership
- Are you a really smart web developer?
- The cult of being busy
- Google Testing Blog: Clean Code Talks - Unit Testing
- What are unit tests?
- Those lazy developers....
- Were you talking about ME in your blog?
- gambler's fallacy
- The Peter Principle was wrong-ish
- Groovy, Eclipse, and Karmic Koala
- Chuck Norris programming language
- What are developers going to do?
- Business Analysts and Software Developers
- We're going crazy with all this service stuff
- Pandora
- media cache (with caching)
- App engine media cache
- The Road to Enterprise Cloud Computing
- Leadership - Followership
- Information Architecture
- T. Boone Pickens, Bill Gates, Warren Buffet, Steve Jobs, Eddie Lampert
2009 48
- Ira Glass on Storytelling
- The elves leave middle earth
- ATI drivers on Karmic Koala
- Bad code gone wild
- Ubuntu Cafe
- Crazy autogenerated email signatures
- Sometimes you need to break the rules
- dd-wrt on a linksys router.
- Building a custom debian package
- opennms install on ubuntu
- Requirements are not necessarily required
- Think like a genius
- The hazards of microbenchmarks
- Hill climbing problem with your career
- The Curse of Knowledge
- Elusive software requirements
- Upgrading Linux ATI drivers on ubuntu
- Transition from two guys in a garage to multinational company
- Cakes, Onions, and Ogres have layers, are you sure your code needs them?
- Project insanity
- I met me today
- What is development time?
- Broken Design
- Difference between strategy and tactics
- Leadership styles
- Sharpening the saw
- The ulitmate software development tool
- The journey is the destination
- Lazy Man's web hosting
- Cultural regression
- Agile Enterprise Architecture
- Top Down Management
- Right to privacy
- The Human Factor
- Some Folks are Unreachable
- ALERT! EMERGENCY FIX REQUIRED!!!
- Meetings gone bad
- Commander's intent
- Kmart.com has a stretchy layout now!
- Do the right thing...
- Buying a new keyboard via Bricks and Clicks
- Motif ES 8 and linux
- Big three retail web stores
- Earn cash with google
- The Information Technology Genie
- Technological Decision Making
- Creating great teams
- Google App Engine Part II