Posts Tagged ‘Sarahsoft’

One year ago I rebranded and moved all my apps from to Since then, growth has exploded. I remember when I used to be excited to have 600 visitors on a week day. A year ago I was happy to get 300 visitors a day. Now it’s a common occurrence to have had close to 1,000 unique visitors by the time I wake up in the morning and start my day. Page visits are up across all apps, and user satisfaction seems to be near an all time high.

After months of hard work I’ve finally struck the right balance between technical enough for the Math enthusiasts to trust my apps, and approachable enough to not scare away the general audience. The rebranding likely helped in this regard too. I regularly get emails assuming datayze is run by a team, and not an individual. I’ve put a tremendous amount of effort into making datayze a smooth, sleek website and it seems to be paying off. I’m much more optimistic about the future of my small business this year, than I was at the same time last year.

I still have a lot of work ahead of me if I’m going to grow to where I need to be. I need to get users up. I still think I need a minimum 10,000 users a day to be viable and while growth will likely continue slowly without additional input from me, I’d like to get there as quickly as possible.

The best strategy, I think, is to continue to build new apps, particularly apps that build off of the existing ones which can appeal to the audience I already have.

A side goal I have is to improve my Alexa rank. I’d love to hit the magical “100,000” club, the point at which Alexa considers the differences in ranks to be statistically meaningful. My Alexa rank does appear to be correlated with the amount of traffic I get, but some of it’s other reported statistics of datayze, such as bounce rate and top queries, is way off.

The Alexa rank is purely an ego metric for me, since I rely on google Adsense and don’t solicit advertisers. Still, it was quite rewarding crossing the 1,000,000 threshold this past January. Once you cross the 1,000,000 threshold your rank is graphed and I love seeing my progress rather than an “insufficient data” message. I am, after all, a data person.

June was my first month of zero growth since Datayze was officially rebranded last July. It was bound to happen eventually. I’m trying not to be too discouraged. Comparing June to May I had a negative 2.5% growth, however if you account for the fact that June has one less day than May, then I had a positive 1.2% growth. I haven’t done a statistical analysis on the difference, but I suspect it wouldn’t be considered significant and I can safely consider June’s growth a wash.

I have reasons to be optimistic going forward. The second half of the month was stronger than the first, so there’s a good chance growth will return next month. I also earned $225, a 7% growth over last month. Although I prefer to look at audience growth as a metric of success, I’ll take revenue growth in a pinch!

Unfortunately the month of stagnant growth through a monkey wrench into my projections. I use time series analysis to estimate future growth. The recent past is weighted more heavily than distant past since it’s predictive power is usually stronger. Since the most recent month had no growth, my model is predict a drastically reduced growth over the next few months. That means I’m no longer on tract to reach $1000/month by December. Now it’s looking more like middle of 2018, which is also discouraging, especially since June marks the two year anniversary of starting my own business after leaving google. I just have to keep reminding myself that it’s okay for progress to be slow, the overall trend is in the right direction!

As for progress, it’s been a slow month in that regard too. We took a much needed family vacation. I have ideas for two new apps, one in the motivation category and one in the pregnancy category, but haven’t gotten around to coding them. I have been under the weather and behind on a number of things.

Here’s hoping for a more productive and encouraging July!

May saw a 18.8% growth in users and a total revenue of $209.59, making it my most profitable month yet.

The month started out exceedingly strong. I was on track for a 40% increase in users, but midway through the month I had a huge set back. Within a period of 24 hours search result clicks dropped nearly 20%, which set my daily totals back to where they were nearly four weeks. By the end of the month things seemed to have settled at about a 13-14% loss from my early month peeks. Thus May is not only my most popular and most profitable month, but it’s the first month in a long time where user counts were lower at the end of the month than at the beginning.

After digging around it looks like I was on the wrong side of a google algorithm update. Or at least, the timing of the drop in performance exactly correlates with an update. Performance is down similarly across all apps. Statistically speaking, there is no one app disproportionately affected (or not affected). Click position is fluctuating a little bit, as is click through rate, but it doesn’t appear that my competitors are suddenly more competitive. Most of my apps have a competitor, but most competitors only compete on a single app, so if one was suddenly more competitive I wouldn’t expect a uniform drop the way I’ve been seeing.

