Posts Tagged ‘Sarahsoft’

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.

Forgive me for a late update, I’ve been working crazy hours ahead of this last launch. I was desperate to get it out during the holiday week when traffic was low. So far everything looks great, but before I get into that let’s talk numbers.

In June I earned $630.34, just under $100 from March’s high. Users are down 6% overall, and down 9% from organic traffic, two numbers I’m not thrilled about. Mobile users is up 5%, while desktop is down 25% and my Alexa rank continues to inch upwards, a possible sign that summer may be keeping people away from there desktops. I’ll be keeping close tabs on the numbers this month.

Delaying the launch was outstanding issues in Time Until and Miscarriage Chart. Combined those two apps make up 66% of my traffic so they needed to work flawlessly ahead of the launch.

The primary hold up with the Miscarriage Chart had to do with my new approach to mobile. Prior to the launch I had been using PHP code to detect device type (mobile or desktop) and serve appropriate content for the screen size. The primary advantage of this approach was I could serve vastly different html per device. The drawback, however, the PHP code needed to be kept update with the ever changing device landscape. Now that tablets are becoming more common, there’s more device types and screen sizes I need to pay attention to. It was going to become unmanageable. I’m now doing the cleaner approach of using media CSS statements, but it took sometime to find a block of HTML code that could be display as desired correctly across all device sizes via CSS.

For Time Until I wanted to incorporate time selection into the datechooser modal to clean up the interface a bit. I had started this process last year and finally felt comfortable that it was bug free and wouldn’t hurt my brand. I wasn’t sure it was as intuitive as the original datepicker. This is we’re having more experience with interface design would be useful. The interface could still use a little more work – here’s where not having a UX experience is working against me – but it’s better!

The past month, and especially this past week has been crazy busy ahead of the new launch. During evening and middle of the night time feedings I’d test out my site on my phone. I’d open every app on my phone, test every possible input, including invalid ones. I’d check the site health on my new admin panel and logging bugs and issues into todoist, all from my phone. During the day I’d hammer out as many quick fixes as possible. Truth be told I’d rather have another week before the launch, as not all apps were working quite to the level I wanted, but most of the issues I was discovering existed in both my test bed, and the previous launched code already in production. I didn’t want perfect to be the enemy of good.

I was initially thinking I’d have a long night ahead of me, but I’ve been watching the admin panel and have confidence there are no major fires.

In May Datayze earned $629.09 and had -0.4% growth. I hate negative growth, even when it’s to be expected, and even when it’s a fraction of a percent. It’s strongly motivating me to get this next launch out the door.

I had an unexpected interrupt this month with GDPR. I should have been more aware of its approaching deadline than I was. I only realized I could be affected a few days before the May 25th deadline. Fortunately, I have always strived to do the right thing when it comes to privacy, and that helped make becoming compliant easier.

I don’t store any information that can be deemed unique or personally identifiable. I don’t even store passages of text supplied to the writing tools, or results of the URLs crawled by the spider which could theoretical be personal. I do store other form inputs (like age in the miscarriage tool), but not unique and not identifiable. At least in some cases, it’s not even personal. I’ve gotten a handful of emails from users indicating they were using the tool relative to someone else’ pregnancy, like a husband for his wife, or a parent excited for a grandchild. I sometimes see exploring different values, presumably to get a sense of the range of possibilities.

The main hurtle in keeping up with GDPR was that I keep traffic logs which contain ipaddresses. I stored it for website analysis to understand how users use my site and light weight personalization like ordering the apps by preference so users can find the ones they will likely want faster. I opted to go the pseodnomization route of converting the last octlet to 0, since that seems to be the internet standard approach. I’m not sure what I’ll do with regards to personalization. I’m considering dropping that feature, or using cookies.

Other than that my planned big migration is ticking along. I keep thinking my admin panel is set and then coming up with a new idea that could help monitor site health. I recently wrote a server log parsing script that buckets all errors by type and by page. I’m still geeking out over it.

In April revenue dropped to $618.01, and there was a 1.8% growth in users. Less than expected, but not alarmingly so given that we’ll be heading into the summer months soon which tend to be a time of slow down. My Alexa rank continues to climb which could be an indication that my piece of the global audience pie is still growing.

Bit by bit I’ve been able to carve out more time for Sarahsoft.

Last month I lamented not having smoke tests. I ran into a problem a few years ago when my host updated the PHP server. A function I was depending on was deprecated. As a result, one of my apps began to fail silently. Two years ago I lost 2 days after an updating a dependency changed the way the apps displayed. I’ve learned to test often, even when not updating my code. Smoke tests can automated some of that, freeing up more time for development.

At present the primary thing I’m looking for in my smoke tests is development code that slipped into production, such as code that references individual source files rather than stable build files, or specify a build file other than the current one. Although it shouldn’t effect functionality, I’m looking for code with TODOs and debugging output in production. Such conditions could be a sign that I wasn’t ready to launch the new code, and did by mistake. Maybe I forgot a task wasn’t complete, or that I needed to finish an edge case for a feature.

