Category: Random

  • Get to the point!

    Navigating to mattgerega.com used to take you to a small home page, from which you had to navigate to the recent posts or other pages.

    Some quick analysis of my page traffic indicated that, well, all of my traffic was going to the posts. As my wife would say, “Don’t bury the lead!” With that, I change my WordPress options to take visitors directly to the recent posts.

    For the two of us who visit other pages… my apologies.

  • A New Chapter

    After 16 years, it is time to make a change. With that change, a bit of self reflection never hurts.

    Getting here

    At this point, I have spent more time in corporate full time employment than any other aspect of my life. I started my first full-time, salaried role in November of 2002, which I suppose means that my corporate life is approaching its 21st birthday. Thankfully, drinking laws do not apply to corporate life.

    My time in software was marked by a relatively tumultuous start: I was at three different companies in my first 5 years. I grew quickly in those roles and quickly grew out of them. The summer of 2007, however, brought me to Four Rivers, which I really believe is where my career began.

    Why there? My previous positions taught me a lot about the basics of software engineering. I learned about the practical applications for the algorithms and patterns that I learned in school, as well as the realization that nothing I ever write will be good enough, even for me, and this idea of constant evolution and improvement must be baked in to software.

    Four Rivers, however, took the time to invest in me. They worked to teach me what it means to be a good manager, a good leader, and to be knowledgeable about the business side of software. The 7 years I spent with the leaders there taught me so much, and I am forever grateful for their mentorship and guidance.

    In 2014, Four Rivers was acquired by Accruent. I spent the next 9 years honing my skills across different platforms. I learned many new skills and worked for a number of different leaders. From each of those leaders, I gained new perspectives into how things can be done, and sometimes, things that don’t work.

    Time for a change

    At some point, I started to feel like I had stagnated, both in my own career growth as well as what I could contribute to the company. While my seniority said 16 years, the change at Accruent definitely made me feel as though I had been working for different companies.

    However, as Snake Plissken famously quotes, “the more things change, the more they stay the same.” Yes, it was Alphonse Karr who wrote it first, but it is more memorable to me when Kurt Russell grumbles it before (#spoileralert) shutting down the world. So I started to look around for opportunities for a change.

    Reaching for more

    I had several interviews over the span of a few months. The market is very weird right now, as it is very much a “hirers” market. There are a lot of folks applying for relatively few positions, so companies can be more selective in their process. In a few instances, I made it through some initial phase interviews only to be ghosted or simply sent a form email thanking me for my time.

    A short rant: your candidate’s time is just as valuable as your own. Please try to remember that as you go through your hiring process, as it speaks volumes about your attitude towards your employees.

    I had an opportunity to interview for a position at Aspire for a software architect role. I must say, I was very impressed from the initial meeting. Every interview or screening was not an interrogation, but rather, a discussion about what I have done in the past, the things the company was seeking, and whether my skills and experience aligned with their needs and goals. It reminded me of my own style of interview, and was a refreshing change of pace from some recent experiences.

    I ended up receiving and accepting an offer for the position at Aspire, and started earlier this week. Sure, I’ve only been here a week, but the culture and atmosphere is a refreshing change. The company and the team are actively growing, and I look forward to digging in and starting to contribute.

    Am I scared? Absolutely. I have spent the last 16 years building up knowledge, experience, and reputation with the team at Four Rivers/Accruent. Now, I am basically the new guy, something I haven’t been for a very long time. However, with that clean slate comes the opportunity to learn from a new group and contribute what I know to their success.

  • Aging into fun

    It is obvious that my posts have been, well, tech-centric for the better part of the last year. I do my best to not post specifics about my kids because, well, their life is theirs to live, not mine to post. But I have to credit them with introducing me to an activity that keeps me active and lets me have a little fun: soccer.

    Fitness was an issue…

    My introduction to soccer was, as I recall, 11v11, full field games somewhere between ages 8 and 11. Genetics dealt me a Mac truck, not a Ferrari, and so chasing a ball and a bunch of Ferraris around a field just was not going to appeal to me. I ended up playing baseball until high school, middle school football, and high school volleyball, but never returned to soccer.

    Side Note: Based on my size alone, I get comments pretty much weekly as to if/when I played football. I probably could have been good, but my passive personality did not lend itself well to that sport. But, as I tell my brother, I have no chronic knee, back, shoulder pain from a contact sport…. So I have no regrets.

    Having a kid in your early 20’s is a stressful affair, and that stress didn’t exactly help my weight problems. With two kids, and approaching thirty well north of three hundred pounds, I decided I should make some changes if I want to see my kids grow up. I started running and watching what I eat. I ended up losing about seventy pounds, and felt pretty good.

    Becoming a soccer player

    My oldest played youth soccer from U6 through U18. I spent a lot of time at the soccer fields, and have fond memories of even coaching a few U8 seasons with him. As I was introduced to that community, I found that there were some co-ed leagues in our area. The first one I joined was a 7v7 league which was played on either a U10 or a U12 field (I do not remember the exact size).

    I had a lot of fun in that league, and was introduced to the game in a way where I was not required to run full-field sprints to recover. I learned the basics of the game, and became a serviceable field player.

    Graduating to full field

    At some point, I thought it might be fun to play in the Over 30 adult league. This league was a little more formal, with actual home and away games, real kits (or at least a nice jersey), and a full referee team.

    Did I run more than I ever had in my life? Yes. Was it fun? Absolutely. In spite of some of the attitude issues (we aren’t playing for the World Cup, but you’d think we were), I had a great time with it. My personal and professional life was getting busy, and that, coupled with the attitude issues, led me to walk away from that team for a while.

    When opportunity knocks..

    A lot happened in the next few years. Got divorced, then COVID, then I got married again (well, married during COVID, as if we needed a bigger challenge), all the while working through a few different roles at work. I never actively looked for a team: there was enough to do without introducing another activity. A chance encounter with an old board member from the club changed that.

    I came to find out that the community club my kids play started fielding adult teams a few years ago. As of now, we have an an over 30 team and an over 40 team. So I joined on, officially on the over 40 team. Sure, I can fill in on the over 30 team, and I have a few times. But that only made me realize how painfully out of shape I’ve become. Over 40 is a little more my speed. Still 11v11, full field, but 20 minute quarters instead of 45 minute halves. More breaks… I love it.

    What are you getting at?

    This post turned into something of “Matt’s life sport story.” The point is this: you are never too old to try something new. Soccer is a great way to stay active, and gives me just another reason to stay fit and healthy. And this new “adventurous” spirit has led me to try other new things, including scuba diving and skiing. Scuba I love, and my comfort in the water gives me a jump on a lot. Skiing…. Well, I had a lesson, and let’s say I can do it, but I need a lot more practice.

    So, try something new. You never know what will happen.

  • Badges… We don’t need no stinkin’ badges!

    Well… Maybe we do. This is a quick plug (no reimbursement of any kind) for the folks over at Shields.io, who make creating custom badges for readme files and websites an easy and fun task.

    A Quick Demo

    License for spyder007/MMM-PrometheusAlerts
    Build Status for spyder007/MMM-PrometheusAlerts

    The badges above are generated from Shields.io. The first link looks like this:

    https://img.shields.io/github/license/spyder007/MMM-PrometheusAlerts

    My Github username (spyder007) and the repository name (MMM-PrometheusAlerts) are used in the Image URL, which generates the badge. The second one, build status, looks like this:

    https://img.shields.io/github/actions/workflow/status/spyder007/MMM-PrometheusAlerts/node.js.yml

    In this case, my Github username and the repository name remain the same, but node.js.yml is the name of the workflow file for which I want to display the status.

    Every badge in Shields.io has a “builder” page that explains how to build the image and even allows you to override styles, colors, and labels, and even add logos from any icon in the Simple Icons collection.

    Some examples of alterations to my build status above:

    “For the Badge” style, Bugatti Logo with custom color
    Flat style, CircleCI logo, Custom label

    Too many options to list…

    Now, these are live badges, meaning, if my build fails, the green “passing” will go to a red “failing.” Shields.io does this by using the variety of APIs available to gather data about builds, code coverage, licenses, chat, sizes and download counts, funding, issue tracking… It’s a lot. But the beauty of it is, you can create Readme files or websites which have easy to read visuals. My PI Monitoring repository‘s Readme makes use of a number of these shields to give you a quick look at the status of the repo.

  • Information Overload: When too much data becomes a problem

    I have had this post in a draft for almost a month now. I had planned to include statistics around the amount of data that humans are generating (it is a lot) and how we as are causing some of own problems by having too much data at our fingertips.

    What I realized is, a lengthy post about information overload is, well, somewhat oxymoronic. If you would like to learn about the theory, check it out. We are absolutely generating more data than could possibly be used. This came to the forefront as I investigated my metrics storage in my Grafana Mimir instance.

    I got a lot of… data

    Right now, I’m collecting over 300,000 series worth of data. That means, there are about 300,000 unique streams of data for which I have a data point roughly every 30 seconds. On average, it is taking up 35 GB worth of disk space per month.

    How many of those do I care about? Well, as of this moment, about 7. I have some alerts to monitor when applications are degraded, when I’m dropping logs, when some system temperatures go to high, and when my Ring Doorbell battery is low.

    Now, I continue to find alerts to write that are helpful, so I anticipate expanding beyond 7. However, there is almost no way that I am going to have alerts across 300,000 series: I simply do not care about some of this data. And yet, I am storing it, to the tune of about 35 GB worth of data every month.

    What to do?

    For my home lab, the answer is relatively easy: I do not care about data outside of 3 months, so I can setup retention rules and clean some of this up. But, in business, retention rules become a question around legal and contractual obligations.

    In other words, in business, not only are we generating a ton of data, but we can be penalized for not having the data that we generated, or even, not generating the appropriate data, such as audit histories. It is very much a downward spiral: the more we generate, the more we must store, which leads to larger and larger data stores.

    Where do we go from here?

    We are overwhelming ourselves with data, and it is arguably causing problems across business, government, and general interpersonal culture. The problem is not getting any better, and there really is not a clear solution. All we can do is attempt to be smart data consumers. So before you take that random Facebook ad as fact, maybe do a little more digging to corroborate. In the age where anyone can be a journalist, everyone has to be a journalist.

  • Node_Modules is the new DLL hell… Change my mind.

    All I wanted to do over the weekend was take a React 16 class library, copy it, strip out the components (leaving the webpack configuration intact), and upgrade components.

    To call it a nightmare is being nice. My advice to anyone is this: upgrade components one at a time, and test between each upgrade voraciously. Not just “oh, it installed,” but make sure everything is compatible with everything else.

    I ran into at least three issues that were “this package relies on an older version of this other package, but you installed the newer package” or, even better, “this package relies on a version of a plugin package that is inconsistent with the core version of the plugin’s base package.” Note, that wasn’t the error, just my finding based on a tremendous amount of spelunking.

    This morning, I literally gave up: I reverted back to a known set of working packages/versions, deleted node_modules, cleared my NPM cache, and started over.

  • Free Guy and the “Myth” of AI

    I have been able to get out and enjoy some movies with my kids over the last few weeks. Black Widow, Jungle Cruise, and, most recently, Free Guy, have given me the opportunity to get back in the theaters, something I did not realize I missed as much as I did.

    The last of those, Free Guy, is one of the funniest movies I have seen in a long time, and, considering the trailers, I am not giving anything away when I say there is an element of artificial intelligence within the plot. And it got me thinking more about how AI is perceived versus what it can do, and perhaps how that perception is oddly self-limiting.

    Erik Larson’s The Myth of Artificial Intelligence: Why Computers Can’t Think the Way We Do explores this topic in much greater depth than I can here, but Larson’s views mirror my own: the myth isn’t that true AI is possible, but rather, the myth is that its arrival is inevitable based on our present trajectory. And the business of AI is interfering with the science of AI in some very big ways.

    Interfering? How, do you ask, can monetizing artificial intelligence interfere with its own progress?

    AI today is good at narrow applications involving inductive reasoning and data processing, like recognizing images or playing games. But these successes do not push AI towards a more general intelligence. These successes do, however, make AI a viable business offering.

    Human intelligence is a blend of inductive reasoning and conjecture, i.e. guesses. These are guesses informed by our own experiences and the context of the situation, called abduction by the AI community. And we have no idea how to program this type of contextual/experiential guessing into computers today. But our success in those narrow areas has taken the focus away from understanding the complexities of abduction, and has stifled innovation within the field.

    It is a scientific unknown as to whether or not we are capable of producing an artificial intelligence with levels of both inductive reasoning and conjecture. But to assume it will “just happen” by chipping away at one part of the problem is folly. Personally, I believe artificial intelligence is possible, but not without a shift in focus from productization to research and innovation. If we understand how people make decisions, we can not only try to mimic that behavior with AI, but also gain more insight into ourselves in the process.

  • At long last… new input devices

    I have spent the better part of the last ten years using the Microsoft Wireless Natural 7000 keyboard and mouse… The only link I can find is to this Amazon listing, which is clearly inflating the price because it is no longer available.

    I broke the keyboard about a year ago, so I substituted the most basic Logitech keyboard I could find. At the time, I was watching the Das Keyboard 5Q, and cannot count the number of times I clicked the pre-order button but didn’t go through with it. There was something about having flashy keys that I just could not justify.

    So, I soldiered on with my Logitech keyboard and the Wireless Natural 7000 mouse. It has been showing signs of wear….

    My old friend…

    Notice the literal signs of wear on the mouse buttons and palm. I won’t even upload the picture of the bottom: the battery cover is broken and barely stays in place, and the feet are all but gone.

    After some debate, I invested in two new input devices:

    I have always liked the Das Keyboard models, but couldn’t justify the 5Q, especially since I realized that I don’t look at the keyboard enough to have keyboard notifications be useful. And while it still carries a high price point, I like the over-sized volume knob and USB 3.0 hub: it means I do not have to pull my laptop dock forward to find my side USB ports anymore.

    As for the mouse, well, it is well worth the cost. I have only been using it for a few hours, but I already notice the difference in ease of manipulation. The horizontal scroll button and the gesture button are great for programming additional tasks, and the Options software from Logitech is easy to use.

    So, my first few hours with the products have been great. We’ll see how the next few years go.

  • Why I am deleting Facebook

    This is extraordinarily random, but I thought it worth mentioning why I decided to finally request a full delete of my Facebook account.  The short answer:  I feel less connected when I am on it.

    The Why

    This was a fairly lengthy decision making process on my part, and there were a few big questions that I had to answer before I could commit to it.

    What about (insert friend’s name here)?

    As I perused my list of Facebook friends, it occurred to me that I already have phone numbers for those with whom I want to keep in touch.  There were a few notable exceptions, and I took some steps to remedy those cases: I just asked for a cell phone number and gave mine in return.  

    So my “real” friends, those with whom I want to cultivate a lifelong relationship, will probably be annoyed that I will be sending more text messages simply asking how things are going.  But again, it is active cultivation on my part, not the passive knowledge acquisition that Facebook promotes.

    How will I know what’s going on?

    This was probably the hardest question for me to answer.  Facebook is a drug of sorts, triggering a dopamine high.  So what am I to do when my sense of belonging and concept of self can no longer be easily satisfied by logging in to Facebook and checking the likes on my posts?

    Much like becoming physically fit, the answer is simple but not easy.  Consistent improvement through introspection and cultivation of relationships.  

    What about the gym!?!?

    My current gym uses social media (Facebook and Instagram) to communicate information about the gym and the community.  Our social media director outdoes herself when it comes to keeping folks up to date on the latest at the gym and doing her best to keep people engaged in the community.  

    However, if I am being honest, the sense of community does not come from Facebook, but from the people.  It is an amazing group that have helped me turn my physical well being around.  Sure, I will have to be a little more inquisitive about people’s activities outside of the gym, but is it really so bad to be forced to talk to people?

    The How

    Building real relationships

    Why do we use the term “cultivate” when describing building friendships or relationships?  Because it is a continuous, difficult process that yields amazing results.  Farming is one of the most arduous and necessary tasks in the human world, and cultivation is the act of preparing the ground (aka, digging, tilling, etc).  Sure, mechanization has made things easier, but for thousands of years, farming was difficult, back-breaking work.

    So is maintaining friendships.  Facebook makes it easy:  we accept a friend request, skim our news feeds throughout the day, and we presume we are friends.  But that friendship is not real friendship: real friendship has an active component.  You listen to a friend when they have problems, you console them through a difficult time, and you celebrate with them in times of triumph.  When I re-evaluated my friend list on Facebook, only a percentage really met that criteria.

    Cutting the cord

    Why not just use it less?  I could remove it from my phone or monitor my own usage to ensure I am not spending too much time on Facebook.  Or I could deactivate my account for a time.

    For myself, deletion is the only option.  I am terrible at moderation.  When I find something that makes me feel good, I will keep going back to it.  For a few years I deactivated my account, but the draw was too great:  it was too easy to log back in and see who was up to what.

    The last thing I want is to make this some sort of rallying cry to drop Facebook.  Many people can use it responsibly and it provides connections that they would not get otherwise.  It has become, for better or worse, the center of the internet for most people.  But for me, it is all or nothing, and at this moment I prefer nothing.

    What about Instagram?

    I will be keeping my Instagram account, primarily to monitor my teenage son’s activity, but also because I feel like it is less intrusive.  I do not get the same dopamine hit on Instagram, for me it acts mostly as a source of entertainment.

    Perhaps it is foolish of me to think that I can drop one and keep the other.  But I will be tracking my time on Instagram more closely in the coming months to ensure I am not simply replacing one vice with another.  The ultimate goal of my switch is to free up time for more interpersonal relationships.  More beers with friends, as it were.

  • Let’s try this again.

    Throughout my professional career and personal life, I have made several attempts at “resolutions” to blog more.  I’ve gone through several iterations of software, including some home-grown solutions, then wordpress, then blogger/blogspot.  I’m back to WordPress hosted on a small server here at home.

    The goal of this whole endeavor is to document some of the things that I do so that I can remember them, but also so that anyone who may stumble upon this site can use some of these posts as a reference.  So, for this post, a quick note on the setup.

    I have a small home server with Docker installed.  Using Docker Compose (specifically, this quickstart), I setup docker containers for WordPress and a MySql server.  All in all, it only took about 30 minutes to get this up and running.

    So, in the immortal words of Randy Quaid:

    Hello boys, I’m back!