Archive for the ‘Life’ Category

I’m always nervous when something unexplained happens. When I couldn’t pinpoint why July’s revenue was way up I braced for the possibility that it might drop just as suddenly. Well, income rose to 1,406.88 in August, and users are up 4.7%. I’m now feeling confident this change may be permanent, and since my numbers tend to go even higher leading into the final quarter, I’m daring to hope $2,000/month may be a possibility by the end of 2018.

This month I continued to focus on user experience.

The Apache server log parsing script ended being so useful at uncovering hidden issues last month that I decided it was finally time to add unit tests and see what issues they could uncover. Unfortunately the current code base wasn’t designed with unit tests in mind. (I don’t fault my prior self, it was important to hit the ground running those initial years and get content fast to start building an audience.) I was able to add a unit test case framework for my PHP and Javascript code, and enough unit cases that I did uncover one issue in a function very rarely called. All things considered, the time spent creating the unit test framework has not paid off yet, but going forward I’ll be sure to code with unit tests cases in mind and that will ultimately lead to less time debugging. It’ll also be useful for the next major code refactoring.

I found a couple of nasty bugs.

The first major bug was an issue in the way I was calculating time, and an example of premature optimization. I was trying to be clever and it bit me. (At least the issue wasn’t in the modal window which I had been working so hard on!) The new approach is not as efficient, but the differences does not appear to be human detectable. Since the time motivation suit is so important, I made sure to have tests cases to catch any further issues.

The second bug was the result of a third party library failing silently on less than perfect input. In my opinion that is unforgivable. Imperfect input is more common than perfect input online, and it’s often easy enough to do basic sanity checking to catch most issues. It also failed for URLs that included non roman characters. Rather than try and patch it, I decided to write my own library (also with unit tests!) with new interface that’s more suited for my use case.

My plan is to avoid third party libraries wherever feasible in the future. I keep running into issues with them. Perhaps it’s an unrealistic fear, but I do worry that the licencing might change on me after I’ve become dependent on one. And then there’s the time the api was completely changed on me

August 25, 2018

In Need of Practice Runs

I made a cardinal mistake when photographic my kids with their first day of school signs: no practice run.

The issue this time wasn’t incorrect camera settings, it was all the other things I couldn’t control. I was expecting an overcast sky like last year for a nice soft look, or at least a sun at a favorable angle. Instead I had full sun and harsh light. Lack of solid sleeping combined with over excitement made it difficult for the kids to sit still. The sun wasn’t right, and the mood wasn’t right. As a result, the picture wasn’t right. I do have many funny outtakes, though, including Alexis holding standing in profile with her sign as though it’s a mug shot.

There’s a trade off between the idealized and authentic in photography and I definitely err on the side of idealized.

When I look back at the year’s photos, I’m happier seeing the best ones, than the most authentic ones. It doesn’t bother me if a photo is a staged recreation, or taken a few days early or late. To be honest, I usually don’t remember those details anyway. It does bother me if the photo is technically flawed. It does bother me if, when I see the photo, my first thought is how I should have or wish I had taken it.

What I should have done was taken a few practice photos with our “first day of school” sign the weekend before, when we weren’t under a time constraint. If the lighting was bad that day, or the girls just weren’t in the mood, we’d be no worse off. On the other hand, if we ended up with a great photo I’d have a back-up shot I could potentially use for my highlight reel if need be. True, it wouldn’t be authentic, but it would have taken the pressure off on the actual first day of school.

Rather than practice shots this time, however, I did “retakes” a few days later which ended up much better. It was too late for my highlight reel this time, but at least I have them.

August 13, 2018

Dana at Seven Months

Dear Dana,

I must have blinked. In the span of what feels like just minutes you have become a vastly different baby.

You are very aware of your surroundings these days. You even seemed aware that Mommy was sleeping in the same room with you, though you couldn’t see me from than vantage point of your crib, and that awareness was starting to impact your sleep. There were too many nights when I inadvertently woke up when going to bed myself, or because I rolled over in my sleep. So, at the start of August, we decided to move your crib back into to your own room. As with all transitions, it was harder for me than for you. You woke up one additional time the first night, but that was the extend of any sleep disruptions for you. I, on the other hand, still get a little sad when I walk into my bedroom and you’re crib isn’t there.

