Dan Lew Codes
1,810 FOLLOWERS
Dan Lew is an Android software developer at Trello, a visual collaboration tool that creates a shared perspective on any project. In this blog, he shares code as well as thoughts on life, the universe and the mystery of it all.
Dan Lew Codes
2w ago
As a summary, here's what I'm voting this year on my Edina, MN ballot (along with links to research on why I'm voting that way):
For all partisan races (president, senate, house/state reps) - the DFL candidate.
Statewide constitutional amendment - Yes ..read more
Dan Lew Codes
2w ago
Another post about local Edina politics, this time the city council race.
There are three candidates for two open positions; you get to vote for two:
Ryan Daye
Carolyn Jackson (incumbent)
James Pierce (incumbent)
Carolyn Jackson
Let’s get the easy one out of the way first.
Jackson has ..read more
Dan Lew Codes
2w ago
I’m gonna do some more write-ups on local (Edina) elections this year. (Those of you here for software development thoughts: I'll go back to that soon.)
Today’s race: Hennepin county commissioner for district 6.
There are two candidates for this race:
Heather Edelson (incumbent ..read more
Dan Lew Codes
2w ago
I’ve recently started a new job that uses Python.
The last time I professionally Python’d was 15 years ago, writing backends for mobile apps I worked on. At the time, I was still a novice developer, only a couple years out of college. While I ..read more
Dan Lew Codes
3M ago
Let me tell you a story about when I cut months of work off of a project.
Part of Rheaply’s offerings is an inventory management platform. A major problem customers run into is data entry - name & description is not enough, we need colors and manufacturers, dimensions and weights, etc. Accurately filling in the data for thousands of items is painful.
One idea we had to alleviate this problem was to create a product library - pre-vetted information about common products that users could autofill.
When we first set out to write a product library, we thought we’d have to spin up a new, intern ..read more
Dan Lew Codes
5M ago
Socrates once said “the unexamined life is not worth living.” He was immediately sentenced to death afterwards.
I, too, often find myself examining the minutiae of programming languages. Thankfully, I have not been put to death for it (yet).
After spending more than a decade honing my Android development skills, I’ve recently switched back to my first foray into professional development, JavaScript[1]. It has a lot to examine, and much like Socrates, I have many, many questions.
Today, let’s look at a seemingly simple question: how do I represent absent data in function returns?
Suppose I've ..read more
Dan Lew Codes
1y ago
Trombone Champ is a silly little rhythm game that took the world by storm last year (for approximately two weeks). The trombone is an instrument I've been playing for 25 years.
As a lover of both rhythm games and trombone, of course I got Trombone Champ. Naturally, I wondered: can I control it on an actual trombone?
The answer is: yes!
This video isn't new; I posted it a year ago on Twitter but that site is dead to me now. This longer-form content also gives me an opportunity to better explain the mechanics behind the video.
First, the trombone controller.
You'd think that you could easily co ..read more
Dan Lew Codes
2y ago
(This article is spoiler-free.)
In the past few years, I’ve fallen in love with exploration in video games.
This mechanic is key in games like Outer Wilds or Subnautica. You’re dropped into the middle of a world and are given free reign to go anywhere, discovering many surprises along the way.
I want more! However, recommendations for exploration games often include entries I’ve played yet don’t consider to be in the same genre. Breath of the Wild, Elden Ring, Death Stranding… all games I love, and while they give you much freedom, they never gave me the same sense of exploration as with Oute ..read more
Dan Lew Codes
2y ago
In 2015, I wrote a post about sharing code between unit tests and instrumentation tests on Android. Iain Cunningham just pointed out that the method I outlined no longer works.
That’s fine for me because I haven’t used that method in years! Nowadays I use modules, which provide a far superior method of solving the problem (and is the method Google promotes now as well). Here’s how that works:
Start with a module called :library.
Create a second module named :library-shared-test and put :library as a dependency of it.
Implement your shared test utilities in :library-shared-test.
Now, here’s th ..read more
Dan Lew Codes
2y ago
For a long time at Trello Android, we used the same class for parsing API calls (via Gson), making DB transactions (via OrmLite), and displaying data in the UI.
Here’s a pseudo-code-y example of a board:
@DatabaseTable(tableName = "boards")
data class Board(
@DatabaseField(columnName = “name”)
@SerializedName("BoardName")
private var boardName: String?,
private var cards: List<Card>?,
private var lastViewedTime: Long?
)
While it was allocation efficient and somewhat convenient to have all this data in one place, more often it was just a pain in the ass:
Availability sadness ..read more