The Curious Engineer

All blogs / Testing / QA

Jay Fields' Thoughts

blog.jayfields.com

experiences in software development

Testing / QARuby / RailsLisp / Clojure / SchemeEngineering management / careersEngineering blogs

’05’10’15’20’25
Posts
570 from 6 Mar 2005 to 17 May 2017
Posting
quiet since 2017
Kind
personal blog
Feed
http://feeds.feedburner.com/jayfields/mjKQ

2017 1

  1. Starting a New Engagement as a Lead Consultant

2016 2

  1. Curious Customer
  2. Maintainability and Expect Literals

2015 7

  1. Drop Books
  2. Unit Testing Points of View, Probably
  3. My Answers for Microservices Awkward Questions
  4. Experience Report: Weak Code Ownership
  5. Preview Arbitrary HTML
  6. LTR Org Chart
  7. Making Remote Work: Tools

2014 8

  1. Making Remote Work
  2. Working Effectively with Unit Tests Official Launch
  3. The Case for Buying Technical Books
  4. Solitary Unit Test
  5. Working Effectively with Unit Tests Rough Draft Complete
  6. Working Effectively with Unit Tests
  7. Weighing in on Long Live Testing
  8. REPL Driven Development

2013 17

  1. Coding: Increase Your Reading and Writing Speed
  2. Clojure: Combining Calls To Doseq And Let
  3. Emacs Lisp: Font Lock for Clojure's Partial
  4. Clojure: Testing The Creation Of A Partial Function
  5. Recovering Lost Post Data
  6. Emacs Lisp: Toggle Between a Clojure String and Keyword
  7. Year Five
  8. Clojure: Expectations, Customize your Test Running Context
  9. Being a Lead Consultant
  10. Emacs Lisp: Find Java Sources
  11. Clojure: Expectations Ignore A Variable Number Of Args In An Interaction Test
  12. Clojure: Expectations Interaction Tests For Java Objects
  13. Synchronizing Snapshots and Incrementals With Single Threading
  14. Clojure: Expectations Verify Interaction Args
  15. Clojure: Expectations Interactions - Interactions Are Code, Interactions Are Data
  16. Clojure: Expectations Warn On State Change During Test Runs
  17. Clojure: Expectations Before Run Hook

2012 45

  1. Clojure: Converting scenarios With Interleaved expect Calls To Bare expectations
  2. Elisp: Duplicate Line
  3. Elisp: Automated Switching Between Clojure Test and Source Files
  4. Elisp: Grep in Clojure Project
  5. Clojure: Deprecating expectations.scenarios
  6. Clojure: Using given & expect To Replace scenarios
  7. Clojure: Use expect-let To Share A Value Between expected And actual
  8. Clojure: Freezing Time Added To expectations
  9. Clojure: Interaction Based Testing Added To expectations
  10. Clojure: redef-state Added To expectations
  11. Java: Add A Println To A 3rd-Party Class Using IntelliJ's Debugger
  12. clojure: lein tar
  13. Clojure: Avoiding Anonymous Functions
  14. Clojure: Refactoring From Thread Last (->>) To Thread First (->)
  15. Replacing Common Code With clojure.set Function Calls
  16. emacs lisp: removing a lamba hook
  17. 8 Linux Commands Every Developer Should Know
  18. Sharing Blog Example Code
  19. Reading Clojure Stacktraces
  20. Clojure: Production Web REPL
  21. Signs That Your Project Team Might Be Too Large
  22. organizing a speakerconf
  23. trust at speakerconf
  24. So, You Dropped Out of College
  25. scheduling, travelling to, and dining at speakerconf
  26. Clojure: name function
  27. speaking at speakerconf
  28. a typical day at speakerconf
  29. Clojure: expectations & with-redefs
  30. The Single Best Thing For My Career
  31. Is Productivity Killing Your Creativity?
  32. Clojure: Freezing Time in expectations
  33. Clojure: expectations, colorized
  34. Killing IntelliJ Launched Processes
  35. sidenum function
  36. jQuery find function
  37. How I Open Source
  38. Agile Development with Clojure
  39. Follow-up Thoughts on Aligning Business & Programmer Goals
  40. Clojure: Conditionally Importing
  41. Eval a Clojure Snippet in Java
  42. When to Break Apart your Application
  43. Aligning Business & Programmer Goals
  44. How To Get Invited To speakerconf
  45. Lessons Learned while Introducing a New Programming Language