I may not have had a chance to put together the nursery quiet like I wanted, but that hasn’t hampered your enjoyment of it any. You love the new toys, and the black out curtains help keep it cooler and darker than mommy and daddy’s room. Now that you’re in your own room, you’re even napping for longer stretches more constantly during the day.

We will be transitioning out of the baby bath in the very near future. You’re almost too long for it, and definitely too mobile. Being the momtographer that I am, I took some “last day in the baby bath” pictures, and put them side by side with your “first day in the baby bath.” It’s incredible how much you’ve grown!

You do love your toes!

You took six onces from a bottle for the first time last week, and you’ve gone from eating half a stage 1 puree, to two stage 2s. You eat a fruit at lunch time and a vegetable at dinner. So far vegetables are the clear favorites. Squash is number one, and you prefer peas and green beans to apples or peaches. You are just not into anything sweet. I hope that lasts! Trust me, you don’t want a sweet tooth like mommy. I plan on adding some yogurt for breakfast into your diet very soon.

Your favorite things these days are your sisters, your toy remote and your jumperoo. You will use any piece of fabric near you to play peek-a-boo: burp cloth, mommy’s shirt, the towel. You’ve gotten quite good at it, and can even play by yourself!

You’re up to the 82nd percentile for height, 60th for weight. That’s incredible given where you started from! You will always be my baby, but you are not not so itty bitty anymore!

Love Always,
Mommy and Daddy

What’s a textbook sign that you’re a classic over-doer? Geeking out to your todo list. Not the list itself, but specifically how you organize it. This here is my third post on the subject. I think I need to check myself in to Todo Lists Anonymous.

I fell behind, again. At one point my weekly task list had nearly 50 items. Once my list gets that long it becomes really hard to see what I need to do at a glance, and I sometimes miss critical details. Most of those tasks were cleaning related and not time sensitive. I wanted a way to mute my cleaning project so I could be sure I didn’t miss anything important while I got myself caught up. My chore app (todoist) doesn’t provide this functionality, so I needed a work around. I also wanted to make sure I knocked off a non trivial number of non-reoccuring tasks each week or I’ll never get on top of things. The solution I came up with works for both.

A little background: the todo list app I’m using is Todoist. It allows me to create sub projects, and sub tasks. I can color code projects, set individual task priority and (when I fall behind) reschedule everything with a single button push. The higher priority a task has, the more immediately it’s rescheduled, but todoist tries not to overload any one day. Let’s say it’s Monday, there’s 10 items due Tuesday, and the rest of the week is mostly unencumbered. Todoist will likely schedule the highest priority over due tasks on Wednesday and the lesser priority tasks later in the week.

Setting the priority flag for every non-cleaning task would be a little ridiculous, not to mention time consuming. Besides, it loses its meaning if everything in a given project is top priority. I needed a different solution.

Since Todoist relies on the priority flag when rescheduling tasks I like to reserve it for things that really shouldn’t be pushed back or could have a negative consequence. Failing to change filters could make appliances less efficient and shorten their life span. Forgetting to clean the washing machine could contribute to mold build up, but it’s less likely. There’s no harm in ignoring dust bunnies. By using the priority flag this way I’m sure I’ll still complete them in a reasonable manor.

Todoist let;s me set a color code for each project. I opted to use the same color – grey – to represent low priority sub projects. I created sub projects “reoccuring” under household, business and personal. Now when I look over my weekly todo list my eye naturally jumps over the less important grey tasks for the non-grey ones. I can also see the ratio of important non-reoccuring tasks to reoccuring tasks in my weekly productivity view.

This way I can be sure I’m making forward progress each week. If my weekly bar is mostly grey, I’m not. My goal is thirty tasks a week (todoist’s default goal setting), and as many non grey tasks as possible. It would be easier if I was better at sticking to my 5 minutes per task rule. Business related tasks like debugging especially usually end up taking a bit longer. Ah well, it’s still forward progress.

