I’ve gotten more involved in Angular’s devtools and have started contributing to Angular-hint, the engine behind Batarang, the most popular Angular debugging tool. I’ll be building out more in-depth profiling tools. (Get excited, all three of you Angular people here!)
There’s also a lot of cleanup that I’ve been doing and will continue to do on Card Minion. I’ve been putting off cutting out a largely useless chunk of functionality but I don’t think I can do that much longer. Launch will come soon!
This was a slow week, as my dad visited for the weekend. He’s halfway through a coast-to-coast journey and, while it was lovely to visit, I didn’t get much hacking done. Lots of planning/research, though! If anyone has any insights/links on user onboarding, I’d love to read them. Thanks in advance! I’ve found that a “Product tour” makes product managers happy but not so much users.
This past week, I’ve fixed as many bugs as I’ve found (that’s a win, right?) in my side project, finished a few more of the CryptoPals challenges and fought off a nasty cough.
This coming week in no particular order:
Welp, it’s time to scrap a large chunk of my project again. Testing has shown that an in-depth, separate onboarding solution just leads to user confusion (and that leads to hate, which leads to the dork si…where was I?).
I’ll either be using some plugin (this is JS, there are dozens) or hacking up my own (dozens plus one!) to do a “product tour.”
Crypto Challenge #12 was finally felled, now on to lucky #13. Really enjoying spending an hour or two on these, it’s like a breath mint for coders.
There’s some other misc stuff I need to do: finish a couple of blog posts, write up another script for my video project & deal with whatever bugs come up in commander.js.
Did another user interview, with only one major complaint! Oh goodie. I’m getting somewhere. Whipped up a quick solution (Problem: user thought the onboarding process was the entire product. Solution: Show screenshots of product in action as first step). Looked terrible.
Took a break from the UI/UX stuff (ugh) to slam out the first set of CryptoPals solutions (http://cryptopals.com)! Had an enormous amount of fun with that, can’t wait to tackle the next section. When your day job is frontend you forget how fun the complicated stuff can be.
Hello! Late the the party as usual.
I hope this is a good sign, but the things I’m working on in Card Minion are getting more and more detailed. Looks like the “big picture” stuff is starting to settle in. The biggest challenge I’m currently facing is tracking the state of address objects. Addresses can be partial, valid, complete, paid, or some weird combination of that. I’ve started building a more robust system that can determine when an address should be validated (the original system validated every address, every time, and you can guess how well that worked out). I’m also playing around with different ways to represent the various states/combinations to the user. UX isn’t my strong suite and has really required a lot from me on this project.
The good news is I didn’t need to create any new db migrations this week! Those always make me nervous.
Bit late, forgot it was Monday. Thanks, Bruce!
Started the weekend off with a rather intense user session with my wife (no, that’s not a euphemism). She found quite a few bugs that I had thought worked fine as well as many features that didn’t actually solve her problems the way I had hoped. Went back to the drawing board and came up with another “Things to fix” list (including one stupidly obvious thing I wish I had thought of at project inception).
The good news is these lists are getting more specific, which I’m interpreting as meaning I’m closing in on Something People Want. I’m also learningW stumbling through the debt tradeoff. Here’s hoping in a month or two I’ll be a lot better at deciding when to make it.
Did a bunch of experimenting with GraphicsMagick to extract handwriting from a page, ended up about halfway there, with some interesting results in between ( https://twitter.com/rkoutnik/status/569903293075496961 ). Short of a wizard granting me all the knowledge of images and manipulating them, I think I’ll have to put that one aside for now. Anyone know of any libraries/APIs that pull handwriting from a photo?
Bugfixes aplenty as well this week - finally killed the off-by-one datetimezone error with some creative SQL. Also reduced the number of steps in the onboarding flow, so we’ll see if that impacts any metrics.
Hello, lobsters!
This week was rough, with some turbulence from the dayjob spilling over into my personal life. Fortunately it’s all resolved but it meant less work got done. Most of the hackery was bugfixes - paying for all the times I just shoved something out the door. The good news is that the current state of the product is where I actually want to keep things around! My wife loves the product and has started using it (and that’s how we found the aforementioned bugs).
Lessons learned:
I’ve been putting a lot of work into polishing Card Minion lately. A lot of the “big ideas” are finally in place but the devil’s in the details. Particularly vexing is address normalization - I’m finding that there’s a TON of different ways addresses could be sliced (“Oh, anyone without a city is from my hometown”, “I usually just ask my mom for their street number and never remember to put it into Google Contacts”, etc, etc).
I’m also finding I’m pretty bad at UX. Whatever I come up with inevitably works (thanks, Bootstrap!) but it usually takes forever and needs lots of tweaking. Are there any good books/blogs/etc on web UX I could read up on?
Trying to digest promises.
It looks like an errr, “Promising” generalization of “run that function in that thread context”.
Since I’m working on a product written in C using the Ecos RTOS using a message passing architecture… I’m trying to see if I can make the promises paradigm fit into the statically typed, multi-real time threaded, no garbage collector world of C.
Wish me luck and deep insight.
I’m going to need it.
As a JavaScripter who’s been using promises more and more lately, there’s no moment where it all “clicks” and things make sense. Just keep pushing forward and you’ll get there.
I tend toward futures when it’s OK to block a thread waiting for a result. In most backend situations, if you’re on a non-UI thread, this is OK (presuming said operation completes/fails within a reasonable timespan).
To really understand futures, you should implement them. Think of them as a threadsafe queue that accepts one put, and blocks until the put completes.
The particular use case here is a real time system where no thread may block longer than the latency requirement on that thread. (Each thread has a different real time / absolute priority, single core, highest priority runnable thread runs.)
Hello! I’m afraid I missed last week, so here’s a bigger update on my project.
Startups are hard. In everything before this, I made something, pushed it to GitHub, went “Wheee!”, and that was it. Here, I’ve had to iterate on the product three times before I started getting positive feedback. The good news is fourth time’s the charm, and people are starting to like it! Bad news is I’ve been keeping a pretty low quality barrier for my codebase as most likely, I’d have to throw it all away. So that’ll need to be cleaned up eventually.
I don’t think it’s quite ready for the public, but I’ll link here anyway. Please, please, please provide feedback (either here or via email in the footer link): http://cardminion.com
This Saturday I finally switched the API keys from test to production on my side project. That was an incredibly nerve-wracking experience. Pestering some IRC friends to try it out resulted in a 0% conversion rate (which is still better than a 0% rate because you never launched). So this week I’ll be hacking on:
If anyone knows good writing on proper user onboarding, I’d love to hear it. Hopefully next week it’ll be ready to post here.
The general idea is Birthday Cards as a Service - the software takes care of all the hard parts of handling birthday cards (getting the card, remembering to send it at the right time, etc) while still letting you pick the colors/message/etc.
Over the past few years I’ve started many things and finished very few. 2015 is my year of finishing things.
The first thing on the list for me to finish is Card Minion, a small SaaS product I’m building. I’ve learned a lot in the six months since I last touched it, so most of this week’s work will be digging out antipatterns and restructuring code. I’ve already fixed my misuse of the disposer pattern leading to code leaking db connections - that was nasty.
One trouble I’m having is iterating over things quickly with Postgres schemas. What tools (NodeJS) are there for versioning/migrating schemas?
I’ll be digging into an in-depth study of rocketry and orbital mechanics, with some deviations into space station & rover construction. In other words, Kerbal Space Program 1.0 is out!
Though in code terms, I spent a good chunk of the weekend refreshing my knowledge of chrome extensions and building a sample project so newbies can learn from my pain: https://github.com/SomeKittens/page-message-demo
Next step is to implement that messaging system in Batarang with the new angular-hint engine. Whoo!
Also, finally figured out what I was missing in CryptoPals #16, so I need to finish that.