Archives
2024 October
- Oct 31 - Holy Dev Newsletter October 2024
2024 September
- Sep 30 - Holy Dev Newsletter September 2024
2024 August
- Aug 31 - Holy Dev Newsletter August 2024
2024 July
- Jul 31 - Holy Dev Newsletter July 2024
2024 June
- Jun 30 - Holy Dev Newsletter June 2024
2024 May
- May 31 - Holy Dev Newsletter April and May 2024
- May 16 - My digital tools and routines (2024)
2024 March
- Mar 21 - Hands on Rama, day 3: Foreign keys and data integrity, macros, queries
- Mar 21 - Holy Dev Newsletter March 2024
- Mar 17 - Rama: How to achieve a transactional update across partitions
2024 February
- Feb 29 - Holy Dev Newsletter February 2024
- Feb 26 - Hands on Rama, day 2: Rewrite CAS, finish basic C(R)UD
2024 January
- Jan 31 - Holy Dev Newsletter January 2024
2023 December
- Dec 31 - My year 2023 in review
- Dec 31 - Holy Dev Newsletter December 2023
- Dec 21 - Hands on Rama, day 1: Setup, idempotent create & update
- Dec 20 - Exploring Rama, the platform for writing backends 100x more efficiently
- Dec 15 - PostgreSQL & JDBC: How to select rows matching pairs of values
2023 November
- Nov 30 - Holy Dev Newsletter Nov 2023
- Nov 19 - The Four Heads of Complexity
2023 October
- Oct 31 - Holy Dev Newsletter Oct 2023
2023 September
- Sep 30 - Holy Dev Newsletter Sep 2023
- Sep 26 - Include interactive Clojure/script code snippets in a web page with SCI & friends
- Sep 15 - Accessing Google API with OAuth2 and a service account from Clojure
2023 August
- Aug 31 - Holy Dev Newsletter Aug 2023
2023 July
- Jul 31 - Holy Dev Newsletter July 2023
- Jul 28 - When not to use Fulcro?
- Jul 01 - Book highlights: Escaping the Build Trap: How Effective Product Management Creates Real Value
2023 June
- Jun 30 - Holy Dev Newsletter June 2023
2023 May
- May 31 - Holy Dev Newsletter May 2023
2023 April
- Apr 30 - Holy Dev Newsletter April 2023
- Apr 01 - Holy Dev Newsletter March 2023
2023 February
- Feb 01 - Get insight into Pathom 3 in Fulcro with Pathom Viz
- Feb 01 - Holy Dev Newsletter February 2023
2023 January
2022 December
- Dec 31 - First craft a language then build your software
- Dec 31 - My year 2022 in review
- Dec 27 - Fulcro Lesson: Detached Root Component (Form)
- Dec 12 - Clojure is in fact a trinity - of language, interactive development, and structural editing
2022 November
- Nov 30 - Holy Dev Newsletter November 2022
2022 October
- Oct 31 - Holy Dev Newsletter October 2022
- Oct 22 - PostgreSQL: From JSON to table and back
- Oct 11 - Signing git commits with a ssh key using 1Password
2022 September
- Sep 30 - Holy Dev Newsletter September 2022
2022 August
- Aug 31 - Holy Dev Newsletter August 2022
2022 July
- Jul 31 - Holy Dev Newsletter July 2022
- Jul 03 - Using React.forwardRef in Fulcro (and rendering a Fulcro component from a JS one)
2022 June
- Jun 30 - Holy Dev Newsletter June 2022
- Jun 25 - The trouble with list components in Fulcro
2022 May
- May 31 - Holy Dev Newsletter May 2022
2022 April
- Apr 30 - Holy Dev Newsletter April 2022
2022 March
- Mar 31 - Holy Dev Newsletter March 2022
2022 February
- Feb 28 - Holy Dev Newsletter February 2022
- Feb 11 - Code Study: Making code more functional
2022 January
- Jan 31 - Holy Dev Newsletter January 2022
- Jan 21 - Fulcro Troubleshooting Decision Tree
2021 December
- Dec 31 - My year 2021 in review
2021 September
2021 August
2021 June
- Jun 25 - What is simplicity in programming and why does it matter?
- Jun 21 - Clojure is frustrating... and it is a good thing
- Jun 10 - Specific vs. general: Which is better?
- Jun 09 - Productivity killers in enterprise programming - and how to overcome them
2021 May
2020 December
2020 November
- Nov 11 - Customizing the Gradle run task
- Nov 01 - The best team ever
2020 October
- Oct 23 - Spring Framework: Why I prefer a simpler solution nowadays
- Oct 15 - Want more from your frontend framework! Re-thinking web dev experience
2020 September
- Sep 30 - On crafting troubleshooting-friendly responses in web apps
- Sep 11 - Error handling in Fulcro: 3 approaches
2020 June
- Jun 23 - Pains with Terraform (again)
2020 January
- Jan 30 - My first month of Rust
- Jan 07 - Sharing large files on flaky networks with AWS S3 and BitTorrent
2019 December
- Dec 31 - My year 2019 in review
- Dec 25 - Error handling in Clojure Core.Async (and its higher-level constructs)
- Dec 24 - Secure REPL access for AWS Fargate services
- Dec 24 - A brief look at the internal structure of Clojure Zippers
- Dec 19 - Migrating my blog from Gatsby to a static site with Cryogen and AsciiDoctor
- Dec 12 - nREPL over HTTP(s) with Drawbridge in 2020
- Dec 06 - AWS Fargate: Troubleshooting the dreaded '`service .. is unhealthy`'
- Dec 02 - How Clojure helped us recover from bad data
2019 November
- Nov 19 - Leiningen: Split an uberjar into dependencies.jar and app.jar (to optimize Docker layers and AWS Lambda functions)
- Nov 11 - Choose Clojure not because it is easy but because it is "`weird`"
2019 October
2019 September
- Sep 27 - Fixing JSON out-of-memory error with streaming and MapDB
- Sep 26 - Applying Spec-based generative testing to a transformation pipeline - tips and lessons learned
- Sep 18 - Clojure: Common beginner mistakes (WIP)
2019 May
2019 March
- Mar 27 - Highlights from the talk '`Exploring four hidden superpowers of Datomic`'
- Mar 21 - Translating an enterprise Spring webapp to Clojure
- Mar 07 - Clojure vs Java: Troubleshooting an application in production
- Mar 06 - Clojure vs Java: The benefit of Few Data Structures, Many Functions over Many Unique Classes
- Mar 01 - Solution design in Java/OOP vs. Clojure/FP - I/O anywhere or at the boundaries? - experience
2019 February
- Feb 13 - It will only take one hour… (On why programmers suck at estimating and the perils of software development)
- Feb 01 - Java/Spring App Troubleshooting on Steroids with Clojure REPL
2019 January
2018 December
- Dec 21 - AWS RDS: How to find out login credentials to the database
- Dec 13 - Migrating from Wordpress.com to a static site generated by GatsbyJS
2018 November
- Nov 26 - Java: Simulating various connection problems with Toxiproxy
- Nov 04 - How I got fired and learned the importance of communication and play time
- Nov 04 - Clojure - comparison of gnuplot, Incanter, oz/vega-lite for plotting usage data
- Nov 01 - How good monitoring saved our ass ... again
- Nov 01 - Beware the performance cost of async_hooks (Node 8)
2018 October
- Oct 17 - Monitoring process memory/CPU usage with top and plotting it with gnuplot
- Oct 05 - Troubleshooting javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
2018 March
- Mar 15 - Experience Report: Hiring for Clojure(Script) is Easy
- Mar 14 - Why we love AWS Beanstalk but are leaving it anyway
- Mar 14 - Pains with Terraform (perhaps use Sceptre next time?)
2018 January
2017 December
2017 May
2017 February
2016 March
- Mar 06 - It Is OK to Require Your Team-mates to Have Particular Domain/Technical Knowledge
- Mar 04 - Don't add unnecessary checks to your code, pretty please!
2016 February
- Feb 18 - 2015 in review
2015 December
- Dec 05 - Why we practice fronted-first design (instead of API-first)
- Dec 05 - A Costly Failure to Design for Performance and Robustness
2015 November
- Nov 27 - Troubleshooting And Improving HTTPS/TLS Connection Performance
- Nov 12 - Moving Too Fast For UX? Genuine Needs, Wrong Solutions
2015 October
- Oct 20 - Upgrade or not to upgrade dependencies? The eternal dilemma
- Oct 07 - Storytelling as a Vehicle of Change: Introducing ClojureScript for the Heart and Mind
- Oct 06 - Refactoring & Type Errors in Clojure: Experience and Prevention
- Oct 06 - An answer to CircleCI's "Why we’re no longer using Core.typed"
- Oct 01 - Nginx: Protecting upstream from overload on cache miss
2015 September
2015 July
- Jul 30 - Running Gor, the HTTP traffic replayer, as a service on AWS Elastic Beanstalk
- Jul 30 - AWS ebextensions: Avoiding "Could not enable service" (or .. disable ..)
- Jul 29 - Fixing a mysterious .ebextensions command time out (AWS Elastic Beanstalk)
- Jul 29 - AWS: Passing private configuration to a Docker container (via S3)
- Jul 22 - Book Review & Digest: Release It! Design and Deploy Production-Ready Software
2015 June
- Jun 19 - NDC Oslo 2015: Talk notes, recommended talks (security, FP, etc.)
- Jun 17 - Why do companies fail at adopting Functional Programming?
- Jun 17 - Notes from Troy Hunt's Hack Yourself First workshop
- Jun 17 - NDC: Async and Streaming JavaScript, We're All Doing it Wrong! (Promises, Streams, Rx)
- Jun 17 - Example: Functional Reactive Programming decisively beats Imperative on simplicity, length
- Jun 11 - AWS API: Proper syntax for filtering by tag name and value (e.g. describeInstances)
- Jun 02 - Mounting an EBS volume to Docker on AWS Elastic Beanstal
2015 May
- May 07 - OS X: Using scutils to discover whether/what a web proxy is in use
- May 07 - All-in-one Docker with Grafana, InfluxDB, and cloudwatch-to-graphite for AWS/Beanstalk monitoring
- May 06 - Hack: Quickly Verify That All Your Mocha/Chai Tests Have Valid Assertions
2015 April
- Apr 30 - My Highlights from Continuous Delivery and DevOps Conference 2015
- Apr 30 - iTerm coprocess reporting result of (Mocha) tests run via nodemon
- Apr 03 - Backup WD MyCloud to S3/Glacier with duplicity (build instructions included)
2015 March
- Mar 31 - AWS CloudWatch Alarms Too Noisy Due To Ignoring Missing Data in Averages
- Mar 27 - Git pre-commit hook that fails if "it.only" used (Jest/Jasmine)
- Mar 17 - There will be failures – On systems that live through difficulties instead of turning them into a catastrophy
- Mar 11 - A Usable Node.js REPL for Emacs
2015 February
- Feb 18 - The Are No Silver Bullets: Which Error Handling Style to Pick For a Given Configuration of Constraints?
- Feb 17 - Fix Shell Script Run via SSH Hanging (Jenkins)
2015 January
- Jan 26 - Challenging Myself With Coplien's Why Most Unit Testing is Waste
- Jan 13 - Running JavaScript Tests On a CI Server With Karma, Chrome And Fake X
- Jan 09 - Focus & Do the Simplest Thing Possible
- Jan 08 - Notes On Automated Acceptance Testing (from the Continuous Delivery book)
- Jan 08 - Continuous Delivery Digest: Ch.9 Testing Non-Functional Requirements
- Jan 05 - The blog's year 2014 in review
2014 December
2014 November
- Nov 21 - Book Review & Digest: Capital In The Twenty-First Century
- Nov 10 - Tiny, Tiny Steps - Experience Report Developing A Feature In Minimal Value-Adding Increments
- Nov 03 - Notes From CodeMesh 2014
2014 July
- Jul 31 - Most interesting links of July '14
2014 June
2014 May
- May 31 - Most interesting links of May '14
- May 21 - Fixing clojurescript.test failing with "ReferenceError: Can't find variable: cemerick"
- May 19 - Clojure/Java: Prevent Exceptions With "trace missing"
- May 13 - ClojureScript/Om: Spurious "Minified exception occured" With Advanced Optimizations
- May 12 - core.async: "Can't recur here" in ClojureScript but OK in Clojure
- May 05 - Graphite Shows Metrics But No Data - Troubleshooting
2014 April
- Apr 30 - Most interesting links of April '14
- Apr 30 - Clojure: How To Prevent "Expected Map, Got Vector" And Similar Errors
- Apr 28 - How to create and run Gatling 2.0 tests
- Apr 08 - Kioo: How to Troubleshoot Template Processing
- Apr 08 - Kioo: How To Replace The Whole Body
2014 March
- Mar 31 - Most interesting links of March '14
- Mar 31 - Framework Joy: Load in Hibernate Updates Data
- Mar 25 - How To Generate A Valid Credit Card Number For A Bin (First 6 Digits)
- Mar 24 - HttpServletRequest: requestURI/requestURL/contextPath/servletPath/pathInfo/queryString
- Mar 19 - Ansible: Best practices for deriving host-level var from a group var
- Mar 17 - Frustration-Driven Development - Towards DevOps, Lean, Clojure
- Mar 05 - Recursive Copy In Ansible 1.5 And --diff
- Mar 05 - Petitioning EU to act against Russian aggression in Ukraine
- Mar 04 - Ansible Troubleshooting Tips
2014 February
- Feb 28 - Most interesting links of February '14
- Feb 24 - JavaServer Faces Are Evil (draft)
- Feb 24 - Handling Deployments When Provisioning JBoss domain.xml (With Ansible)
- Feb 23 - Seek Understanding
- Feb 17 - The Risks Of Big-Bang Deployments And Techniques For Step-wise Deployment
- Feb 16 - Demonstration of Ansible Features With Control & Test VMs
- Feb 04 - JBoss Modules Suck, It's Impossible To Use Custom Resteasy/JAX-RS Under JBoss 7
- Feb 02 - A Secret Weapon Against Technical Debt
2014 January
2013 December
- Dec 31 - Most interesting links of December '13
- Dec 31 - 2013 in review
- Dec 30 - Bad Code: Are We Thinking Too Little?
- Dec 06 - Code Is Cheap, It's Knowledge Discovery That Costs
2013 November
- Nov 30 - Most interesting links of November '13
- Nov 27 - How I Learned to Avoid Magical Dependency Injection And Love Plain Java
2013 October
- Oct 31 - Most interesting links of October '13
- Oct 28 - The Failure of Governmental IT (Learnings From HealthCare.gov)
- Oct 28 - My Highlights From EuroClojure 2013
- Oct 04 - Fixed: Embedded Jetty Fails To Unpack With FileNotFoundException: Not a directory
2013 September
- Sep 30 - Most interesting links of September '13
- Sep 05 - Webapp Blue-Green Deployment Without Breaking Sessions/With Fallback With HAProxy
- Sep 03 - Test Puppet config of an existing node using Puppet Master via Vagrant
2013 August
- Aug 31 - Most interesting links of August '13
- Aug 24 - Clojure REPL stores the latest results in *1, *2, *3, exception in *e
2013 July
- Jul 31 - Most interesting links of July '13
- Jul 27 - Running A Leiningen/Ring Webapp As A Daemon Via Upstart (Ubuntu)
- Jul 23 - Installing & Troubleshooting Google Analytics 2013 (ga / analytics.js)
- Jul 12 - Creating A Chart With A Logarithmic Axis In Incanter 1.5.1
- Jul 05 - The Invisible Benefits Of Pair-Programming: Avoiding Wasteful Coding Excursions
2013 June
- Jun 30 - Most interesting links of June '13
- Jun 28 - Brief Intro Into Random/Stochastic/Probabilistic/Simulation/Property-Based Testing
- Jun 22 - Patterns of Effective Delivery - Challenge Your Understanding Of Agile (RootsConf 2011)
- Jun 21 - Installing Latest Node.JS And NPM Modules With Puppet
- Jun 16 - Making Sense Out of Datomic, The Revolutionary Non-NoSQL Database
- Jun 01 - Ignore requirements to gain flexibility, value, insights! The power of why
2013 May
- May 31 - Most interesting links of May '13
- May 23 - Tip: Include Context And Propose Solutions In Your Error Messages
- May 22 - Accessing An Artifact's Maven And SCM Versions At Runtime
- May 20 - Lesson Learned: Don't Use Low-Level Lib To Test High-Level Code
- May 19 - Becoming A Better Programmer Through The Study of Good And Bad Code & Design
2013 April
- Apr 30 - Most interesting links of April '13
- Apr 29 - Book Review & Digest: Boyd: The Fighter Pilot Who Changed the Art of War (Relevant for IT/Business)
- Apr 01 - The Value and Perils of Performance Benchmarks in the Wake of TechEmpower's Web Framework Benchmark
2013 March
- Mar 31 - Most interesting links of Mars '13
- Mar 25 - Tools for Editor - Browser Integration for Interactive JS/HTML Development
- Mar 24 - Markdown + JavaScript = Great HTML Presentation Decks
- Mar 20 - Escaping the Zabbix UI pain: How to create a combined graph for a number of hosts using the Zabbix API
- Mar 19 - You are not lean unless you have a clear objective and measure
- Mar 18 - From Stateful Iteration in Python to Stateless Clojure
- Mar 12 - Books Our Developers Should Read
2013 February
- Feb 28 - Most interesting links of February '13
- Feb 18 - JDBC: What resources you have to close and when?
2013 January
- Jan 31 - Most interesting links of January '13
- Jan 14 - The Sprinting Centipede Strategy: How to Improve Software Without Breaking It
- Jan 09 - Bash: Parse Options And Non-Options With Getopts
- Jan 08 - Bash Magic: List Hive Table Sizes in GB
- Jan 04 - Fast Code To Production Cycle Matters: For Pleasure, Productivity, Profit
- Jan 04 - My 2012 in Review
- Jan 01 - Blogging Stats of 2012
2012 December
- Dec 31 - Most interesting links of December '12
- Dec 15 - What Is Clean Code? - In Quotes
2012 November
2012 October
- Oct 31 - Most interesting links of October '12
- Oct 27 - Do You Know Why You Are Testing?! (On The Principles Underlying TDD)
- Oct 26 - Tip: Import Leiningen Project to IntelliJ (With Dependencies)
- Oct 17 - Tool Tip: Byob - Screen With Text UI
- Oct 17 - Puppet Troubleshooting: Compiling Catalog, Locating a Cached Catalog
- Oct 13 - My Scala vs. Clojure Impression In Pictures
- Oct 09 - Note: Loading Tab-Separated Data In Cascalog
2012 September
- Sep 30 - Most interesting links of September '12
- Sep 25 - Using Java as Native Linux Apps - Calling C, Daemonization, Packaging, CLI (Brian McCallister)
- Sep 24 - Infographic: Why Should All Learn Little Code
- Sep 21 - VisualVM: Monitoring Remote JVM Over SSH (JMX Or Not)
- Sep 21 - Enabling JMX Monitoring for Hadoop And Hive
- Sep 14 - The Best Code I Have Ever Written Is The Code I Never Wrote
- Sep 12 - Programming Like Kent Beck
- Sep 09 - (Unit) Testing Swiss Knife: All the Tools You Wanted to Know
- Sep 09 - Help, My Code Isn't Testable! Do I Need to Fix the Design?
2012 August
- Aug 31 - Most interesting links of August '12
- Aug 21 - Tip: How to Easily Customize PMD Rules in Eclipse
- Aug 13 - Recommended Book: Real World Java EE Night Hacks by Adam Bien
- Aug 13 - Minimalistic Practical Introduction to Puppet (Not Only) For Vagrant Users
- Aug 12 - You're Writing the Wrong Software - You Never Know What Users Want Until You Ask Them
- Aug 08 - Zabbix: Fixing Active Checks to Work With Zabbix Proxy
- Aug 08 - How to Add MapRed-Only Node to Hadoop
2012 July
- Jul 31 - Most interesting links of July '12
- Jul 05 - Book Review: Implementation Patterns
- Jul 03 - Notify on Errors in a Log File with Zabbix 1.8
- Jul 02 - Testing Zabbix Trigger Expressions
2012 June
- Jun 30 - Most interesting links of June '12
- Jun 30 - How to Set JVM Memory for Clojure REPL in Emacs (clojure-jack-in, clojure-swank)
- Jun 21 - Creating Custom Login Modules In JBoss AS 7 (and Earlier)
- Jun 14 - Serving Files with Puppet Standalone in Vagrant From the puppet:// URIs
2012 May
- May 31 - Most interesting links of May '12
- May 12 - Bad Code: Too Many Object Conversions Between Application Layers And How to Avoid Them
- May 09 - Beautiful Code: Simplicity Yields Power
- May 05 - Creating On-Demand Clusters in EC2 with Puppet
2012 April
- Apr 30 - Most interesting links of April '12
- Apr 04 - Exposing Functionality Over HTTP with Groovy and Ultra-Lightweight HTTP Servers
- Apr 02 - Groovy Grape: Troubleshooting Failed Download
2012 March
- Mar 31 - Most interesting links of Mars '12
- Mar 24 - Note To Self: What to Do When a Vagrant Machine Stops Working (Destroy or Up Failing)
- Mar 11 - Kent Beck: Best Practices for Software Design with Low Feature Latency and High Throughput
- Mar 01 - Link: Benchmark and Scaling of Amazon RDS (MySQL)
2012 February
- Feb 29 - Most interesting links of February '12
- Feb 25 - Profiling Tomcat Webapp with VisualVM and NetBeans - Pitfalls
- Feb 25 - Cool Tools: Fault Injection into Unit Tests with JBoss Byteman - Easier Testing of Error Handling
- Feb 13 - Release 0.9.9 of Static JSF EL Expression Validator with Annotated Beans Autodetection
- Feb 06 - Using Java Compiler Tree API to Extract Generics Types
- Feb 05 - Separating Integration and Unit Tests with Maven, Sonar, Failsafe, and JaCoCo
2012 January
- Jan 31 - Troubleshooting Jersey REST Server and Client
- Jan 31 - Most interesting links of January '12
- Jan 18 - How to Create Maintainable Acceptance Tests
- Jan 13 - Visualize Maven Project Dependencies with dependency:tree and Dot Diagram Output
- Jan 09 - uCertify
- Jan 09 - Key Lessons from the Specification by Example Course, Day 1
- Jan 01 - Annual Blogging Report 2011
2011 December
- Dec 31 - Most interesting links of December
- Dec 18 - AWK: Extract Logs for the Given Date(s) from a Log File
- Dec 13 - Quiz: What's the Best Test Method Name?
- Dec 07 - Getting Started with Amazon Web Services and Fully Automated Resource Provisioning in 15 Minutes
2011 November
- Nov 30 - Most interesting links of November
- Nov 26 - The 3 Most Important Things I've Learned This Year
- Nov 23 - Where to Get Sample Java Webapps
- Nov 22 - What Changes When You Deploy More Frequently and Why You Should Do It
- Nov 21 - Refactoring Spikes as a Learning Tool and How a Scheduled Git Reset Can Help
- Nov 21 - Principles for Creating Maintainable and Evolvable Tests
- Nov 20 - How to Fail With Drools or Any Other Tool/Framework/Library
- Nov 13 - Tips And Resources For Creating DSLs in Groovy
- Nov 09 - What Is CDI, How Does It Relate to @EJB And Spring?
- Nov 07 - Book Review: Agile Project Management With Scrum
- Nov 02 - Groovy: Use @Canonical to Get Compiler-generated Equals, HashCode and ToString
- Nov 02 - Groovy: Creating an Interface Stub and Intercepting All Calls to It
2011 October
- Oct 31 - Most interesting links of October
- Oct 28 - JSF: Beware the Difference Between Build-Time and Render-Time Tags in Facelets
- Oct 20 - Never Mix Public and Private Unit Tests! (Decoupling Tests from Implementation Details)
- Oct 19 - Hacking A Maven Dependency with Javassist to Fix It
- Oct 18 - Only a Masochist Would Write Unit Tests in Java. Be Smarter, Use Groovy (or Scala...).
- Oct 18 - Comparison of Eclipse 3.6 and IntelliJ IDEA 10.5: Pros and Cons
- Oct 17 - Intro: Java Webapp Monitoring with Hyperic HQ + How to Alert on Too Many Errors in Logs
- Oct 15 - hasProperty, the Hidden Gem of Hamcrest (and assertThat)
- Oct 15 - Aggregating Error Logs to Send a Warning Email When Too Many of Them - Log4j, Stat4j, SMTPAppender
- Oct 11 - Spring: Make an Externally Created Object Available to Beans in applicationContext.xml
- Oct 06 - Tools for Renaming the Package of a Dependency with Maven
- Oct 02 - Note to Self: Running GroovyConsole with a Maven Project's Classpath
2011 September
- Sep 30 - Most interesting links of September
- Sep 27 - Inspect Your Webapp in a Live Environment Interactively with GroovyConsole
- Sep 16 - Link: Advanced Usage of JUnit Theories, Multiple DataPoints, and ParameterSuppliers
- Sep 16 - JUnit Tip: Verifying that an Exception with a Particular Message was Thrown
- Sep 07 - Correct your URL
- Sep 06 - Practical Introduction into Code Injection with AspectJ, Javassist, and Java Proxy
- Sep 04 - DRY: Use JUnit @Rule Instead of Repeating Setup/@Before in Each Test
- Sep 04 - DbUnit Express 1.3 is Even Easier to Use and Still Better
2011 August
- Aug 31 - Most interesting links of August
- Aug 05 - DbUnit Express Tips: Setup Simplification, Custom Data File Convention
- Aug 05 - A Funny Story about the Pain of Monthly Deployments
2011 July
- Jul 31 - Most interesting links of July
- Jul 30 - Experiencing JSF 1.2: Good but Needs a Framework
- Jul 28 - Simple Logging HTTP Proxy with Grinder
- Jul 27 - Having Database Test Ready in 10 Minutes with DbUnit Express
- Jul 25 - Ivy: Retrieve Both .jar And -sources.jar Into A Folder - Note to Self
- Jul 18 - Going to Present "Programmer's Survival Kit: Code Injection for Troubleshooting" at JavaZone 2011
2011 June
- Jun 30 - Most interesting links of June
- Jun 22 - Validating JSF EL Expressions in JSF Pages with static-jsfexpression-validator
- Jun 20 - How to Fix Empty "Show all bookmarks" in Firefox 4
- Jun 10 - Hacking Jasper to Get Object Model of a JSP Page
- Jun 07 - Version hell with JSFUnit, Arquillian, and (embedded) Glassfish and other containers
2011 May
- May 31 - Most interesting links of May
- May 20 - Ivy: How to Retrieve Source Codes of Dependencies
- May 11 - Installing Java 1.4 to Mac OS X 10.6
- May 06 - Upgrading FCKeditor 2.x to CKEditor 3.x including plugins
- May 06 - Discussion: Agile not suitable for governmental IT?
2011 April
- Apr 30 - Most interesting links of April (renewed)
- Apr 29 - How stateless can you go?
- Apr 28 - What I've Learned from (Nearly) Failing to Refactor Hudson
- Apr 18 - What Do I Mean by a Legacy Code?
- Apr 16 - Refactoring the "Legacy" Hudson.java with the Mikado Method as a Coding Dojo
- Apr 14 - Real-world data prove that Agile, BDD & co. work - lecture by G. Adzic
- Apr 04 - How to customize CKEditor with your own plugins, skins, configurations
- Apr 04 - CKEditor: Hide some toolbar buttons on a per page basis
- Apr 02 - Code quality matters to the customers. A lot.
- Apr 01 - CKEditor: Collapsing only 2nd+ toolbar rows - howto
2011 March
- Mar 31 - Most interesting links of March
- Mar 31 - CKEditor: Scroll dialogs with the page, i.e. not fixed to the middle
- Mar 27 - Introduction to ObjectTeams/Java, a Role-Based Approach to Modularity With AOP
- Mar 12 - Why not to be afraid of 2012
2011 February
- Feb 28 - Most interesting links of February
- Feb 19 - Hidden Dependencies Are Evil - Arguing With The Clean Code (Slightly)
- Feb 14 - Clean Code: Four Simple Design Rules - Obligatory Read
- Feb 06 - Manually restoring raw partclone partition image to a VMWare
2011 January
- Jan 31 - Most interesting links of January
- Jan 28 - Goodby IBA, welcome, Norway and Iterate!
- Jan 26 - Using Ivy with pom.xml
- Jan 11 - EMF tips: Accessing model meta data, serializing into element/attribute
- Jan 03 - EMF: Reading a model from XML - how to correctly declare its namespace - variants
- Jan 03 - Creating dynamic EMF model from XSDs and loading its instances from XML as SDOs
- Jan 03 - 2010 in review
2010 December
- Dec 31 - Most interesting links of December
- Dec 29 - Tip: Multiple webservice implementation classes available at the same time under WAS7
- Dec 29 - Howto: JAX-WS service with XML Source input instead of JAXB-produced POJOs (similar to JAX-RPC with SOAPElement input)
- Dec 29 - Creating JAX-WS webservice using Service Data Objects (SDO) instead of JAXB-bound POJOs
- Dec 23 - Ivy resolve downloads but ignores some artifacts (though not modules)
- Dec 10 - Joshua Bloch: Performance Anxiety - on Performance Unpredictability, Its Measurement and Benchmarking
2010 November
- Nov 30 - Most interesting links of November
- Nov 25 - Book review: Refactoring by Martin Fowler
- Nov 23 - svn fun: <path> has no ancestry information
- Nov 23 - More Eclipse & svn fun: Can't share a project (only Team - Apply Patch)
- Nov 19 - SOAP/SAAJ/XML Issues When Migrating to Java 6 (with Axis 1.2)
- Nov 18 - If You Don't Use Pair Programming and Code Reviews as Teaching Tools You Waste Money
- Nov 17 - Knowing I'm Bad Programmer Makes Me Good Programmer
- Nov 02 - Tip: Enable a shortcut for Occurrences in File in Eclipse under Gnome (default C+S+u)
2010 October
- Oct 31 - Most interesting links of October
- Oct 21 - Tip: Retrieving server certificate used in SSL communication (e.g. POP3s)
2010 September
- Sep 30 - Most interesting links of September
- Sep 20 - The power of batching or speeding JDBC by 100
- Sep 16 - Exposing a POJO as a JMX MBean easily with Spring
- Sep 13 - Implementing retrial with a MDB or an MQ batch job? (WAS 7, MQ 6)
- Sep 10 - SSH magic: Authorize only once for multiple ssh/scp invocations
- Sep 10 - Jetty-maven-plugin: Running a webapp with a DataSource and security
2010 August
- Aug 31 - Most interesting links of August
- Aug 10 - An encrypted backup of a disk/partition to a Samba share with Clonezilla
- Aug 02 - Most interesting links of July
2010 July
- Jul 25 - Mobile learning application MiniPauker 1.1.05 released - please test!
- Jul 21 - My path to SCEA 5
- Jul 09 - Most interesting links of June
2010 June
- Jun 24 - Implementing build-time bytecode instrumentation with Javassist
- Jun 10 - Booting from a USB stick in VMware Player
- Jun 04 - Webservice testing with JMeter: Passing data from a response to another request
- Jun 02 - Most interesting links of May
2010 May
- May 22 - Migrating from JRoller to Wordpress
- May 16 - How Visual Paradigm (nearly) ruined my day and Dropbox (nearly) saved it
- May 13 - Eclipse Profile configuration: The launch requires at least one data collector
- May 08 - Book: Real World Java EE Patterns - Rethinking Best Practices (review & digest)
- May 05 - Mocking out LDAP/JNDI in unit tests
- May 04 - Most interesting links of April
- May 01 - My older posts at JRoller
2010 April
- Apr 12 - File-based User Authentication under WebSphere 6
- Apr 11 - Most interesting links of March
- Apr 08 - Enforcing a common log format with AspectJ
2010 March
2010 February
- Feb 26 - Eclipse: Open Type/Resource working again under Linux!
- Feb 23 - Released DbUnit Test Skeleton 1.1.0 - also in Maven Central
- Feb 10 - The Art of Logging (review)
- Feb 07 - Releasing a project to Maven Central repository via Sonatype
2009 December
- Dec 10 - Compiling with AspectJ's ajc compiler from Maven
- Dec 07 - Troubleshooting logging configuration (Log4j, commons-logging)
2009 November
2009 September
2009 July
- Jul 10 - Injecting timing aspect into JUnit test in Eclipse using AspectJ, AJDT
- Jul 05 - See how Test Driven Development is done in practice
- Jul 04 - The quest for a portal web framework is over and the winner is: Spring Portlet MVC
2009 June
2009 May
- May 23 - A new release 0.30 of MiniPauker, a J2ME flashcard learning application
- May 23 - A logging wrapper around PreparedStatement to provide detailed info upon error
2009 April
- Apr 30 - Lotus Notes 8.x under Linux: No window shows up, Tips for upgrading to LN8.5
- Apr 20 - Using ScribeFire to publish to JRoller.com
- Apr 20 - How I managed to deploy a JSF/Seam portlet to JBoss after all
- Apr 20 - Developing portlets for Liferay in Eclipse
- Apr 10 - [DRAFT] Maven "change" project extending a non-maven web project
2009 March
- Mar 23 - Seam Tutorial 1.2: RichFaces and paged table (datascroller)
- Mar 19 - The Forgotten Hells or God Save North Korea!
- Mar 17 - When will we see JSR 286 in JSF portlets?
- Mar 07 - Seam Tutorial 1.1: RichFaces and paged table (datascroller)
2009 February
2009 January
- Jan 24 - Are portlets dead? JSR168 and JSR286 versus reality.
- Jan 21 - Eclipse 3.4: New Update Manager and broken Extension Locations
2008 October
- Oct 31 - Webapp performance monitoring with Glassbox 2.0: How does it work?
- Oct 02 - Injecting better logging into a binary .class using Javassist
2008 September
2007 November
- Nov 25 - The Ultimate Web UI Framework
- Nov 19 - Introducing Facelets
- Nov 02 - Truncating UTF String to the given number of bytes while preserving its validity [for DB insert]
2007 August
2007 June
- Jun 15 - Dependency Finder 1.2.0 for Java
2007 January
2006 December
2006 November
- Nov 24 - RAD, WAS 6 Test Env and J2EE security: getting rid of “No received or invocation credential exist on the thread”
- Nov 14 - RAD: Profiling a portlet
- Nov 02 - Kill a zombie database (not in the directory but can’t create it)
2006 October
- Oct 19 - RAD: Server Configurations in Rational Developer 6.0: copy, repair...
- Oct 19 - DB2: Find out current locks, long transactions etc. [snapshot]
- Oct 19 - Ant/Maven: Add build date/revision to the generated JAR's Manifest
2006 May
- May 25 - Sending a SOAP request to a Web Service via URLConnection
- May 04 - RAD, WebSphere and changing the classloader mode