The election doesn’t matter. I mean, it does in the short term. Very short. What matters is not who you vote for, though that does matter, but who is your Lord. You want change? You see hate rising? You see depression, racism, poverty, and worse?
Yeah, Man is capable of great evil.
Every single one.
Not just Democrats. Republicans too. And independents.
Christ is the answer.
Not the next politician with their oft empty promises. Not the seminars on anti-racism. Not the lectures on tolerance. Not the new racist business label on Yelp.
Christ is the answer.
On the other side of Biden winning the election is evil people in power. On the other side of Trump winning the election is evil people in power. Socialism? Evil people. Tolerance training? Evil people.
We cannot solve things without solving the true issue.
The human heart. Every one of us is a sinner. No one is good. And no matter what we do, we cannot be good. We just can’t. We can’t help but be a sinner. To be evil. To do bad things.
You need Christ to redeem you and His Spirit to burn out all that wretchedness from inside you. Christians aren’t perfect, but they are being perfected and have submitted to the God of the Universe to get better, to be made better.
And that is all that can make this world better. The only thing.
So the election doesn’t matter. Who you vote for doesn’t matter. The thing that matters is that you take a knee. Ask for forgiveness. For redemption. Salvation. Ask the Maker of your soul to do what He has promised to do. To scoop you up, clean you off, and welcome you into the Kingdom of God.
How is your hope this week? How is your peace?
Satan is doing a great job trying to rip all hope from the world. Rip it out and replace it with despair and fear. Fear of our neighbor, fear of our fate, fear of our government, fear, fear, fear.
How is your hope this week?
Christian, we don’t find hope in this world. This world, apart from Christ, is hopelessly wretched. Men? Men fail. That is our defining trait. We cannot put hope in Man, in government, in scientists. Men fail.
No, we Christians find hope in Christ alone. When the world falls apart, Christ doesn’t. He still holds the whole world in His mighty hand. His voice spoke the world into creation! His voice calms the storms! He stood down Death and declared victory!
How is your hope this week?
If it is weak, you may be listening to the world too much. You may be spending too much time watching the news and not enough in the Word of God.
And I get it. I am struggling with this too. I’m now home 24/7. I’m not getting the human contact that my soul desires. My only view out into the world is online and it’s gotten so dark.
Here I type on a glowing screen that gives me access to so much despair. But right next to the app labeled Fear is the app labeled Bible. Go there, Christian. Bring a pillow and a blanket. A warm cup of coffee. Dive deep. Start a new reading plan. God speaks. He wrote this for you. You have no reason to despair. He is on the Throne.
LifeHacker has a great article on how to automatically donate a portion of your Amazon Purchases to pro-abortion organizations, so I thought I’d share it with a little help for those of us disgusted by the killing of babies and want to help women and children in need out.
If you’re an Amazon customer and you’re disgusted with the onslaught of [babies], you can set your account to directly support [pro-life] organizations.
Through Amazon’s “Smile” program, you can choose from more than a million non-profit organizations that are qualified to receive a portion of Amazon’s sales in support of their mission.
The AmazonSmile Foundation donates .5% of the purchase price from eligible orders (that’s 50 cents for every $100 you spend), which admittedly is not much. But it does add up; Amazon reports that charities have received nearly $125 million, as of February 2019.
To set up your Smile account, go to the “Accounts and Lists” drop-down menu on Amazon’s homepage and then click “Your AmazonSmile.” From there, you can’t browse a full list of charities, but you can search for an organization to support by entering its name in the search field.
If you are in the Saint Louis area, I highly recommend searching for “Mosaic Pregnancy & Health Centers” in Granite City, Illinois, a great local organization that helps women.
When you’re placing an order, eligible products will be marked “Eligible for AmazonSmile donation” on their product detail pages. For your order to count, you have to place it through smile.amazon.com rather than the regular Amazon homepage.
Go make a difference and support women and children in tough situations.
Fewer words and more intentional questions go a long way in conversations and debates.
In both, conversations and debates, your intent should be to understand one another.
In a conversation, you want to understand one another so that you are not in disagreement and you get closer.
In a debate, you want to understand one another so that you can find what you disagree on and lay a persuasive argument.
All too often I see online debates and conversations starting with assumptions and arguing from there. Often wordy, long-winded, hard-to-follow exaltations. Sometimes the assumptions are right, but usually, they are simply strawmen. An assumed position for your opponent.
The foundation of debate is the definition of terms. Without an agreed-on definition, one can— and often does— disagree semantically and think they are disagreeing on the topic.
So my recommendation: Use fewer words and ask more intentional questions. Understand one another first. You cannot disagree with what you don’t understand.
Let’s start with something that no one can argue with. If I know all the variables going into an equation, I can know the outcome. This is an undeniable truth.
Could you imagine if you dropped a ball and instead of falling, sometimes it went straight up? No, no you couldn’t. The universe follows logical patterns. Outcomes are predictable and reproducible.
Sweet, let’s touch the touchy argument. Are people predictable?
We learned in grade school that everything works off cause and effect. Do people? Of course they do, says science. But philosophically, we desire to inject "free will" into the equation, don’t we?
I walk into a room. Three doors are in front of me. I must choose one. Can someone predict which one I’ll choose? Not easily. Now, if the doors are decorated with things and one is decorated in a way I am known to prefer, and I am a trustworthy person that doesn’t expect it to be a trap, I might have a high likelihood of choosing that door. But what if they are all just plain wooden doors? And I don’t believe in numerology. And I wasn’t coerced/lead to choosing a specific one.
I will always choose the one I choose. Why? Cause and effect. But what if a puppy is in the room? That’s a new variable. I might choose a different one. Given the same equation and the same variables, we can expect the same outcome.
But can someone predict which one I’ll choose? Only if they know all the variables.
Wait. So you are telling me that I don’t have free will?
No, that’s not what I said. Go back and read. I’ll wait.
You said I will always choose the one I choose! That means I couldn’t have chosen the other two doors. So I don’t have free will.
No, you do have free will. And you freely and willingly chose the door you chose. You were free to choose the others. You just never would have.
Free will is perception. I don’t get caught up on the term, personally, but others do. It is perception. Are you making a choice? You feel like you are, so I’d say you are. But the outcome is determined by all the variables going into the equation, so you are making an ultimately logical choice.
If your brain hurts or you need to have an existential crisis, take five minutes to breathe.
People are totally depraved. No one is capable of good. This is a basic Christian premise. If you disagree, I urge you to press on. Only part of what I want to say has to do with very Christian concepts. That is one of them. If it makes you feel more comfortable, let me put it this way: within evolutionary science, the claim is made that all things we do are for survival. Survival of ourselves and survival of our species. If that is so, we are making all decisions, even good ones for selfish reasons. Better? Okay, let’s continue.
It would be correct to say that people are capable of all sorts of evil. It would be incorrect to say that all people are capable of all sorts of evil. One word difference, but massive implication difference.
So why? See point number one.
Are all people capable of all sorts of evil? What does that mean? Grab a sampling of people. Random— which is impossible because of point one, but I digress. Okay. Are all these people capable of all the same evil? No. That guy over there is capable of murder. So is that gal. But not the rest. Those three are capable of rape. But not the rest.
Note the tense. Capable of. Present tense. I cannot speak to the future. We can make predictions, but outside of a controlled environment, we cannot predict what variables will change the individual's character— an effect— that can lead to the capability of evil they are currently incapable of. With me? I’m not predicting the future. Only the present. Okay.
So why are these people capable and these people are not. Point number one was that everything is cause and effect. If we can know every variable going into an equation, we can know the outcome of the equation. Right? And people are ultimately predictable. They just are.
But only if you know all the variables.
Okay, so we know why these people are capable and these people are not. Based on their lives up to this point, through the course of billions, maybe trillions, of causes and effects, they are where they are. They can make no choice but the one they can make.
Please stop squirming. I gave you enough time to have that existential crisis earlier.
The real questions are how do we know which are capable and which are not. We are not omnipresent and omniscient. We are not everywhere and we don’t know everything. True. Can we know?
Character and Integrity
People are remarkably consistent. As one can assume based on what I have said thus far. But you know this from your own life. Your best friend is nearly predictable. You can finish each other’s sandwiches. You are seldom surprised by their actions and reactions.
Why? Don’t they have the free will to do the completely unpredictable? Okay, I’m picking on you. Free will is a lie.
But you see it don’t you? Why is this? Character and integrity. Character is the attributes and features that make up an individual. Integrity is their level of consistency with ethical and moral positions. Over time, the closer we get to someone, the more we learn their character and integrity. They become less spontaneous and less random. Because they never were.
And as we learn about and become closer to them, we can— with more and more confidence— expect their reaction to certain situations. I can ask you if you were stuck in a specific scenario, who would you want with you.
So can we predict what evil they are incapable of? Yes, with high probability, the closer we know them. Why? Because we know more and more of the variables.
It would be correct to say that people are capable of all sorts of evil. It would be incorrect to say that all people are capable of all sorts of evil. One word differences, but massive implication differences.
Is my best friend capable of evil? Yes, of course. But all sorts of evil? No. I know her better. I could have missed something. Or she could have been hiding something. Or I could just think the worst of people. But my perception doesn’t change the variables.
Believing that some people— maybe most people— are not capable of a specific evil doesn’t go against total depravity. It fits with everything we know about the universe.
But only if we know people can we see this. We can only know someone if we get to know them. And only if we build into people can we change the world.
The difference between a half-assed app and a kick-ass app comes down to execution. Many apps try to be too many things at once— hey, have you thought about adding a tuner?— or packing in too many features too quickly. For Selah Chords to have that hand-crafted, well-executed look I wanted, I need to punt features.
When you are building an app, you have to define the MVP— the Minimally Viable Product. What is shippable? But, sometimes during development you reach a point that the product is shippable before you hit what you thought was your MVP. That happened with Selah Chords.
The initial MVP included Custom Tunings. The ability to add, edit, and delete tunings and instruments. Why? Because that is what the engine, the algorithm, was built to do. Give it a set of strings— and a couple parameters— and it would find chords. But once I had the interface for switching chords, scrolling through voicings, and the beautiful themes all in place I realized something. I could just load up a set of default instruments and tunings and ship it. Everything else was ready to ship, but to add Custom Tunings would take another month at least.
So I punted Custom Tunings. It made sense. It was still a very important feature to me, but not for the 1.0. And, as it turned out, not for the 1.1 either. Version 1.1 came with favorite chords, copying chord voicings, drag-n-drop, and banjo support.
You must, when you are building an app, have the goal of shipping. You can always ship an update. Ship early. Ship often.
I removed the ads from Selah Chords. As I developed Selah Chords, I knew I needed to try something new with the purchase strategy. Where Web Tools is a pro app for iPad, Selah Chords is targeted at a crowd with many free— albeit not great— options. So I baked in ads and a "Remove Ads" in-app purchase.
And it bombed. In a month and a half of availability, I have made 75 cents on ads and had just 2% of users pay to remove ads.
Here's the thing. You must annoy the shit out of your users to get them to see the value of removing ads. Think of any game you have played recently. You are mid-game and POPPPPP! A full-screen, full-volume, full-video ad. For 30 seconds you must wait to play again. And after the umpteenth time, you buy the in-app purchase to stop that shit.
That's called a "dark pattern" in the UX world. And I hate it. So I just had a simple ad at the bottom of the app. And it didn't annoy anyone. So why pay to remove it.
So I have removed the ads from Selah Chords.
Don't get me started on the small-government train here, but GDPR prevented me from launching in Europe. Why? Because the laws are unclear and very threatening for an indie shop. If I screw up even a little, I could be fined for potentially millions. So instead of trying and failing to follow a new law in Europe, I blocked Europe.
Selah Chords is now available for Europe! Because I removed ads. So now— as I have no server-side API use, no tracking, no privacy-invading anything— I don't have to worry about GDPR.
Free, but an IAP
Selah Chords is still free to download and use, but beyond the launch features— the best, most easy to use chord finder, with guitar, ukulele, mandolin, banjo, and dulcimer support— you will need to pay to unlock the full app. Right now, that means Custom Tunings. Next up is additional chords. And other features are in the pipeline.
If you wish to support further development, please buy the IAP for $5. That's a coffee.
You can turn a bunch of great ideas into a crappy product real fast by trying to do them all at once. You just can’t do everything you want to do and do it well.
Rework by Jason Fried and David Heinemeier Hansson
Half-assed products abound. Sometimes it’s simply a lack of quality. Often it’s something else.
When we think of a product, we usually think of it’s features. How many features? What features? Et cetera. If you haven’t built a product before, let’s do a quick thought experiment.
I tell you that you have two hours to clean the house. You have toddlers. That are home. And awake.
How much got done in that two hours?
Now I tell you that you have two hours to clean the kitchen. Same toddlers. Still awake.
How well did the kitchen get cleaned in each scenario? I bet the kitchen was a lot more clean in the second scenario.
Cut your ambition in half. You’re better off with a kick-ass half than a half-assed whole.
When we pare down our tasks, we do better at accomplishing them.
Same goes with product design. When I started building my chord finder app last year, the feature list was long. The competition had tuners, metronomes, and even song sheets. But those features never once hit my list. Because I couldn’t create a kick-ass chord finder if I was building a tuner. I’d end up with a half-assed chord finder. And a half-assed tuner.
But I did have other features on the list that didn’t ship with version 1.0. They didn’t ship with 1.1 either.
Most of your great ideas won’t seem all that great once you get some perspective, anyway. And if they truly are that fantastic, you can always do them later.
As you build, you will often get to a point that the product is complete. And sometimes it will surprise you. A feature you thought essential wasn’t. A feature you thought wasn’t essential was. If you prioritized your tasks well, you didn’t build the inessential features.
But the beauty is, you can always add them later.
Selah Chords will never have a tuner. That is a different product. Selah Chords is about chords. But coming to Selah Chords early this year is custom tunings, filtering, and more.
I build kick-ass half— not half-assed whole— products. Download Selah Chords today and see what a great, easy-to-use, hand-crafted chord finder can be.
Early this year I started playing with an app idea that became Selah Chords. I had a working prototype of the engine that would power it. I knew it could work. But what would differentiate it would be care for UI. Make it easy to do the things that needed to be easy. Instead of focusing on all the other tools that could be added— literally, the competition nearly includes the kitchen sink in their apps— I would focus on doing one thing really well.
A recently (at the time) published article from Michael Flarup had me encouraged to explore skeuomorphic design again, something I had been itching to do for years. To be honest, app design today is too bland. Most of us know that. It used to be full of texture and UI work, parts of the process that would take months. Each app had personality. Then iOS 7 happened. And all that work got thrown aside. Read that article.
I explored a number of paper, notebook, and other interface metaphors for Selah, trying to find a voice that could work. And in the end, I could not find a voice there. And the reason was because I wanted to rely on the screen, not the physical world’s physics.
I had one major interaction that needed to be nailed, in my opinion. Finding a chord. Seems easy, I know. But everyone makes the easy hard, for some reason.
This is a great app. I honestly use it quite a bit, as it supports chords that Selah Chords does not support. But finding a chord in Guitar Gravitas sucks. First, the root note selector is a slider. Second, the selected state is a dotted, 1px tall underline. This thing is horrible.
Then there is the scroll direction change in finding a chord. This app uses multiple panels that all scroll independently. This is not an iOS convention and instantly feels off. Mind you, on iPad, this is better because of the screen size.
The biggest reason that I use this app regularly, as opposed to others, is because of the chord charts. It shows me tons of voicings without the trouble that other apps make of that.
One of the most popular guitar apps, as it is a tuner— a pretty good one— that also provides other tools. Personally, if you want a good tuner, get Fine Tuner, but that is a different topic. The chord library tool is what we are focusing on here. Once again, sliding lists for root and chord, but made worse by the scroll for voicing. Guitar Tuna only provides a handful of voicings— standard movable shapes, essentially. But to see them, you have to flick one-by-one through them.
I do not use this app much. Mostly because the interface is less than ideal.
Another popular guitar app. Tuner? Check. Metronome? Check. Scales? Yup. And chords. That root note selector is better. All on one screen. No scrolling. But now to select a chord, you have to find it in a scrolling collection view— rows and columns— and expand it.
Wait, don’t tap— damn. It just played the chord. You wanted to see more voicings, didn’t you. Yeah, tap that small expand icon. And now, when the collection would have made since, you get this scrolling list of voicings and a guitar neck that takes up two-thirds of the screen.
Finding my Voice
As I looked to solve this one interaction, Jared Sinclair shipped ’Sodes. And boy. While not skeuomorphic, while super minimalist, it wasn’t boring. It wasn’t bland. Subtle gradients, sparse, well-thought our content layout design. The content was king, not the interface. But even without the interface being king, it didn’t get so far outta the way that you were confused. Buttons had borders. They looked like buttons.
So instead of making beautiful, meticulous textures, I started storyboarding animations. The first test of what I deemed gooey animation was built.
Instead of sharps getting their note name repeated, the sharp extended the preceding note button. The construction under the hood is fun, taking accessibility into consideration with an accessibilityLabel of the full name (“C#”).
And then the sliding selection. Clear selection state was important. At this point I was using Guitar Gravitas and that was my biggest grievance. Animating this allows for a fun, hand-crafted interaction, while not getting in your way. This is done by making the animation quick and informative.
The chord selector is brief. I didn’t need to support a hundred chords. Why? Because the most common chords can be summed down to a handful. I’m not looking to build the only chord finder you use, just your favorite.
Is Skeuomorphic Dead, Then?
I hope not. What I know is that it wasn’t right for Selah Chords. Which surprised me at first. I wanted it to be right. It might be for your app.
Banjo support is coming. Selah Chords started with guitar, ukulele, mandolin, and dulcimer. I am adding banjo. Also copying or dragging voicings out of Selah Chords is coming. And favorite voicings. And who knows what else.
Get Selah Chords today. It’s free and will become an essential part of your musical toolkit.
Over the last year I have been learning both ukulele and mandolin, after 20 years of playing guitar. As I tweeted over the weekend, I bought a ukulele and looked for a chord app. I had a couple for guitar, but none of them supported ukulele. I found out pretty quickly that most of the apps suffered from similar issues. They were hard to use— bad UX/UI—, lacked iOS esthetic, and didn't have the features I needed most where they needed to be.
Now so much of that is subjective. Yes. True. When I am looking for a chord voicing, I am looking for where I can play it. The most popular apps show a single voicing at a time.
Take this app from The Ukulele Teacher. Are there other voicings? I will guess that the 1/32 up top indicates that there are. But how do I get to them. Swipe right to left? Nope. Maybe that next arrow in the bottom right? Crap! Now it's playing an audio clip of the voicing. Swipe up? There it is! But no scroll indicators, just a change of the fretted notes and the "1/32" changed to "2/32".
Now I want to switch to a D minor. How do I do it? Tap the C major "title" up top? No. The music note at the bottom?
Not the easiest thing to use. And to be hidden away behind an ambiguous button when it is an action I am going to use the most? Not good.
I have been playing guitar for 20 years and never learned basic music theory. I didn't know how chords were formed, just where they were. Sure, I knew that they were multiple notes being played, but I never cared or concerned myself with which notes aside from my root was being played.
So I started there. How is a C major chord formed? Well, it's based on the C major scale. I didn't know my scales. Or how they were formed. Guess I would start there.
A scale starts with the root note and then takes a certain number of whole and half steps between notes back around. A major scale, for instance goes 1, 1, 0.5, 1, 1, 1, 0.5. That C major scale? C, D, E, F, G, A, B, C.
So back to that C major chord. How is that chord formed? A chord is formed on intervals of a scale. The major chord is using the I, III, and V intervals of major scale. Roman numerals for some reason. There is likely a wiki page for that explanation, if you are interested. So we start at I, which is our C, go to III, our E, and end on V, our G.
To the programmer reading this, you might have noticed that this is math. I certainly did. And math I can do. I love math.
So I Built an App
Looking through the App Store for an app that scratched my itch made me sad. As a UX/UI engineer, I decided that if this was just math, I could design a better looking/working app and build a chord finder that didn't suck. But first I needed an engine. Take that math and turn it into an algorithm. An algorithm that I could hand a set of strings and tell it to find the C major voicings— different ways to play it across the neck of my ukulele.
This was, surprisingly, done on an iPad. I opened Swift Playgrounds and built the first prototype of the algo there. Even had it doing basic drawing of the chord chart.
The algo was straight-forward. Use the above math to find the notes of the requested chord, find all the notes on the set of strings given, then find all possible combinations of those notes on those strings. From there start narrowing it down to actual, playable chords.
It worked, so I started the design process.
Defining the App
What's in and what's out. So I had a powerful algorithm. I could give it 4 strings, and it'd find the voicings of a specific chord. I could give it 5 strings. Six strings. Seven. Ooo. I decided I wanted to support multiple instruments, obviously guitar and ukulele being the top of that list. But as I built the first working prototype app and had it running on my phone, I switched to mandolin strings and went to Guitar Center to play around. See how well it worked and if I could pick up another new instrument. And it was a success. One that went onto me buying a mandolin too.
The app was to stay simple. Prize simplicity, be willing to hold back functionality that other apps may have. No scales, no arpeggios, lots of noes.
So what was required?
A beautiful, clean interface. Easily scroll through a list of chord voicings. Big enough that you could read them comfortably, but small enough that you could see many at once.
A simple mechanic to switching between chords. That above ukulele app made it very difficult to switch chords. Others do as well. I wanted none of that. So my app would have two bars. Segmented controls. Easily switch between root notes and chords.
Multiple instruments/tunings and easy switching between them. This would be in a drop down. I wanted this to be quick to access, but you wouldn't be switching instruments as often as you switched chords, so a drop down was logical.
Removing Features and Narrowing in on Version One
I wanted banjo support in version one. And the ability to mark a voicing as a favorite. And support for adding custom tunings. But shipping is more important. I shifted from feature building to spit-shine mode in October, realizing that I had a perfectly usable app.
I always remind myself of 37signals's Rework book. Do I want a half-assed whole product or a kick-ass half product? I can ship a dozen features with bugs and no polish or ship a half-dozen features with delight and polish galore.
So I Spent My Year on an App
Like most programmers that decide to pick up a new hobby, instead of learning and mastering ukulele this year, I learned basic music theory, built, and launched an app.
Selah Chords has shipped. And the initial reviews are that it is beautiful, intuitive, easy-to-use, and extremely useful.
And coming soon, banjo and favorite voicings. And after that, custom tunings.
Get it for free today!