• Home
  • About
    • Many Cups of Coffee

      Hi! I'm Steve. I am a research engineer and software architect working on using computer science to solve challenging problems in healthcare and banking.

    • Learn More
    • Email
    • Twitter
    • Facebook
    • Google+
    • LinkedIn
    • Instagram
    • Github
    • StackOverflow
    • Youtube
    • SoundCloud
  • Posts
    • All Posts
    • All Tags
  • Talks

All Posts

I'm going to (slowly) migrate things over to this site, but the original posts are all still in Blogger. I ran the import to bring them over, but haven't spent the time to update the content to make sure that it appears correctly. So maybe check out the original blogger site for the time being.

  • Guavate: tiny library bridging Guava and Java8

    Java8 is great and adds some useful abstractions to the JDK that have found popularity in the Java community via the wonderful Guava commons library from Google. Group discussion indicates that there will be a Guava version soon that requires Java 8 and closes the gap between Guava and Java8.

    Read More
  • Some neat Spring4 and Spring Boot features

    Here's a few slides on some of the Spring4 and Spring Boot features that I used on a recent project that are interesting. This is not really an introduction to Spring Boot -- but just highlighting a few features. This talk was

    Read More
  • Whirlwind tour of data science

    I'm giving a talk to the local Data Science / Machine Learning meetup. The topic is a shallow tour of data science topics including tasks and methods. This is a new group and many of the attendees do not have a data science background but are interested. Therefore,

    Read More
  • Streaming standard deviation and replacing values

    I'm working on a problem right now where I need to calculate the mean and standard deviation of a value in a streaming fashion.  That is I receive a stream of events that generate data points and I need to calculate standard deviation without retaining all of the data points in memory.  This has been covered ad nauseam in the literature -- I will

    Read More
  • Using ELK (elasticsearch + logstash + kibana) to aggregate cassandra and spark logs

    On one of my current projects we are using Cassandra and Spark Streaming to do some somewhat-close-to-real time analytics. The good folks at Datastax have built a commercial packaging (Datastax Enterprise, aka DSE) of Cassandra and Spark that allow you to get this stack up and running with relatively few headaches.

    Read More
  • Bushwhacker to help team members debug unit test failures

    Right now I'm working on a project with a few people who have never worked in Java before. There have been times where they'll experience some problem that they can't easily figure out. They send me the stack trace and instantly I know what the problem is. I wanted a simple way to automate this.

    Read More
  • Single record UPSERT in MSSQL 2008+

    I guess I just don't use SQL's MERGE statement enough to remember its syntax off the top of my head. When I look at the Microsoft documentation for it, I can't find just a simple example to do a single record UPSERT. When I google, I don't get any brief blog posts that show it. So

    Read More
  • Spring Test Context Caching + AspectJ @Transactional + Ehcache pain

    Are you using AspectJ @Transactionals and Spring? Do you have multiple SessionFactory's maybe one for an embedded database for unit testing and one for the real database for integration testing? Are you getting one of these exceptions?

    Read More
  • Java final fields on x86 a no-op?

    I have always enjoyed digging in to the details of multi-threaded programming, and always enjoy that despite reading for years about CPU memory consistency models, wait-free and lock-free algorithms, the java memory model, java concurrency in practice, etc. etc. -- I still create multi-threaded programming bugs. It's always a wonderfully humbling experience that reminds me how complicated of a problem this is.

    Read More
  • Database intro for developers

    Most of my academic background focused on low level database research. I wrote a dynamic programming based join-order optimizer for the open-source SQLite database as project in school.

    Read More
  • Introduction to multi-threaded java programming

    I gave a talk for our group about multi-threaded java programming for some of our junior members. I lifted a bulk of the slides from the interwebz, but

    Read More
  • Java implementation of Optimal String Alignment

    For a while, I've used the Apache Commons lang StringUtils implementation of Levenshtein distance.  It implements a few well known tricks to use less memory by only hanging on to two arrays instead of allocating a huge n x m table for the memoisation table.  It also

    Read More
  • Some Java Puzzlers in a powerpoint

    Every week our team gets together on friday afternoons and have a presentation. The presenter rotates each week, and the topic can be programming language related, cool new libraries, theoretical -- or whatever related to our work.

    Read More
  • Why and how we use Spring

    We brought on some new team members recently and I couldn't find a good intro to Spring that went through the motivation of why one might use Spring.  Thus, I created this presentation.  Don't know if anyone else will find it valuable:

    Read More
  • The Manufacturing of Software

    Among non-technologists, I think there is a common belief -- a wishful thought-- that building software is like any manufacturing process. You just need to design the process, and then get the widgets on the assembly line to execute the process-- and viola! If a widget quits, you just buy a new widget at

    Read More
  • Bye bye Eclipse -- my disorganized, irresponsible little brother

    I have been an Eclipse fan-boy for the last 7 years. I have participated on a number of open source Eclipse plugin projects. I have evangelized it to others. I also have a personal connection to it as my father was one of the project principles when it was still an IBM project.

    Read More
  • Hibernate4 SessionFactoryBuilder gotcha

    Just upgraded one of our projects to Spring 3.1.1 and Hibernate 4.1.1 today and ran into a small problem that ate up some time.

    Symptom:

    It appeared as if all of my hibernate <property>'s in hibernate.cfg.xml were suddenly not being picked up -- they were just silently being ignored.

    Read More
  • Multi-tier application + database deadlock or why databases aren't queues (part1)

    Databases aren't queues.

    And despite the ubiquitous presence of queuing technology out there (ActiveMQ, MSMQ, MSSQL Service Broker, Oracle Advanced Queuing) there are plenty of times when we ask our relational brethren to pretend to be queues.  This is the story of one such folly, and along the way, we'll delve into some interesting sub-plots of deadlocks,

    Read More
  • MSSQL non-clustered indexes INCLUDE feature explained

    Today I received a question from someone about the nature of the INCLUDE feature when creating a non-clustered (secondary) index on a table. My response was a bit long, and I haven't posted in a while -- ergo blogpost! Here's the question:

    Read More
  • Delegates or interfaces? Functional and OO Dualism

    I have a mixed background: doing C#/.NET for ~4 years then switching to Java (switched jobs). I have been in the Java enterprise ecosystem for the last 4 years. I do mostly Java, but enjoy doing a little C# every now and again. C# is really a nice language. Shame its in such a horrible Microsoft-centric ecosystem.

    Read More
  • I <3 Robert C. Martin

    Im reading Clean Code by Uncle Bob. I have read sections of this book before when it came out and actually had the pleasure of watching Robert Martin present it at SDWest in 2008. I've decided to read the whole thing. Read More
    • Maven -_-

      I have spent the last few days mucking about with POM files. Anyone that has done this understands where I'm going with this. So I'll just leave these two quotes that fit nicely:

      Read More
    • OO Reading List

      One of my favorite parts of Pragmatic Thinking is the description of the Dreyfuss model of skills acquisition. This describes the phenomena of how people are frequently distributed along some non-trivial "skill" (like programming), and defines metrics about what differentiates each skill level.

      Read More
    • Spring 2011 Reading List

      I gave last Spring's reading list (which was more what I had read in the previous year) in this post. This spring, I am going to write what I am currently reading or hope to finish this Spring.

      • Seven Languages in Seven Weeks Read More
      • Building Derby with Eclipse gotcha

        This is partially a reference for myself and for anyone else trying to build Derby 10 from source using Eclipse. My thesis project involves modifying the on-disk page layout for a database (long story for another post). I am currently using Eclipse for my IDE. I just wanted to document a quick pain point in case anyone else is Googling for the answer:

        Read More
      • Defender Methods: Neal Gafter is *not* painting a bike shed

        I follow the lambda-dev mailing list, and there is a discussion going on regarding defender methods and automatic disambiguation. Defender methods are a language feature that allows some interesting things:

        Read More
      • Notes on the Synthesis of Form

        I just got in Notes on the Synthesis of Form by Christopher Alexander. This is an academic, theoretical treatise on design. It deals with "what is design", etc. It was written in 1962, but the ideas are obviously still relevant today--even though some of the motivating examples seem a little anachronistic.

        Read More
      • Deadlock two ways (Microsoft SQL Server)

        Think of "Duck two-ways" or some other delicious meal. This is as tasty ;-)

        If you have done any development with Microsoft SQL Server with even a moderate amount of concurrent processing, then you have probably witnessed the dreaded:

        Transaction (Process ID 42) was deadlocked on lock resources with another process and has been chosen as the deadlock victim
        Read More
      • Some JIRA / GreenHopper Love

        This will be another brief, non-technical, un-informative post to rant..but in a positive way! I actually will post something informative and useful one day ;-)

        A team member and I have been using JIRA and recently started using the GreenHopper plug-in. The plug-in advertises that it is "agile" focused.

        Read More
      • Naming Matters

        This title is kind of a two-for: "Naming matters" as in matters pertaining to naming and naming matters as gee golly-- names really do make a difference! So hurray for homonyms and making a neat opening to what is likely to be a boring post :-)

        Read More
      • Save the commentary, please

        I am working on a thesis right now on optimizing data structures and algorithms in database systems. I am doing my implementation for the first part in MySql, and will be augmenting one of the storage engines (maybe InnoDB, maybe something else) to test out some of the ideas in my paper.

        Read More
      • Wow...erm...your database is leaking

        It's no secret that some of the traits that go into making good software developers are: problem solving, analytical, and abstraction skills. As we write code and design a software system, we exercise all of these skills -- in particular: abstraction. Abstractions allow us to build larger and more complex systems without needing bigger and bigger brains.

        Read More
      • Spring Reading List

        Wow...I really haven't posted regularly, have I? I'd like to catalog some things for my own reference, and to come back in years and chuckle at my musings and naiveté. This leads naturally into a topic: knowledge and learning.

        I am an avid reader. I don't really enjoy much fiction, but I love computer science and technology books.

        Read More
      • Welcome! Do you prefer a bold or mild brew?

        Hello,

        My name is Steve. I am currently an enterpise Java developer in a high volume transaction processing oriented domain. We do a lot of 'batch' workloads, and so my day is filled with lots of interesting challenges.

        Read More