about:drewcsillag

Musings of a programmer, musician, photographer, and Christian.

Sep 8, 2016 - 4 minute read - Comments - watch

Regulating My Mechanical Watch

For Christmas last year, my wife bought me a Seiko SKX-009 which I absolutely love. Even though I love it, I looked at a bunch of higher end Swiss watches but found that even though many of them look really great (I came pretty close to buying an Omega Seamaster Planet Ocean Chrono), but realized that when it came to the features I use on the SKX, the number of Swiss watches that actually fulfil them is very few.

Oct 3, 2015 - 3 minute read - Comments - watch

The Marvels Of A Mechanical Watch

I’ve been interested in timekeeping devices for many years, and have generally been facinated with watches, and in the last year or so, I’ve become I big fan of mechanical ones. I’ve been particularly interested in the Seiko automatics. I’ve not seen a better quality automatic watch anywhere in the price range, both in terms of the movement, and the case. The Seiko movements have proven, for the two of them that I’ve owned, to be very reliable and satisfyingly accurate.

Oct 1, 2015 - 8 minute read - Comments - git programming puppet

How I Stopped Worrying And Learned To Love `git rebase`

N.B. Some of this revolves around puppet, but if you know nothing about puppet, you won’t miss anything. I’ve been doing a bunch of stuff in puppet lately. Since my actual puppet runs are inside VMs which I nuke fairly frequently, doing the actual bits of development in the VM is impractical (and somewhat dangerous even). I use git to do my normal version control anyway, so that’s nothing earth shattering, but I also use git to update /etc/puppet in the VM from what’s on my laptop because it works really well.

Sep 29, 2015 - 5 minute read - Comments - refactoring programming

Single Return Considered Harmful

It’s funny sometimes how when you’ve done something in a particular way for long enough, it’s easy to forget why you do it the way you do. I’ve been a big fan of early return for a long time and was recently challenged on my view. The argument I had received in favor of single return was dubious to me, but it’s always good to recheck why you do something when you’ve forgotten.

Jun 15, 2015 - 3 minute read - Comments - gregg shorthand

Gregg Shorthand Update

It’s been close to a year since I started my shorthand quest in earnest. I did wind up changing systems from Gregg Anniversary Edition to Gregg Shorthand Simplified as I found it better for those, like me, who don’t have an in person teacher. Speed-wise, last I checked I was at something better than 70wpm. I’m probably a bit faster since then which is over six months ago, but either way I’m sufficiently fast for my needs – well above the 30-35wpm longhand I could ever manage.

Jun 6, 2015 - 4 minute read - Comments - dns lua whitelist blacklist

Website Whitelisting

For my Church’s public wifi network, my pastor wanted to only allow access to sites from a whitelist. Doing this turned out to be a bit trickier than we thought. The wifi router we have, like many others, has ways to catch keywords and things like that in website addresses and such. The catch is that it doesn’t work as soon as you put https:// in front of the address. We could do something like SonicWall reputedly, but they’re more money than we wanted to spend.

May 25, 2015 - 10 minute read - Comments - design storage

Storage System Design Considerations, Part 1

When designing storage systems for applications, not building something like a SQL/NoSQL database, I’m talking the layer/logic that goes on top, you have to consider a whole bunch of things if you want to build the “right thing™” for your application. In part one, we’ll be considering the simple cases (spoiler: most cases are simple) and SQL databases, in part 2 we’ll be considering NoSQL databases. Even with various considerations to think about, hard and fast rules about datastores tend to get very difficult, as the various considerations can push things around quite a bit as to how to best implement them for today while taking tomorrow into account.

May 17, 2015 - 3 minute read - Comments

Useful Software

Somewhat written to future-me, but also to others who may be looking in the direction of these things. General Software ApacheDirectoryStudio / apacheDS If I ever need to deal with LDAP in any way, this tool will make me have a happy. Keystore Explorer For dealing with Java Keystores. The commandline tool supplied with Java kinda sucks, this makes it easier, especially for things like x509v3 extensions which you need to twiddle if you ever do CA work.

Apr 25, 2015 - 6 minute read - Comments - programming java future-me

Java Server Best Practices

When writing Java servers (or servlets that run in a container), I’ve learned a few things that have saved me a bunch of trouble during development, as well as later on. Dependency Injection Injection: if something is singleton (request, global or any other scope), the only things injected to it should also be singleton – otherwise you get implicit singletons of things the singleton holds, and may not be what you want – and generally harder to reason about.

Feb 19, 2015 - 10 minute read - Comments - programming java dependency-injection

Dependency Injection Without A Framework

I think that most people would agree these days that dependency injection is a good thing for many reasons. It allows you to decouple concrete classes from each other It makes for a uniform method of object construction It simplifies plumbing Makes it easier to make testable classes The problem that I have with it is that, at least in Java, the main frameworks for doing it, being Guice and Spring, can sometimes be as bad as the problem DI tries to solve.

Feb 14, 2015 - 6 minute read - Comments - programming

Removing Magic

When starting as a software developer, everything seems like magic, compilers, IDEs, networking, kernels, etc. While we can ignore how these things work, to really grow as a developer, the magic must be removed. At the end of the day, our job is to produce something that works, having a well-rounded knowledge of how the full stack works can help you to understand when weird stuff happens, and come up with useful theories as to what is going on.