On being humbled, again

I found myself in that spot again. That situation in life where I suddenly realize my arrogance has been festering, and God himself is opposing me in my pride. A reading of James 3-5 convicted me of it.

What causes quarrels and what causes fights among you? Is it not this, that your passions are at war within you? You desire and do not have, so you murder. You covet and cannot obtain, so you fight and quarrel. You do not have, because you do not ask. You ask and do not receive, because you ask wrongly, to spend it on your passions. You adulterous people! Do you not know that friendship with the world is enmity with God? Therefore whoever wishes to be a friend of the world makes himself an enemy of God.

(James 4:1-4 ESV)

He opposes me, but does not destroy me, because he is patient and merciful. His opposition is meant to turn me from sin and wickedness, and to him, who not only forgives, but is powerful to save me from my chronic sinfulness.

Or do you suppose it is to no purpose that the Scripture says, “He yearns jealously over the spirit that he has made to dwell in us”? But he gives more grace. Therefore it says, “God opposes the proud, but gives grace to the humble.”

(James 4:5-6 ESV)

Praise God! He is faithful even when I am not faithful to him. He is patient and does not pass judgment on me, and in his wisdom saves me from rightful consequences. And he is relentless, because he does not give up.

Submit yourselves therefore to God. … Draw near to God, and he will draw near to you. Cleanse your hands, you sinners, and purify your hearts, you double-minded. Be wretched and mourn and weep. Let your laughter be turned to mourning and your joy to gloom. Humble yourselves before the Lord, and he will exalt you.

(James 4:7-10 ESV)

So I am humbling myself. Again. How many times have I been here before? How many more times will I forget that the Lord is good to me? But God does not give up on me, and so I refuse to stay down and not try again. If I have any hope, it’s in him, and he promises to exalt me when I humble myself before the Lord. Yes, in my circumstances this is clearly my only hope: to humble myself.

I still remember that night when I prayed to God to never let me be drawn away from him, but to do everything in his power to bring me back to him. I gave my life to him, saying that nothing is as important as he is, and that he could remove or destroy, as he sees fit, any thing, person, or ambition that separates me from himself, or that causes me to be disobedient or displeasing to him. And so he has. It is often unpleasant, but I am always grateful after the fact. And in this particular circumstance, too, I am grateful, even though I still feel his opposition against me.

As I have often said, life is like a trip to the playground. The great cruelties and abuses inflicted on toddlers as they have their toys taken away, or are pushed into the sand pit, or are finally picked up and taken home by their parents against their will… these are apt metaphors for this life. I would never trade my relationship with my parents for another hour spent playing in my childhood; I would not trade closeness to the Lord for mere worldly comfort. The metaphor breaks down because what happens on earth does have eternal significance, but it is accurate in that the sufferings of this present time are not worth comparing with the glory that is being prepared for us for eternity.

I hope this does not seem so extreme to my non-believing readers. I can endure to lose everything for God’s sake because the perspective of a disciple of Jesus is much bigger than the limited scope of our natural lifetimes.

This is probably the most personal post I have ever published. If this isn’t your cup of tea, I’m sorry to say that there is more where it came from; please consider unsubscribing/unfollowing this blog.

On the anxiety of building my personal web site

This post has moved to a new home! If you're interested in Ivan's technology-related ramblings, please see blog.jonas.ninja!

I have discovered that I have been feeling a great anxiety over the looming task of building my web site (jonas.ninja). There’s nearly nothing there right now. I’d like to make it something, an extension of my personal brand. It’s kind of important! And so I panic, because in my mind I see visions of grand design, subtle visual effects and masterful content organization.

Well, that’s all nonsense. I don’t have a brand yet, so I can’t do a poor job of redesigning it. There is no established user base to be confused by a dramatic change in layout and style. And there’s certainly no content to be lost in poor navigation. My anxiety sprouted from that mixed blessing of perfectionism which drives me to make everything right the first time, for all time. In truth, I am as free as I could possibly be to make any web site that suffices my needs.

And that’s really the key word. Suffice. One of the few bits of knowledge I gained from my education is that iterative prototyping is a better way of arriving at excellence than building on assumptions and unproven theories. Seth Godin and Malcolm Gladwell also seem to think this applies to life in general. So perhaps I’ll make a series of barely-sufficient sites, or slowly improve on the initial one over time. The important thing is to stop panicking because my goal is not to make a masterpiece.

Things in the fridge

When things go bad in the fridge, how long do they stay before tossing them?

When you stop wearing old clothes, how long do they stay in your closet before getting donated?

When you have useless junk in your house, how many years go by before you throw it out?

