This is a big milestone for my main side project. After over half a year of hard work leading up to this, the ChurchMint mobile apps are finally live. The apps are not where most of the work is, but they will most likely be the main entry point and main interaction point with the ChurchMint service for congregation members to receive push notifications, etc. Continue reading
This is old news at this point, but I now officially work for Oracle since Oracle acquired NetSuite. The employment transition for all US employees was Jan. 1, 2017. NetSuite will continue to be run as an “independent business unit”, and my work has stayed the same. So far.
Be wary anytime you hear something along the lines of “use X instead of Y, because Y is slow” – where Y is a built-in programming language feature. This argument crops up from time to time, but it is almost always a complete non-issue in the long run. Continue reading
If your encryption method produces the same encrypted result given the same original text input, your encryption is broken. Yet this is what I see in most other examples around the web on how to do encryption in Node.js. Strong encryption should always produce a different output, even given the same exact input. Continue reading
I was happy to be invited to speak at Confoo Vancouver 2016. I have spoken at Confoo Montreal in the past (2011, 2012), and it is always a very informative and well run conference.
You Don’t Know Node.js
Node.js can be a powerful platform used in the right situations, but it also has more footguns than PHP does for new developers. Asynchronous programming style, concurrency issues, error handling, the event loop, and no default timeouts for HTTP requests or network calls will give new developers more than their fair share of troubles. This talk gives a thorough introduction to node.js and the event loop model, and covers common pitfalls to avoid.
If you use the widely recommended best practice of putting your application configuration in environment variables, then you have probably also run into the problem of ensuring certain environment variables are set that are required for your application to function – such as transactional email API keys or your database connection settings. Continue reading
Last year, I committed to launching 4 new projects by the end of the year. I did succeed in that goal for the most part – I launched 4 new projects, including the Countism mobile app that has gotten some very good reviews so far. In the end though, I didn’t really feel that successful, and only felt like I had one really solid project. Continue reading
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.
While developing the new Job board for Techlahoma (soon to launch), I decided to customize the JSON error response to include a
field_errors key with a dictionary of the field names submitted, and the error message that maps to that field. This allows me to more easily create in-context error validation feedback for users without having to implement additional client-side validation. A huge win for productivity, and a really nice feature for anyone implementing the JSON API. Continue reading