Archive for August, 2016

On the one hand it feels a little premature to write this post now. I don’t know yet if I will be a success or not. Somehow, despite the uncertainty, I’m somehow still here after a year. I’ve had my share of ups and downs. These tricks have helped me get though the challenging periods, now and at other times in my life (like grad school.)

1.) Have your fight song cued up and at the ready

I think the most frustrating thing about entrepreneurship is the number of elements that are out of your control. For me, I’m greatly impacted by changes to the Google search engine, and advertising payment rates. It can make you feel helpless when these things seem to be conspiring against you. And there will be times when it feels like their conspiring against you.

I have a collection of girl power ballads I like to play when getting discouraged. My current favorite is Fight Song, which dethrowned the long time champion – Watch Me Shine by Joanna Pacitti.

Music can be a great influence. Find what makes you feel invigorated, and be prepared to play it on loop in the background. Or maybe full volume. Whatever you need to get past the humps.

2.) Retreat to your strengths (even if their not your core business)

Sometimes the music pick-me-up isn’t enough. Sometimes the best way to boost your ego is to work on something you excel at.

I’m a good coder, but even the best coders get stuck sometimes. Rather than keep hitting my head into the wall when I’m getting frustrated with a particular bug or trying to implement a new feature, I sometimes refocus on another activity. Sometimes it’s a different app. Sometimes it’s photography. The trick is to find something that can help rebuild your confidence in yourself. It usually doesn’t take long before I feel my self efficacy start to return to it’s former state. A well planned half hour break can make me feel re-energize and ready to re-tackle that problem. If you suffer from impostor syndrome, like I do, self-efficacy breaks are a necessity.

3.) Spread out your weaknesses

Most people who start a business focus on the skills they have, and forget about all the other aspects that go into making a business work. A photographer is more than someone who excels at photography, a tutor is more than just a masterful teacher. There’s marketing, budgeting, financial record keeping, etc.

One of my bigger weaknesses is technical writing. If I ever decide I no longer want to be a non-employer, and I get successful enough, I’m hiring a technical writer. Or maybe a technical writer/social media manager. Since that’s not an option now, I like to spread out the technical writing and do a little each day. It may be tempting to put it off, but that makes for really unpleasant days when I do nothing but technical writing, get tongue tied over word choices and start to feel frustrated. I’m much more likely to get discouraged those days.

4.) Track Metrics

You don’t know how well you’re doing unless you track your progress. This month is shaping up to be a bit worse than last month, but at least it’s still twice as good as last year. If I wasn’t tracking how my business was operating year-over-year, it’d be easy to lose track of my overall growth.

I like to keep lists of accomplishments for the day. The more things I’ve gotten done (business related or otherwise) the more energized I feel to keep going. I’m more likely to be productive in the evening, and hit the ground running the following morning.

I have been price watching some furniture for our new home for almost a year. With the holidays approaching, and plans for get togethers, I was thinking of biting the bullet rather than keep waiting for a sale that might not happen in time. I started searching outside my usual retailers to find the best current price on the items I wanted. My searches once again landed me on

In my experience often price matches Amazon, but when it doesn’t it tends to be more expensive. For some of the items I was hunting, much much more expensive. However, if your eligible for new customer coupons you can still come out ahead. One of the unusual things about Jet is those new customer coupons can span multiple orders. Before this shopping experience I had two such offers still attached to my account. I’m not sure if these types of discounts will continue to be available for new customers when the dust settles from the recent buyout. If you’re thinking about joining Jet, I’d start now and lock in that deal.

The closet maid storage shelf I wanted. I was definitely being picky. Target had a taller one for cheaper, even after the discount, but I liked the fact that this one had a complete backing, and the left over shelf space was the perfect size for the cutting toy.
I still really need to paint the playroom.

In addition to the storage shelf above, I purchased end tables (so we can finally get those living room lamps off the floor), an entrance way bench with shoe storage and cushion.

I didn’t do enough research on the end tables. The original ones I wanted were 50% more expensive so I went with the secondary option I was considering. Turns out that was an accent table and not an end table, so it’s a bit taller than I would have liked. Good news, the table is of excellent quality so when ever the price does decide to drop on my first choice I’m sure I’ll be able to find a good use case for them.

Another way Jet is a little unusual is that when you add an item to your cart, the price on some of the items already in your cart may drop. It’s not much of a difference but watching those prices drop is addicting. Sometimes I’d add an item just to watch the price drop. I could see how easy it would be to spend more because you think your saving (spaving.) Admittedly I was guilty of spaving this time. I bought a Christmas Cd I didn’t realize I could get for free with Amazon Prime Music.