As an aside, I also have a weekly re-evaluate and organize my todo list. Definitely over kill. Don’t worry, it’s in a grey less important reoccuring project.

July simultaneously both blew away expectations and disappointed. I earned $1355, over double of last month and well over the $1000 target I initially set for myself when starting self employment, but I also had a 10% reduction in audience size.

My initial fear about the increased revenue was the additional ad clicks was due to misclicks, unintentional clicks on ads. A bug in the new interface could move the ads too close to app buttons, causing accidental clicks. That would drive down user experience and hurt my ultimately bottom line long term. (Not to mention if Google thought ad clicks on my site were low quality they may elect not to advertise with me.) Fortunately, that does not appear to be the case. Revenue has been consistently up since the new launch. It’s up among all devices and across all apps, though Time Until saw a considerably larger increase than the other apps. I have also verified there is still a significant separation between app and ad on all major platforms.

My working hypothesis is it’s a combination of factors. Revenue up across all platforms and apps could indicate an update on Google Adsense: better ads leads to more clicks leads to more revenue. It’s also possible that with the new launch and interface tweak the html changed in a way that made the page more accessible to the google spider allowing it to choose better ads.

The new admin panel is already proving invaluable. One of the new features was a view that groups all apache messages by type – warning, error, etc – in order to make it easier to see what’s going on with the site at a glance. This has lead to the realization that visitors are using the apps in some ways I haven’t anticipated. For example, I was intending the name blender to be used with single names, like Sarah + Emily, but found some visitors were imputing multiple names, eg Emily Elizabeth + Charlotte Rose. I only detected this because the space caused a php warning message. It was technically working, but the blended names were a little wonky. The tool now handles this use case much better.

The new error log binning also helped me uncover a spelling mistake in a URL. Since it was a one character typo and I use automatic spell correcting on my 404 errors, the spelling mistake resulted in a 301 redirect message to the right URL. As a result, a human would never notice it, but it could affect web crawlers and therefore ranking & indexing.

Overall errors are down to 0.003 per user. About 80-90% of the errors are non-linking 404 File Not Found errors. This includes instances that are clearly probing to see how my site is put together, and possibly looking for vulnerabilities. (“/admin”, really? I don’t rely on security through obscurity, but at the same time I’m not going to make it that easy for you.) I’m not seeing any more message from Dreamhost about the server being unstable, but I am seeing some indication in the logs that Datayze is under heavy use and that can cause hiccups. Since I wasn’t monitoring the logs before, I don’t have a frame of reference for what’s expected given a site of this popularity. I plan to continue to monitor the situation. At least now it will be easy to switch servers should the need arise.

Finally, I launched Time Since, a companion app to Time Until.

July 21, 2018

Changing Traditions

I first started Hallmarking the winter of 2009. It was just before New Years. Domingo and I were vacationing in D.C., and killing time before meeting family for dinner when we wondered into a hallmark store. It wasn’t even an ornament from the current year’s collection I first picked up, but the previous year’s “Welcome Friends” the store still had on hand for a steep discount.

Hallmarking combined many of my great loves: shopping, bargain hunting and Christmas. Since I was new to the hobby there were lots of great ornaments that fit my ascetic found cheaply on eBay and Amazon. A few years after I picked up that first “Welcome Friends” ornament, however, I began to exhaust that supply.

It wasn’t long before the only deals to be were after Christmas sales. That worked fine, up until I started have multiple kids, and couldn’t always make time for in person shopping. Last year, at 39 weeks pregnant I opted to just order online from Hallmark.com after the holidays. The ornaments were on sale, but I had to pay shipping. I paid effectively the same price as if I had bought in store at full price before the holiday, and didn’t even get to enjoy the ornament that year. Anticipating not making the after Christmas sale again this year, I purchased online from Hallmark.com, paying both full price and shipping.

The truth is, now that I don’t have time for the bargain hunting aspect, the hobby isn’t nearly as enjoyable. It’s feeling more like an obligation and less like a joy. So for now, I’m likely stopping our hallmark tradition.