I haven’t gotten any more warnings about memory issues which takes some of the time pressure off. My primary goal is still moving Datayze to it’s own user account, and it’s own VM. I probably should have done this after pushing all the pending changes from the winter so that I was only working on one thing at a time. I’ve needlessly complicated things a bit for myself. Ah well, live and learn.

I have been bit by the coding bug. After last month I had the itch to get cracking again and I desperately wanted to cross stuff off my todo list. Time is still my biggest challenge, but I’m finding a little more time to carve out each week.

First, let’s dive into the numbers. March saw a 16.7% increase in users and topped out at $727.75. My goal of $1000/month feels so close! Time Until Countdown continues to be not only my most popular app, but one of my fastest growing apps as well with a 25% increase in users.

I decided to go ahead and move Datayze to the new user account on my server now, walling it off from my personal stuff. I have a number of new features to roll out, including site wide changes so I set up a “test” domain (new.datayze.com) on the new user account. It’s password protected (so don’t bother trying to visit it) while I iron out all the wrinkles. Once it’s running smoothly, I’ll change the DNS servers to they point “datayze.com” to the new location, and remove the test domain. It should be a seamless transition, but it might take a little while given the number of features I’m rolling out.

My current focus is on upgrading the admin panel so it functions more like a panel and less like a collection of scripts. There’s a work flow to the admin panel now. There’s a section for shepherding new apps from implementation to launch. I already had an analysis framework for better understanding site usage, but it was old and slow, written for a time when I had far fewer users. That’s been spruced up a bit. The biggest thing I’d like to add next is smoke tests, code that’s designed to look for issues before they arise. I check my apps periodically for speed and mobile usability issues, but it would be nice to have to be more proactive.

One potential issue I may have this month: I’m getting warnings about memory usage again. I strongly suspect a memory leak, but tech support thinks it’s this blog (sktyler.com)’s instance of WordPress. By separating Datayze to its own user account I can seamlessly push it to a separate VM. Then, assuming tech support is right, this personal blog with a handful of readers won’t negatively impact my business. Even if tech support is wrong, it’s still worth doing, especially since my goal is to build multiple Datayze-scaled sites.

My goal is to launch Datayze on the new account with all the changes in a few months. I can’t decide yet if that’s a stretch goal or not.

This past month Datayze saw a paltry 1.5% growth in users and a whopping 23% growth in revenue. I’m now up to $627.76 per month, and it was a shorter month! It’s not the $1000/month goal I had set for myself, but I am headed in the right direction.

I intended to focus on emails again this month, however I was contacted about a nasty bug in one of my web developer apps. Given the symptoms it sounded like something that could be effecting all of those apps. I have long since wondered why those apps weren’t more popular, and now I might have an explanation. Even better, the person reporting the bug appeared eager in trying the tool again when it was fixed. It was an opportunity too good to pass up. The issue was a logic mistake with an easy fix. From initial investigation and final testing of the patch was no more than an hour. I will monitor the web development section of datayze in the coming months to see how users respond.

The amount of spam I get is starting to get out of control, and I’m the biggest culprit. Whenever someone encounters a 404: file not found error on datayze, I get an email notification. If the automated script can determine what URL the visitor likely intended, I get an email notification. A corollary to getting a lot of visitors is getting a lot of notifications. Some are for meta data files I’m not currently hosting (e.g. apple-touch-icon.png). Some of those errors are for specifications I’m not using (humans.txt, ads.txt, etc). Some are probing (e.g. wp-admin.php to see if my site uses wordpress). This information is useful, but it can wait until I’m ready to sift through the logs and plan out my next update. No need to send myself a daily notification, or fifty. Instead, I’d like to only be notified in situations that are actionable and time sensitive, such as a misspelled forum referral that can’t be auto addressed.

I’ve been spending a lot of time thinking about how I want to solve problems, and the direction I want to take certain apps. I hope to find the time this coming month to start putting plans into actions.

January saw a 10% rise in audience size and a 13% drop in revenue. All total I earned $508.95, which is not to shabby given the shopping season has ended and ad clicks are typically worth less. Time Until continues to be the most popular app, and has a higher growth rate than the miscarriage apps which continues to surprise me. Overall growth was pretty uniform across all apps. The only top visited app that had a measurable (1.8%) decrease in users was the Passive Voice Detector.

There isn’t much progress to report. I had decided to stay the decision on maternity leave until Dana was born so I would have a better idea what expectations are reasonable. Now that she’s here it’s clear I need to be on a reduced work schedule while I heal. For now my work load is primarily responding to emails (January was a surprisingly busy month in that regard), fixing minor bugs, and possibly addressing critical issues if they rise to the level of interfering with revenue.

Something I need to give some thought to is how best to silo my sites. I recently was contacted by someone with a serious offer to acquire Datayze. I declined (I doubt I’d ever be interested in selling Datayze.) I do want to branch out into multiple sites and it may be worth selling off some off those other properties in the future. For that to be feasible, I need to give serious consideration to how I operate.

