ter I grew up fascinated with technology. Like a lot of engineers who were introduced to computers at a young age, my fascination began with computer games.
When I was around 9 years old, I asked my dad to show me the basics of computer programming in MSDOS. He had built, from scratch, his entire bicycle shop point of sale system using an old framework called SMART. I cannot find anything on this old system, so if someone has some information you should let me know!
In any case, my dad was quite knowledgable about the basics of getting a program built in MSDOS and he introduced me to QuickBasic which was roughly version 4.0 at the time.
I soaked it up like there was no tomorrow, and proceeded to build dozens of programs and games in my free time, between playing games like Kings Quest and Descent.
As time passed, I became enamored with languages like C and C++ and gaming platforms like DirectX for Windows. I knew nothing of advanced linear algebra or 3D programming, but I did my best to learn by trial and error. Being homeschooled, all I had at the time was my dads unending encouragement to learn on my own and what I could find on the internet back in the 1990s.
Above all else, I was dazzled by the possibilities of technology, of collecting all the knowledge of mankind into useful tools that could improve our lives.
Technology was a tool, a tool that need to be used for the betterment of mankind.
My dad Nathan and my uncle Ric built a web business in the 1990s called Enfosys in Hutchinson, Kansas (no longer in existence). They built dozens of website for local businesses. My uncle Ric hired me around 2001 to start doing basic work for them from design to coding. I got used to Photoshop, Macromedia Dreamweaver, Fireworks, and Flash. When Flash was purchased by Adobe, I was on fire for web technology. Then when it died around 2010 I reluctantly began the switch to Javascript and HTML5.
Thanks to the encouragement from friends in Chicago, I went back to school for my bachelors in Computer Science and have not looked back. It filled in all the holes of my knoweldge about the foundations of computer science from turing machines and computer engineering to data structures and algorithms - like no amount of time in the field could do.
Since then I have have been passionate about every aspect of software design and implementation.
Over the years, I have dabbled in all of the following technologies:
- Adobe Flash Actionscript 2.x and 3.x
- Adobe Flex 3.x and 4.x
- Coldfusion
- Java (all versions)
- C, C++
- Javascript 4,5,6+ (starting with IE 6)
- Erlang and Elixir
- Python
- Ruby and Ruby on Rails
- HTML, XHTML, XML
- CSS, SCSS
- jQuery, React.js, Vue.js. Nuxt.js
- MySql, PostgresQL, MongoDB, Cassandra
- VIM, Make, and various shell technologies
- AWS, Google Cloud
- 3D Programming including collision detection, backface culling, and more
- Multiplayer game programming including an understanding of dead reckoning algorithms
- Compiler programming, including an understanding of lexers, parsers, and AST
- Computer engineering from the ALU level and up, including cache optimization and instruction programming in assembly language for x86 and MITS processors
- UX and design, including designing my own interfaces and implementing them
- Chart and grid design from the ground up including all sorting, filtering, searching and more
- Custom search algorithms (including my own well-known implementation of Trie Search which is one of the most used Node.js implementations on NPM)
- Machine learning, especially with SVM
- Audio and signal processing algorithms like FFT, DFT, MFCC, and signal windowing
My popular NPM publications are:
As I grew in my knowledge I found a fascination with startups and even after a year at Spotify I could not shake the love of a the rush of small business, and joined NuvoAir in Stockholm, Sweden in 2020.
My goal all of these years has been to always improve my knowledge and most of all to make sure that any code I write is reusable and clear to the next engineer.
My hope is that this blog is an incredible resource to everyone who comes to it, to learn, to grow, and to encourage you to dig deeper to make yourself the best programmer you can be!
- Josh (March 29, 2020)