2011 36

  1. Convert java.util.Properties to a Clojure Map
  2. Clojure & Java Interop
  3. Clojure: expectations - scenarios
  4. Clojure: expectations unit testing wrap-up
  5. Clojure: expectations - removing duplication with given
  6. Clojure: expectations and Double/NaN
  7. Clojure: expectations with values in vectors, sets, and maps
  8. Clojure: Non-equality expectations
  9. Clojure: expectations Introduction
  10. Recent Thoughts On Hiring and Being Hired
  11. Life After Pair Programming
  12. Clojure: Check For nil In a List
  13. Clojure: partition-by, split-with, group-by, and juxt
  14. Clojure: Apply a Function To Each Value of a Map
  15. Clojure: memfn
  16. The High-Level Test Whisperer
  17. Individuals Over People
  18. Undervalued Start and Restart Related Questions
  19. Clojure: Get All Nested Map Values (N levels deep)
  20. Clojure: Converting a Java Object to a Clojure Map
  21. Clojure: State Management
  22. Readable Clojure Without a Java Equivalent?
  23. Types of Technical Debt
  24. Random Thoughts on Good Programmers and Good Code
  25. Clojure: Eval-ing a String in Clojure
  26. Clojure: if-let and when-let
  27. Clojure: Truthy and Falsey
  28. The Impact of Accidental Complexity on Estimates
  29. The President and the CEO of an Application
  30. Clojure: Web Socket Introduction
  31. Clojure: &env and &form
  32. Compatible Opinions on Software
  33. Clojure: Using Java Inner Classes
  34. Clojure: fnil
  35. Clojure: partial and comp
  36. Clojure: select-keys, select-values, and apply-values

2010 16

  1. Clojure: get, get-in, contains?, and some
  2. Taking a Second Look at Collective Code Ownership
  3. Experience Report: Feature Toggle over Feature Branch
  4. Clojure: Flatten Keys
  5. Clojure: Another Testing Framework - Expectations
  6. Clojure: Mocking
  7. Clojure: Using Sets and Maps as Functions
  8. clojure.test Introduction
  9. Clojure: Destructuring
  10. Clojure: Composing Functions
  11. High Level Testing with a High Level Language
  12. Sacrificing some IDE capabilities
  13. Clojure: Converting a Custom Collection to a Sequence
  14. Pairing isn't the Solution
  15. Shorter Syntax for Creating Stubs with Mockito
  16. The Maintainability of Unit Tests

2009 22

  1. Presenting Lessons I've Learned
  2. Polyglot World
  3. Refactoring: Ruby Edition available.
  4. Pressure, Expressed in Initial Development Time
  5. Staying Current: A Software Developer's Responsibility
  6. Macros Facilitate Expressive Code
  7. More Trust, Less Cardwall
  8. Programmer Confidence and Arrogance
  9. Java: Method Chain with Snippet
  10. Freezing Joda Time
  11. Developer Testing: Welcome to the Beta Test
  12. Mockito non-hamcrest any matcher
  13. Calling Clojure from Java
  14. Kill Your Darlings
  15. Retrospective Trust Level
  16. Continual Retrospective
  17. Thoughts on Developer Testing
  18. Questions To Ask an Interviewer
  19. The Fowler Effect
  20. Creating Objects in Java Unit Tests
  21. The Cost of Net Negative Producing Programmers
  22. Things to dislike about Java

