The best description I can give of TypeScript is that it’s like the most annoying, pedantic, precise, engineering-type human being you’ve ever encountered, watching you type and screeching in horror whenever you make an error, even if you’re mid-thought. You want to kill them. You want to rip the tape off their glasses and stick the halves in their pocket protector (I feel I’m personally nerdy enough employ these stereotypes), re-compile their kernel with the wrong options and add bacon to the pescatarian tuna sandwich their mother packed them for lunch.
But you don’t because they’ve never freaking wrong. They screech and kvetch and force you to declare that the name is a string and the age is a number and a person is a combination of both of those. And if you dare try to feed a ‘person’ object to something that only accepts a union of ‘aquatic’ and ‘invertebrate’ objects, TypeScript goes ballistic howler money on you.
Then you find the error and it’s silent. TypeScript sits there quietly knitting or whatever and you go back to typing out your objects, and your code is much, much harder to break.
I’m starting a new React/redux project and I think it’s going to be typed. I still have a lot to learn about TypeScript, but my most recent professional experience involved laying the groundwork to replace React context API’s with a modular saga-driven redux store within an enterprise-scale application, and I was able to do it all strictly typed.
I think I already drank enough Kool-Aid to crave the taste.
After spending some time reading up on vue I have decided to switch back to honing my React skills a bit more. The Boulder area job market has a few opportunities that mention vue, and while that might dominate the market in a year or two React seems to be where it’s currently at. There are several organizations that are either actively migrating from Angular to React or are keen on doing so, and that’s work I’d probably find interesting.
On interesting challenge is that both React and d3 want to update the DOM. There are different ways to implement a d3 visualization within React, that doesn’t seem to be much of a challenge at all. But animations and transitions aren’t so easy. Two articles I’ve found helpful are:
This blog is currently a WordPress installation being hosted by a 1and1 account I’ve had since the beginning of time, and I’m looking into various options for hosting one or more node.js project for pushing some functional examples as I continue tinkering with React. I plan on getting together get some d3 animations using the good old join, exit, update & enter patterns.
Please note: This post contains one or more Amazon affiliate links, which I will occasionally use with a product and/or seller I’ve had good personal experiences with.
While it’s temping to stick with React and put together some decent portfolio examples, I’m going to switch gears and learn Vue over the next couple days instead. After spinning back up into application development mode, skimming through the vue docs makes it look pretty easy to grasp, so I’ll have another bullet point for my resumé shortly! After that it’s onto Angular. And turkey.
After working with Angular I spent some time coding Knockout, which I really enjoyed, and then did significant application development with Backbone. I’m slightly embarrassed to admit how much I leverage jQuery these days (with a dash of underscore), but it really does provide inarguable convenience. I’ve done pretty extensive work with it and developed jQuery libraries as a contractor a few years ago.
The two technologies I’m currently excited about are react and vue. My overall impression so far is that vue has some arguable benefits over react, but that react has a larger community around it and I’ll be opening myself to more front-end development opportunities if I focus on learning react.
Beyond reading introductions and going through tutorials, my experience has been that conceptualizing a project and developing it is the best way to learn a new technology (Like building a rocket bike to hone one’s skills at hardware integration and interval timing-based microprocessor programming and barely even setting the apartment on fire twice∗, crybaby roommate.) Consequently I’ve got a small project in mind and will be using it as a jumping point for wrapping my head around react, which so far has been making a lot of sense, the details of which I’ll be posting about next!
∗ Kidding, kidding.. just a couple of issues releasing the hardware’s magic smoke while learning about MOSFETs, servos, and insulation, nothing even high-voltage, please don’t raise my renter’s insurance
Most engineers suck at user interface
I enjoy focusing on front-end development
Although I love programming I have learned that there can be too much of a good thing. Years ago I decided to do web development professionally but keep it largely isolated from what I do in my free time. I took an introductory course in Arduino back when working in Philadelphia and have been hooked ever since, hacking away in one form or another with increasingly complex projects. There’s something insanely fun about envisioning a physical project, solving the design and technical hurdles to make it happen, ingesting new skills and techniques, and solving problems there are no clear answers to. As a front end developer, everything I do comes down to the placement and manipulation of rectangles. While you can accomplish some pretty amazing things with those rectangles and the content within them, programming custom hardware opens up even more interesting possibilities.
The most recent one, and the project I plan on documenting on this site, is the fake rocket engine I strap to the back of my bike. The video above is a preliminary test before I had integrated the purple control box seen below.
I’m a regular on the Thursday Night Cruise here in Boulder, where people dress up, adorn their bikes with lights and decorations, and roam the streets and paths in big rolling party.
I’ve been contributing my own wee shenanigans as I’ve gotten more involved over my past few years in town, especially after getting a 3D Printer (Flashforge Creator Pro) last year, and this is the most recent outcome of my tinkering. I was recently invited to bring the rocket setup down to Pueblo, CO for their first Maker Faire where I got some great feedback on my project and enough people asked for details that I realized I should probably put together some sort of online description beyond the one I provided for the Faire.
The entire contraption has evolved over time, but the original pieces are still in place. The body is a juice container on its side with an almond container stuck on front of it. An RGB (multicolor) light strip is glued to the inside of the almond container where it shows through the plastic, the rest of which is covered in reflective metal repair tape. A combination of components printed using silver PLA and translucent NinjaFlex help diffuse the lights on the exterior. The lights are used to emulate a spinning effect with Arduino-driven logic. The back ‘thruster’ contains a small ring of similarly multicolored lights that are used for a flickering effect, wrapped in plastic to make them waterproof enough to survive the condensation of freezing solid.
Inside the intermix container is a small amount of dry ice. A fan pulls air in from the front of the assembly (almond container), through the dry ice, and out the back passing through the light ring. A small pump, also controlled by the processor, sprays pre-heated water drawn from an insulated container onto the dry ice. The heat introduced causes the dry ice to evaporate, emulating smoke. A small heating pad mounted on the bottom provides enough warmth to prevent the water from freezing solid after passing over the dry ice, allowing it to drain into a small gravity-container attached to the rear of the engine.
The entire thing is driven by an Arduino Mega and while the documentation leaves much to be desired I’ve shared the code driving this whole thing on github:
Stay tuned, I’ll be compiling a more detailed page about Tiffany the Wonder Bike and her faux turbine engine in the near future! There is also a whole slew of updated behaviors I need to document, including numerous light modes with sound reactivity on the front of the control box.
One of the things that software developers learn to abhor is the word, ‘just’. Just refactor that bit.. I’ll just migrate this code to a different place.. just tweak the CSS placement a little bit. If only twitching burned calories.
Consequently I should have known better than to just take some photos for my site. Most of the professional web development I’ve done over the years has either been part of a collaboratively-built web application or work that nondisclosure agreements prevent me from, well, disclosing. Not like secret government work on chem-trails or squirrel surveillance or such, simply code that folks would rather not have leave the building because of intellectual property. The end result is that while I have a nice long resumé, I don’t have a solid online portfolio demonstrating my talents, such as they are. I also have numerous hobbies that people seem to find interesting, which include a decent amount of Arduino code that I’ll be starting to maintain on github.
So I’ll just take some photos of stuff to go along with it all, throw them up on a default WordPress theme, and get on with the whole project documentation thing! But it sure is dark on my work bench, and pictures I snap in the kitchen don’t look too great with scrambled egg remnants in the background. The iPhone camera doesn’t provide much control over settings, so I’ll just use the Canon Elph 100 I got a few years ago. I’ll just set up the table, move some lights, maybe spring for a roll of paper from a photo place as a cheap background. I’ll just grab my roll of RGBW Neopixel LED’s, control them with an Arduino, real quickly design and 3D print some mounts for a PVC tube to hang from eye hooks screwed into the ceiling and mount a flexible Neopixel matrix of 256 RGB LED’s under the camera until I realized that the red, green & blue @ 100% cast a purple hue that doesn’t match the output from RGBW with white @ 100%.
Well that was a fun weekend! And it all came together just in time for the roommate to come home to discover that the dining room is, in fact, a modular photo studio. But after all the time we’ve spend playing Blair Witch (which is when he walks into a quiet room and I’m standing in the corner- timing is everything), surprises aren’t much of a surprise.
Hello! This is my first post as I start to set up a new personal portfolio & project gallery. The site is admittedly using a default WordPress theme as I’m just ramping up with FoundationPress and plan on making my own theme as part of some ongoing self-education, but before any of that fun I’ll be adding some actual contents!
I live in beautiful Boulder, Colorado where I’m a regular on the Thursday Night Cruise. It’s possible that I own more than one fairly epic cat shirt.