I know a home is never done – there’s always another project – but we’re getting closer to at least feeling fully furnished. I’m still looking for a bookshelf to turn into a toy shelf for the playroom. And living room furniture. As much as the kids like the big empty room, I’d like to fill it with something. Alternatively, photography studio equipment would be cheaper than a new couch. All I’d need is the lighting equipment. Decisions, Decisions.

I have been talking about getting “nice” screwdrivers forever. For years we had been using the cheep ones you find at discount stores. You know the time, $1.50 for a screw driver, or $10 for a pack of 8. They keep wearing down on me and loosing the grips. I mentioned the desire for good screw drivers to my dad and he asked me what constitutes “good.” I didn’t really have a good answer other than something that will last a bit longer. He figured it was better to just replace the screwdriver whenever it wore down.

No offense dad, but you are so wrong.

The playhouse was a bit of a beast to assemble. I started at 8 and didn’t finish until two hours later. In that process I sent Domingo to the store for another screwdriver because I was just so frustrated with our last remaining screwdriver losing it’s grip and dropping the screw in the dark. He came back with the only one the store had, which was somehow less effective than the one I was using.

Domingo and I decided to bite the bullet and and ordered a better screwdriver the very next morning. We went with a cushion grip screwdriver. If nothing else I figured it would spare my hand from some of the after-assembly soreness. I had one of those magnatizers so I didn’t think the magnetic tip was anything special.

That’s where I was wrong.

Today I re positioned the blinds I had previously installed. The magnetized tip was stronger than any of the screw drivers I had, and did a much better job of holding onto the screw. This was very handy as the blinds are not in the most convenient of places and it’s difficult to get the right angle on the screw driver. The cushion grip was much easier on my hand. I got the job done in half the time it took to install the blinds in the first place.

Will this screwdriver last? I don’t know, but the lifetime warranty does give me hope. Even if I’m replacing this screw driver every year instead of the $1.50 screw driver, I still think it’s money well spent.

August 15, 2016

Another Home


When we moved from Silicon Valley we managed to fit everything on one moving truck. Everything except our old Christmas Tree, the corner desk, and the Step 2 play house. That was both by design and a bit of luck. The old desk wouldn’t fit the new office (and one of the movers said he’d like if if we weren’t keeping it.) The Christmas Tree was a pre-lit tree, and the bottom section of lights worked only sporadically. The Step 2 house was assembled out on the patio and wouldn’t fit through the doorway without being disassembled first. As tends to be true of toddler toys, it was also missing a piece.

Of the three the one I sometimes regret is that Step 2 house. I convinced myself it wasn’t in the best of shape, wouldn’t have survived the disassemble/reassemble process, and wouldn’t have fit into the truck even if was disassembled. The last point is probably the most true of them all. Still, I felt bad that Nicole wouldn’t get to play with her house anymore, and that Alexis would never have the chance.

I was thinking about it last weekend and decided to do some poking around online. Wouldn’t you know it, Walmart was having a sale. It wasn’t as good as the Black Friday purchase we had previously gotten, but a decent deal. In the cart it went.

There are apparently at least two different cottages with the same basic coloring. The really ironic thing? The one we had previously from Amazon (without the grill) matched the image on the product page on Walmart. The one that just arrived from Walmart (with the grill) matched the product page of the one we previously bought on Amazon. If I had to pick, I think I like the current one (with the grill) better, if only because there were three screws to secure the sink instead of one and it seems more stable. Alexis loves to climb through the window and she does that by grabbing the sink and putting all her weight on it. Then again, the old one had two seats which also would have been nice given the two kids.

Both girls were super excited for their new house. Alexis rang that door bell for hours, and Nicole spent quite a while making strawberry salad on the grill.

Truth be told I am still a little frustrated with myself that I made the same purchase twice. Not very frugal. Than again, if it didn’t fit on the truck it would have cost us much more to have it moved than it was worth. I just need to keep reminding myself that. Hopefully we stay put now for a very long time. Moving is expensive in so many ways.

August 12, 2016

Vector Art

The front page of datayze was starting to feel rather lacking. I ditched the early 2000’s style side menu, but what was left just felt blocky and boring. I needed some artwork to give it a little life. Despite my years of art club president, I’m only passable (at best) with pencil and paper. Somehow translating it to digital form never works out as well as I think it will. Since commissioning artwork is out of the question at present time, I needed to find something I could do with the tools I had.

The graphics program I use (paint shop pro) has presets for standard shapes, and lets me resize, slice and rotate them pretty easily. I have no idea how it compares to the more commonly used tools. I’ve fairly proficient with it and this old dog only has so much time to learn new tricks.