Seems there’s a pattern. Might be hoarding, might be something deeper.

Applies to things. Applies to life.

When you realize you’ve been hurting yourself, how long before you kick the habit?

When you realize the company you keep does not challenge you to grow, how long before you search for people that do?

When you realize you’ll die in a few decades, how long before you stop wasting your days?

Questions to ponder. But pondering is just the first step. Once you have the answers, will anything change?

Be right back. I have to clean out my fridge.

Secure passwords

This post has moved to a new home! If you're interested in Ivan's technology-related ramblings, please see blog.jonas.ninja!

I remade my entire online account password strategy. It was quite a project.

I have about 170 online accounts that I care about. These range from pointless web sites that I rarely use to crucial email and bank accounts. Each has a unique password. But I haven’t memorized 170 unique passwords, oh no. I’m not that crazy. I have password generation algorithms that I use to create passwords. Depending on the type of site that I’m viewing, I used one of a handful of (very similar) algorithms to “generate” the password.

It was sufficient at the time. But the world is now more dangerous than it used to be. Security breaches happen all the time; millions of accounts are compromised at once. And you only hear of the ones that go public.

Enter the Risk Matrix (not as cool as the real Matrix, but probably less deadly). This is a tool used in Risk Management to describe the idea that Risk is a factor of both Likelihood and Consequence. Apropos of the topic at hand, even an extremely unlikely event can be considered risky if the consequences are catastrophic.

I realized that my password strategy had not been secure enough. If one or two of my passwords were to be compromised, an astute attacker would me able to guess the algorithms fairly easily; they would instantly gain the key to my entire digital identity. Low likelihood, extreme consequences.

I researched hacking techniques to figure out how to make the best password strategy. Of course, the best strategy is to have a unique password for everything. But that involves actually memorizing everything. I could use a password management system, but I’d rather not have a SPOF. The next best alternative (as far as I can tell) is to have a very secure set of algorithms that are easy to memorize, yet hard to deduce from a set of compromised passwords. So that’s what I set out to do.

It took me about 11 hours to develop them.

(I was also watching anime during that entire time. That probably had something to do with how long it took.)

For over a year I’ve collected information about which sites I use (that is, where I have an account), which username/email are associated with them, which SSO can be used, etc. Having generating my new algorithms, I used this list to make sure I updated all of my accounts.

(Having such a list has been extremely beneficial for me in other ways. For example, when my physical address or phone number changes, I know which accounts to update and do not forget any. I highly recommend making such a list for yourself. Just don’t store any actual credentials in it!)

The end result: a tangle of characters, numbers, and symbols that make sense to me, but which a dedicated attacker would be hard-pressed to decode. Unfortunately, because the algorithms are complex, it takes me about four times longer to type in a password than before. But I suppose that’s a price I’m willing to pay for security.

FED Journal 7

This post has moved to a new home! If you're interested in Ivan's technology-related ramblings, please see blog.jonas.ninja!

I’ve been unemployed for a month now. After two weeks of taking it easy (and a brief and strange foray into the mad world of contracting at a Large Financial Institution™) I have finally begun my studies in earnest. The finances are in place; I am secure for much longer than I plan to study. Current goal is to find a great employer by November or to get any programming job if I can’t find a desirable job by January.

My plans for July are the following:

  • Develop a functional prototype of MemoryTyper that may be adapted to become the web component of the mobile app Remember Me
  • Develop my website jonas.ninja and migrate my tech posts from here
  • Read the HTTP, HTML, and CSS specifications (this is the one I’m most excited about. I’m a nerd like that)
  • Become reasonably well-versed in the new ES6 features
  • Read one technical book, Universal Principles of Design and Design of Everyday Things
  • Review SPD1 (I took this a long time ago in Coursera, would like to refresh)
  • Gain a greater awareness of the items in my master list so I can make more informed decisions about future study plans
  • Improve my keyboarding speed from 60-80 to 80-100 words per minute (why is my speed so low?)
  • Finally finish IIPP (just for fun. This will be my fifth or sixth attempt. I keep missing deadlines accidentally)

Future plans involve actually turning MemoryTyper into Remember Me, taking the follow-up courses to IIPP and SPD, and reading yet more books. This is the boring stuff, but I feel it needs to be done now. The exciting stuff comes in the following months: a review of Startup Engineering, a read of Interaction Design (which I’ve been wanting to read since I was forced to drop the class back in university), Soft Skills, and things like that.

I hope to put out more frequent updates to chronicle my progress. I’m considering using the Codepen blog instead for code-specific posts and leave other technical topics, but I have legal concerns about the content I put on there. Whoops, sorry, I just said something boring again. It keeps happening.