Archive for October, 2016

October 29, 2016

Smarter Errors

Once, a long, long time ago, I came across a custom 404 error page using mod_speling. It was a photography page and I was looking for the embedded jpg. The website was using a number of javascript and CSS tricks to beautify the page layout, and in the process disabled to right button mouse click over an image. Instead I viewed the source to get the image URL. When I copied it into the address bar, however, I misspelled it. The handy custom 404 error message that popped up suggested the correct spelling with a hyperlink to the image.

Being a tech geek, and dyslexic, I instantly wanted to add spell check functionality to my error pages. Alas, my hosting company did not turn mod_spelling on for shared hosting.

That didn’t mean my 404 pages couldn’t be smart, or at least smarter. I implemented a referrer check, to see if the 404 page was generated by an internal linking error, and to e-mail me so I could correct the problem. I also added the ability to break a URL up into a query string so someone could search for the intended page. This was all back in 2009, hence the links from bluecentauri (the precursor to apps, the precursor to

For the past seven years my error pages have remained largely unchanged. I did modify the email code section to email me regardless of referrer. Referrer links is how I survive. If someone is posting a link to my apps, there’s a good bet it’s in a online forum, they like the app, and they think others in the forum will like the app as well. Those are valuable eyeballs and I want to make sure they get where they’re intending to go! About 1 time out of 5 they’ll be a typo in the URL link. I’m usually on it within 2 hours, thanks to the email alert. That’s still two hours of visitors encountering 404 messages, and possibly giving up before reaching the intended app.

It dawned on me this morning that I don’t need mod_speling. I could implement it’s functionality in PHP!

The basic functionality is really simple. Start with the page URL ($url = $_SERVER[‘REQUEST_URI’]), iterate through a list of my app pages (foreach($applist as $app_url)), and check if one is a substring of the other (if substr($url, $app_url) !== false || substr($app_url, $url) !== false). The extra equal sign is important, since substr can return a number, and zero evaluates to false. This catches the case where the URL copied by the poster is not the full URL, or there’s a trailing space or punctuation afterwards like an extra quotation mark. Next I checked the edit distance using the levenshtein function to catch misspellings, which calculates the number of keystrokes needed to convert one string into another.

So I did! And I wrote up a nice how to tutorial for Datayze.

I went back over my error logs and tested the new script on every externally linked URL that caused a 404 error. It corrected every single one.

Too bad I didn’t think of this much sooner.

October 27, 2016

On the Fence

Snuck a picture of the new fence going up from inside the house.

We finally decided to replace a large section of our backyard fence. Of the eight posts originally holding it up, only one was still connected to the ground. The fence stood mainly thanks to the twenty year old rose bushes that grew up around it. Shortly after we moved in we noticed it was leaning just so slightly that the gate wouldn’t close. As time went on it began to list more and more. Fences are surprisingly expensive. All total the fence will be our second most expensive repair.

In retrospect it should have been obvious the fence was failing. During our home inspection the inspectors made sure to emphasize their company did not inspect fences, and they could recommend someone who did. That should have been a major clue.

I’ve been thinking lately about all those other houses we put offers on, and whether or not we would have done things differently.

Most of the houses we put offers on only one of us saw before hand. Domingo would go with our real estate agent during his lunch break since we wanted to buy close to his work. He’d watch the kids and I’d go on the weekend. Most homes didn’t stay on the market beyond the initial weekend, so we’d skype in the other one to facilitate quick decisions. The house we won was one that I saw first. Domingo first stepped foot on the property during our inspections.

I like to joke that it wasn’t the house I would have bid on in a normal market. I wasn’t keen on the layout and the kitchen is not my style, but it had the right number of bedrooms and (by sheer luck) there was only one other interested buyer. I knew Domingo would like it. Although the yard wasn’t big, the location made it feel more separate from the neighbors than the typical California bay area home. Domingo enjoys his privacy. Since then the layout has grown on me. I do enjoy making our house my own. It has nice large walls for me to fill with my favorite photos of my favorite subjects.

As I’m sitting here in the family room, listening to the hammering of the new fence posts, I find myself once again opening up zillow and redfin. The home with the spiral staircase and second fireplace in the dinning room that I loved? Risen in value by 2.3%. The gorgeous ex-model home that wasn’t at all what we were looking for, and yet we still fell in love with it? Risen in value by 3.5%. The one that was decorated exactly as I would want my own dream home but accepted an offer before we got a chance to see it? Risen in value by 5%. Our home? Risen in value by 25%. That’s not a mistake, nor is a period missing.

That’s especially not bad considering the HVAC system and fence, and all other work only comes out to 2.7% of the purchase price. (It’ll be higher once we re-carpet and paint, of course.)

I don’t know how accurate those other home values are. I’m inclined to trust Redfin’s estimate of our property. Our neighbor a few doors down from us sold his home at the beginning of the month. It’s smaller than ours, both in terms of bedrooms and square footage, although I think the upgrades were more recent and look newer. The asking price (also the sale price) was significantly more than we paid for our home just a year and a half prior. The difference between their sold price, and redfin’s estimate of our home could easily reflect an additional bedroom.

I am amazed sometimes how things work out.

October 23, 2016

Costume Dry Run


One of our take aways from last year was that it’s very hard to get photos the day of. This year we thought it best to do a trial run in our costumes and scratch that photography bug so Mommy isn’t tempted to bring her camera when we go trick-or-treating. Given that Alexis took off running as soon as soon as her feet hit the sidewalk, the camera most definitely will not be in use on the 31st!

That super girl costume is an exact duplicate of one we already owned, right down to the size. The skirt ripped off the previous one and I didn’t think about replacing it until after Nicole settled on being Wonder Woman for Halloween. I’m both glad (because the photos are awesome!) and annoyed (who likes to buy the same. exact. thing. twice?!) The boots were a splurge that I felt OK with since my business is picking up. The prices were reasonable to begin with, and one pair was 50% off. Combined, the boots were a little more than the extra revenue I expect to make this month compared to last month. The boots really do help make the outfit. I’m hoping to do some more fall themed photos to really get our use out of them.

As a personal aside, I really need to learn that it’s ok spending some money some times. I love the photos of the girls in their outfits this year. Last year I bought a monster costume for Alexis that was $10 cheaper than the one I really liked. That $10 wouldn’t have mattered to use financially, but I probably would have been much happier with the photos. Hindsight.


This year we’ll be a 1.5 costume family. One of the primary motivators for the two costume idea is ease of use and function at daycare vs warm for trick-or-treating. Nicole’s wonder woman outfit is basically a dress and not a problem. In theory, Alexis’ wouldn’t be either, but it’s not fitting as well as it should. It’s both a bit long, and a bit tight. She’ll have an easier time playing in the chef hat and apron from the dress-up corner. (She actually managed to keep the chef hat on most of the day last crazy hat day.) Hopefully her chef hat will be acceptable replacement to her supergirl dress. She’s very much big sister’s shadow these days, and I could see her insisting on wearing her costume if big sister get’s to.

In retrospect, my dual costume idea works a lot better in years where the school’s Halloween party is not on Halloween, or when there’s a large gap between the end of the school day and trick or treating. The kids’ daycare is having their party Monday until 5:30. We’re going to try and get the kids home earlier so we can have a quick (and hopefully healthy) dinner before hitting the streets by 6pm. They’ll be hyped up on sugar from the party, and excitement at the prospect of more sugar.

October 19, 2016

My Lens Collection

I’ve always enjoyed reading what equipment other photographers use, so I thought I’d put together my own. I should point out that I’m currently shooting with the Nikon 5100 which, I believe, is considered the entry level DSLR. It’s a crop sensor, and while I’ve toyed with the idea of full frame, I doubt I’ll ever make the plunge. I’ve subscribed to the it’s-all-about-the-lenses philosophy, and have the focal lengths that work well with my crop sensor. I’d have to buy a whole new set of lenses for a full sensor, which would be really silly at this point given there there are crop sensor cameras of comparable quality. I do plan on upgrading to a mid range DSLR, like the 7000 series.

So here are the lens I currently own:

35mm f/1.8 ($200)
This has become my go to lens for indoor photography. On a crop sensor what you see through the view finder is more or less the same perspective you see with the naked eye. When the kids were small I’d use this lens so I could be physically close, and still capture everything I wanted to on frame. There can be a little bit of a distortion effect shooting so close, although I hardly ever notice it.


If you buy only one lens, and you have a crop sensor, this is the lens I recommend. It’s the most versatile.

50mm f/1.4 ($450)
This is the first ever lens I purchased, and one I really should use more often. It takes beautiful portraits (equivalent to the 85mm), but it can be really difficult to use in doors since you have to stand so far back. Almost all of my favorite photos were shot with the 50mm.


I also really enjoy the light shaping (bokeh) capabilities with this lens.

60mm f/2.8 Macro ($600)

Jewlery, bugs, flowers, this lens is great for all things tiny. It also works as a good portrait prime lens, though I generally prefer the 50mm for it’s wide aperture. This lens is the one I use the least out of all of them, but it’s also the most specialized. Pre-baby Sarah definitely got more use out of it than post-baby Sarah.

18-55mm f/3.5-5.6 (free, came with the camera)
Believe it or not, I use this as my “selfie” lens before I had a camera phone. At 18mm focal length, you can turn the camera around, stretch your arm all the way out and take a photo of your face. It’s great for travel when you don’t have a smart phone. There is a distortion effect, but I don’t mind. I actually think the distortion made my face look a little thinner.


It’s also a great lens for getting light stars. The slower the shutter speed (and thus longer the exposure) the better the stars. This kit lens is what I used to take my favorite newborn photos by the tree.

24-85mm f/3.5-4.5 ($500 new, $350 refurbished)

This is my go to lens for photographic the kids while playing out back, or at the park.

70-300mm f/4.5-5.6 ($500 new, $300 refurbished)

For wildlife and, maybe one day, soccer practice.

$1,900 over seven years not including the camera body? Photography is an expensive hobby. That works out to about $270 a year, or $23 a month.

Overall, I’m very happy with the lens choices I’ve made. They may not be the best, pro lenses out there, but I have full confidence that failure to get the shot I’m after will be more of a user issue than an equipment one. Short of other great falls, I don’t see myself buying another lens for a very long time.

October 15, 2016

70-300 is a Winner to Me

The longer I wait for something in the mail, the more nervous I get that I ordered the wrong thing. After purchasing the new lens, I began to worry if 300mm wasn’t enough reach for me. Online calculators weren’t helping assuage that fear.

The first available daylight after the new 70-300mm f/4.5-5.6 lens arrived last Saturday, I was outside experimenting with it. That happens to be shortly after dawn on a Saturday (kids generally get us up these days a bit before dawn). Shortly after dawn is not a very good time to try anything photography related. There just isn’t much light. Once I realized I wasn’t shooting with VR (vibration reduction) on, things got much better. When there was more light they were better still. I got the lens mostly for wildlife so I really wanted to test with wildlife. Wouldn’t you know that the mornings I got up with the kids we had no furry visitors but when Domingo got up with the kids there was a return of the deer, and a fox got trapped in the back yard? Twice?

When weekend rolled around again, I was pretty anxious to go to the zoo. It had been a while since our last trip, and the kids always seem to have a better weekend when we spend at least a little time out of the house. It was chilly and overcast as rain was expected thanks to the Typhone Songda, which meant the animals would be out.

Let me tell you the 70-300 did not disappoint!

I think the biggest advantage of the lens was it’s vibration reduction. The lens is a beast, easily my heaviest lens at 1.6 pounds. It’s 6 inches long when using the lowest focal length, and 8 when extended. That makes it’s center of gravity a bit out from you when you hold the camera to your face. I was shooting one handed, while balancing Alexis in my other arm. I was having a devil of a time keeping the camera level enough to get the framing the way I wanted it. The below photo was shot at 300mm, 1/250 a second with a very shaky hand, yet there’s no camera shake visible.


I was a little nervous about the depth of field, since the aperture of the 70-300 doesn’t open as wide as the 55-200 lens which was being replaced. While the difference in focal length to 300mm to 200mm might not translate to much in a photograph, it makes a big difference in terms of depth of field thanks to the distance to subject minus focal length (s-f) part of the depth of field equation.


And, of course, the lens is very sharp. It’s sharper than I ever remember the 55-200mm being. However, I am wondering if maybe I’m comparing apples to oranges. I had that lens for seven years. It’s possible the great fall wasn’t it’s first fall and the elements may have been slightly knocked out of alignment previously.

Regardless, I’m very happy with the new lens. Now I just need that fox to come back.

October 10, 2016

Strong Signals

Today I opened the https property view of and discovered this.

trend is getting more search result clicks than ever received, and the slope of the line is increasing faster than the slopes in graphs generated for Whether that’s due to the more professional name, the paramaterized site map, use of secure protocol, or just plain luck is unclear. What is clear is a very nice trend line with a very nice slope that shows no sign of slowing down.


That’s a huge positive signal that I should continue my business. Search engine result clicks nearly doubled in a two week period.

Another neat observation? For the first time there’s a clear weekly pattern.


The number of clicks I was receiving before this point has been small enough that minor fluctuations were clearly visible. As such, there was sometimes dips around the weekends, but dips would also randomly occur during weekdays, as would spikes on weekends. The more clicks received on a daily basis, the less influence normal variations will have, and the trend line will become smoother and smoother. The fact that you can look at the above graph and easily predict the weekends is yet another sign of how much the number of search engine result clicks has increased.

I find this trend line particularly encouraging because search clicks tend to be more stable than referral traffic, which tends to spike when a link in shared and die within a day or two. I do expect the steady increasing to slow down at some point, perhaps when the entirety of the paramaterized URLs are indexed by google for example, but I don’t expect the trend to reverse. I think I’m reaching the next level.

Grow little business, Grow.

October 6, 2016

The Bunny is Magic

Toddler sleep has historically been a bit of a challenge for us. Alexis was at the age where things all went to pot with Nicole, so we’ve been fearing another long bought of terrible sleeping.

Things weren’t horrible, but they weren’t great either. For the most part there where at least a few good nights a week, giving us hope to cling to. Then, Alexis was struck with a week long cold. We figured her sleep would return to normal after she kicked her cold. It didn’t. We thought maybe she just needed a few more days, than a week, maybe a couple of weeks. Alexis was now waking up 4-6 times a night for a week straight, and sometimes those ups would last for an hour. She was clearly trying to sleep, but when she didn’t fall right back asleep she’d call to us for another drink of water while she waited, followed by another call shortly later for a diaper change.

That lack of sleep is a killer. Because her night time sleep was so bad she was often tired and cranky during the day. Little things that usually didn’t bother her before would cause a crying fit. Being overtired affected her naps as well, and created a feedback loop of exhaustion. Of course mom and dad were frayed a little thin as well.

Recent experiences have lead us to believe that Alexis understands much more than she can communicate. We decided to give an OK to Wake Clock a try, even though she was sub 2. Let me tell you that OK to Wake clock is pure magic!

Alexis has a thing for bunnies right now. Her favorite stuffed animal is the bunny from Pets. She loved having her own bunny clock, just like big sister Nicole. We made a big deal out of saying good night to the bunny every night. (Alexis still says goodnight to it and not to me!) Every time she’d wake up in the middle of the night I’d gently remind her that the bunny was sleeping when I went in to check in on her, and we’d say goodnight to it again when I left the room.

It took a bit over a week before the number of night time wakings started to decrease. For two or three weeks she’d just wake up once a night. Then sometimes never. The past week she’s slept through the night in it’s entirety. This morning I heard her on the monitor calling “Bunny sleep, Bunny sleep!” which is her way of saying “Look at the bunny clock!” (It had just woken up.) With her night time sleep finally in a good state, she’s also napping better than she has in a long time. She’s back to her happier, more carefree self. She’s even eating her vegetables better.

Of course, this could just be confirmation bias again, but I’m optimistic.

There’s a part of me that misses the Black Fridays atmosphere. Domingo and I used to take our time going to the stores, meandering in mid-afternoon, and still get deals we were after. These days it’s a lot harder to get away to go to the store, and when we manage it we rarely get the deals were after. So this year we’re thinking of just staying in.

Domingo and I started thinking about our list and came up rather empty. We went through most of our home setup costs last year, so there really isn’t anything on that front. We could use another rug, I guess. Additional ornaments are always a possibility. The kid tree was pretty barren last year (not that they mind). I also still need a new laptop (I’ve been needing one since 2013), but Costco’s every day price on the one I like is pretty good. Mobile and tablet sales have been eating into laptop sales, driving the prices pretty far down. I’m just waiting for this one to kick the bucket first. It’s casing is cracked and it’s missing a screw, but still chugging along.

That’s the kind of stuff that’s always on our list. What’s new this year?

I need to get Alexis’ baby book printed. We’ll probably do MyPublisher again for that, since that’s who I used for Nicole’s baby book and I like to keep things ridiculously even. I looked through my email inbox and it looks like the best coupon I can hope for is 60(ish) off. Last year it came in October and just before Christmas. (Score one for team never-deletes-an-email.)

I also have two large frames I want filled. mpix is the only place I’ve found that can print to the right size. They currently have a 10% off coupon, but I’ve found a 25% off flyer in my mail box from September. I’ve also found a 25% off your entire order flyer. I haven’t been a customer long enough to have a long mailbox history with them, so I can’t predict when that sale will come back again. At least I know the kind of sale to target!

We’re pretty settled on the idea of Santa bringing Nicole a toy camera this year. We’re less clear what he’ll bring for Alexis. One of the joys of being the younger sibling is there are always tons of toys for your developmental stage. (One of the drawbacks is that finding those toys can be challenging!)

Looks like we’ll be spending this year in. Depending on how those printing coupons line up, we may pass on Black Friday all together.

It took about two and a half months, but things are finally starting to return to the steady state from before the name switch. In some ways, my metrics have improved.

This past month I earned $36.51, my third most profitable month! Users are up by 47%, bounce rate is still relatively low at 2.4%, and I’m starting to see some traction on my lesser known apps. I had my first stretch of $2/day (lasting 8 days), and my highest day yet ($4.03). That may not seem like a lot, but it wasn’t that long ago that I made my first non trivial stretch of $1/day.

The bump in audience came is a continuation of a larger trend that came mostly at the second half of the month, and appears to correlate to an increase in search traffic rather than referral bumps. I’m continuing to see an increase in traffic for the paramaterized URLs, so it looks like I have the addition of the site map to thank for the increased traffic. Google has now indexed just under 50% of my site, and my site has doubled in size since last month! Bing webmaster is still lagging way behind. It seems there was an issue with my sitemap index. I’ll have to look into it, but since Bing makes up such a small percentage of my referral traffic (likely because of the failure to index the site) that it’s a low priority.

Part of the reason my income is up is because the value of a click seems to have increased. If I factor in as many clicks as I got in May, assuming the same rate per click, I would have earned closer to $50. That may seem like a good thing, but the increase could be a result of the time of year (it’s almost the shopping season!) and may be something I can’t rely on.

There’s certainly potential to have some very good months if Google indexes more of my site, and if the number of clicks returns to normal.

This month I released two new apps:

Word Analyzer which provides meta information about a given word, such as syllable count and audience familiarity, and can get you insight into how use of the word may affect readability metrics. It currently tells you if a word is misspelled, but doesn’t suggest corrected spellings. That’ll be the next step. I also intend for it to offer more readable/less readable alternatives but that might take a little while since I’m currently lacking data. I went ahead and released this app before it had full functionality to give Google a chance to index it.

Time to Conception Calculator which calculates the probability of conceiving within a given time frame for someone of a certain age. I know, I’m working backwards. I started with the Labor Probability Calculator, then moved on to the Miscarriage Reassurer, and am just now looking into conception. It would have been wiser to have gone the other way! That way I could keep the audience I’d acquire as they moved though each stage of their pregnancy. Now I have to hope interested parties eventually find the app on their own.