One of the first ideas that came to me was a clock background for my Business & Motivation Apps. Clocks are pretty easy to design since there aren’t a lot of free variables involved. It’s basically a circle (possibly multiple concentric circles) and a lot of lines. Minute ticks are every 6 degrees, hours are every 30. I literally drew one line and rotated it 60 times. Since I wanted the clock to have a very professional feel I went with roman numerals over the traditional decimal system. I also quickly decided I needed an inner border since I was only going to display a portion of the clock. The only design choice left was whether to do something different for the hour marks than the minute marks. I tried different shapes like diamonds (with both normal and beveled edges), and thicker marks, but those all looked informal. Eventually I settled on a multi-line look, rotating the hour marks 2 degrees in both direction.


The process took roughly two hours, twice as long as it needed to because I eyeballed the placement of the first line. Since I was cloning it 60 times everything was effectively a half a degree off. It was noticeable enough to drive me nuts so I redid it from scratch.

The next background imaged I worked on was the aperture for the Photography Apps. This one proved a bit more time consuming because I wasn’t sure what shaped to start with for the outside perimeter. My first attempts included the dodecahedron and the octogan, both shapes in PSP. Neither quite looked right. The 12 sides the dodecahedron corresponded with 12 blades in my aperture. Depending on how I drew the blades the aperture was either too opened, or too closed. The octogan was a little better, but too simple.

I needed a decagon, but PSP didn’t have on naively, so I would have to make due with two pentagons. When using shapes with psp you can specify the height and width. A perfect pentagon with equal sides will have a wider width than it’s height. I ended up drawing a pentagon. Rotating it 60 degrees to see if it would perfectly overlap itself. Un-rotate it and stretch either the width or the height. Lather, rinse, repeat. (I didn’t really feel like doing the trig to figure out the dimensions from the start. Color me lazy.)

Once I had the outline I used gradient fill and rotated the fill direction like I rotated the lines. Like the clock, I’m very happy with how it came out.


At this point I was pretty hooked on the vector art approach. It was looking better than anything I could draw by hand, and had the right math feel to it (despite my avoidance of trig). So I decided to finally get around to doing my new logo.


What do you think?

August 8, 2016

Dress-up Dresser


I’ve been thinking about updating our dress-up corner ever since the girls had a vintage style photo session at their school at the beginning of the year. (Vintage preschool photos are all the range around here, two of the three preschools we’ve gone to have done them.) I loved the idea of hanging one of their photos in the dress-up corner, which had turned into a pile of clothes since the coat hanger really isn’t enough storage space any more.

For the makeshift dresser I used a cheap, two tiered bookshelf. Cheap was an important criteria as I knew I’d be destroying it in the process of converting it into a dresser and I hate to destroy anything I spend money on.

I lowered the shelves and converted them into a two tiered shoe rack, attached hooks to the side of the bookshelf for accessories and strung a tension rode strung across to hold the clothes. Easy Peasy.


I had intended to use the pre-drilled holes the bookshelf came with, but they were two high for the shoe rack. The second shelf (obscured partially by the clothes) was at the lowest set of pre-drilled holes. Even as it is, that shelf is a bit high for four year old clothes, really. Many of the capes especially hang over the edge of that shelf. To create the holders for the second, lower, shelf I screwed four wood screws into the wood, leaving them to protrude about a quarter inch for the shelf to rest on. I picked screws with heads about the same width as the pegs, so the shelf grooves would fit over them. I didn’t bother doing a very thorough job of the placement of the shelf. I lined it up where I wanted it to go, and used one of Nick’s crayons to mark the shelf grooves before screwing in the screws.


To hold the superhero masks (because every child needs a super hero mask or 10!) I used wall hooks. The screws that came with the wall hooks were far too long for thin bookshelf wood, so I just glued ’em on (E6100, my trusty standby). I used masking tape to help hold the hooks steady while the glue was drying. Not the most elegant solution, but it works well enough.

The picture that started it all. Aside: If you want to take a photo of a picture frame, but your reflection keeps getting in the way, get a longer lens and stand further back. From a distance you can stand slightly to the side of the frame rather than directly in front and have minimal distortions.

I’m very happy with the way this project turned out. It got the dressup clothes off the floor is a nice, organized manner and looks nice. Now if only I could find a simple solution for the rest of my house…

Dresser Material Costs:
2 Foot Wide Black Bookshelf – $17.99
2 Sets of Wall Hooks – $3.99 (x2)
Tension Rode – $2.97
Total: $28.94

Oval Picture Frame ($18)

Painting the playroom is still on my todo list.

August 4, 2016

Migration Pain

I lost two days and a half days this week updating from version 3 of the d3 library to the current version 4. What started out as a smooth transition quickly veered off course thanks, in part, to (1) functions being renamed, (2) Functions keeping the same name, but doing something different, (3) the defaults changed, and (4) class names changed.