Another tradition that’s changing this year is Black Friday in person shopping. The biggest driver for this change is time, and lack there of.

We always intended our Thanksgiving tradition to be putting up the Christmas decorations after the kids go to sleep. There’s something magical about waking up to a fully trimmed tree and festive house. We haven’t met that goal since 2013, and with multiple trees it’s even harder. Nicole is already starting to question the existence of certain mythical entities, so this may be the last year to really embrace that Christmas magic while she still believes.

We’ve been having better luck snagging deals online shopping anyway, and last year’s experience was pretty miserable (though I won’t be pregnant again during any future black Fridays!) So this year we’re committing to online Black Friday shopping only.

As far as traditions go, ones based on shopping are the least worth preserving anyway.

July 15, 2018

Puzzlemania

2018 will forever be remembered as the summer of the jigsaw puzzle in our house.

Jigsaw puzzles were a big part of my childhood. I remember sitting in front of the coffee table with my mom and sister, working on 5,000 piece puzzles together. The one in particular that sticks out in my memory was sheet music of Beethoven’s 5th. Growing up we had a collection a 100 and 250 piece puzzles that, when they became two easy, my sister and I would dump them over backwards and assemble them upside down. I even spent a summer with my best friend on an “impossible” branded puzzle which had no straight edges. Since that wasn’t challenging enough, the backside of the puzzle was stamped with the same image as the front side, just rotated so you could never tell by looking at a single piece if it was upside down or not.

We were always destined to be a puzzle house.

As new parents Domingo and I stocked up on baby puzzles. I remember baby Alexis chewing on the wooden knob of a Melisa and Doug Shapes puzzle, holding it in her mouth like a binky. I probably even have a picture of it somewhere.

When the kids got a little bigger we tried the foam puzzles, and the kind that are meant to be stored assembled where the backing has an outline of each puzzle piece.

The girls never really seemed that interested, and the puzzles stayed mostly in the closet, forgotten. We decided to change that this summer. I wanted to try and bestow my love of jigsaw puzzles onto them, to see if I couldn’t pique their interest.

This summer I purchased a 250 piece puzzle, just to see what the kids were capable of. Nicole, Alexis and I sat down to work on it together. The design ended up being a little more monochromatic (see above), and thus more challenging than I anticipated, but that didn’t stop the girls from getting into it. Even Alexis was able to put some pieces together, and she’s three and a half!

From there we broke out the 48 piece puzzles and when those were two easy, I mixed up the pieces and had Nicole do two puzzles simultaneously. When that proved too easy Domingo found some 100 piece puzzles. In no time the girls were assembling multiple puzzles a night together, though Alexis can do the 48 piece puzzles herself. Alexis told me quite emphatically recently that they did not need my help.

I can’t wait for Dana to get a little bit bigger. We’re going to get a coffee table, and then really see what the kids can do!

July 10, 2018

Dana at Six Months

Dear Dana,

As much as I still want to think of you as a newborn, I now have two pointy white reminders that you are most definitely not. That’s right, someone is cutting her first teeth! A full two months earlier than either of your sisters. You are determined to march to your own drum, and keep this “experienced” mom on her toes, that’s for sure!

We started solids last week, which was super exciting for your sisters who were eager to show you how it’s done. We choose your purees to match the vegetables they were having for dinner so they could show you how to eat the non-mashed kind. It was the best I’ve seen Alexis eat her peas in a long time, so I thank you for that. So far your favorite seems to be squash, but you did equally well with carrots and peas too.

This month we finally were able to break you of the swaddle habit. You seemed unable to settle down and go to sleep without the swaddle, but also uncomfortable when we swaddled you. It was an ongoing battle until I figured out why you like the swaddle so much. I believe the soft muslin fabric reminds you of mommy’s shirt. Every time we nurse, you like to pull Mommy’s shirt over your face. I think the swaddle blanket rubbing against your check reminds you of mommy and that’s why you find comfort in it, even though the act of swaddling is no longer comfortable to you. Once we figured that out I started loosely wrapping you in the blanket and you slept so much better. Of course this means you only get a blanket at nap time when we can keep an eye on you. Once it’s safe for you to sleep with a blanket at night, the muslin swaddle blanket will probably be promoted to blankie.


