Single page GitHub wiki generator

GitHub has a great markdown powered wiki editor that is good for some wikis but not always great for technical documentation. Today I finished up Github Wiki Single Page. This project allows you to enter any GitHub wiki that contains a sidebar, select a Bootswatch theme, and generate a single page version of it. This works great for searching through docs.

Have a look at the example using Tipy’s Wiki.

Tipsy featured on homepage of


Lee of Coveralls just added Tipsy to the front page. Scroll down to find it in the PHP section.

Thanks Lee!

Pulpo Loco

Another Tipsy example complete! Pulpo Loco is a simple self hosted MySQL/PostgreSQL URL shortener using PHP and AngularJS.

Have a look over at or visit its source over at GitHub.

For more Tipsy examples check out the Examples page.

Tipsy gets benchmarked against other popular PHP frameworks. Acording to these tests, Tipsy is the fastest extension-free framework (both phalcon and ice require compiled PHP C extensions to work).

PHP Framework Benchmark

Tipsy v0.10.3

New Tipsy, new sample code.

With the latest release of Tipsy we get performance improvments, PostgreSQL support, and a bunch of easily deployable examples, including Hello World, Blog Example, and Beer Squirrel.

Take a look at all examples at Examples.

The release of Tipsy (MVW PHP)

Over the last decade I have modified and released several different PHP frameworks, with each version changing as my style changes. This new framework, created almost from scratch for some of my newer, smaller sites, focuses on speed of development, with the idea of making REST based web apps super easy to build.

This new version has been named Tipsy, because, obviously, I made it…and everything else…while drinking.

Tipsy is an MVW (Model View Whatever) framework, following the examples of AngularJS.

Heres a quick example of how easy, yet how powerful and lightweight, Tipsy is:


require_once 'Tipsy.php';
use Tipsy\Tipsy;

$tipsy = new Tipsy;

    ->when('hello', function($Scope, $View) {
        $Scope->user = 'Devin';
    ->otherwise(function() {
        echo '404';



<h1>Welcome, =$user?>!</h1>

Take a look at the source, examples, and documentation, over at Tipsy’s Github Repo.

Learn to build an application using Angular.js

How awesome would it be if there was a short online class on how to build an application using Angular? O wait there already is. Check it out.

I've moved to tumblr!

After nearly 18 years of building and managing my own website using nothing but a text editor and scratch code, I’ve decided to build on top of an existing platform for once.

Tumblrs custom themes are ridiculously simple to modify so that each page can display each type of data nice and pretty.

Maybe now I will write posts more often than once every year…

I fucking love AngularJS. I fucking love Cana.

About a year ago I started a personal project called droplet that is basically a shared photo library social network (for people who have friends). It was my test to learn AngularJS. I fucking hated it. The documentation was absolutely awful, wrong at least half of the time. Or the docs reflect some crazy version that never even made it to main repo. It was a complete fucking mess, and that is what I expected.

The fact that it was a fuckshow actually made it MORE fun to learn. So I built this silly little app in 2 days, and decided I had enough knowledge to switch our entire company, Crunchbutton, away from my scratch built JS framework to Angular. I was wrong. But not in a bad way.

Over the course of the next couple days, i converted what was basically jQuery and a backbone (for templates ONLY) MVC framework and turned it into Angular…for the most part. I got seriously tired of all the broken shit, or people claiming this piece of code works, or whatever, and it just – not – working. So I had my developer partner, Daniel, do all the hard stuff! And hard stuff he did. He converted all of my half finished code into pretty angular directives and fixed all the junk I broke. He was my savior.

A couple weeks go by, and we are ready for live. It was awesome, but in reality at the time it was nothing more than a framework change, and a messy one at that. It took us both a while to finish cleaning things up and angularify everything. Soon after, we pushed our app to the iOS store. Yay! But thats not what this post is about.

The app has been in the store for just over a month, and since then I have COMPLETELY redone the UI and design. I spent countless drunk hours designing all the new stuff without touching any code, trying to make sure every pixel was perfect. Well…its fucking perfect.

So let me get to the point:

Without changing more than a dozen lines of code (adding directives), I have built an entire new ui ON TOP of our existing theme, that functions different due to how easy it is to bind functionality to Angular within HTML and HTML that changes.

That about sums it up. So let me explain quickly how and why things are so easy.

We use Cana. Cana is my PHP framework. Hand crafted. Aged for 12 years. This is my sipping whiskey.

Cana has the ability to configure sites, or apps, with a config array to change the include paths in a cascading manner that allows us to create sub templates for ONLY files that have changed compare to the parent. Heres what I mean:

  • active themes configuration is [“sexy”,“old”]
  • old theme has 15 files, including home.phtml
  • sexy theme only has layout.phtml and home.phtml
  • when the request is made to the server, it cascades downwards automatically to include all of the templates needed
  • this works for views, controllers, and models
  • did i mention there phtml so we can pre process them? :p

Now, when a request is made to the server for a page, it bundles all view files required for angular in the initial request by parsing the layout templates tags.

So in the end, what we have is a system that allows me to edit ONLY the html files I need to create a whole new theme, with new functionality thanks to the power of AngularJS. This is something I did not expect when we first switched.

Being able to develop this theme on the same code line as our primary code is absolutely amazing. It saves us time with branching/merging, and lets us test our code out in the wild where we never would.

Thanks AngularJS. Thanks Cana.

Curious on how I build the views? Take a look at (or if you are feeling adventurous or shoot me an email from my ME page.

Disable smart quotes in OSX Mavericks

Windows and Word users have always driven me crazy when they complain about crazy characters in their posts or pages…and the cause is almost always smart quotes or dashes. With the release of OSX Mavericks, we too now have the misfortune of smart quotes. Smart quotes are those little angled quotes that point to your content. Like:

“Smart double quotes.”          "Dumb double quotes."
‘Smart single quotes’           'Dumb single quotes'

If you are pasting things back and forth between people and someone has crazy encoding settings, or isn’t using UTF-8, those characters can get all crazy, and not show up properly. Especially when pasting them straight into a database.

So, lets disable them!

To do so in OSX Mavericks:

  1. Open System Preferences from Applications or Launchpad or wherever.
  2. Go to Keyboard
  3. Go to the Text tab
  4. Uncheck Use smart quotes and dashes.

If you are using TextEdit, you will also need to:

  1. Open TextEdit
  2. In the top menu, go to TextEdit > Preferences
  3. Uncheck both Smart quotes and Smart dashes