Currently I reuse code across my personal and professional sites. Why reinvent the wheel? The purchase agreement would need to address ownership of shared code to avoid ambiguity. A cleaner approach would be to create each site as an independent silo, with it’s own version of a wheel. I’ve already been considering moving Datayze to its own VM/instance so I don’t risk its uptime when working on my other sites. I think I may make it a policy of each website being completely self contained and running separately once they get big enough.

Last month followed the predictable pattern laid out from the previous December: strong first half of the month, abysmal second half. The majority of my December income, $588.04, was earned in the first three weeks, then everything slowed to a crawl through the holiday. Users were up 13.5%, again due to a strong first half of the month performance. This time I knew what to expect, and didn’t let my dropping numbers discourage me too much.

Overall this puts my total income for 2017 at $3,456.27. Not where it needs to be, but not to shabby, especially compared to last year. That’s about a 7x year-over-year growth. Another 7x growth would put me at ~$24,000 for the year, equivalent to minimum wage in California.

One of the neat things was watching my stats around midnight new years eve. I just happened to have my analytics page open around 9 PM PST (midnight for East Coasters) and I watched the the hits to my Time Until app climb sharply until they reached 4X normal traffic volume. I had initially designed my app to be more of a long range count down over multiple days, so I was surprised by the interest, but I’ll gladly take it! I couldn’t resist staying up to see how my apps did as midnight approached Central time, Mountain Time and Pacific time. I was sure the west coast numbers would be equally strong, but to my surprise I had far more users in the Central Time Zone.

Time Until is one of the apps that’s going to get a serious redesign in the new year. I hope my audience likes it!

Moving forward, January was the month I intended to start pushing updates again, however I’m running into challenges with my webhost. They recently made changes to their text editing tool, and now I can’t save files. I have a walk around, but I want them to fix their issue first since their editing tool has become a part of my standard work flow. There are also two other pending potential issues with the host that could throw a hiccup into any update I push, and with the pending arrival I’m wearing of doing anything that might leave the site in a bad state while I’m out of commission for a few days. We’ll see what January brings, but as of now I’m expecting minimal updates to trickle out.

November was another strong growth month, but income still fell short of projections. Datayze saw a user growth of 19.2% and earned $569.45.

I won’t meet the $1000/month target by the end of the year, but I can’t be dissappointed with the growth I’ve seen this year. Average monthly revenue has increased by a factor of 4 and will likely continue to increase. I’ve hit all the targets I set for myself just under two years ago.

Next goals include:
– $1000/month (I consider this the point of viability)
– Covering the kids’ daycare/afterschool costs
– Replacing my previous full time salary

One of the differences I noticed right away between this year and last was in the impact of Thanksgiving on audience size. Last year Thanksgiving didn’t seem to have much of an effect on audience size. There was a markable dip on the day off, and a small dip the day before, but audience size recovered quickly over the weekend. This year my user stats started to drop on the Tuesday before Thanksgiving and remained slightly lower than expected the following week. It’s further evidence that my demographics may have shifted with the change in relative App popularity.

One of the nice things about increased traffic is I’m starting to see a non trivial number of Amazon affiliate links. Over a year ago I implemented a backup ad system that served Amazon affiliate links for users who use ad blockers. (It’s against my terms of service to use an ad blocker on my site, but I realize some corporate networks don’t give users a choice.) Clicks is the first step to conversions, which is the next step before creating a steady revenue stream. I spent a lot of time designing the system to be unintrusive, fast and light weight, but not a lot of time selecting products so there’s at least that potential avenue for improvement.

I’m setting my expectations low for December. Last year my audience size decreased in the middle of the month and it took about a month to recover. I noticed a similar winter dip the year before. The January lull will give me a chance to launch a whole bunch of new content and site improvements I’ve been holding off from (assuming a little miss doesn’t make an early appearance.)

November 19, 2017

Small World

You know what’s really cool? When your worlds collide in a way that reinforces you’re impacting the world.

I got some good news about datayze.com, and couldn’t resist sharing on facebook. A friend I hadn’t chatted with in years sent me a private message. She had been relying datayze for months and hadn’t realize it was my site. (Not surprising, my name is only on the about page. I try to keep it more professional and less personal.) Small world.

This is actually the second time my social world has collided with my solo business adventure. A few years back, before datayze’s launch, when I was still hosting the tools on my resume website, another friend was googling labor statistics and found my Labor Probability Calculator. Of course she instantly recognized my site since it was personally branded.

One of the things I loved most about working for Google or Microsoft was that my work literally impacted millions of people. The drawback, though, I never got to hear from the users directly. The level of impact was always measured through experiments. With datayze I impact fewer people, but the impact is greater and I get to hear from those who use my tools directly.

I have always been a feedback junky. I save (and respond to) each an every email I get from my users. I follow my back links and smile with the glowing reviews (and make adjustments based off of the criticisms.) I monitor my stats closely, so I know how the tools are growing in popularity, but it’s always cool to learn they’re helping another person I know personally.

I love having that kind of impact I have now, and having yet another face to associate that with just reinforces that this was the right path for me.

Older Posts »