Joseph Hallenbeck

Software Development

November 23, 2018

Todo.txt Practices

Filed under: Software Development
In 2016, I wrote about switching back to Todo.txt. At the time, I outlined the rough system I was using. In the two year’s since, I’ve refined my Todo list process greatly and wished to share. The Todo.txt format has a ton of flexibility allowing the user to go wild. Very few articles out there seem to illustrate how individuals use the format for themselves. This leaves a lot of stumbling about to create good practice and habits. Basic Practices All tasks must have a project and context and only one project and context The main todo list represents tasks...
September 21, 2018

Entity-Component Systems

Filed under: Software Development
Catherine West gave an excellent closing keynote to Rust Conf on using Rust for game development which delved into using an ECS at the core of a game engine and in particular focusing on Data Driven architecture over a more traditional OOP approach. What is an Entity-Component System (ECS) ECS is an inversion of the OOP principals. Rather than workig from a subject-verb perspective, that is “The Dog acts,” we invert the language to make the verb promenent: “The Dog is acted upon.” We do this by removing all data and methods from the “Dog” entity, and focus our design...
Sometime last Winter Nelson Elhage’s essays on using lab notebooks for software engineering made the rounds on Hacker News. One item in the early essay struck a cord with me: Computer scientists are taught to document the end results of their work, but aren’t, in general, taught to take notes as they go This seems to be current standard protocol for software versioned with git where care is taken to currate the repository history. Rather then record every wrong step and dead-end branch we are taught to prune and re-write the record by squashing our merge histories. A half-dozen commits...
Years ago I filed to incorporate a limited liability company. I did nothing with it since, but now find that I am at the juncture in my career when I should feel comfortable with taking on and managing client work beyond the stable income of my employer. This is the natural progression of a remote worker, and while I have no plans of leaving my day job, diversification in this age is absolutely necessary. Kynda Consulting will focus on serving the White Mountain area, by providing website development and hosting at the local level, and bringing economic development to the...
Continueing my book club notes on the the Pragmatic Programmer by Andrew Hunt and David Thomas. Chapter 3 The best way to store knowledge is in plain text, not binary blobs The drawback to plain text is that it comrpesses poorly, and may be expensive to process. This doesn’t seem particularly relevant with modern computers, but I suppose embeded systems still suffer this drawback. Plaintext helps insure against obsolescence and eases testing Shell beats GUI Get good at one editor until it’s like playing the piano Use source control (yeah we’re doing the obvious now) Embrace debugging as just another...
February 09, 2018

Shell Notes: Find and Tree

Filed under: Software Development part of Notes
Continuing my deep dive into shell and editor commands to find, useful tools that I’m not taking full advantage. This week is the Find and Tree commands. Find Find is used for traversing a tree of files and performing some operation on them. It is one of the core Unix utilities and fairly universal on systems. My big discovery this time is the realization that I can use find for more than just searching for files. I can use find to perform operations on the results. There are multiple actions besides the default -print, e.g. -delete and -exec both open...
Recently, I’ve been running a book club to cover the contents of the Pragmatic Programmer by Andrew Hunt and David Thomas. One of those volumes that has been held up, forever, as a text that any good Software Engineer should have read. The text itself is rather sound, although starting to show it’s age in the era of software-on-the-browser. Probably not going to do much of an articulated look at the book. Rather, I think I will simply post my cliff notes as I, or we go through each chapter. Chapter 1 Take responsibility for actions, career advancement, project, and...
January 26, 2018

Shell Notes: Vim XDEBUG

Filed under: Software Development part of Notes
Continuing my deep dive into shell and editor commands to find, useful tools that I’m not taking full advantage. This week is debugging PHP using Vim and XDEBUG. XDebug in Vim XDebug has been installed on every development machine that I’ve worked on for as long as I’ve worked. It outputs wonderfully formatted stacktraces and var_dump values. However, the interactive debugger side of XDebug remains little used due to the overhead of setting it up. When I developed using PHPStorm, the interactive debugger seemed extraordinarily unstable. After taking the time to set up a project, map the directories correctly, configure...
January 12, 2018

Shell Notes: Less

