Disposeamail.com Re-launch: The Spam Never Stops

Over the holidays, I spent about 20 hours spread out over a few days to build and launch the new Disposeamail.com. Go check out how an inbox looks (in this case, asdf@disposeamail.com).

But wait. Why would I launch a new project when I just recently committed to concentrating on a single project? Because I wanted to learn and experiment with a few things that will ultimately help me with my main project. Namely: New methods of Node.js scaling and deployment, and experimenting with some new JavaScript features and build systems. I have already learned a lot on those two fronts just making and deploying Disposeamail that will get integrated back into ChurchMint and other projects over the next few weeks. Continue reading

Selling My Passive Income Stream: JSCompress.com

I recently sold JSCompress.com – a website that I created, and have owned and operated since 2008. Over the years, it has gained a lot of traction and popularity, and is heavily trafficked – the most heavily and consistently trafficked website I have ever owned (about 3,500 uniques per weekday). It was a really tough decision selling the website, but in the end – it was the right time to do it.

Continue reading

Countism

Countism App Icon

Countism is a mobile app idea that I have been working on and thinking about for a long time. Even though I have been thinking of the idea for a while and even did some initial work, I did not plan to actually build and release the app – that was always a question that was up in air. My initial work was really just experimental to see if it was something I could build easily enough to make it worth the effort, and to see if my idea would be viable in app form.

Continue reading

SoundingBoard

I just re-launched SoundingBoard as a new blog to help non-technical people learn how to evaluate their app ideas.

During my time running Brightbit (a web development studio), I met with a lot of people about their app ideas. Some were bad and crazy, but most of the ideas I heard were good ideas that just lacked the critical thinking steps necessary to determine basic viability or technical feasibility. Continue reading

Funemployed

After running Brightbit with Joshua Ogle and Eric Boehs for nearly fours years, it officially came to an end a few weeks ago on February 28, 2014 when we closed the office. It’s a long story, and there is no blog post for it yet, but now is not the time. Long story short, we worked too far past our deposits for a few clients who used to be awesome clients, but, as it turns out, couldn’t pay anymore. We ran out of money, had to lay everyone off, and close the office. It was the most depressing experience of my life – but like I said, that’s for another post some other time.Brightbit Has Closed Message

What do You do After Running Your Own Company?

This is a question I’ve been asking myself a lot over the past few months, facing the impending office closure and winding down of my own business. Thing is, when you’re a business owner, you get to (read: have to) wear a lot of different hats. On any given day, I’d do development, marketing, sales, project management, HR, project planning, business planning, financial forcasting, and more. Since your role isn’t really defined, it just expands to fill whatever role is necessary at any given time. It’s both frustrating and liberating, and it’s an incredible learning experience – and unlike anything else that any full-time job is going to give you. This makes choosing my next job very hard. A lot more thought goes into what I am going to go with the next few years of my life, and how that will help me along my path, whether or not it will be interesting and challenging enough for me, etc.

What I am Looking For Now

After taking a little breather to do some hard thinking and evaluate my options, I have come to the conclusion that… I have no idea what I really want to do next. I am open to – and actively evaluating – a lot of different options right now ranging from part-time and full-time contracts to more traditional (and even some quite unique) full-time jobs. One thing I do know, however, is that it does have to be something that is both very interesting and challenging for me – something that will force me to grow and learn. It also has to be either remote/telecommute or based in the OKC area. I have put down significant roots in OKC, am very involved in the local developer community, and have lots of family here. Basically, I really don’t want to move right now (unless maybe you need me to relocate to say… the Bahamas or the Virgin Islands and pay generous housing allowances. There’s a chance I might go for that.)

Have work for me? Get in touch. No recruiters, please!

UPDATE: I have accepted and started a full-time 12-month contract, so I am no longer looking for work. Thanks for all the support and emails!

Introducing Bullet: The Functional PHP Micro-Framework

Bullet is a new PHP micro-framework with a unique functional approach to URL routing that allows for more flexibility and requires less verbosity than the more typical full route+callback approach found in other micro-frameworks.

The Problem with Independent Scope

The main problem with most micro-frameworks and even full-stack MVC frameworks that leads to code duplication is that the callback or method executed to perform the action and respond to the URL route lives fully within its own scope. This means that you are forced to repeat a lot of setup code across URL route handlers that load the same resource, authorize it, etc.

Some typical micro-framework code might look like this:

<?php
// View single post
$app->get('/posts/:id', function($id) {
     $post = Post::find($id);
     check_user_acl_for($post);
     // ...
});

// Delete post
$app->delete('/posts/:id', function($id) {
     $post = Post::find($id);
     check_user_acl_for($post);
     $post->delete();
     // ...
});

// Edit post
$app->get('/posts/:id/edit', function($id) {
     $post = Post::find($id);
     check_user_acl_for($post);
     // ...
});

You may be able to move the ACL check to a middleware layer or “before” hook if the framework supports it, but there is always a certain amount of duplicate code you will either never be able to get rid of, or have to jump through hoops to get rid of (like adding more abstraction or re-checking the current URL, etc).

The Benefits of Shared Scope

Bullet uses a unique nested callback style that splits the URL by directory separator and only handles a single part of the URL at a time with it’s own callback. At first blush, this approach might seem like more work, but the key to how Bullet works is that nested closures – by definition – can use variables defined in the scope of their parent. This leads to some pretty powerful and profund capabilities that can only be done using the same nested closure style that Bullet uses.

Continue reading

Android+iPhone SEO App

I just released a new iPhone SEO app and Android SEO app called SEMTab SEO Pro. The basic idea is to keep a list of domains saved, and check SEO/SEM stats like Google PageRank (PR), backlinks, Alexa rank, etc. and Social share information from Twitter, Facebook, and Delicious. more

ss1-listss2-webss3-social1

 

The first two pictures are of the iPhone app, and the last one is of the Android app. SEMTab SEO Pro was built with  Titanium using all native cross-platform UI controls, so it builds both the iPhone and Android app from a single codebase and a single development effort.

The nice thing about SEMTab is that it makes extensive use of Titanium’s event system to fire off simultaneous asynchronous HTTP requests to the various web services and APIs to fetch data about the current domain you are checking. This prevents the application from locking up while fetching rank or share information, and it prevents the HTTP requests from stacking up in a queue and waiting for the ones in front of it to finish. The end result is a pretty slick & simple SEO app that gets the results you want quickly, without feeling sluggish or unresponsive.

Check out SEMTab SEO Pro in the App Store or the Android Market when you get the chance — and don’t forget to leave some feedback with a rating.