2008 91

  1. Targeted Languages
  2. Ubiquitous Assertion Syntax
  3. Specialize in Something Relevant
  4. Language Specialization
  5. Testing Dynamic Web Applications
  6. When To Retire Your Brand
  7. Is Distributed Development Viable
  8. Refactoring: Ruby Edition available on Safari
  9. Domain Specific Languages don't follow the Principle of Least Surprise
  10. Ruby: Recording Method Calls and Playback With Inject
  11. Passionate, Not Dogmatic
  12. Great Developers Are Hard To Find, Regardless of Language
  13. Lean Software Development
  14. Be Your Start-Up
  15. Elitist or Optimist
  16. The Elephant in the Server Room
  17. Civics not Cadillacs
  18. Refactoring: Ruby Edition available on Amazon
  19. Developers needed; Hackers need not apply
  20. StackOverflow.com Podcast: Subscribe for Education, Stay for Entertainment
  21. Ruby: Dwemthy's Array using Modules
  22. Ruby: Underuse of Modules
  23. Move Mail.app RSS Feeds to NetNewsWire
  24. ActionScript: Literal XML
  25. Ruby: Redefine Method Behavior Conditionally
  26. Ruby: Move a Method from a Class to a Module Definition
  27. Speaking: QCon San Francisco 2008
  28. Speaking: RailsConf Europe 2008
  29. Speaking: Rails Summit Brazil 2008
  30. ActionScript: Calling a function by name
  31. The Immaturity of In Browser Testing
  32. Windows, C#'s Achilles' heel
  33. Agile: User Story Estimation Techniques
  34. The Simplest Thing That Could Possibly Work
  35. Flex: Expert Developers Needed
  36. Flex: Anonymous Classes as Test Stubs
  37. Flex: The State of Testing
  38. Immaturity of Developer Testing
  39. Developer Testing and the Importance of Context
  40. Flex: Objects in Views
  41. ActionScript: The difference between Object and * (an asterisk)
  42. An Argument for RIA
  43. Testing: The Value of Test Names
  44. Speaking: Manchester GeekNight
  45. ActionScript and Essence vs Ceremony
  46. Testing: Duplicate Code in Your Tests
  47. Using Stubs to Capture Test Essence
  48. Software Development Lessons Learned From Poker
  49. Understanding Why
  50. Story 9: Display Customer Support Number
  51. Splitting your Rails Test Suite
  52. Extend modules instead of defining methods on a metaclass
  53. Alternatives for redefining methods
  54. Domain Specific Language Simplexity
  55. The Language Question
  56. Example Dilemma
  57. Ruby: inject
  58. Testing Anti-Pattern: Metaprogrammed Tests
  59. Ruby: Replace Temp with Chain
  60. Ruby: Isolate Dynamic Receptor
  61. Move eval from Run-time to Parse-time
  62. Ruby: expectations gem version 0.2.3
  63. Ruby: Replace method_missing with dynamic method definitions
  64. Ruby: Dynamically Define Method
  65. Pair Programming all the time
  66. Ruby: Inline Rescue
  67. Ruby: Creating Anonymous Classes
  68. Rake: Task Overwriting
  69. Shared Ruby Code
  70. Implementing an internal DSL in Ruby
  71. Pair Programming thoughts
  72. Tests reflect code quality
  73. Testing: Expect literals
  74. Designing a Domain Specific Language
  75. ThoughtWorks DSL Podcast (part 2)
  76. Subversion: Rolling back revisions
  77. Static typing considered harmful
  78. Behavior Based Testing
  79. State Based Testing
  80. Ruby: Did TDD make Ruby a viable option?
  81. Testing: Mocha's stub_everything method
  82. Testing: High Implementation Specification Smell
  83. Testing: One expectation per test
  84. Challenge Leaders
  85. Write Only Ruby
  86. You don't need to be better to do Ruby
  87. Ruby/Rails Conferences
  88. Werewolf is the best conference session
  89. Ruby: Staying Current
  90. Ruby: Hash#to_mod
  91. Rails: Changing application.rb to application_controller.rb