You love to stick your tongue out to let me know you want to nurse or nap.

Thumb suckings, and finger sucking for that matter, is now passé. I can’t remember the last time I saw your hand in your mouth. Instead you’re all about gnawing on anything that crosses your path, including mommy sometimes! Those teeth will likely fully erupt in short order.

I can’t believe how quickly time is flying, or that we’re already halfway through your first year. It doesn’t matter how big you get, I will always think of you as my itsy bitsy baby.

Love Always,
Mommy & Daddy

July 9, 2018

Here Comes Six

Six. How is it possible? I feel like it was just a few weeks ago that we were signing Nicole up for kindergarten, a month or so ago that we were bringing her home from the hospital. And now she’s six. Six.

Nicole requested her kid birthday party be at Chuck-E-Cheese again this year. Two years ago the experience was super smooth, but I was dreading it this year. As a special treat the birthday ‘star’ gets to go in the ticket blaster machine. For one minute the birthday ‘star’ collects as many tickets as possible, as wind blows them about. At least for the small kids, they get to choose a friend to accompany them. Two years ago, Nicole’s friend got intimidated at the last minute and Daddy accompanied her in the machine. Alexis was too small to attend the party then. This year Alexis was joining us, along with many friends from summer camp. There was no shortage of kids to choose from. I was sure Nicole would pick a friend over her sister, and that Alexis would be heartbroken to be left out.

In the end my fears were unfounded. Nicole chose Alexis. Not only that, but she happily pooled all her tickets from the day with Alexis so they could each get a toy. Nicole got a gumball machine, Alexis a magic mirror. This kid has a heart of gold.

We had are traditional swim in the pool with Grandma and Grandpa, and the great helium balloon release in the stair way. Both kids actually eat their cake this year, rather than pick at it, much to my surprise. Of course we had our traditional giant foil number balloon photo time. The only thing we weren’t able to do was a restaurant dinner like she wanted. I promised to make it up to both girls later by doing one on one lunch dates with them before the start of school.

July 8, 2018

Datayze is Two!

Two years ago I officially rebranded as Datayze, and forever changed the trajectory of my business.

Four days ago I did a major new launch, and this change could prove to be just as meaningful. Not only is the set up more professional – I can now monitor site health from my phone! but I can also do light weight debugging from the rocking chair. Productivity is up, and so is what I’m dubbing ‘developer confidence’.

This past year I’ve had six times the users, six times the revenue, and six times the page views. My Alexa rank is 127,191 surpassing the ranks of all my major competitors, and grown from 4,000 monthly users to a quarter million. It’s stunning to me that I’ve been able to maintain a near 20% month-over-month growth rate since Datayze’s launch. I remember when 600 daily users was a big deal, and crossing the threshold of 1,000 daily visitors. Then came the mornings where I’d reach for my phone as I was getting out of bed to see if Datayze had already had 1,000 visitors by 6:30am. Followed by mornings where I’d eagerly check to see if it was 3,000. Then there are the intangibles not reflected in the numbers. Datayze is having a real impact.

Working for yourself is difficult, exhausting and at times demoralizing, but also ridiculously rewarding. Revenue looks like it’s going to be way up this month, surpassing the monthly target I initially set for myself. It’s an incredible feeling. It’s taken me longer than I anticipated to get to this point as I had hoped to reach this revenue goal last year, and yet, I also never thought I could build such a popular site. (Which also says something about my revenue per user expectations.)

Growth will inevitably slow. It already is showing some signs of a slow down (though I’m still hoping that’s summer related.) I’m hoping to spend the following year diversifying more and insulating myself from seasonal patterns. Diversifying could mean a wider portfolio of apps, or multiple different revenue sources.

I also wouldn’t say no to an Alexa rank of 100,000.

Older Posts »