Let's Code: Learn In Public

This is a message to you all, but more so a message to me: it's important to learn in public.

Let's Code: Learn In Public

I have this nagging voice in my head that says, "No. You shouldn't do that. It's either already been done or no one will care."

It has stopped me from doing personal projects and blog posts, and gives me this feeling that it doesn't matter. This bleeds over into my personal life as well; I have an issue sharing things with my partner if I don't think he cares about them, and I treat my friends and family the same way.

But I've seen this phrase too many times recently for this not to be a sign of some sort.

Storytime: Exactly One Result

It's past 10am on a Monday and I normally have my blog posts fully fleshed out, edited, and ready to post days before. I have my posts scheduled to release at 9am, and I post them on my social medias after I check in with work.

But I have nothing for this week — literally this week that this post is released. That voice keeps whispering, "Nah." There's plenty of topics to write about in my notes, even a few attempts at starting them. But I just keep hearing, "Nah." Either it's been done or I don't feel confident enough in the topic yet to try to be a "voice." This is what usually precludes the end of my blog — it happened last year, and countless other times before.

I decide to throw myself into work. Maybe I'll run across something I can quickly write about and go on with my day. Some obscure Kotlin or Android thing that I can spell out in about 600 words.

I work as an Android developer at a startup in D.C. I'm currently restoring an old feature that was in the app some years ago, but removed because it was just not done well and usage was low. I've been working on it for almost a week now and today I'm getting my bearings on where I left off on Friday. I was building the flow to create a new inventory. Perfect. I run the app and encounter an error: my dependency injection library — Dagger — has apparently failed to autogenerate the code for my new screens, so I can't check what they look like on a device yet. I perform a clean, rebuild, and invalidate the cache and restart the IDE — things that typically fix 90% of the issues with libraries that auto-generate code.

Nothing works.

So, I run to Google. " DaggerAppComponent is not abstract and does not " is what I search, hoping for something. But, of course, I can't find anything that is even close to what is happening to me. I decide to make sure I have properly exhausted this query's results, and I do it again with quotations: "DaggerAppComponent is not abstract and does not". Avid searchers will know that I'm now looking for this exact phrase. It doesn't always help: almost no one has the exact same error message, but I was hopeful because I did not name "DaggerAppComponent."

I get exactly 1 result.

Solving obscure problems typically takes at least a few search results, combining Method #1 from the second result, Method #7 from that first one, and then shaking — not stirring — as suggested by someone on Twitter. "Perfect," I say sarcastically. "This isn't going to be helpful."

I click the result and jump directly to the answer, ready to make another failed attempt at searching.

The answer is very simple. I put my NewMeetingComponent into a package named "new". I forgot that in terms of java it's not a valid package name. Either Android Studio hadn't shown a warning or I had discarded it for some reason.

Well... fuck.

Remember, I was in the process of building a flow to create a new inventory. So, I also named my package new. The thought had crossed my mind briefly, but I ignored it; I expected a warning or something if that was the case.

I change the package name and hit run. Everything works now.

Then I leave a comment, cementing that, while not spelled out verbatim, I'm taking this as a sign:

Just a reminder to everyone: even if you think it's obscure, every bit of "learning in public" helps.

Let this be your sign, too.

Learn in public.

It's worth it.

Someone will care. Someone does care.

Fun fact! I wanted to get a picture of the error to use as a preview image for this post. I switched the package back to new – or, at least I tried to. NOW all of a sudden there's errors and warnings: "'new' is not a valid package"

Everything happens for a reason, yeah? Someone must have needed this post as much as me.