If you are trying to install Emgu CV on OSX you may run into some issues:

ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/libopencv_videoio.3.0.0.dylib] Error 1
make[1]: *** [opencv/modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [all] Error 2


Try running cmake like so:


In a development environment it may be handy to enable CORS for testing. Sometimes you need to expose custom headers as well. So let’s get our Access-Control-Expose-Headers’ing on.

With the out of the box WebAPI 2 setting up CORS with a custom header is easy. After we have added Microsoft.AspNet.WebApi.Cors to our project we just have to add the following to our WebApiConfig:

config.EnableCors(new EnableCorsAttribute("*", "*", "*", "X-Custom-Header"));

However, if you are using the Owin middleware version (Microsoft.Owin.Cors) you will have to setup a custom CorsOptions object. Currently your Cors middleware config may look like this:

app.UseCors(CorsOptions.AllowAll); // Note: Make sure to call app.UseCors() before you load in any additional middleware that will use requests. (Like app.UseWebApi(config);)

Lets take a look at what CorOptions.AllowAll does:
Microsoft.Owin.Cors CorsOptions.AllowAll Option
We can see that all it is doing is creating a custom CorsOption object for us with some default settings. The meat of the configuration is located in the CorsPolicy object. You’ll notice one particular property of CorsPolicy that is of particular interest of us: CorsPolicy.ExposedHeaders This read-only list contains a collection of headers to expose via Cors.

To bring it all together, we will need to recreate the object CorsOptions.AllowAll made for us, as well as appending some custom headers to our new CorsPolicy:
Cors Setup with custom CorsOptions and CorsPolicy options.


While I am still getting my feet wet building out my next venture I am going to be rebooting Coordino over the next few months.  It seems like it like I would be doing a disservice to myself and the end users of Coordino if I do not continue to consistently work on the project. While I have neglected to keep this blog up to date for several months I hope to chronicle the development progress of Coordino here over the next few months. By the end of this week I will have an initial one month roadmap of milestones I wish to achieve.

Coordino ScreenshotAt the moment my biggest concerns are:

  • Getting Coordino stable
  • Revisting the install process to make it smoother
  • PHP 5.4 Support
  • Fixing the XSS exploits currently listed in the issues (Thank you to the contributors who have found issues!)

If you have anything that you would like to see added to Coordino feel free to leave a comment or open up an issue on GitHub!


It has been a few years since I have shipped a product. In 2009 when I started to build out a question and answer engine I feel into the “If you build it, (and post it to Hacker News) they will come” mentality. Even though I knew that marketing a product was an important part of process I felt that I could ride off the initial “launch” for quite some time. During the first few months the product was up and running learned that the idea of a launch was as much as a fallacy as my idea of how to “market” a product was. Although the software still lives on in the Open Source space I never held the product, or myself, to the standard that I wanted.

That is a mistake that I do not want to make as I venture into the realm of producing products in the future. Since you are reading this post I believe that you must be interested to some extent about me or learning how to build your own software products. As I begin the process of building out a new piece of software I am going to take you on the journey with me and hopefully you can leverage the areas where I took the right turns and learn from my mistakes. Building a successful product is not just about building great software. It also involves marketing, customer service, networking, and most importantly creating value for your customer.

Before can start thinking about any of those elements I have to first come up with an idea.


A quick little tidbit that may help someone in their travels:

I was looking to install the PECL oauth package on my mac development machine. Since it is running XAMPP and not compiling from the source I was a little worried I would run into a few issues — and I did. While trying to install the oauth package I ran into an error:

oauth error: expected '{' at end of input
make: *** [oauth.lo] Error 1
ERROR: `make' failed

After reading a few items online it looked like there could be an issue with phpsize. Looking into XAMPP phpsize is not included by default. Taking a somewhat ill advised route I installed mac ports and attempted to port install php5-devel. As it began to compile I realized the error in my way: it was porting php5 as well!

To finally fix the issue: I hopped onto the Apache Friends XAMPP page to take another look, and before my eyes I saw the XAMPP mac “Developer Package.” After downloading and installing the .pkg I attempted to run pecl install oauth again and it was smooth sailing.

Still having issues? You may have to build the extension yourself. @sumardi wrote a great article on how to do this at:


Dragon Duel Blog #1After a long hiatus from working on Dragon Duel I believe it’s time to kick things into action. Over the past two years Dragon Duel has faded in and out of my memory, and for good reason. These last two years have brought major ups and downs to my life. Some of these events have caused me tremendous pain, others pure joy and love. When I started working on Dragon Duel in 2006 the world I lived in was untouched by the realities of life that set as your responsibilities grow. Because of this my world went from working on projects I was passionate about, like Dragon Duel, to working on applications for different companies. And while that type of work does bring bread to to the table, it also chips away at your passion and dreams.

So where do we go from here?

Dragon Duel was taken offline because of a series of issues: I no longer had the time to manage it properly, the economy was busted, the back-end of the game was a bit screwy, and a slew of other issues. Tian and I felt temporarily shutting it down was better than letting the game run amok. Since the time Dragon Duel has gone offline there has been multiple attempts to get it back online. Doing this however is not an easy task. The game has to be rebuilt from the ground up. By doing this, the game will ultimately be creating a new game.

By going down this path the walls to getting the game back online stretch higher into the sky. However, there is hope.

The new Dragon Duel Battles screen

The new Dragon Duel Battles screen

Some sections of the game have been completed: Battles, weapons, some basic training, a new interface. There is still a long path ahead of us to get the game back online but we are determined to do it. To stay on this path we would like to hear from you: Keep us in line, Ask hard questions, and let us know what features you would like to see. I am going to try and commit myself to writing at least one update per-week on how the development of the game is going. I want to let you into our minds and see how our development process works. If you have any questions along the way I want you to ask them and I will do my best to answer them for you.

See you next week. Please let me know what you think below.


So after my still developing issue, I went out trying to find some additional freelance work to help build up my portfolio and put some money away in the bank. I wanted to skip the oDesks and outsourcing sites and go for something I thought may be a bit better: Job Boards. So I checked out the 37Signals Job Board and found this post. How the brief was written scared me a little, but 37Signals charges a pretty decent amount to post a listing so I figured it was all going to be kosher. I added them to my list to contact and a few days later we spoke.

“phenomsolutions1″ messaged me with no introduction spitting out loose questions around his project. After his description of the product I informed him that doing this from the ground up would not be a inexpensive task. He informed me he had “loads of money.” After I quoted him, he quickly took that statement back and changed the scope of the project, we agreed on a price and the following conversation took place:

Do you have a merchant?
I’m sorry? For payments/my invoicing?
Credit card processing
My myself I use PayPal and invoice through FreshBooks.
I dont use paypal, or use my credit card through paypal
any other option?
Out of curiosity, why not? I will have to look into another option.
(We could run the project through oDesk.)
What if we run it through 99designs?
That seems odd.
I think I’ll pass.
Because that isn’t the way business should be done.
Why not :S
paypal isnt the end of the universe, paypal is where i lost about 4 grand last time i used it.
Like what the heck is wrong with 99designs
Because 99Designs is used for contests. There is a slew of things you could do to cancel out the process along the way.
I have to protect myself here as well.
(I’ve been screwed a number of times myself.)
I will start the contest and give you the login details for the account and you can change the passowrd and take full control.
It’s okay. I think I am going to pass though. Best of luck with your project!
fuck you
you dumb dickhole
dont fucking insult me
calling me a scammer
fucking pussy
ill fuck you up
mother fucker
How am I insulting you?
fuck you.
Fucking cunt.
you fucking insulted me
you fucking idiot.
How so?
dont fucking insult me by calling me a scammer
shut the fuck up now
I’m just protecting myself in this situation.
your name is JIM WALKER, and you type *NOD* every 3 seconds
Have a good day.
so shutup
fucking clown.

That promptly ended my bid to do any work with him or his company. Do any of you run into this type of client every once and awhile? Or worse, have any of you ever gotten burned bad by a client?


DBSlayer is an awesome lightweight database abstraction layer that is used under high-load websites. While nothing I am working on is necessarily high-load I am going to be using DBSlayer to work on a few projects using Node.js (Which deserves a post of its own.) Installing the DBSlayer requires the following other libraries must be installed first:

  • the Apache Portable Runtime (APR) library (1.0 or above)
  • the Apache Portable Runtime Utility (APU) library (1.0 or above)
  • the MySQL 5 client libraries (5.0 or above)

While somewhat basic you may run into an issue with this if you already have XAMPP installed on your machine.  XAMPP keeps all of these files located in the /xamppfiles/bin/ folder. Therefore you need to modify your ./configure line when installing DBSlayer.

Not rocket science but it took me a few minutes to debug. Hopefully this saves someone some time.


This is the first part of a four part series that covers the history of Dragon Duel. Throughout November and December a post will be made each week to cover various aspects of the game’s history. Make sure to check back in.

So the launch of Dragon Duel got pushed back again — Not a surprise given the history of Dragon Duel. However in the mean time the site has been updated to take in any users who are interested in playing the beta when it releases. If you would like to sign up check it out.

Dragon Duel is an odd topic. Did you know there have already been four different versions of the same game rehashed over and over? We seem to keep going through a constant development cycle that never ends. The sad part is that all of these games ended up working really well too. We just never pushed them for release because they worked totally different that the original Dragon Duel did. We really wanted to keep the stats and current user base the same without having to change too much. This time around we kicked that philosophy  out the door and revamped a lot of different metrics kind of combining elements from all of the other versions of Dragon Duel together. Lets take a look at the past shall well?

Dragon Duel (2005)

Started by Luke Hackett Dragon Duel started off of what is know as a “Dragon Swords” base of code. This was some base of code that a bunch of developers were working and it got leaked out onto the internet. Lots of bitching, moaning, and hacking up code later Dragon Duel gave its breath to the world and started to take in players.  Luke’s invovlement in the game is somewhat unknown to me. I really did not know him nor was I a member of the DD community at that time.

Dragon DuelThree Easy Payments (2006)

I approached Luke after seeing a post that he was selling his games due to a lack of resources. I emailed him on 5/16/06 and things started to get rolling. Price and other elements were discussed the basics came down to this (from his end):

  • Two Games: DDRPG, SOD
  • Totally unique!
  • $200!

So the deal went through, however with some snags. Luke told me from the start that all the games were unique:

Hey, DD is original but SoD was open source (I helped make the original source) but it’s so different it cannot be recognised as the way it originally was. I’m not really fussed on the price because I really need to sell… So pretty much offer a price and yeah I’d probably say yes. :)

Luke Hackett.

However a few weeks later I was informed they were just “clones”/rip-offs. Already having the code and paid into it we settled on $150.00 and I never heard from Luke again.

I moved Dragon Duel over to one of the original Bandhoster servers that I had and got everything setup. While the initial configuration wasn’t too bad the code was a pile of crap. Long blocks of code that looked similar to:

$checkban = Mysql_query("Select * from bans where id='$id'");
Mysql_query("insert into bans (id,time,mod) values ('$id','$days','$playerinfo[username]')");
echo "Player $id has been banned for $days days.";

Mysql_query(“update bans set time=’$days’ and mod=’$playerinfo[username]‘ where id = ‘$id’ “);
echo “Player $id has been rebanned for $days days.”;

Mysql_query(“insert into bans (id,time,mod) values (‘$id’,'$days’,'$playerinfo[username]‘)”);

mysql_query(“insert into usernews (id,user,text,time) values (”,’$id’,’$time You have been banned for $days days by $playerinfo[username] for unacceptable messageboard posts’,'$realtime’)”);
$bloke = $id;
// Manager Records
$plaintime = date (“l dS of F Y h:i:s A”);
$track2 = mysql_query(“INSERT INTO `trackweap` (`id`, `userid`, `adminid`, `change`, `tstamp`, `tstamp2`) VALUES (”, ‘$bloke’, ‘$playerinfo[id]‘, ‘Received a $days MB Ban from $playerinfo[username] ($playerinfo[id])’, NOW(), ‘$plaintime’);”);

//admin tracker
mysql_query(“insert into admintrack(time,admin,msg) values (‘$et’,'$playerinfo[id]‘,’$playerinfo[username] has banned $id’)”);
$trackrecord = mysql_query(“INSERT INTO jailrecord (time, admin, convict, msg) VALUES (‘$et’,'$playerinfo[id]‘, ‘$id’,’$id MBB for $time$gold‘)”);
// Add jail record
mysql_QUERY(“update jailrecord set convict=’$id’, jail_by=’$playerinfo[username]‘, jail_reason=’MBB for $gold’ where id=’$id’”);
// check unbanned
$resetthree = Mysql_query(“DELETE FROM bans where time=0″);


A lot of junk that we had to go through and try out best to fix. Little did I know that once I had this code up and running I was walking into a trap.


Ever notice that when you go to add an external link page in DotNetNuke that there is no option for it to open in a new window? Well I have two methods that you can go about to get this working on your DNN site. The first, not for the faint of heart, involves a little database work. The second is a quick Javascript fix.

The first method involves tricking DNN’s Tab table to thinking your URL link is something a little bit different.

  • Open up the Tabs Table in your favorite SQL Editor
  • Look for the URL field of the external link you wish to open in a new window.
  • You may see something like:
  • You want to make it:” target=”_blank

Once you save restart the application in the Host -> Host Settings page and view your link you should be good to go!

The second method is a bit easier however it does use Javascript instead of a normal link.

  • In the external Link field on your DNN Page Settings you will see something like:
  • Change it to be: javascript:void(‘’))

And save.

A little DNN hacking never hurt anyone.

But it makes you wonder why they do not have this option implemented. And why they don’t validate external URLs when you add them.