Tyrel's Blog

Code, Flying, Tech, Automation

Dec 05, 2024

New Job

After a year at my previous place, I felt it was time to move on. I just wrapped up my first month at Mango Voice and it's been great!

Mango Voice is a voip company for dental offices. They provide phones, sms, faxing, scheduling, etc... for a lot of dentists (mine uses it!).

I'm on a team that's responsible for the API, a switchboard, and some other small things. They're doing Domain driven teams, so each team is responsible for each of our _domains_ on all our codebases.

Still doing Django, and a lot of python. This time at a place that uses Django Rest Framework, again! It's definitely been a minute since I've used it, but I'm remembering a lot of DRF. I definitely see merits to things I've used in the interim - fastapi being one of them - but it's fine so far.

I also had to do some TypeScript recently - really earning my TypeScript pillow I got a few years ago, ha! There's some legacy PHP code, which It's probably been 18 years since I've touched PHP, but luckily no new development is happening on that codebase.

Apr 17, 2024

What I've been up to since October

Since my last post, about Djangocon I've been pretty MIA. I think I mentioned I got a job, at REDLattice. I've been doing some Django, and other misc programming, and it's been pretty neat. It's a security company, so I haven't really been able to talk about what I've been doing.

It's nice to be back where I'm comfortable, in my tech stack.

I also have been picking up some side projects again, taking some classes, running, and more.

I ran a 5k last month that was on a runway (KGSO) - that was fun. I got sub 30 minutes, but my heart rate spiked REALLY high because it was cold and rainy, not a pleasant race. I really need to work on my running, my average is usually 185, which for a 36yo is awful. I was running slowly for a bit and got it down to a 165 average, but took a week off from runnning because of hurting my foot with a cut.

Gustavo Pezzi released another course on his Pikuma platform - this time it's Playstation 1 programming in C and MIPS. I don't really have the best foundation in C despite doing C++ a lot in college and before - so I've picked up his Graphics Programming from Scratch course. I really enjoy the way he teaches, he never rushes ahead thinking you know something.

One thing I realized is in college I never really did much advanced algebra, so I've decided to also take a Linear Alebra course from MIT's Open Courseware MIT 18.06. Reading math text books is definitely different than I remember, but it might just be this professor. I wish I had some friends doing this course with me, I need to be held accountable.

For other projects I've gotten some new wood tools lately - I traded a watch for them - so I have some ideas in mind now that I have a planer.

Other than that, my daughter turned ONE last month! The day before I turned 36. We had a big party for me, her, and our niece. The party was fun, but I def am not the best party host.

We're taking our first flight as a family next week, hopefully Astrid's not too loud. I was this age when I flew down to Florida and we found out I had hearing issues, so I'm worried for that.

Not much else is new, but felt like it's been time for a blog post recently, even if it's just a personal post.

 · · ·  personal

Aug 24, 2023

My Life Story

Trying to write a more prose version of my Resume. Kind of a living post about my life in the Software Engineering World.

Early Life

I started programming with Visual Basic in the 90s on a laptop in my father's car. Parents had just divorced and the drive to his new place every other weekend was two hours, so I had a lot of downtime going through the Visual Basic 5 and 6 books we had. After that, I started trying to program chat bots for Starcraft Battle.net, and irc bots. In highschool I started taking more Visual Basic courses, mostly because that's all that my teachers had for classes. Senior year I took some Early Education courses at the local college, and then went to that college (Keene State) for my Computer Science Degree. At Keene State, I took a lot of Java classes, that was the core curriculum. I also took some more Visual Basic courses, some C++ and web design courses as well.

After college, I thought I'd be working Java again, but I got a referral from one of my favorite professors to this company called Appropriate Solutions Inc, and started working in Python/Django. I had never touched Python outside of OpenRPG - and even then it was just installing the interpretor so I could run the game.

Appropriate Solutions Inc