So the main question is why am I suddenly getting less clicks? One theory I came across is that Google may be prioritizing AMP pages. Converting to AMP is something I considered, but since the majority of my apps use Javascript, it isn’t feasible, let alone practical. Another theory is that my site might be two slow. I got a couple alerts from Google Analytics that my top landing pages were significantly slower, however that appears to have occurred after the drop in traffic. None the less, site speed has been something I’ve been concerned with, so I spent the majority of the month focused on it and got overall load times down 23%.

I also decided to do some tricks that improve the appearance of speed, and thus user experience, even if they technically add a few extra miliseconds to the load time. For example, the Pregnancy By Week Calendar initially just used JavaScript to populate the calendar. The benefit of the JavaScript is that the user can change the imput (such as the due date) and the calendar updates without needing a page load. The drawback is that JavaScript didn’t execute until the DOM was ready, meaning the user saw an empty table for a few (possibly hundred) milliseconds. I’m now using PHP to initialize the table. Since there’s increased functionality in the PHP code, it takes slightly longer to execute, and slightly longer for the page load, but the user sees a populated calendar sooner. The main reason why I haven’t done this sooner is that it means I have PHP and Javascript code that effectively do the same thing, which introduces the potential for inconsistencies.

There are a few other places I can make similar updates.

I still need to work on my Time to First Byte (TTFB). Moz did an experiment that indicated TTFB was likely the speed criteria google was using in ranking. (I disagree with the experiments methodology, but TTFB does appear to be correlated with rank.) Moz recommends a TTFB of 500ms. My most popular page currently has a TTFB of 750ms!

Fortunately the most important factor in ranking is content, and by all metrics I have extremely strong content quality signals. I have a small bounce rate (2.5%), an average session duration of 2 seconds, and a large returning user rate (greater than 40%). This shows that, in general, when users discover my site they use my apps and come back.

The other good news is that while my search result clicks may not have fully recovered, my projections still show that I’m on track to hit the $1000/month goal by December. June is still going to be a bit of a question mark. A month of no growth is certainty possible. After the long run I’ve had, I feel due for an “average” month. Here’s hoping my efforts in speed start paying off.

You know what’s a cool feeling? When you realize one of your apps that you thought was getting very little attention is actually being visited a non trivial number of times a day. Time Until is receiving close to 100 users a day! One thing I’m realizing: the more popular my most popular apps become, the greater the likelihood that collateral apps get a ranking boost.

This month users are up 8.13% Not bad considering this is a shorter month with an extra Saturday and Sunday. Revenue ended up at $165.47 for the month.

This was a light progress month due to illness, but I did finally get that Website Spell Checker finished. I then proceeded to find 238 misspelled words on That’s not 238 instances of a misspelled word, but 238 uniquely incorrect spellings. I was perhaps a tad over due.

The new spell checker necessitated an massive update to the suite of website apps, refactoring internal code as well as the overall look and feel of the apps, in order to be useful. Even though I made improvements to the underlying spell checker, there were still a number of domain specific words that my spell checker would never be able to recognize as correct. Words like “datayze” which would be misspelled in any other context. 336 such words on my site, to be exact. When I ran the Website Spell Checker over my site, it identified 578 possibly misspelled words, only 41% which were actually misspelled.

The website spell checker is unusable with so many false positives. The time required to go through a list of that size makes it less likely that I’d check the spelling of my site with any regularity. I wanted to be able to dismiss words the spell check should ignore, and to save my work so I didn’t have to keep dismissing the same words every time I wanted to use the tool. Thus I added an “export to CVS” button. Now after I tell the spell checker which words to ignore I can export the list and save it for next time.

Since this seemed like a handy feature I went ahead and added an “export to CVS” function for all data tables in my other website apps as well. Now you can save a copy of the html errors with the Site Validator, or the number of unique phrases with the Thin Content Checker.

Sadly that’s pretty much the end of the updates in April. Ah well, May is a new month (with an extra Monday, Tuesday and Wednesday.) I should have better progress this month. We’re only 15 hours in to May and it’s already looking to be a very strong day.

March’s numbers are the strongest yet for my business! Income wise, Datayze earned $182.98, nearly double February’s total. My lowest per day user count was 1,505 this month, making it my first month with 1,500 users each day, in addition to my first month of 1,000 users each day! Overall, users are up 37% throughout the month.