2007 135

  1. Refactoring Motivations
  2. Speaking: QCon London
  3. Ruby: arbs 0.1.0 released
  4. Ruby: expectations gem
  5. Avoiding costly typos
  6. Using patch as a subversion stash
  7. Rails: Route Globbing
  8. Is being a niche language developer good for your career?
  9. Advanced Rails Recipes
  10. When not to pair
  11. Utilizing Ruby and Linux
  12. ThoughtWorks DSL Podcast
  13. Ruby: Time::is
  14. Rails: Enumerable#sum
  15. Rails: Enumerable#group_by
  16. Ruby: Testing Private Methods
  17. Rails: Enumerable#index_by
  18. Rails: Integer#even?
  19. Rails: String#each_char
  20. Rails: Hash#diff
  21. Despised Software Luminaries
  22. Rails: String#constantize
  23. Rails: String#classify
  24. Rails: String#singularize
  25. Validatable 1.6.6 released
  26. Rails: String#pluralize
  27. Rails: String#camelize
  28. Rails: Hash#assert_valid_keys
  29. Rails: Array#to_sentence
  30. 2 weeks of ActiveSupport
  31. Erlang Interest
  32. Rails: Unit Test without Rails
  33. DSL interview
  34. Ruby: Defining Class Methods
  35. Rails: Rise, Fall, and Potential Rebirth of the Presenter Pattern
  36. Extending Rails
  37. Ruby: PORO
  38. Ruby: Convention is Important
  39. Rails: Maintainable Code
  40. Is it better than TextMate? (Ruby IDE redux)
  41. Speaking: QCon San Francisco
  42. Are Screencasts the Future?
  43. Learning Rails is Easy, Mastering Rails is Hard
  44. Ruby: Trivial Debugger Implementation
  45. Semi-bluffing your interview
  46. Testing: Frameworks are evolving
  47. Rails: Where do you require?
  48. RailsConf Europe 07: Presenter Links
  49. Uninterested Pair
  50. Distracted Pair
  51. Ruby: Array#collect_with_remaining
  52. Ruby: Array#chunk
  53. Rails: Testing Controllers
  54. Security Myth: Generic Login Error
  55. Ruby: Creating Custom Assertions
  56. Rails: How we test
  57. Ruby: Adding a "not" method for readability
  58. Ruby: Calling methods of a specific ancestor
  59. Importance of Time
  60. Mac OS-X: Disk Inventory X
  61. Ruby: State pattern using Modules and Facets
  62. Ruby: Facets
  63. Ruby: initialize_with
  64. Blogs I Read
  65. RubyGems: Dust
  66. Eagerly Initialized Attribute
  67. Ruby: Lazily Initialized Attributes
  68. Ruby: operator precedence of && and = (which also applies to || or)
  69. Spellchecking Pair
  70. Agile: Estimating
  71. Ruby: Multiple ifs (unless)
  72. Stories are Placeholders not Buckets
  73. Ruby: Metaprogrammatically defining methods
  74. My Job Went to India
  75. Team Size
  76. iPhone: Layout View Email and AirPort Music
  77. iPhone: Messaging
  78. iPhone: Gmail for your domain
  79. My iPhone
  80. The next big language
  81. Reading technical books
  82. RailsConf Europe 2007: Presenter Pattern
  83. Testing: Inline Setup
  84. Testing: One assertion per test
  85. Testing: Replace Mock with Stub
  86. Testing: When are Unit tests enough?
  87. Testing: Unit Test or Functional Test
  88. Testing: Replace Collaborator with Stub
  89. Testing: Refactoring Examples
  90. TextMate: Required Reading
  91. Ruby: method_missing alternatives
  92. RailsConf07: Testing Presentation
  93. Law of Demeter: Canary in a coal mine
  94. Ruby: Unit testing delegations
  95. RailsConf 2007 Presentation
  96. Ruby: Validatable Tests
  97. Ruby: Validatable 1.2.2 released
  98. DSL: Expressive Software
  99. Ruby: Class Methods
  100. Ruby: Assigning instance variables in a constructor
  101. Ruby: Mocks and Stubs using Mocha
  102. Blogging: Blog as a skills assessment
  103. Ruby: Default method arguments to instance variables
  104. Rails: Use Ruby Schema syntax without using Migrations
  105. Rails: Generating an Oracle DDL without Oracle installed
  106. Ruby: [Anti-pattern] Extract Module to shorten Class Definition
  107. Rails: ActiveRecord Unit Testing part II
  108. Ruby: === operator
  109. Should Rails include Mocha?
  110. Rails: ActiveRecord Serialize method
  111. Ruby: sqldsl 1.4.0 released
  112. Rails: Presenter Pattern
  113. Ruby: LocalJumpError workaround
  114. Ruby: Why sqldsl?
  115. Ruby: instance_eval and class_eval method definitions
  116. Conferences: Presenting at GoRuCo
  117. Blog: New Url
  118. Rails: Clean up Controller Tests
  119. Ruby: sqldsl new version
  120. Rails: Presenters - An additional layer alternative.
  121. Rails: Unit Testing Update
  122. Rails: Acceptance Testing
  123. TDD: Removing test noise
  124. Ruby Evaluation options article on InfoQ
  125. Ruby: Validatable
  126. Ruby: Forwardable addition
  127. Ruby: Invoking a method with a ampersand-parameter
  128. Class Reopening Hints
  129. Class Definitions
  130. Adding Validations to any Class
  131. Appending to ERB output from a block declaration
  132. Another Rails Presenter Example
  133. Ruby: Refactoring - a First Example
  134. Ruby: Refactoring, Ruby Edition
  135. Rails: Enterprise Ready

