Ethan Brown

Software Developer

Ethan Brown

Ethan Brown grew up in rural Virginia, where he spent many bucolic days sailing on the Chesapeake Bay. As the son of an electrical engineer, technology is in his blood. He received undergraduate degrees in Computer Science and Mathematics from Virginia Commonwealth University, which is also where he learned to fence. Today, Ethan transfers his passion for fencing to the students of the Portland State University Fencing Club. His work history spans defense contractors to some of the biggest names in the software business: Informix, IBM, and Oracle. Still, he prefers the energy and community of small companies, and is thrilled to be a member of the Pop Art team.

Everything should be made as simple as possible, but no simpler.- Albert Einstein

Education

BS, Computer Science, Virginia Commonwealth University
BS, Mathematics, Virginia Commonwealth University

Interests

  • Fencing
  • Playing guitar (badly)
  • Judo
  • Art (painting & photography, primarily)
  • Reading

Favorite Albums

  • Nebraska – Bruce Springsteen
  • Closing Time – Tom Waits
  • Car Wheels on a Gravel Road – Lucinda Williams
  • Soul Journey – Gillian Welch
  • Life’ll Kill Ya – Warren Zevon

Favorite Movies

  • Fight Club
  • The Jerk
  • Dr. Strangelove
  • The Music Man

Favorite Books

  • A Day in the Life of Ivan Denisovich – Aleksandr Solzhenitsyn
  • The Secret History – Donna Tartt
  • Bluebeard – Kurt Vonnegut
  • Double Star – Robert Heinlen
  • My Uncle Oswald – Roald Dahl

Networks

Posts by Ethan Brown

Quick and Dirty Shuffle

Have you ever needed to shuffle (randomize) a collection of items? I'll show you a quick and dirty way to do it, and how to wrap it in a handy extension method, so that you can shuffle any enumerable collection with ease.

Read More…


A Problem of Vocabulary

In our industry, we don't work in a vacuum. We work closely with professionals in various but related disciplines, and communication is usually more important than genius. What is a great idea worth, if it can't be communicated? Don't underestimate the power of a consistent shared vocabulary, of the cost of a inconsistent, confused one.

Read More…


Formatting Dates to Make Excel Happy

You know what I love? CSV files. Now stop rolling your eyes and trying to come up with Luddite jokes. I like XML and JSON too, but you know what you can do with a CSV that you can’t do with XML and JSON? Append to a file! You can’t append to [...]

Read More…


Deferred Loading Gotchas

Deferred (or lazy) loading is a great feature of IEnumerable<T>, especially when dealing with databases, or potentially slow data sources (like a third-party API).  Most developers have enthusiastically embraced the rule of thumb “use IEnumerable<T> unless you specifically need more functionality.”  Usually you don’t. However, we’ve also learned that deferred loading can get you into trouble. [...]

Read More…


Say Guid Night, Gracie

I’m afraid I’m going to be letting down some old friends with this post, and I will certainly be opening myself up to mockery.  What can I say?  I have no fear of admitting I was wrong about something.  And I was wrong about GUIDs. And with this post, I’ll make my apostasy public. For [...]

Read More…


Doubling Down

A question at Stack Overflow caught my eye today: how to “max out” a number. That is, if you’re given the number 1234, return 9999. If you’re given 12345, return 99999, and so on. Most of the answers were fairly practical: converting to a string representation, counting the digits, then constructing a [...]

Read More…


How to Avoid Obvious ‘Git’ Puns in Headlines

The headline is self-referential. Like many people over 25 in the tech industry, I have spent a lot of time using Subversion.  I liked Subversion: it got the job done, it was a lot better than CVS, and it was pleasantly ubiquitous. Over the last couple of years, though, it’s been harder and harder to ignore the [...]

Read More…


Git #1: Go Fetch

This will be the first in an series of blog posts on Git.  I doubt that anything I say here can’t be found elsewhere on the internet, but maybe my explanation for things will be the one that clicks for someone and if so, this won’t be a wasted duplication of effort. These are not (yet) [...]

Read More…


Things Only Mathematicians Can Get Excited About

One of my pet projects involves creating a “direct elimination table” — the tables that are used in sporting competitions to match up teams or competitors until only one is left. The logic behind a direct elimination table is based on a very boring “ideal” competition: one where there are no surprises.  The first seed wins, [...]

Read More…


Sorting Geocoded Data by Distance from a Fixed Point

Here’s a common situation for you: you have geocoded data in a database (store locations, for example), and you want to provide a way for users to search for locations near their address.  Of course you can’t store a “distance” field in the database, because the distance will be different for each query, so it [...]

Read More…


Errata & Notes