Even though users are up, growth appears to finally be slowing down a bit. The numbers rose much slower each week in March than they did in February. If I account for the fact that March has 3 extra days compared to February, than users are only up 25%. I’m also starting to see what I believe is a summer pattern. Search result clicks on the weekends have been largely unchanged while weekday clicks are still raising, albeit more slowly than before. The hourly patterns of when users are active is also shifting. I’m anticipating only a 10-15% growth in April as a result.

Despite the desire to start focusing on content again, this was another mostly maintenance month. Some big changes: the tab menu will now resize on browser resize to remain a single, unbroken line, and the top submenus will reposition to fit in a mobile browser. I’ve also changed the blue colors on the site. I loved the old header color on my laptop, but it displayed as gray everywhere else. Since I’m building a business, and not a personal website, I decided to go with a color that would look great everywhere else, even if that meant I wouldn’t like it as much on my personal device.

As for new content, I did write another how to article: Understanding Scientific Studies (Miscarriage Edition). I wrote it after being incredibly annoyed at the number of misquoted studies, since they almost always misinterpret risk to be higher than it actually is which can cause undo stress and increase anxieties. My hope is that someone reading this article will be better equipped to spot this kind of exaggeration and ignore bad statistics on the web.

I’m trying something new for April. My to-do list is currently standing at 26 items, 11 have been marked as priority to be addressed in April. New content will be pushed as it becomes available, but fixes will be pushed all at once (and likely just once) at the end of the month. I’m hoping this will help keep me on tract to produce new content.

March 7, 2017

Market Share

The growth that I’m been experiencing of late, while awesome, has me a little nervous. It clearly can’t continue indefinitely. At some point the growth has to slow. The question I’m asking myself lately is, can I predict when? I need to get idea of how big the potential market is, and how big my share in it is. That’s easiest to do with the pregnancy verticals.

For this analysis I’m sticking with US data, since 71% of my user base is located in the US according to Google Analytics.

The birth rate in the US has been holding steady at just under 4 million the past couple of years. We might reasonably estimate that about 2.5% of expectant mothers don’t have internet access (1% of the 18-29 demographic, 4% of the 30-49 demographic). That would give us about 3.9 million potential users who may be interested in my pregnancy tools in the US.

Diving into my usage logs, median access time into the Labor probability calculator is 20 days before the due date, with a standard deviation of 27 days. This indicates a period of about 1-2 months where pregnant women might be interested in when labor is likely to occur. Conservatively, let’s go with one month. Than in any given month we might expect a potentially interested audience in the US as 325,000. Last month I had just 5,000 from the US. That means I am capturing just 1.5% of the US market.

What I don’t know is what percentage of those women would potentially care about labor probabilities. Statistics, in general, don’t appeal to everyone. I know they’re often met with skepticism when shared in the online forums. Recently one anonymous user described my Labor Probability Calculator as a random number generator. This is probably my fault for not making the mathematics behind the tool more apparent. Still, I get the feeling that a large percentage of the estimated “potential” audience would never be interested in my labor probability calculator, regardless.

This miscarriage apps are more popular. Last month I had over 10,000 users from the US spread out over the miscarriage apps. There are a lot of unknowns when estimating the potential market here, as not everyone fears a miscarriage, and not everyone knows their pregnant early on, but I might estimate I have 3% of the maximum growth potential in the US. Again, before we factor out those who just aren’t into statistics.

Of course this is ignoring other countries, as well as other none pregnant users, expectant fathers for example.

So where would this put my potential growth overall? It’s still hard to say, since I need a way of predicting mathematical interest. I doubt there are enough expectant parents to carry the 30% growth trend into the fall. Wouldn’t it be cool if there were, though?

February saw my highest per day rate of $3.44. It was also a shorter month, so the total of $94.95 was only my second best monthly total. Not exactly what I was hoping for, but I’ll take it.

Users were up an insane 49%, and the trend line shows no sign of stopping. With the exception of the Saturday before the Superbowl I had over 1,000 users daily every day, including weekends. By the end of the month most week days were seeing nearly 2,000 users a day.

The initial goal for February was additional content, but the site improvements appear to have greater return per effort spent. I did publish two new articles in How To and have two more coming. I also really need to create a site spell checker, which has been on my todo list, since creating the initial spell checker back in November.

The big change to Datayze was an update to the miscarriage probability model. In my opinion, how I handled the update shows how far I’ve come.