At Appropriate Solutions I worked on maybe ten different projects. The first thing I worked on was an Hour Tracker to learn how Django works, it worked great, but definitley didn't look too flashy. From there, I went on to work on a Real Estate Website, a Bus tracking/mapping system for a school district, a Pinterest Clone, and some more GIS mapping things. One of our projects was with HubSpot, and I went to one of their hackathons, and a couple conferences in Boston. I had a lot of friends in Boston, so I decided to move there mid 2012.

Propel Marketing

I got my first Boston job in Quincy, MA - working at a startup called Propel Marketing. This was also a Python/Django role, but had more front end work. While there I worked on their internal CMS tooling for selling white labeld websites to clients. I worked on a lot of internal tooling, one that would pull leads from our system, and then upload to a lot of different vendor tooling. A couple of Python PIL tools that would generate facebook and twitter banners, but a lot of the work there was learning and writing tests in Python.

Akamai

From there, I started a six month contract at Akamai, working for their Tech Marketing team on a couple tools. This later got extended another three months, until the team ran out of budget for contractors. I worked on their "Spinning Globe" which was really fun. Some internal dashboards, and a couple email tools that worked with SalesForce.

Addgene

In 2015 I then landed a spot at Addgene - a nonprofit biotech! This is where my career really started taking off. I started to lead projects, do more valuable research and go to conferences. The company itself was - for my tenure there - two Django Projects and some jQuery/Bootstrap. The "core" site was the ecommerce and research site. Buying, selling, research on Plasmids and Viruses. The back end was the inventory management system.

While there, I also lead the charge on a couple projects. We were migrating to AWS - from an in house rackmount server, so we needed to get a lot of data on S3. Testing at Addgene was fickle, as everything was stored in tsv files and reloaded in memory. I developed a python package that would save thousands of dollars of S3 costs, while still making the file upload process in testing seamless. Django DBFileStorage was born.

Another charge I lead was helping Celigo alpha test Integrator.IO - working on building an integration of a lot of our sales data into netsuite/salesforce (I forget which one) by working with the Celigo API. This was a fun project - as when I was done with this, we got to archive an old Java repo that was barely hanging on, and had no bugfixes in years.

While at Addgene, I also started the "Teaching Scientists How To Program" lunch and learn club. We would have meetings where anyone from the Scientist team could come, ask questions about Python, and work through any of the problems they were having with our Jupyter Notebooks we set up that they could run. This was great, I helped foster some friendships that I believe will last a lifetime, helped people transition into actual programmers, and helped the company save a lot of time by helping more people learn.

Tidelift

After Addgene, in 2018 I joined an early stage startup called Tidelift. I was one of the first engineers there, so I got to help lead a lot of early shaping of the company. I started with working on a lot of the Lifter focused side of the site. Helping create tasks the lifters could complete so they could get paid. From there working on the Subscriber side of things where the paying clients would get information about their dependencies. I have an upcoming blog post about some work there, so I won't go into too much details. I did help start the Tidelift CLI though. A tool written in Go, it was a CI/CD tool to analyze software dependencies for security/licensing problems

EverQuote

After Tidelift, I started at EverQuote in 2022. My longtime friend Sam was a Director leading a team that was working on replatforming a monolith and needed to backfill a python role. I had been asking him for years when he would work on Python stuff, as he had only been working at Ruby companies for the past few years, so this caught my ear and I started there.

The first project was replatforming a Python 2.7 monolith - with code from as far back as 2010 - to micro services. These were mainly FastAPI services, that communicted amongst eachother with kafka. Some of them would read from the database, and send events into the kafka stream. Some would read from the stream, and write to the database. Others would read from database or kafka, and then communicate with a third party system.

All of these had Grafana (and later NewRelic) metrics attached. Every server had at least one dashboard, with many graphs, event logs and charts. These were all deployed using kubernetes, terraform, AWS. I can't speak to the specifics about past there - as there was another dedicated ops team.