Filed under: Software Development part of Notes
One of my professional goals this year is to make a marked improvement on my shell (zsh) and editor (vim) skills. I know enough commands to get me through the work day, yet every time I see a real shell or vim poweruser go to town, I am reminded that I am probably only confident in 10% of the commands that I could be using. Every now and then, I’ll force myself to use h, j, k, l instead of ←, ↑, ↓, → to navigate in Vim and my Tmux panels. The skill lasts about a week before I’m...
About two years ago I started muddling on a small project to update this blog. At the time, I felt that there was a need to create something that better reflected both my growth in design and front-end sensiblities but also my perspective on how we ought to approach our relationship with the web. The blog itself has gone through many fine iterations since college. For a while it served as a platform for attracting employment interest. Now, that I am established, it is slowly becoming a platform for posting “anything and nothing” that crosses my mind. The get-me-hired aspects...
July 28, 2016

Wordpress to Jekyll

Filed under: Software Development
I am currently undergoing a process of slowly converting this and my other blogs from WordPress to Jekyll. One of the first items that I needed to account for was converting all of the posts from WordPress into Markdown for use by Jekyll. Jekyll itself provides a process for importing, but I was intially displeased with the results. I want my posts exported into Markdown files so I can continue to retain them in a simple plaintext format that can be post-processed into a variety of typesettings be it online or perhaps a print format. The default setting only outputs...
In 2013, I was fresh on my switch from Windows to Linux as my full-time OS. I was reading books like David Allen’s Getting Things Done and looking for a good digital planning system. Enter Gina Trapani’s Todotxt script. Todo.txt allowed for command line todo lists. Every was stored in a plaintext file, easily editable with any text editor or automated via the command line. I used it for roughly a year. At the time I both loved and hated using Todo.txt. On the one hand, it was easily automated. I could set up daily and weekly tasks to be...
October 13, 2014

DropFramwork

Filed under: Software Development
This summer, I plunged into the depths of my back up drives and came up with some old projects that were growing some dust. Like most old projects, I find them, get excited. Decide to do a major revolutionary revamp, and ultimately just end up touching up some things and kicking them out the door. The DropFramework is one such thing. For a long time, I wanted to make my own micro-framework to compete with the likes of Slim or Silex. In the end though, I really feel that those two have the space of micro-frameworks very well covered. No...
October 01, 2014

Centipede-RS Dev Log #2

Filed under: Software Development
Getting started with Piston can be a little daunted right now. Mostly this is because it’s a project that is still evolving and which has either little documentation or documentation that rapidly becomes wrong. A lot of games that I found made with Piston can no longer be compiled, a lot of example code needs various minor tweaks to get to compile, etc. That said, the two best items that I found where: Piston Tutorials: Getting Started Which is buried in the Piston-Tutorials repository without any link from the other documentation Piston-Mov-Square Which is just a very simple program that...
September 26, 2014

Centipede-RS Dev Log #1

Filed under: Software Development
A rather rambling design document for my ideas for a Centipede clone that I’m releasing under the MIT license. Following all my reading in Rust it seems like a good idea to have some kind of project to complete. After scrounging about for ideas, I came up with the one of doing an open source centipede clone using Piston. This would be good practice for trying a Rust Ludum Dare next April. The following is more or less a rambling stream of consciousness design doc for what I’m about to do. I’ll probably follow this up with a series of...
September 22, 2014

Resources for Learning Rust

Filed under: Software Development
I just started delving into Rust last week with the release of the Rust Guide. In Web Development, I really have moved away from the “bare level” languages of my schooling into the flighty realm of scripting languages. For the most part, I’ve been quite satisfied to leave behind the rigors of memory management and obtuse C linking errors for PHP, JavaScript and Python. Yet, Rust is the first systems language that really has gotten me excited to sit down and try it out. Maybe get back into the indie game scene (which I have been saying forever). This post...
September 16, 2014

TimeKeeper v0.1.1 Released

Filed under: Software Development
TimeKeeper is a little utility tool that has become both a pet project for testing out new PHP and JavaScript tools as well as a very useful tool that I use every day to keep track of my billable hours, projects and tasks that are completed through out the day. An example of TimeKeeper in action can be found at timekeeper.kynda.net This week, after a year of dormacy, I updated TimeKeeper to v0.1.1 with a major internal refactoring and improvement in the interface’s “responsiveness.” Major improvements include: The UI is now 100% responsive thanks to a rewrite of all templates...
Were to begin? This post is a kind of smörgåsbord of random thoughts and musing regarding editing and creating documents. It all really began when I started contemplating learning LaTeX, which lead to a good deal of time spent thinking about what is a document and from there to extrapolating much of the best-practices for web development into a wider sense. Namely, that a web page is merely a marked-up document and that the principles of separating style from content ought be considered in our document processing. I think that Allin Cottrell says it best: Word Processors are Stupid and...
I decided to spend the last couple of weeks introducing myself to some of the big MVC Javascript Frameworks that have gotten so much traction over the last couple of years. I sadly, have found the field littered with frameworks that happily violate the principle of Unobtrusive Javascript and am wondering – is there any solid MVC Javascript Framework that is clean and unobtrusive, will I need to keep rolling my own, or am I just a Luddite? Unobtrusive Javascript Now first, I must admit that I feel as though I am a technological Luddite when it comes to the...
February 03, 2014

