From time to time, while developing jOOQ we take some moments to contemplate (and occasionally: rant) about our industry, our profession, our tools, our business. This is the place on our blog where we’re sharing these thoughts with you.
Programming Opinions
- Dogfooding in Product Development
- How to Write a Simple, yet Extensible API
- How to Create a Good MCVE (Minimal Complete Verifiable Example)
- Truth First, or Why You Should Mostly Implement Database First Designs
- Don’t Overdo the “Principle of Least Astonishment” Cargo Cult
- Don’t Extract Everything Into a Method
- ORMs Should Update “Changed” Values, Not Just “Modified” Ones
- 10 Tips on How to be a Great Programmer
- The Open-Closed Principle is Often Not What You Think it Is
- Do You Really Have to Name Everything in Software?
- SQL, Streams, For Comprehension… It’s All the Same
- When to Choose SQL and When to Choose NoSQL
- Why I Completely Forgot That Programming Languages Have While Loops
- “What Java ORM do You Prefer, and Why?” – SQL of Course!
- Say NO to Venn Diagrams When Explaining JOINs
- How Functional Programming will (Finally) do Away With the GoF Patterns
- Turn Around. Don’t Use JPA’s loadgraph and fetchgraph Hints. Use SQL Instead.
- UI Developers! Choose Sensible Default Ordering!
- Divided we Stand: Optional
- Top 10 Useful, Yet Paranoid Java Programming Techniques
- There is no Such Thing as Object-Relational Impedance Mismatch
- NULL is Not The Billion Dollar Mistake. A Counter-Rant
- What’s Even Harder Than Dates and Timezones? Dates and Timezones in SQL / JDBC!
- JavaEE or Spring? Neither! We Call Out For a Fresh Competitor!
- How JPA 2.1 has become the new EJB 2.0
- 3 Reasons why It’s Okay to Stick with SQL
- The 10 Things Everyone does Wrong when Committing Pull Requests
- The Inconvenient Truth About Dynamic vs. Static Typing
- Stop Claiming that you’re Using a Schemaless Database
- The dreaded DefaultAbstractHelperImpl
- Using Your RDBMS for Messaging is Totally OK
- This is the Final Discussion!
- Why You Should NOT Implement Layered Architectures
- Look no Further! The Final Answer to “Where to Put Generated Code?”
- Top 10 Very Very VERY Important Topics to Discuss
- Stop Unit Testing Database Code
- What Big Data Really Is
- Conference Legal Disclaimers
- The Top 10 Productivity Booster Techs for Programmers
- Please, Run That Calculation in Your RDBMS
- How to Eliminate Bugs Through High Cohesion
- When to Use a Framework
- Do You Want to be a Better Software Developer?
- Why Did SQLJ Die?
- Why Your Boring Data Will Outlast Your Sexy New Technology
- The Crystal Ball. Or, Oops, Michael Stonebraker did it Again
- MIT Prof. Michael Stonebraker: “The Traditional RDBMS Wisdom is All Wrong”
- What if every object was an array? No more NullPointerExceptions!
- High Complexity and Low Throughput. Reasons for Using an ORM.
- The Golden Rules of Code Documentation
API Design
- All Libraries Should Follow a Zero-Dependency Policy
- Dear API Designer. Are You Sure, You Want to Return a Primitive?
- A Curious Incidence of a jOOQ API Design Flaw
- The Danger of Subtype Polymorphism Applied to Tuples
- What the sun.misc.Unsafe Misery Teaches Us
- Do Not Make This Mistake When Developing an SPI
- This Common API Technique is Actually an Anti-Pattern
- Yak Shaving is a Good Way to Improve an API
- Thou Shalt Not Name Thy Method “Equals”
- You Will Regret Applying Overloading with Lambdas!
- How Nashorn Impacts API Evolution on a New Level
- Keeping things DRY: Method overloading
- API Designers, be Careful
- Language Design is Subtle
- Why Everyone Hates Operator Overloading
- Advanced Java Trickery for Typesafe Query DSLs
- When Source Code Comments Indicate Trouble
- Deep Stack Traces Can be a Sign for Good Code Quality
- On Friday Dec 13th 2013, Things *WILL* go Wrong
- Why Staying in Control of Your SQL is so Important
- The Dangers of Correlating Subtype Polymorphism with Generic Polymorphism
- Rare Uses of a “ControlFlowException”
- How to Design a Good, Regular API
- Defensive API evolution with Java interfaces
- Bloated JavaBeans™, Part II – or Don’t Add “Getters” to Your API
- The Visitor Pattern Re-visited
- The good API design
- The Java Fluent API Designer Crash Course
- Overload API methods with care – the sequel
- Overload API methods with care
Open Source and Licensing
- What we Need is Standardised Non-OSS Licenses
- With Commercial Licensing, Invest in Innovation, not Protection
- Open Source Doesn’t Need More Support. It Needs Better Business Models
- Suis-je Groovy? No! What Pivotal’s Decision Means for Open Source Software
- The Caveats of Dual-Licensing
- The “Free”, “Standard”, “Open” Software Heresy
- Free as in Beer has caused Heartbleed (and Much More)
- Open Source Completely Underestimates Contributor License Agreements
- Free Open Source with Commercial Support
- The Open Source Bikeshed.
- Oracle GlassFish, or Why You Should Think About Open Source Again
- Who Says “I Want to Contribute” ?
- A Significant Difference Between Open Source and Commercial Software
- 10 Reasons not to Choose a Particular Open Source software
- On Terms and Conditions
- The true spirit of Open Source
Other musings
- The 5 Golden Rules of Giving Awesome Customer Support
- RAM is the new SSD
- How to Debug Your Maven Build with Eclipse
- Use This Preference to Speed up Your Eclipse m2e Configuration
- Is Your Eclipse Running a Bit Slow? Just Use This Simple Trick!
- One Year After Java 8’s Release, IDEs and Compilers are not Fully Ready Yet
- Top 5 Useful Hidden Eclipse Features
- Eclipse’s Awesome Block Selection Mode