2006 130

  1. Rails: Unit Testing ActiveRecord Validations
  2. Rails: ActiveRecord Unit Testing
  3. Rails: Migrations with a large team part I
  4. Ruby: Alias method alternative
  5. Ruby: Multiline strings - here doc or quotes
  6. Ruby: Constant values
  7. Rake: db:migration:conflict
  8. Ruby: rake commit
  9. BNL: New location
  10. Rails: Plugins, Why?
  11. Ruby: instance and class methods from a module
  12. Ruby: Use class methods to reduce duplication
  13. Rails: Running migrations in another environment
  14. Rake: --dry-run, --trace, and -T
  15. BNL: Extracting Sales Person
  16. xUnit: Absence of Mocks and Stubs
  17. Ruby: Protected class methods
  18. RubyGems: Absolute Paths
  19. Ruby: Testing Rake Tasks
  20. BNL: Common Pieces
  21. BNL: Limitations
  22. Rails: Get the schema_info version number from Rake
  23. Rails: Textmate Footnotes
  24. Rails: Generate SQL from Migrations
  25. BNL: Moving to the web and multiple contexts - Update
  26. Story Card Format
  27. Rails: Autoloading Gems in Vendor
  28. BNL: DRY code, DAMP BNL - Update
  29. Rails: Loading mock data
  30. BNL: The Solution - Update
  31. Ruby Regular Expression Replace
  32. Rake: Tasks with parameters
  33. BNL: The Problem - Update
  34. BNL: Introduction - Update
  35. Ruby Project Tree
  36. RubyGems: shared Ruby code
  37. Rails Model View Controller + Presenter?
  38. Remove Subversion from a tree
  39. Test::Unit test creation
  40. Ruby Stub Variations: Stubba
  41. Ruby Form Template Method Using Extend
  42. A Ruby DSL for generating SQL
  43. Ruby Stub Variations: Struct
  44. Ruby Stub Variations: TestStub
  45. Ruby Stub Variations: OpenStruct
  46. Ruby Stub Variations
  47. Ruby instance_exec aka instance_eval with parameters
  48. Ruby Asserting Equality with True
  49. Alternative Story Card Format
  50. Ruby/Rails Unit Testing in less than 1 second
  51. Ruby Unit Test Parameters
  52. Use Ruby Class Methods to Remove Duplication
  53. Sync your Samsung phone with your Mac Address Book using Bluetooth
  54. Removing kind_of? and is_a? from your code
  55. Alternative to Dependency Injection
  56. BNL 05 - Multiple Contexts
  57. BNL 04 - DAMP BNLs
  58. BNL 03 - The Solution
  59. BNL 02 - The Problem
  60. BNL 01 - Introduction
  61. Business Natural Language material
  62. Redefine DateTime.now for consistent test results
  63. Configuration File Demise
  64. Quality Assurance
  65. Ruby Array and Hash frozen behavior
  66. Ruby eval with a binding
  67. Pre-Commit Rake Task
  68. Ruby Block Scope
  69. Ruby Continuous Integration
  70. Business Natural Language
  71. Ruby on Rails Unit Tests
  72. Ruby convert Time to Date
  73. Use erb to insert dynamic text
  74. OpenStruct freeze behavior
  75. Ruby TestStub
  76. Ruby IDE
  77. More Test Driven Development observations
  78. Some Test Driven Development observations
  79. Ruby Kernel system, exec and %x
  80. Ruby on Rails and Database Standards
  81. Use class methods for stubs
  82. Ruby Stunt Double
  83. Practical Ruby
  84. Pair Programming Anti-Patterns
  85. Ruby extend and include
  86. Law of Demeter and Forwardable
  87. Syntax Checking an internal DSL
  88. Hiding the Parenthesize Warning in Ruby
  89. Apple in Detail
  90. Developing Ruby in TextMate
  91. DRY code, DAMP DSLs
  92. Executing an internal DSL in multiple contexts
  93. IntelliJ Ruby Syntax Highlighting Plugin
  94. Setting up a printer
  95. Why do *YOU* like Ruby?
  96. Hacking IntelliJ for syntax highlighting
  97. Ruby Initialization Chain Module
  98. Execute Ruby Tests in IntelliJ
  99. Rails schema cloning
  100. Migration Class and File naming
  101. Become a Ruby developer in 30 days or less
  102. Ruby Attribute Initializer
  103. Ruby Delegation Module
  104. GUI Patterns
  105. Execute all Test::Unit tests in a directory
  106. Add dependency support to custom rake tasks
  107. Rake Tutorial
  108. Initialization Chain
  109. Creating an interface for testing
  110. .norm find collection usage
  111. .norm object graph future
  112. .norm find usage
  113. .norm version 0.2
  114. .norm delete usage
  115. Where Fluent Interface part II
  116. Using Fluent Interface
  117. .norm update usage
  118. .norm insert usage
  119. .norm version 0.1 released
  120. Use stubs and mocks to convey intent
  121. Use delegates to replace repeated guard clauses
  122. I prefer Rake to NAnt (#4)
  123. Rake NUnit Task
  124. I prefer Rake to NAnt (#3)
  125. Moving from NAnt to Rake
  126. Fragile Development
  127. I prefer Rake to NAnt (#2)
  128. I prefer Rake to NAnt (#1)
  129. NAnt exec: add quotes to commandline
  130. Trust Visibility

2005 60

  1. Returning an Id from SQL Server
  2. Flexibility Cost
  3. NAnt exec: arg || commandline
  4. Functional Testing using a DSL and NUnit
  5. Simian IgnoreBlocks
  6. Improving Brittle Functional Tests
  7. Unit Test Guidelines
  8. What's in your build?
  9. Adding NanoContainer
  10. Adding PicoContainer
  11. MVP and Dialog
  12. Smart Client Development Part IV
  13. Smart Client Development Part III
  14. Smart Client Development Part II
  15. Smart Client Development Part I
  16. C# Public Readonly Fields
  17. Logging == Crutch
  18. Attribute usage
  19. Rake Hurdles
  20. Rails in School
  21. Commit from a build file
  22. Rake execution
  23. Rake Experiences Continue
  24. Controlling Subversion with Ruby and irb
  25. Ruby C# Project File parser (CSProjFile)
  26. Add Events to NMock
  27. Adding an Embedded Resource to a csc command line compiled assembly
  28. Using Rake for building and testing .net applications
  29. Testing View Observer Using Stubs
  30. Testing Events in C#
  31. View Observer
  32. SetUp and Teardown are still not good
  33. Declaration of event accessors.
  34. Notification without Flood
  35. Focus on readability and avoid being SetUp
  36. Firing Silver Bullets
  37. Agile Web Development with Rails
  38. Controlling Subversion with Ruby and the command line
  39. What are you testing?
  40. UI Driven Service Layer Development
  41. Coding standard election
  42. Do you #region?
  43. NCover Code Coverage Tool
  44. www.TextDrive.com
  45. Technology vertical
  46. When 1 + 1 != 2
  47. Technology evolution hides incompetence
  48. Software development companies will prevail
  49. Tasc Unit Testing Pattern
  50. Error Eventing Pattern
  51. Null Coalescing Operator in C# 2.0
  52. Using MSBuild (from Visual Studio 2005 April CTP) with a solution file (.sln)
  53. My introduction to Ruby
  54. File System Web Site reference issues in Visual Studio 2005 February CTP
  55. Clean unit tests with anonymous methods
  56. Accessing Private Members in C#
  57. Development in Visual Studio 2005 February CTP
  58. Dependency Injection, Pico Container, and Good Citizens
  59. Pragmatic Version Control using Subversion
  60. Patterns of Enterprise Application Architecture