1.) Functions Renamed

Giving the D3 developers the benefit of the doubt, there are times when it makes sense to change a function name rather then deprecate the old name and keep it along for legacy reasons: the functionality changes. This is especially true when the functionality change is ever so slight. A developer using a library may not think to retest every corner case. Changing the function name creates a compilation error, which will force the developer to re-test their code.

After reading the documentation, and adjusting from names like d3.scale.linear to d3.scaleLinear I noticed something was still not right.

I went from pretty graphs like this with nice subdued gridlines, readable axes and axis legends:


To (in my opinion) rather hideous ones like this:


Of course there were no errors or warnings to help me get started figuring what went wrong.

2.) Functions with the same name and different functionality

The first thing I wanted back was the horizontal grid lines. The problem was subtle, so subtle that I only found
it by carefully analyzing several v4 examples. Where I had been creating the grid by adding additional tick lines using the argument yAxis.ticks() (as in .ticks(yAxis.ticks())) I now had to call yAxis.tickValues() (as in .ticks(yAxis.tickValues())).

I’m not sure whether the functionality of ticks() changed slightly, or it’s returning a slightly different object that can no longer work as an argument. At least it’s now working. In fairness, ticks() is a function call off of the scale object whose name did change, however a warning that the argument could no longer be used to set the tick values would have been greatly appreciated. That is not a change any developer would anticipate needing to make.

3.) The defaults changed

Notice the difference in axis font sizes & fonts? The difference in fonts actually accounts for the difference in size. Previously I hadn’t explicitly set either font size or style, so it defaulted to whatever the page was set to. The only reason I can think of to change the defaults is if you needs some guarantee on size value to keep elements from overlapping. It’s a stretch, but it’s also a minor fix.

4.) The class name changed

This is the most aggravating change because it’s also the least defensible. Notice how my tick lines went from light gray to black? I had specified the light gray in my (cascading style sheets) CSS, a styling markup language. In CSS you specify an element either by it’s id or by a class name. Each element can have a single id, but infinitely many classes. When the class name changed, my css rules were no longer applied. It would have made more sense to simply add a new class name to the object, not remove it.

Avoiding future pain

Not updating is simply not an issue, not for web applications. Bugs will be discovered, vulnerabilities too. I owe it to my users to remain up to date so they can continue to use my apps. Still, there are things I can do to lessen future pain. I moved my graph declarations to their own javascript file, effectively creating an interface layer between my apps and d3. Now at least all the pain will be contained to updating a single file.

In terms of income conformance I would describe the second half of July as an abysmal month punctuated with occasional goodness. Before the switch to Datayze on July 9th, I made $11.52 or $1.44 a day. After the switch I made $17.53 or 79.7 cents a day. A bit more than half the previous daily rate. During the second half of July I had 3 days under 15 cents, and another 6 under 30. Overall it was better than I feared, but the dark cloud hanging over August is that there’s no clear uptick at the end of the July, so I can expect this ~80 cents a day rate to continue this month.

That’s the bad news. The bounce rate is still under 3%, pages per session were 4.43 and time on site is up to 2.45 seconds. The first two numbers are not as good as last month, but within striking distance and not terribly unexpected after a re-branding.

The issues I’ve been facing with Search Engine Optimization (SEO) post the move inspired three new apps.

Site Navigational Analyzer. This one I built when the Google and Bing search engines were slow to index my site. I was curious how interconnected everything actually was on my site, and how varied the anchor text is. The intuition behind varying anchor text is that it can provide different hooks to help a user find where he or she wants to go. Branded links (links with the name like “Site Navigational Analyzer”) are great, but descriptive links also help users who don’t recognize the title, or for where the title is too short to include a site’s full capability or article topics covered. The “switch to Datayze” link above is a good example of a descriptive link.

Site Validator. This is another website Spider app that crawls through a domain and creates a report of errors sorted by how common they are, as well as a report for individual pages. I used this to fix not only errors on Datayze, but on

Finally I created a Thin Content Checker. Thin content is SEO nomenclature for “with little value.” While content value and page length are not the same, they are somewhat linked. The industry standard amount SEO experts is that under 200 words for most applications should be considered thin. I designed my thin content checker to be flexible enough that it can ignore headers, footers, & the like, as well as tell you the unique content per page.

The drawback with spiders is that they are a bit more resource intensive than most of my other apps. The Same Origin Policy prevents me from implementing the spider in Javascript, and moving some of the resource burden to the User’s machine. For now I opted to cap my spider at 400 pages per day, which is larger than most personal websites, but I’m also considering creating a teared user model which would allow some users to have an uncapped rate.

My plan for August is to keep focusing on the numbers and see if I can’t bring them back up.