In this blog, I endeavor to be as factually correct as possible, but nobody’s perfect, and things always slip through.  Just going back and correcting my posts isn’t good enough, because those changes won’t show up on your RSS aggregator, and it pains me to think about you walking around with false information that came [...]

Read More…


Bon Voyage, 2011

Time to put another year to bed…fare thee well, 2011!  In a lot of ways, I shan’t miss you, but professionally, you’ve been very good to me. I’ve always been a resolution maker; I haven’t always been a good resolution follower, but I’ve always liked the ritual and, you know, sometimes I do succeed in living up [...]

Read More…


I am the 10%

Our fearless leader Steve asked me recently “do 80% of programmers think they’re in the top 20% of good programmers?”  I certainly think I’m in the top 20%.  Heck, I think I’m in the top 10%.  Putting aside my not-inconsiderable ego for a moment, though, it begs the question “what makes a good programmer?” In this [...]

Read More…


Wither Thou Goest, Pseudorandom Number Generator?

I recently implemented a site (The 2011 Rosey Awards) that had to support the ability to display entries in a random order.  The reasoning behind this was to give every entry a fair chance to show up on the first gallery page.  You can change the sort order, of course, but it defaults to random. I [...]

Read More…


Happy Birthday, vim!

My favorite editor just turned 20!  In another year, it’ll be able to drink. I’ve flirted with emacs in the past, and I respect it’s power, but there’s something about the clean separation of the editing mode and the command mode in vi that just keeps me coming back. Don’t go downloading vim if you don’t feel [...]

Read More…


Command-line Git and Windows Gotchas

If you come from a UNIX background, you know how much the Windows command-line sucks (hint: a lot).  Powershell is a little bit better, but still, at least in my mind, a far cry from the power & flexibility of bash (or whatever your favorite UNIX shell is).  But I digress. For a while, I was [...]

Read More…


(cons “R” (cons “I” ‘(“P”)))

Rest in peace, John McCarthy. You were instrumental in opening my mind at university. Thank you for that and all your contributions to computer science and artificial intelligence.

Read More…


IDictionary: Merriam-Webster it Ain’t

I can’t decide which bothers me most: that enumerating an IDictionary doesn’t guarantee any particular order, or that most programmers don’t seem to know this important fact. Update: this post generated some discussion among the folks up in Redmond, but their overall stance was as expected: don’t expect anything to change. I didn’t, really, but I’m [...]

Read More…


Godspeed, Rosey Awards

When I got tapped to do the back-end work on the Rosey Awards website, I knew that I was in for trouble. It’s a pro-bono project and, while Pop Art encourages pro-bono work, the hours spent on pro-bono work are scrutinized a lot more carefully. After all, Pop Art has to look out [...]

Read More…


Even Microsoft Does It

If you create a new MVC 3 application in Visual Studio 2010, and look in the account controller, you’ll see the following line: FormsAuthentication.SetAuthCookie( model.UserName, false /* createPersistentCookie */); Hasn’t anybody noticed C# 4.0 introduced named parameters? This was an incredibly welcome language addition to me. Here’s how I would have written [...]

Read More…


Getting a Single Element from an Enumeration

I’ve got a quickie for you today: how to get a single element from an enumeration. That’s easy, right? Just use First(). Oh, so you think your’e so smart, do you? Well, there are three more choices available to you: FirstOrDefault(), Single(), and SingleOrDefault(). Most of the time, I see [...]

Read More…


Leveraging the Power of Generics in C#

I read a lot of code, and one thing I do not see enough of is the use of generics.  Now, don’t misinterpret: I am not advocating using a language feature for the sake of using a language feature.  What I mean is that I often see programmers go through ridiculous contortions to make something [...]

Read More…


Taming your .csproj File

If you work with Visual Studio, you’ve probably cursed your .csproj file at some point, especially if more than one person on your team is using the same .csproj file. I certainly have, but I’ve finally come to terms with this unruly beast, and today I’m going to share some of the things I’ve [...]

Read More…


Don’t Fear The Web.config

There’s someone at our organization — I’m not going to name names — who handles Web.config files as if they’re unexploded pieces of ordnance.  Now, to be fair, he’s probably seen a lot more borked websites than I have and, often, the problem is a Web.config change. For those of you that aren’t ASP.NET developers, the [...]

Read More…


Do We Really Need Another Document Format?

Last week, Wolfram Research released their new document format, Computable Document Format (CDF), along with a free player. CDF, like PDF, promises a platform-independent format for disseminating digital documents, and I can hear the chorus of tired computer users asking “do we really need another document format?” Certainly PDF has achieved almost complete ubiquity, as [...]

Read More…