Notebook

  • First Synadia Release - Java Nats

    Today I released my first software for Synadia. I was tasked with re-writing the Java client library for NATs, and despite a few hiccups released a library I am really proud of today. The new library is easy to use for publishing messages: Connection nc = Nats.connect("nats://myh ...

  • Last Day At Google

    Today was my last day at Google. On the map the commute looked doable but in reality I couldn't do it every day. I really enjoyed working with the people there, especially all of the members of my two teams, but I just couldn't keep that lifestyle up. Perhaps someday I can live c ...

  • GopherCon 2015 Recap

    With todays release of the videos from GopherCon 2015 I thought I would write up my 5 minutes recap of the conference, in case it helps someone pick the videos that might interest them. Go Kit: A Standard Library ... Peter Bourgon Codifying what it means to write a microservice a ...

  • Open Source - Logging & Config Update

    I mentioned earlier a pair of packages I released to the Go community while at Fog Creek. Now that I am no longer with the company, we agreed to redirect folks to my personal fork of the two libraries so that I can maintain them. You can now access the config library at github.co ...

  • Plug and Play Services and Testing

    I got to thinking... One of the reasons some people give for having a complete test suite is that it makes it easier to change code. In the case of a microservice architecture I have seen people motivate microservices with the possibility of replacing them based on tests. The ide ...

  • The IDs have It Again

    While preparing for my talk at StrangeLoop last year I ran into a great post by Jeff Hodges. The entire post is worth reading. But I was especially excited to see the section labelled "Choose id spaces wisely." This reminded me of my post on choosing IDs, and just how important I ...

  • Google First Day

    Today was my first day at Google, and I am officially a Noogler. I am working in the brand lift team. I am really excited about this new opportunity, although at this point I am mostly just trying to learn about everything. I guess I have a few more months in my beanie. ...

  • Last Day As a Kiwi

    Today was my last day as a Kiwi at Fog Creek. Some of the things I am really proud of about my time at Fog Creek are: Rebuilding the FogBugz case event list. Every one that looks at a case in FogBugz is seeing my code in action. Leading the Kiln Team. Although temporary, I reall ...

  • Linked List Fun

    Talking to some folks the other day a couple of fun problems came up: How do you find cycles in a linked list? How do you reverse a linked list? Both of these algorithms can be implemented with very little extra memory, and I thought it would be fun to build them in Go. The ful ...

  • FogBugz + Kiln

    Derrick wrote up a great post about FogBugz's Kiln integration. I was especially excited because I worked on the new version of this in our JavaScript based user interface. Thanks Derrick. ...

  • Fog Creek Open Source - Logging & Config

    Today I opened sourced, via Fog Creek, two libraries I have been working on. The first is a simple INI config file reader. While the package is small, it has 100% code coverage with tests, something I am pretty proud of. You can get this package on github.com/fogcreek/mini. The s ...

  • HashTables for Fun

    My buddy and co-worker Blake Caldwell posted a fun little note on Hashtables today. It got me thinking about the simple hash table implementation I have been using for cough cough years. So I thought I would put it up on github and write a bit about it. First, let me introduce ...

  • Tagged Logging

    There are a lot of logging libraries out there. A LOT. So why did I want to write a new one for a project we are doing at Fog Creek? The answer is tags. Logging libraries deal with two fundamental areas, what to log and where to log it. Where you log things is a question usually ...

  • Strangeloop

    Had a great time at Strangeloop last week, culminating in my talk which is now on YouTube. If you haven't been to strangeloop, and you are a software developer, I highly recommend it. The conference was really interesting, the people were great and the opening party at the City M ...

  • Kiln and Trello

    We just turned on integration between Kiln and Trello. You can read more on the Fog Creek Blog - Kiln and Trello. This was my first project in the Kiln group, picking up some work by one of the developers that moved from Kiln to the Trello team. ...

  • An Introduction To Genetic Algorithms

    I had some time this weekend and discovered the magic that is pandoc, so I decided to convert the chapter on Genetic Algorithms over to my blog for easier reading. There may be some odd formatting due to the conversion, and my quick hand fixes. Please keep in mind that this intr ...

  • Go Interfaces and Pointers

    The Go programming language has an interesting take on pointers. While pointers exist, they are often hidden or dereferenced automatically. This behavior can be confusing around interfaces. Go doesn't use pointers to interfaces. So when you are working with something that is an i ...

  • Update on the Kiln Operations Log

    Earlier i wrote a post with an idea for an operations log. We ended up implementing that idea in Kiln. It has been great. For now, we are using a simple Ghost installation, with GhostHunter for searching. I did discover a small issues with the search, in that it uses RSS which on ...

  • Python and Google Drive

    I ran into a little issue today on my mac. I was trying to run python with a virtual environment. I have started keeping my work virtual environments on my Google Drive. But when I tried to run pip from my virtualenv, it failed with a "no such file or folder" error. Turns out the ...

  • Polymer, Hello World, NEXTSTEP Style

    I am at Google I/O this week. Since I am mostly doing web development right now, I was most interested in their announcements around polymer and web components. Polymer looks like a really cool library on top of a really cool technology, and the talks I have seen have prompted me ...

  • Is HTML for Pages or Apps?

    As I was learning about Polymer today at Google I/O, one of the speakers said something that sounded funny to me. I realized it is because I am old. No really, it is because I am old. I remember when the web "came into being". At least publicly. Back then, we thought of the web a ...

  • Searching versus Asking

    I was already out of graduate school when the world wide web became public knowledge and Mosaic hit the streets for the first time. I had already formed most of my habits for learning new things. Some of those habits have been updated. Some remain the same. When I went to school, ...

  • Strangeloop

    I will be speaking at StangeLoop this September. Check out the website for up to the minute details. My talk is titled The Eight Fallacies of Distributed Computing based on Peter Deutsch and James Gosling's earlier discussion of these fallacies. Abstract The wild growth of the w ...

  • Creating an Operations Log

    As I mentioned in a previous post, I recently joined the Kiln team at Fog Creek. One of the effects of my move is that I have needed to learn how to help run Kiln both within Fog Creek and for our customers. Essentially I have been trying to learn how to be a good operator for Ki ...

  • A Short Note on Automated Testing

    I think people can over test and under test. Take a simple example of testing a function that takes an integer and expects the integer to be between 0 and 5. You can certainly test all the numbers from 0 to 5, and maybe test -1 and 6 to see what happens if you pass a bad number. ...

  • SAS

    We were thinking about our road map for Kiln today and I got to thinking about the underlying principles, or themes, I want to guide our planning. Coincidentally, when I got off work and was poking around the web I ran across this post on principles and it motivated me to write u ...

  • The Kiln Team

    I recently transitioned from the FogBugz team to the Kiln team. We lost one of Kiln's founders, when he left Fog Creek after many years to pursue new opportunities, and I thought my general experience might be useful to the team. So I jumped on board and we have been working hard ...

  • The IDs Have It

    I was talking to my wife the other day about an application she uses at work. The application is used to track parts, and provides each part with a part number. She was talking about how hard it is to find parts, and my immediate thought was that the unique parts number would mak ...

  • First FogCreek Post

    Today I made my first blog post at Fog Creek. It isn't the most interesting post in the world, nor the funniest, but it is mine. One reason that I am so excited is that in my twelve plus years at TIBCO I never wrote a blog post or really did much to present myself to our customer ...

  • Monte Carlo

    Chapter 4 of the The New Turing Omnibus is about the Monte Carlo method. I spent a fair bit of time learning about Monte Carlo methods for my PhD and have had to explain it to a few people as a result. When I read this chapter, I thought back to my favorite example, and thought I ...

  • Finite Automata

    Chapter 2 of the The New Turing Omnibus is about Finite Automata. I wanted to do some of the exercises on the blog so I looked around for a good way to draw finite state diagrams. Looks like graphviz is the standard. I thought it would be easier if I could just write my graphviz ...

  • The Turing Omnibus

    I started reading The New Turing Omnibus. I am not sure what blog post pointed me at the book, but I read that it is a great tour of computer science, which sounded interesting so I thought I would jump right in. The first chapter is on Algorithms, which made me think of the firs ...

  • Simple Canvas Examples

    In an earlier post I talked about how I added the ability to include simple JS examples into my blog pages. I started working on some new code examples, and realized I want to be able to draw things as well. So now I added a class for automatically running javascript that draws o ...

  • Settling in to Fog Creek from 2780 Miles Away

    As I approach my two month anniversary at Fog Creek I have been thinking about being a remote worker. I worked remotely with TIBCO for close to 11 years, but I was really more like someone that hid in their office for weeks only to emerge on a semi-regular basis. I would genera ...

  • Building This Site - Update

    I posted earlier about creating a script to build this site. I have updated the script in a few interesting ways. I fixed a bug in the RSS feed code so that the feed is now reverse sorted by date. I removed the diff code that really did not work. I added a new command, upda ...

  • Last Day at TIBCO

    Today was my last day at TIBCO Software. In two weeks I will be joining Fog Creek Software, and while I wish I could work in their wonderful office on Manhattan island, I will instead be working from home and looking out my window onto Pasadena. I suspect that once winter starts, ...

  • Adding Disqus

    Added Disqus support to the site. I think this will be easier than building my on comments system, at least for the near term. I hope everyone enjoys the new feature and makes great comments. ...

  • Experiments in JavaScript Closures

    I have been trying to improve the object-oriented nature of my JavaScript lately. Part of that process is getting a handle on closures and public/private data. The following are a few experiments to help me process these concepts, I am posting them in case they help someone else ...

  • Simple JS Examples

    While I was writing this post about JavaScript I wanted to make an easy way to include JavaScript in my markdown and also show output from the scripts. I came up with the following idea. What if I can mark each example with a CSS class, I called it runnable, and then evaluate the ...

  • Building This Site

    When I decided to update my web site, I wanted, for ease of setup and maintenance, a static site. But I also wanted to be able to write using markdown. My first idea was to write a script to process the markdown and build a site, but then I ran across this post. Using Flask and a ...

  • Setting up My Raspberry Pi Cluster

    I posted earlier about setting up my first Raspberry Pi. This was a trial run for setting up a small cluster of five raspberry pis. To make life simple, I used the same steps to get berryboot and an OS on the other 4. This took a bit longer than some options, but with only 5 boxe ...

  • Unboxing My Raspberry Pi Cluster

    I posted earlier about setting up my first Raspberry Pi. When I bought the Pi I actually bought five so that I could set up a cluster. For those that are interested, I thought I would walk through my hardware setup really quick. I bought all the parts from MCM Electronics to buil ...

  • Setting Up My First Raspberry Pi

    I got my Raspberry Pi over the weekend, so I wanted to get started and see what I could do with it. I ordered from MCM Electronics and was able to get the PI with a clear case for $41.99 and the power supply for 6.61, much cheaper than Amazon, when I checked. The first thing I d ...

  • Getting Started with Flask on a Raspberry Pi

    I talked about setting up my first Raspberry Pi in a previous post. In this post I want to start talking about setting up and using Python and flask to create web applications on the Pi. This post assumes that you have already installed easy_install on your Pi. First, create a ...

  • Adding Google Search

    So I wanted to add Google search for my site, thus reducing the need to implement search. I found a great article on askdavetayler.com and ended up implementing my search form using: <form class="navbar-search pull-right" method="get" action="http://www.google.com/search"> <input ...

  • Number Utils

    I have, on a few occasions, needed some utilities to convert numbers to binary, so I created a class that will do this for the various numbers in Java and am making it available on GitHub for people to do what they will. For example, to convert from a short to binary I do: public ...

  • Number Style

    I have worked on a couple projects that involved building page numbers. As part of another side project I created a Java class for converting numbers to Roman numeral format, as well as English and data sizes. This class can be used for page numbers, or for an outline. I figured ...

  • Printing the Java Environment/Properties

    There are times when I have been programming in Java when I want to know about the system environment or system properties. I created the following class to print out the default properties and environment, but you could convert it to a utility class for use in a larger project. ...

  • Sting

    The first version of Genetik was designed for genetic programming as well as genetic algorithms. Genetic programming evolves programs rather than simple data. Rather than trying to manipulate a syntax tree, i thought it would be interesting to manipulate a stack-based language. T ...

  • Ping Pong Balls

    My wife and I went to a dance performance in 2008 at a local college. One piece in the show was about pinball or something like that. It was kind of abstract and to be honest, not that interesting to me. But I remember one thing. At the end of the piece they dropped about 100 pin ...

  • Hello World

    This is the obligatory hello world first post for my new site. Hopefully something more interesting will follow soon. I am planning to start with some code I wrote a few years ago, and some thoughts I wrote previously. I have long list of posts I am hoping to write in the next fe ...