Author Archives: grant
We’re already in the second week of 2015. Only fifty more to go! Before we get too far along, I wanted to share some reflections on 2014 goals. As before, our family has been using a Trello board to track and update our goals. I highly recommend the process of goal setting and achieving. In large part because, according to the Enneagram, I’m an Achiever (learned that in 2014). It just makes sense to me.
If you’ve never done goal-setting before and want to, then message me. I’d be happy to brainstorm with you and get you setup.
This Sunday I heard an excellent sermon on Jesus’ teaching about money in the Sermon on the Mount. But in the course of the service, I also heard a number of lies about money. I didn’t hear these in the sermon exactly but I did hear them Sunday morning. My experience of both God and money has been demonstrably significant in my life so it was hard not to interject at some of the lies that were shared. Two, in particular stand out.
“If we have any money, then it was given to us by God.” False. It’s hard for me to fathom how anyone could believe this. I suppose if we consider money a good gift and God to be the giver of good gifts then we’d have to say money comes from God. But money in itself has no moral value whatsoever. And fundamentally, if we have any money then it was either given to us by someone else or taken for ourselves. The source of our money is rarely so inexplicable as to be worth attributing to God. Maybe if we counted our job as a gift from God then by extension the paycheck is also but this is stretching it. Money is at best like a hammer and at worst like a drug. God does not trade in currencies.
“All of my money, is God’s money.” False. I’m not sure I know what people mean by this. It seems similar to saying, all of my stuff is God’s stuff. But this is just silly and ignores the whole idea of stewardship. Is it God’s Xbox or God’s wedding ring? It’s not useful to say that God owns those things and it’s not true. One of God’s greatest risks in creation was letting us own things ourselves. In that way, God steps into a position of vulnerability and intimacy with us, hoping that we will care for the things he cares about. The danger of describing it as God’s money is that we eschew our own responsibility and authority over it.
Money is characteristically relational. It’s meaningless without someone or something with which to exchange it. Let us be thoughtful, when we describe God and money, not to lessen this key characteristic.
Tomorrow will be the day for New Year’s resolutions. But today I thought I’d reflect on the goals I achieved in 2013, or at least my progress toward them. All in all it was an extremely productive and daring year.
- Get healthy: December over December, I’ve lost 16 pounds. In 2012, I weighed in at the doctor’s office at 161. I normally think of myself as 150 so 11 pounds seemed like more than small fluctuations. I resolved in 2013 to exercise, eat less sugar, eat more salad, and get my weight down to 140 pounds. For the first four months, all I did was change my diet: I stopped eating dessert and drinking beer every night; I bought the Trader Joe’s ready-made salads which make a great lunch; and I continued eating oatmeal with fresh fruit for breakfast. Beyond that, I didn’t have any rules or guidelines. I sometimes noticed myself binging on weekends but I don’t think it got too bad. In April, I got a bicycle trainer that let me ride indoors. That thing is great. I’ve gone from an average of 12 mph over 15 minutes to 21 mph over 20 minutes. And I reached a high average of 24 mph. That’s twice what I started at! I didn’t reach my goal weight of 140 so I’m going to press on in 2014 to lose another 5-10 pounds.
- Floss every night: I did it! I even like it sometimes now. My gums don’t bleed as they did when I started and I guess my teeth are healthier. I’m kind of bummed to need to continue this but I guess that’s part of being responsible for myself.
- Visit Japan: Shannon and I did it! What a great country to visit. I am fascinated by Japanese culture and particularly enjoy their hospitality and food. Our best photos from the trip are on Facebook. I wrote a little about the language barrier too.
- Square accounts: From 2012 taxes to loans from parents, second mortgages and major home improvements, this was a year of paying off debts. I’m proud to say we’re down to a mortgage and HELOC now and we’ve made a big dent in the HELOC. In 2014, I’m hoping to pay off the HELOC in full.
- Resign Microsoft, start Sole Proprietorship: I did it! Yikes! It still quickens my pulse to think that I’m “flying solo” now. Read about moving on from Microsoft and officially starting my own software business.
- Buy and care for a happy dog! I did it! Her name is Tesla and she is a beautiful golden retriever.
- Volunteer: I’m volunteering weekly in three places now: tutoring AP Calc students at Shannon’s High School, leading a programming club, and being a River Community Church Youth Leader. I didn’t expect to start any of these things specifically in 2013. I just knew I wanted to start volunteering. The experience has been a wonderful way to “give back” and share the things I’m passionate about.
- Publish Python modules: I did it! Two of them! I chose two projects that were small and would let me get a feel for Github, PyPI, and Read the Docs. Learn more about the tribool data type and Python runstats module.
2013 was an incredible year for me. I hope it was great for you too. Here’s to an even greater 2014!
I’m often fooled in thinking that simple looking things should be easy to duplicate. Whether its a discipline, or a thing, or a system, the simpler it looks, the easier I expect it to be. Instead these properties seem to be orthogonal. Some simple things really are easy but I think just as many are hard. Perhaps a few examples will help.
I’ve met more than one young software developer who thinks he could duplicate Facebook in a fortnight. Once you’ve learned a little about creating websites, how hard could it be? It’s mostly just text and picture posts, right? It’s just a front-end to a database of relationships and properties of entities. That’s what you learn in undergrad. But all these ignore the enormous problem that scale creates technologically.
Likewise with the iPhone. The device is incredibly easy to use. But Apple goes to incredible lengths to produce that effect. Anyone working with hardware, software, and humans knows how challenging it can be to get all three working in apparent harmony.
Want to give up smoking or any habit? Go cold-turkey. What could be simpler, right? And that’s easy, right? Wrong.
Imagine climbing a mountain. Do you go straight up or make switch-backs? The direct and simple approach is the hardest.
Likewise with code and refactoring. Most refactoring works to simplify the code. But why didn’t we write it simply when we started? Because simple and correct code is hard to write.
Perhaps most importantly, I think a lot of what Jesus taught exemplifies the simple vs. easy distinction. The more I study his life and teachings, the simpler I think his commands get: love your enemies, give to the poor, etc. These platitudes are simple but far from easy.
Watch yourself. Don’t be deceived in the distinction between simple and easy.
The Python Tribool module is the first open-source project I published. As the first, it’s been an interesting learning experience. Python has surprisingly good tools for testing, documentation, and package publishing. From a development standpoint, I wanted to point out two things.
When I began, I assumed it was possible to override the logical operators: and, or, not. Indeed it is possible but not with the built-in and, or, not keywords. Instead, you must use the bit-operators &, |, ^, ~. This was surprising and I’m glad I wrote tests before deploying. Similarly Python provides some dunder methods like __nonzero__, __index__, and __trunc__ which all raise a ValueError. Not implementing __nonzero__ makes an explicit comparison necessary. So rather than writing “if var_tribool:” you should write “if var_tribool.value is True:” That looks a little awkward but I’m thinking explicit is better than implicit.
Also note the design of the implementation: truth-tables. Rather than encoding a series of if, elif, else statements, I use table-lookups to compute results. The implementation is therefore both fast and easily inspected. You could even implement a new operator easily by simply creating a new truth table.
It’s amazing to me than for a project as simple as tribool, there are multiple valid implementations.
At the start of the year, I set a goal to develop and publish a Python package. I wanted to create something the community would find useful, that was useful to me, and that was small to “practice” publishing. Little did I realize how much I was over-thinking it. If you’re reading this now and considering a similar goal for yourself, then I encourage you to dive-in and leave your perfectionism behind. It’s really quite fun.
I’m happy to announce that I created and published my first Python package: the Tribool data type. Tribool objects implement three-valued boolean logic where the values are True, False, and Indeterminate. An Indeterminate value is either True or False. Computing with Indeterminate values sometimes has interesting results. For example, False and Indeterminate is always False but True and Indeterminate is Indeterminate. My implementation internally relies on a set of tables and maps Indeterminate to Python’s None datatype.
This is the first piece of software I’ve created that is truly public. You can test out the module yourself with “pip install tribool” from PyPI if you have Python installed. And you can inspect the source or even make contributions on Github. You can also read the Tribool documentation online.
I know I’m late to the party of sharing code in the Open Source World and it’s really kind of exciting. Better late than never. It’s so easy today to share tools and technologies. Thanks to all who have shared already. In particular, thanks to Kenneth Reitz for his samplemod project.
During Mission Year, I worked at the Georgia Justice Project (GJP) as the Prison Support Coordinator. I donned the title “paralegal” and visited our clients in prison. One particular man mentored me in this role. His name is Sanchez and he tells the best stories.
I wasn’t a huge fan of stories growing up. As I think back to my Dad reading to me before bed, I recall a series of non-fiction books about animals and plants and things. I’m sure my parents read fiction to me on occasion but I don’t remember it well. Being interested in math and science, it was easy to ignore. To this day, I’m known kind of strangely for being able to sit down with a good textbook and enjoy a read.
Now it’s official — I’ve received my Santa Clara Business Tax Certificate. Woohoo.
I’ve just got to wait now for the money-tree seeds that I’ve planted in my backyard to grow. Where did I get them you ask? Well online, of course. They’re probably made in China or something.
All joking aside, Grant Jenks, now open for business.
Just a few miscellaneous thoughts this Monday.
Exercise is the celebration of health.
One gives freely, yet grows all the richer; another withholds what he should give, and only suffers want.
Anxiety can leave us in a kind of functional atheism.
Any of these provoke your thoughts as they do mine?
Today I completed the V3 “Style Milestone” for My Web TA.
I think I should setup a demo next… if you’re not Shannon or myself, you’ll get stuck on the Login page pretty quickly. Although you can see the FAQ page (gear -> FAQ).
After demo… pricing? 🙂