Some other projects I worked on there were really fun. One of the analysts used to maintain her daily workflow in a google doc, and I helped lead a project that took that apart and worked on it programatically. This was then turned into a five part rebalancing, reweighting, and email route manipulating script - that ran daily using Cron, and saved that team over fourteen hours a week.

The Remarketing team came to an end, and there was a small re-org and we merged with another team and became the Consumer Engagement team. This dealt with Calls, SMS, Email, and working with the Sales Reps.

We started a project using Go and React that would pull users from the database and show a script for the Sales rep to read to the client on the phone, with specific information about what plans were available. Other projects on that team, which is what I spent most of my time on, was porting CI/CD processes from Atlassian Bamboo, to GitHub Actions.

During this time, I took a couple months of paternity leave, and a few weeks after I came back there was a major reduction in force and I was laid off.

After EverQuote

Since leaving EQ, I have been on the job hunt. If you know anything about tech in 2023, a LOT of people are job hunting right now. I'm excited that this happened at a time in my daughter's life where I can spend SO MUCH more time with her than some fathers can. That's the good side of things. I hope I get a job soon though, as the sole earner in my family.

If you've made it this far, please check out my Resume in the sidebar, and contact me if you have anything you think would be a fit. Who knows, I might delete this last section once I get a job!

 · · ·  life

Aug 23, 2023

General Job Search Update

As mentioned in a previous post, I'm on the job hunt again. I got laid off in June with a 30% Reduction In Force.