Back in 2015 I updated the, at the time, most popular app, the Readability Analyzer. I had been using a simplistic heuristic for counting syllables that tended to underestimate the number of syllables in a word. As a result, the Readability Analyzer was predicting slightly better reading ease scores than it should have. When I replaced the simplistic syllable counter for a more reasonable one the results were more accurate, but less desirable. My user base was upset. I got a number of angry emails about it, and more than one person vowed not to use it again since it wasn’t “stable”, despite this being the only change in nearly two decades. The user base fell 36%. At the time it was my most profitable app, so seeing those users flee was hard.

Flash forward to a few weeks ago. I became aware of several large scale studies on miscarriage that tended to have higher per-week miscarriage incident rates than the current studies I was using in my model. They had a much larger participant pool. Excluding them from the model felt dishonest and would do everyone using my miscarriage apps a disservice. Adding them would once again create more accurate, but less desirable results. I was terrified that the change would kill my growth.

I spent a week fine tuning my model. I knew there were many women who check the app daily, and would be shocked and alarmed that the probability of miscarriage was increasing. I wanted to be sure of my model before making the change. Then, as midnight Friday approached I made the push. I put a note explaining why the model had changed and stressed that I would be available for questions. Friday night I could not sleep. I checked my phone constantly for emails. The first came at 4:33 am. A few hours later news had spread to the forums.

Normally I make it a policy never to interact when people share my apps in the forums unless they invite me to do so. (I don’t want to intrude, and I think it’s unprofessional to go around creating accounts on other sites just to respond to comments). This time, however, my apps that were intended to reduce stress were actually creating it. I felt compelled to reiterated why the change was made, and personally apologized to everyone who was negatively affected. The personal apology seemed to help, and so far there hasn’t been a mass exodus of any kind. It’s even possible that my stressing my commitment to model accuracy I may have helped my overall reputation.

My goal for March is to finally get that Site Spell checker app up so I can use it. I want to improve the synonym list for the Word Analyzer, and see what it would take to get a better page speed score. It’s also time I start thinking more and more about my social media presence, and what it should look like.

As predicted, it’s been a mixed month. Despite clicks being up 12% and users being up 13%, income was down 22% this past month. In January I earned just $80.95. That’s four times higher than this time last year, but sill lower than the trend. Despite that I’m cautiously optimistic about February for a few reasons:

– My users searches per day, my preferred metric, was actually down the first half of the month, and didn’t start to get back on track until the 16th. The second half of the month was much stronger (user search wise) than the first half.
– I’m in the process of changing my mobile strategy so hopefully I can start boosting those metrics more.
– I’m seeing near immediate effects from the improvements I’ve made to the site this past month.

This month I spent mostly fine tuning my website. I ended up redoing much of the supporting page layout and content management scripting. The one is more streamlined while offering greater flexibility in terms of setting meta parameters and descriptions. Two days after the change I noticed a large bump in search engine traffic. And that was the second noticeable bump in traffic after a change this month! I don’t want to jinx it, but at the current growth rate 1,000 unique visitors a day, everyday, including weekends, in February may be possible.

In addition to the overall site update the Word Analyzer and the Pregnancy Week by Week got a significant upgrade.

It took over a week, but I finally finished the first pass of a synonym list for the Word Analyzer. Now the Word Analyzer can suggest easier (and harder, if that’s what you’re after) words with greater/lesser audience familiarity. The synonym list is by no means complete. Only 35% of the words entered into the analyzer so far have had synonyms. Since the word analyzer is a relatively infrequently used app (currently between 10-15th most popular) it’s not clear if the effort to improve the list will be worth it. On the other hand, improving the apps functionality may draw more visitors.

The Pregnancy Week by Week’s update was more design focused. My favorite feature about the Pregnancy Week by Week comparison was the hand sizes. I loved seeing when a baby would be as big as mom’s hand, or a theoretical big sister or brother. The feature was somewhat obscured, and the old layout made seeing the full calendar and important dates more difficult. The new layout is much nicer, though admittedly a little slower.

For February I have a new app and two new articles planned already. February is a short month, but I’m optimistic.

January 19, 2017

Index Prunner

After using my Sitemap Index Analyzer to analyze Datayze, I came across something peculiar. Notice anything… odd… about the following search results?

