2017 tech thoughts
It's close to the end of the year and I've had a few things I've used this year that I don't want to forget about.
I've used virtualization before but what's new is that I've set up a development environment for my own tinkering that I can use on multiple machines. In a professional setting I've set up development environments with Vagrant because it saves a lot of time for a team but I only just got around to doing it with my own personal projects recently. Now that I set up another desktop machine at home this effort has payed off very nicely, I got up and running much faster than ever before on a fresh install.
I've found that this has made certain types of development on Windows systems bearable (by running a linux box), but has not worked well for anything needing symlinks. I had a LOT of troubles with symlinks using Vagrant on windows with VirtualBox as the provider. More on that in another article.
I've had a really good experience shifting to Yarn from NPM.
So far it seems noticeably faster and the other various improvements have been great. I did have a really annoying time getting the symlinking that's needed to install packages to work with Virtualbox on Windows with Vagrant but that's not Yarn's fault. It works great on the Linux box I just set up, more on that in another article.
This is a really good unit testing library that helps you write better tests.
Specifically I've found this has been good for increasing coverage work and has helped me find a few edge edge case bugs much faster. Would highly recommend, being able to write better test cases has a very high ROI.
A while back I wrote a CMS for video tutorials with the sport Footbag from scratch with Django (there are multiple posts on here about that experience). The whole point of the project was to make it easier to find the information that existed for the sport and to enable users that are non-developers to contribute to this knowledge base While this was an amazing learning experience for learning Django, and ultimately was why I chose Django, that said if I were to approach such a task as a professional job I'd just use a CMS like Drupal (or maybe Django + Wagtail depending on use case). A project like that really fits well with the strengths of Drupal, I’d want a very compelling reason to attempt to write a CMS from scratch for a project when Drupal works well. Specifically the Taxonomy concept in Drupal would have been very useful in the Footbag project context.
2019 Edit: I wouldn't choose Drupal for a web facing server these days for a greenfield project. It might be a usable choice for the content management side but I'd hesitate to use it for anything that served any sort of request to the public. See the edit below for why.
Overall I've liked working with Drupal, and I don't say this just because I had to deal with some crappy WordPress issues lately,  I enjoy Drupal in it's own right. Deployment has been easier that I initially expected which is nice.
Sometime soon I might do some more experimenting with headless Drupal, would be nice to write some front ends in React while maintaining all the nice CMS power of Drupal in the back end.
Edit: In early 2018 my company got hit by Drupalgeddon as a zero day and this caused us multiple days of site downtime. Along with the various other severe security issues that came up in early 2018 we considered the effort we would have to expend to continue using Drupal and keeping it secure, this led to us dropping Drupal entirely. I personally haven't used Drupal since and this was a key moment in my growing appreciation for static-site generated approaches. Now granted I do think headless drupal that creates a static site could be a viable approach, but I think there's likely better options in that space if you don't have some other need to maintain Drupal (such as a legacy situation where there's a substantial Drupal specific code base to benefit from). If you had a large organization that was already familiar with Drupal and had a dedicated security team the various workflow benefits for the content producers may make Drupal much more appealing, so as with many things the context in which you are deploying the software will make a big impact on which tech stacks are best for you.
Text mesh pro
I've been doing some work in Unity3d and the default text renderer isn't all that great. In the asset store there's a much better text package called Text Mesh Pro which I have been using.
The quality of the text that is rendered is much higher and because the software is well made it doesn't come at a performance hit over the inbuilt text.
I wouldn't be remotely surprised if this ends up being included in a later Unity3d install. https://blogs.unity3d.com/2017/03/20/textmesh-pro-joins-unity/
Edit: This did end up getting integrated into Unity in version 2018.2
|||A recurring theme is that I try to like WordPress because of the business value it can provide (unfortunately somewhat via externalities) but when I put my developer hat on I can't help seeing excessive technical debt (those same externalities) getting created. I find the plugin ecosystem with WordPress can let you get up and running exceedingly quickly but it also creates deployment and security issues. The inability to roll back an install is especially annoying which then leads you to have to jump through hoops in order to support a more sane installation and upgrade work-flow. Specifically I have found myself making isolated VMs for WordPress to try to avoid the issues with reverting conflicting changes from plugins, especially the issues arising from upgrades. I also like keeping WordPress sites more isolated from the other content that is being served from the same machines. But the realization is that after jumping though excessive hoops you aren't really saving any overall time, its mostly beneficial in the way in which it reduces the time to get a site to market.|