I've been searching primarily for Python and Go roles, but I'm not having a lot of luck right now - seems everyone else also got laid off is who I am competing against. (That said, go hire my friend Nik! He's fantastic!) I've had a lot of job opportunity people ghost me. Gotten through a few late rounds, only to never hear from the company again. Even if I have emailed them a thank you letter for the interviews, to express my interest.

I've been around professionally for thirteen years. Over those years, I have picked up mostly back end skills. I have eight solid years of Django experience. Four years of Ruby on Rails experience. A couple years of Flask, FastAPI, and other smaller Python Frameworks mixed in.

I'm looking for an IC role, where I can move into a Tech Lead role. I want to eventually some day be a Staff/Principal role, but I don't have that on paper to show I can do it, so trying to get in somewhere new with an IC role.

 · · ·  work

Jun 16, 2023

Laid Off - 2023 Edition!

"Hey Tyrel, I put a meeting on your calendar, let me know if you can make it." The last words you want to hear from your manager.

Well it happened again, and I got caught in some layoffs from work and am on the job hunt again. I did want to be able to spend more time with Astrid, but not like this!

After the call with HR and them all explaining what was happening, and panic texting my wife and some friends. I emailed the recruiters I've been working with for a few weeks back, and all day today I've been appling to a lot of places.

There are a LOT of jobs out there I'm not interested in, a lot of Ruby on Rails jobs, crypto companies, etc. But I am finding a LOT of Python or Go jobs I'm applying to. I'd love to get a job doing rust and firmware work, but that's unlikely as I want to stay remote, and I have very minimal Rust experience.

What worries me is finding health insurance, because America ties it to work... my wife is unemployed and now we have to cancel a few appointments for us the next few weeks. Still going to keep Astrids 4mo vaccinations though. Those I'll be okay paying out of pocket for.

I just ended the day applying to twelve jobs, hopefully one pans out!

If anyone needs any Python consultation, let me know too! Thanks!

 · · ·  work

May 07, 2022

An Update On Flying

I took ten years to get my pilot's license. From March 17, 2010 to December 30, 2020. It was amazing. I now find myself a year and a half later from achieving my goal and I don't find myself interested enough right now to go flying. There's a gas crisis, there's a pandemic, there's a lot of political things going on, a war in Ukraine, that it kind of feels bad wasting hundreds of dollars just going sight seeing.

I just completed a ground school course for my Instrument Rating -- I still need to take the written test part. With that out of the way I can start actually flying with an instructor to get my instrument rating. One of the planes the club that I am a part of has is a Mooney M20J. This requires 250 hours of flight time, or 100 hours and an instrument rating. I'm at that annoying 145 hour mark that dissuades me from wasting 100 hours just to fly that plane, and wanting to get my instrument rating.

I left my previous job last December so I didn't have the excess money to fly for a month while job hunting, and well, habit becomes habit... I haven't flown since October! I'm definitely in a better place now, with a much nicer job and salary though. I'm hoping to maybe pick it back up again this fall. I wasn't pleased AT ALL (those who follow me on twitter will probably know this, online class is not the environment for me) with the ground school over Zoom, so I want to redo this by watching the Sporty's ground school. I need to put aside some time over the next coming weeks to actually sit down and watch it. Hopefully I can start flying with an instructor soon. I'm not looking forward to taking the written test, as I have to go visit a testing center at RDU airport - so there is that kind of delaying me too.

 · · ·  flying

May 25, 2012

Harry Delmolino

I met this random kid online on IRC a year and a half ago (I believe it was December 19th, 2010). His name was HarryD. We got talking and one time he mentioned that he was going to hike Mount Monadnock. That is near me so we got talking and he said he lived near North Hampton, MA. That was cool that I met some random kid who lived near me. He was only 17 at the time.

Eventually we met up because my new girlfriend lived near NoHo in Holyoke. One day I went down to see her and met up with him. He was wearing all brown, so I joked that he was a UPS delivery guy. We hung out for a bit, I think I met his friend Sam that day. Then I left and went home. For the next year we would hang occasionally, usually I would go down and visit NoHo because it was easy for him to Bike to and he worked there. We went bowling, once or twice, and he came up for this super bowl to watch Star Wars instead because screw sports!

I think that was the last time I saw him.

On this Saturday, May 19th, 2012, he was riding his bicycle in North Hampton and collided with a car, sending him flying off and smacking his head on the edge of the curb. There are some other details which I am not 100% sure about. He then was in the hospital until Tuesday May 22, 2012 at which time he passed away.

We used to talk every day, either on IRC, AIM or gTalk. His account on IRC (no_numbers_here) is still active because his VPS for http://harry.is is still paid for and online until the next billing period. Its so sad seeing his name online and not being able to send a "hey dood" or some other random greeting, then start talking about computers, python, bikes, etc.

Harry was an avid cyclist. I am reading stories that even if he had to go thirty feet, he would hop on his bike to get there. He got me interested in cycling as well. He was going to sell me a bike, but the I was talking to a friend and he gave me on, so I never bought it. Which as it turns out was good as he wanted to give that to his new girlfriend.

I was planning on hanging out with him next weekend, as he was busy with something this weekend that I can't remember. I wanted to take him target shooting, and wanted to eventually be in enough shape to go hiking with him. None of this ever came to fruition.

Harry Delmolino, we may not have been as close as we could have been, but you definitely made a difference in my life for the better and I never got to thank you for this.

Edit:

I went to the Calling Hours today and I was only there maybe a half hour, but there were so many people there. It's amazing that a man so young has touched so many lives of so many people, and had accomplished so much. People might say "Oh we was just a kid, he was only 18″ but if they looked at the accomplishments of this young man, they would realize how grown up he was.

I think his mother and father might eventually delete his Facebook, so I went back and took a screenshot of one of our last conversations so I can remember. Everything he said usually warranted a laugh.

 · · ·  friends

May 07, 2012

Hypertherm

For the past three months I have been upgrading and rewriting version 2 of my software for Hypertherm. I am under a contract for my father's company. His company is developing a machine to test how well air flows (laminar flow) through a plasma cutting torch head, and how much air leaks out over a certain time (delta pressure loss).

This has been a nice adventure. I am talking to the tester over serial, reading in a hand scanner (barcodes and acts as a keyboard easy), talking to a DYMO printer and using a database.

The serial communication was pretty straightforward. I started a new thread and listen for serial all the time. The tricky part with that was that because it was on another thread, I needed a delegate to talk to my UI when I did things like change the picture from blank to a big red X, or update a label.

The hand scanner wasn't even a factor that took longer than 10 minutes, I just pop up a dialog box asking for input.

The DYMO printer was the hardest part. This took me a month to figure out, I kept fighting with the printer. I could figure out how to print to the left roll, the ones we setup as as the passing labels, but I couldn't for the life of me figure out how to get it to print to the right label, using a custom label. I tried to load the labels into data and use a StreamWriter/StreamReader object to treat that as the label, but it kept printing one that had, for reasons unknown to me, been locked into the printer. I finally gave up on using the interface they provided and am writing the label to a temporary file. The file is in the user's %appdata% directory in a sub directory that it will not be mistakenly written to, so I feel safe doing it this way. Granted, the machine is a single purpose machine, once this program is installed it will only run this program day and night.

Once I got the printer working, I checked it in to github and realized it took me way longer than anticipated. I learned a lot about .NET development (by no means everything, or even most things, just a lot compared to what I did know before [nothing].)

Tonight while developing I decided to video some aspects of the Program.

The following four links are videos, showing parts of the program and machine in action.

  • [Hosted on Qik - no longer available]
  • [Hosted on Qik - no longer available]
  • [Hosted on Qik - no longer available]

Feb 17, 2012

Hubspot

I was invited to a Hackathon that one of our client's client was throwing. Being that I love programming and learning, I decided I would go.

The event was in Cambridge, MA. I arrive early, (my friend said there would be a lot more traffic than there was at that time of day) so I got a tour of office. It's situated in an old, what I believe to be, factory building. The coolest part of the office was that they had whiteboard paint on every wall surface, complete with markers of course.

The event started and people who were attending had tossed up ideas on the white board. A couple people wanted to integrate LinkedIN with HubSpot. Another person wanted to integrate Eventbrite with HubSpot, to get information to/from event goers after the event ends. I didn't like any of those ideas and my only experience with HubSpot is their Leads API, so I stuck to what I know.

I had an idea for an app the second I walked in the door, it was like magic. My main hassle was that HubSpot's Canvas integration REQUIRES HTTPS. Now, my web host is DreamHost and I am kind of cheap, so of course I don't have any way to host a HTTPS site immediately. A big part of me wanted to bite the bullet and order a secure server from DreamHost, or setup another linode, but I felt that I've been spending a lot of money lately and that I would figure out a way. Adrian, my contact at HubSpot, of who I am working with on the PPC project(more on that later), walked by and saved me.

He asked if I had ever used GoogleAppEngine. Of course I hadn't because I was under the belief that it cost money to use, but then I realized I was thinking of Amazon's EC2. I sign up for GAE and within an hour I have a HelloWorld site setup. The slow part was installing Python2.5 so I could use the same version that GAE used and not have to fix a lot of backwards compatibility errors between 2.5->2.7.

After I had a site up that could do HTTPS I dove into programming for my HubSpot app. The app I am doing for work graphs leads per day combined with Google AdWords data per day. I decided to do something different. My app is still a graph, as graphs are fun and easy to understand by everyone.

This app graphs a set of leads and shows how many leads happened in a given hour for the previous day. Given extra time I would have added an interface to specify the day to graph leads, but last night my time was severely limited by the fact that I had to setup my environment for GoogleAppsEngine.

Improvements I can and want to do to this app are database, faster processing, and being able to select a date. I almost wanted to break down and learn NodeJS for this, because from my understanding of the event driven nature of NodeJS would be a lot easier to load data over a longer period of time, than to just load it all at once and timeout with HubSpot's Jakarta Commons-HttpClient.

 · · ·  hackathon