I don’t know about you, but if I ever reach 48 weeks & 6 days pregnant, miscarriage will be one of the last things on my mind.

The above search result is problematic for a couple of reasons. (1) The page linked to has no useful content. The Miscarriage Reassurer only accepts input up to 20 weeks. (2) It’s taking up a valuable spot away from another page that could have useful content. And (3) If no users click on the link, a distinct possibility given it’s unlikely to be relevant to anyone, the search engine could view the lack of clicks as a negative signal and may penalize the entire domain.

One could make an argument that users might be more inclined to click on wacky and clearly ridiculous search results. Curiosity is strong motivator. That could explain why such a weird result was promoted to the first page to begin with. Still, those still aren’t useful clicks, and are likely to lead to lower engagement.

Counterintuitively, it’s better to have a smaller number of high quality pages indexed by the search engine than have a large number of useless pages. I have no idea what led Google to this particular page, or what made Google index it, but it has to go.

Up until now I have largely been using the x-robots-tag header response to signal when pages should expire from the cache. That’s because up until now my impression of useless pages were mostly links to individual Labor Probability Calculators with long past due dates. Since the Labor probability calculator only calculates the probability of a labor for an existing due date, a page associated with a long past due date will have no useful content. The x-robots-tag header isn’t recognized by all major search engines, but right now my Google index far eclipses other major search engines, so it’s the one I tend to focus on. An expires tag isn’t so helpful in this case where the data is invalid from the start. The problem of spurious results might be a little more pervasive than I initially thought, its time to do a more substantial prune.

I had to modify my page set up so I could set the NOINDEX robots meta field. Now I just have to wait for the Googlebot to recrawl my website and do it’s thing. Good thing I already have an app to help me get started!

This past month I earned $103.91, making my 2016 grand total $495.90. I’ve finally reached the second target of $100/month! December was roughly 5 times greater than January, which is nice progress, even if most of it seemed to happen at the end of the year.

Last month I worried that Thanksgiving would affect my metrics, but the impact ended up being minimal. I was lulled into a false sense of security going into December. My numbers continued to climb and I was on track for another month of 32% growth. Then Friday December 16th – the first major travel day of the season – hit. Everything cratered from that point on through the end of the month. Visitation and income were down dramatically and continued to fall through the 25th. It looked like I was going to rocket past the $100/month mark and instead I just inched passed it! User growth ended up being just 15.4%, well under projections.

I was really worried that something other than just the holiday season was affecting my numbers. After all, the free fall started on the 16th! Even though I said I was going to focus on new content this month, I ended up spending a lot of time monitoring the health of my website. There I was, on my parents computer, remote connected to the server, long after everyone else had gone to bed on Christmas trying to identity and fix any possible problem.

I’m not sure how big an impact it had, but I did discover my website was running needlessly slow. Checking my speed performance I was getting an warning message that text files (including css, javascript, etc) were not compressing. I don’t remember ever seeing that warning before, so I’m not sure if something changed in the server configuration. (The joys of shared hosting…). Since I was already minifying Javascript and CSS, I thought I’d also minify HTML as well. And I thought minifying Javascript was non trivial. Minifying HTML with embedded javascript and PHP is a whole different can of worms. My solution works for the way I code, but isn’t general enough to make it to a how to article.

I did end up with two new pieces of content this month.

The first is Time Between which is just like Time Until, but allowing you to specify the start time.

The second app I’m really proud of. It’s the Sitemap Index Analyzer.

I wanted to get a better feel for how Google was indexing my site. The consensus online was to use proxies to query google and aggregate the results. That approach is a violation of Google’s terms (another reason for proxies – to escape detection), and I’m too much of a strict rule follower to ever consider something like that. I realized that I could work backwards. The Sitemap Index Analyzer profiles the sitemap, not Google’s index! It reduces the problem space to a few queries that are easy for a human to do. It then uses a statistical significance test to identity sections not being indexed. Same result, but with a way that doesn’t violate Google’s terms!

This month I’m going to work on more site improvements. There are a few things I can work on to enhance to professionalism of datayze, and I think as I continue to pass new thresholds of users that is becoming more and more critical to help maintain growth.

I am worried that revenue might fall in January. Now that we’re out of the shopping season, users may be less “clicky” and the worth of a click might be less. As long as I have strong user numbers, I can consider other ways to monetize.

« Newer Posts - Older Posts »