Fiddling with HTML5's Canvas

Filed under: Software Development
I had my first real exposure to the HTML5 Canvas element this week. It was a fairly fun transport back to Intro to Computer Graphics and my school days working in C. Canvas provides a very simple bitmap surface for drawing, but it does so at the expense of loosing out on a lot of the built-in DOM. I suppose there is a good reason for not building an interface into canvas to treat drawings created with contexts as interactive objects, but sadly this leaves us with having to recreate a lot of that interactivity (has a user clicked on...
December 02, 2013

My Favorite PHP Helper Function - A Better Isset()

Filed under: Software Development (updated on 2017-08-22 09:30)
PHP7’s Null Coalesce Operator As of PHP 7 the function described below is no longer neccessary as it’s been superceded by the Null Coalesce Operator. Null Coalesce allows a nice bit of syntactical sugar for a checking if a variable is set and then returns that variable if it is or some fallback value if it is not: <?= $title ?? 'Blog Title' ?> Outputs the value of $title if it is set or ‘Blog Title’ if it is not. It is the same as doing: <?= isset($title) ? $title : 'Blog Title' ?> My favorite helper function for CodeIgniter...
In this article I plan on addressing CodeIgniter’s shortfalls as a framework for validating objects and introduce a method for improving the validator classes re-usability. When To Validate? The answer to this question is simple: whenever we are dealing with input. The (incorrect) assumption that CodeIgniter and many web-applications make is that user input comes in the form of GET and POST variables and a considerable amount of effort goes into validating inputs via these routes. However, GET and POST are not the only sources for user input. User input can come via external sources such as tying into a...
November 19, 2013

Building Pecunia - Introduction

Filed under: Software Development
What is Pecunia? I have been keeping my own personal accounts for some time in a progressively growing spreadsheet that after one decade of use, multiple files, and dozens of worksheets. The entire thing is quite a mess. My solution? Build an app for it! Pecunia will be a simple budgeting application designed from the ground up for keeping track of monthly budgets, annual budgets, and keeping a ledger of individual expenses. With a little bit of work, I should be able to turn it into a multi-user application to launch as an extension on Kynda.net for public use as...
September 23, 2013

CodeIgniter's God Complex

Filed under: Software Development
I have worked with Code Igniter almost exclusively for the last nine months. In that time, I have found it to be a massive step ahead over working with some of the major CMS systems on the market (WordPress, I am looking at you). Nevertheless, there remains some major architectural and blind spots that exist in CodeIgniter as a framework. Some of these issues are resolvable (CodeIgniter’s presumption that you would only ever want to validate the POST superglobal), while others are inherent in it’s design. In this series I hope to look at some of these issues that I...
I decided to share my fix for lightboxing in NextGEN Gallery 2.0.21. This version of the WordPress plugin for some odd reason breaks support for lightboxing the gallery images (that is having the gallery image “pop out” in front of the page when clicked). This fix does not modify the NextGEN gallery itself so we can easily revert to using NextGEN’s lightboxing whenever it gets fixed. Follow these steps: 1. Turn off NextGEN Lightbox Effect Log into the dashboard of your WordPress installation and navigate to `Gallery Other Options and select Lightbox Effects. There select from the drop down No...
When I started making websites in the 1990s we had a much smaller set of tools and a lot of websites were what we would today call “static.” A static site was nothing more than a folder of html files that contained both the content and layout of the site. If we wanted to change the layout of our site, we would either need to get new content or go through each individual file and update the layout.  Today we have CSS which introduced the paradigm of sperating content from layout. A site that applies this principle throughout its implementation...
I dabbling more and more with JavaScript lately. In the past my solutions to most site-related problems has been to write server-side PHP modules to add whatever functionality I needed. Since I started using WordPress to manage my site content, I started finding myself using JavaScript to ease-up on the amount of html that I need to type into my post boxes. Take Lightbox for an example. Lightbox is a pretty amazing piece of JavaScript that easily creates animated slideshows out of a series of image links. I use it on my art and photography pages. The problem with Lightbox?...