Well, better late then never I guess. Here I am on new years eve clackin’ away at this keyboard so I can at least check one last thing of my list for the year.
I’ve been struggling lately with how quickly this year has gone by & how it seems I have so little to show for it. At the same time, going by past experience, knowing the fact that next year will go by even quicker isn’t helping my angst.
I’ve had so much I wanted to get done this year and have not completed a single project. I’ve set multiple deadlines for my self…all of which have come & gone. So I set one more goal for my self to try to at least finish the year with at least one deadline met.
Basically I just wanted to recap what I did this past year. This is mainly to help my self feel better about the time I spent ‘learning’ and not ‘creating’. I know I’ve learned a lot over this past year but how do you show progress with something that’s not malleable?
So that’s my last ‘to-do’, (I am sooo over to-do lists, my ADHD took these list to an un-Godly level this year) write up a brief summary of the various ‘phases’ I went through trying to learn what was really too many aspects of software development.
Since I have a tendency to try to do too much at once and end up just spinning around in circles…oh, and when I say that, I literally mean that I spent half the year just spinning around in my office chair yelling profanities. No it wasn’t directed at anyone in particular, just at all the stupidity I encountered trying to educate myself my means of shit online ‘official’ documentation, guides, wikis, how-tos and YouTube tutorials.
Yup, that’s paints a lovely picture of my state of mind. I’m actually really thankful that Katie didn’t commit me to the loony bin.
I did enjoy reading a through a couple of actual books, which often brought a veil of tranquility over me because it was refreshing to read material that wasn’t as ambiguous. There were still numerous occasions where I found mis-information in print but those instances paled in comparison to the shit-bag of mis-information the Internet has become.
Oh, and in case your the oblivious type, I’ve really been working on & perfecting my ranting skills…it’s a skill right? Hope so because I’m putting that skill at the top of my resume!
A side: I hate to call ranting/venting: ‘bitching’ because in my mind bitching is something that doesn’t yield a valid argument. Plus if I called it bitching all the time, I guess that would make me a bitch. Which I’m not mind you.
I really am becoming that grumpy old man I always knew I’d become. So I guess dreams do come true, huh, go figure. 😉
So enough yip-&-yap, this year is almost up. So without further ado, my sudo-accomplishments through out the year because I ain’t got nothing else to show for it. (yes, once again for the oblivious kind, that was a nerd reference I italicized)
-Organize File System on network.
I always new I wasn’t organizing my files in the best way, but I didn’t know what a mammoth task it would become re-organizing what turned out to be a total millions of files across the network.
-Replaced router with Linux based laptop running as the network gateway.
This old laptop has really held it’s own through out the year. It’s had a couple minor issues, but for the most part I’ve been pleased with it’s performance. Especially considering it’s relativly low end specs and the fact it’s running the following services:
- DHCP Server
- DNS Server
- NAT port forwarding / routing
- Web caching service via Squid (this has been the main issue with setup because of Squids never ending thirst for RAM)
-Dev Ops Laptop Lab Project:
February is also when I spent some time putting together my first “devOps Lab”. It was basically a proof of concept that involved using old hardware I already had lying around to create a isolated network for development testing.
It also proved to be a great learning tool for helping me get more familiar with more advanced networking techniques that involve port forwarding, routing and virtual servers. I was especially proud when I was able to access the subnet through the WAN side of a typical home router. This was a real world example of NAT (Network Address Translation) and how to forward incoming connections to various servers based on the ports.
In other words, if the subnet was on the other side of the country & not in the next room, the setup would be the same, (as far as home & small scale routing is concerned. Enterprise level networks obviously have more sophisticated setups.) albeit with a lot more cable and switches in-between.
Learned BASH in about 2 days, well by ‘learned’ I mean I was able to create a script that served a purpose and provided more functionality that a hello world. I obviously didn’t become a BASH Zen master is 2 days, but it was a confidence booster to start to get back into coding again and be able to use a language I haven’t used before & create something with it with relative ease.
I also got nostalgic and created a text based menu script that resembled the Trinix Menu Manager program I had been developing in mid-early high school years.
This was definitely a more polished attempt. It ended up looking good and was also responsive and customizable. I also just realized I need to show case that on trinixcs.com
In April I continued using my new found scripting skills and using them to learn another language, albeit this one I don’t really know to this day. Yup, Awk. It’s awkward for sure, but also has it’s brilliant moments.
I used it as the primary scripting language to extract all our personal appointments out of our business calendar .ics file. It also, depending on a certain list of criteria, would extract customer into from appointments and store that information separately.
Geeze, this is another script I need to showcase. I guess I did do a few things this year. Only at April & feeling better, but I don’t know about the summer. Let’s find out. 🙂
May was a weird month for me Katie & I were discussing the sale of the business but those talks just between our selves went no where. Forget about talking with a third party about it.
The biggest issue I had was what to value it at. With the equipment in disarray, (also one of the countless reasons
we I decided to walk) and being absolutely clueless about what to value a business at that had no ‘physical’ property, I just couldn’t bring my self to sell it to someone without feeling like a snake oil salesman.
I know I forfeited thousands of dollars that I absolutely could have used in the first year in a long damn time I didn’t make any sort of quantifiable income. That fact is not lost upon me, but I just needed to move on. I guess I sort of looked at it as, what ever amount I could of /would have got for the business was my cost to have nothing more to do with it.
I started playing the guitar on a more consistent basis, and it showed in my playing. Recorded a number of videos and audio tracks of my practice sessions and had a fair number of diamonds in the rough.
I really don’t know what the hell I did in June. I have to look back at the server logs.
I think around this time I put together the DevOps OTG (On The Go) Acer Netbook stack. (Need to verify with eBay purchase).
This was a neat little project that I still need to document. Basically we had 4 Acer netbooks in a stack, on their own subnet that each had various network services running. They were as follows:
- The first Acer DevOps node was a Apache web server
- The 2nd Acer node was a MySQL database server
- The 3rd Acer node was a nodejs Server
- The 4th node was a hybrid. It had a nodeJS but we mainly used it for VueJS testing.
Now Junes starting to come back to me. I don’t know how I forgot about it, but I feel like around May-June I was at my peak guitar playing. In fact, June 24th is when I recorded a video of me doing some improv jamming and I felt on that night.
It was good enough in my eyes to post to YouTube and was the first video I’ve uploaded to my PolyMorphica page of me playing guitar.
The jam also inspired me to create a double album, with the 1st disc primarily being songs that the main hook was something I created in 2017. The 2nd disc is going to be one song that tries to express how felt emotionally in 2017 with the couple ups and the lower than low downs that changed me forever.
It’s funny that the music I created last year was more upbeat when I feel like I was a mess emotionally and this year I’m still dealing with depression but no where near the level of 2017, yet I’m creating more emotionally driven music.
I guess last year I was playing to cheer my self up, because when I’m playing I tend to forget all the other bullshit that’s going on. But this year I’m writing music that is very personal to me to try to express all the shit that happened and not to forget what a terrible state of mind I was in. Not to dwell on the past, but rather recognize what it took for me to walk away from a business I built up over a decade to pursue my real passions.
Somewhere between the end of July and the beginning of August, me and Katie were starting to work with VueJS. (Boy I miss those days developing with my sweetheart 🙁 ).
I remember this, because I think Katie was at the fair one night, so she got home late. The reason it stands out is because we were having a hard time with understanding some of the vueJS concepts, because…suprise suprise, the documentation was very ambiguous.
Welll that evening I had a epithany after reading a comment on a forum that was worded in a way that made everything click for me. I suddenly understood how VueJS was applying the templates.
I was rushing to get something together by the time she got home (kind of like tonight) and she scared the shit out of me because I was so focused on writing code I didn’t see or hear her pull in.
Yup, needed a new set of trousers that night.
During August I had to switch gears from working on front end VueJS stuff to backend code. We needed data for our front end to display and what good is a fancy front end without any data from the backend REST servers to show to the user?
I decided PHP was the way to go. Ah, my old friend PHP.
I used a PHP quite a bit the last time I did any web development. Which was the early 2000s, so a lifetime ago in the tech world.
One thing I noticed right off the bat was how pleasing it was to use a launguage that had some structure.
There was just a level of comfort and warmth that washed over me as I began developing the groundwork of the REST API that we’re going to use for much of the Task2DO! app we’re developing. (Yeah, that doesn’t sound nerdy at all…’level of comfort and warmth washed over me’, geeze, why don’t I just make love to PHP if I’m going to be that dramatic!)
The fall sets:
Durring September I was hitting the books hard and spending a lot of time researching REST APIs. I was having a hell of a time trying to figure out which design pattern to use for the API. This required some reading of subjects that were a bit above my academic level.
Once I figured out what I wanted todo, I was off.
In fact, it was the day Katie’s parents came down. I remmeber feeling bad because I was hacking away makeing progress for one.
Spending a bunch of time and struggling with more advanced concepts like design patterns can take it’s toll after a while. Especially when I just wanted to start coding and making something.
So once everything clicked, and I knew how I was going to put all the peices of the API together, I started rockin out code at a good clip.
It also proves that I need to do what I did & take the time to fully understand each component and design software in a way that is modular. Once the details are ironed out, it’s just a matter of writing the code. That’s the easy (and fun part). Seeing your plans come together after all those trials and tribulations is definitely rewarding.
Ugh, October was definitely not as pleasant as September. It was actually the start of a long stretch of extra stressful and depressing events.
For starters, the workShare server I had setup to host all our current development work had one of it’s hard drives fail. Yeah I had a RAID setup and didn’t loose data, but I had just spent time configuring and moving projects too it.
Now I had to move the crap off, make sure the backups were also synced. This revealed my mortal enemy I faced in January:
The repercussions of not maintaining and organized file system.
I spent a lot of October just trying to clean up the network servers and all the files that we needed and conveniently managed to spread all over the network.
Another major set back was my limited source of income that I had, which was suppose to hold me through my mid-life crisis/career change had evaporated within weeks.
Yup, I blame no one but myself…well maybe Trump, but I’m not opening that can of worms today. Nope, what I failed to do was calculate the risk of the high-risk investing I had been doing since April. I knew I was taking on risk, but I felt that given my age and need for a higher return to cover my costs the risk was justified.
Since you don’t have any income from educating ones-self, and in fact costs money. A lot of money depending on how you go about it. I’m cheap, so no form routes like college, which isn’t practical for IT because of the speed in which things
progress change anyway. (for me at least, this really depends on too many factors make a blanket statement like that relates to everyone)
Well, my plan worked through out the summer. I was able to make enough in the market to barely cover living expenses without reducing the net value of my investments. I basically was flat after withdrawing money needed for bills. Had I not needed to cover living expenses, ie if I had a job that would, you know, take care of that, I would of actually had a pretty nice bump in net worth…that is until October came rolling in.
Now I’m not a ‘wealthy’ individual by any means, but loosing $10k in a month hurts no matter who you are.
Each day that would pass, I would see my plans unravel. I realistically need at least another 6-9 months before I have enough material in my portfolio to make myself a candidate for a decent job in IT.
This fast track learning I’ve been doing this past year too get my self up-to speed with the current software development industry requires 100% focus. Which means no distracting ‘job’ that may help in the short term but ultimately extend the time needed for me to hone my craft to a level in which I fell comfortable pursuing a job as a software engineer.
I’ve noticed this past year, after a shit ton of self-reflecting that I’ve made thousands of little ‘short term’ compromises through out my life. Then one day you look around and wonder how the fuck did I get here & why am I so miserable.
Well as the stock market continued to be make me want to vomit uncontrollably, (‘The Exorcist’ style for sure) I continued to also struggle with organizing the cluster F’ that had become of our network file-system.
I finally realized that I was wasting too much time moving files off the crippled work share server to where ever I could find room. Which often meant putting files in locations that absolutely didn’t belong.
I was actually making the situation worse. I was spending shit loads of time trying to make heads or tails of what to-do with the data. Then when I made a decision to move some files around, I had to put them in locations that had enough free space to store the files, but also ended up being a location that wasn’t setup to host files. Like a desktop PC that happened to have a 2TB hard drive that wasn’t used much because we store as much as possible on the servers.
This ‘free space’ was ok for temporary storage, but the real issue I had was with the workServer on its way out, (oh, and I was out of the 750GB SAS drives that I had used in its RAID5 array so rebuilding array wasn’t even a option at this point.) I had no ideal solution to setup another work server because all our servers we’re currently being used.
After migrating to the work server, I was suppose to be able to free up one of our other 1U servers. Now that it was a ticking time bomb, that wasn’t an option anymore.
I have an spare 1U server without drives, (which really helps my storage dilemma doesn’t it?) which I had contemplated throwing in some spare drives I had. With only 2 drives that were large enough to make use of, oh, and they were also different sizes which made any storage redundancy unpractical.
So I had to bite the bullet and buy a ‘new to me’ server during a period that I was hemorrhaging money. Oh good times.
It was a justified expense because any development we had started to progress on was stopped until this ‘situation’ was resolved. Also wasting that much time on solutions that were less than ideal couldn’t continue.
Every time I buy a server, I always try to get something that at least has double the storage capacity. With our main server running 4 x 2TB hard drives in RAID5 with a little over 5TB of total usable storage, I set out searching for off lease enterprise servers that I could get at least 10TB of storage after calculating RAID 5 and partition overhead. I really wanted to get to ‘double digit’ terabytes.
Off to eBay…
After a bit of searching and not finding anything I felt would cover my requirements at a cost I could barely afford, I just searched for ‘4 x 4TB’. I figured my current server has 4x2TB, I want double, so it made sense to look for something that had 4 4TB HDDs.
I’m glad I did. I found and bought a Dell PowerEdge R710 with not only 4x4TB hard drives, but 2×6 core Xeon CPUs, 2x200GB SATA boot drives, 2 redundant PSUs (Power Supply Unit) and… a whopping 72GB of ECC RAM! All for a little over $500 after shipping this heavy bastard. Hell yeah.
Had I had not been in the process of loosing my ass in the market, I would of definitely bought 2. I actually regret not sucking it up and buying 2 when I could because of the doors it has opened as far as configurations go.
Had to order new server. Got a deal, on powerful hardware. Opened doors for Virtualization
Say hello to my little friend Virtualization.
Spent the whole month researching Virtualization.;..Yak
Work on the new server was progressing, albeit at a slow rate than I’d like, (which is always the case, it’s just more frustrating when the reason for delays is ambiguity in documentation) and with it came a need to use my old-friend from March Mr.Bash.
Me and Mr. Bash get along great, he does exactly what I tell him todo & is very straightforward. Which is refreshing considering the fact that the deeper I get into my computer science studies, the more equivocal the information becomes.
One of the other ‘self-improvement’ areas I’ve been working on is my vocabulary. With all the material I’ve been reading, there have been numerous times that I’ve had to look up word definitions and often pronunciations too.
Katie has also joined in on the fun too. In fact I started a Word document earlier in the year to list the words with their definitions that I had looked up.
I think Katie & I were in the office talking & jettisoning down one of our tangent holes & came across a word we needed to lookup. I mentioned to Katie that I’ve been keeping a journal of the words I’ve had to lookup and she thought it was a good idea. From then on, we both started adding to our ‘vocab improvement doc’.
One problem I had with the document though was I didn’t have an easy way to include the pronunciations. This is half the reason I looked up some of these words and what point was a document if we still had to go back to google if we wanted a refresher on how to pronounce a word.
I don’t know how it started exactly, but I think I was looking at the source code of the Google results that had a speaker button that would play the audio of the word. I wanted to see really if I could figure out a way to copy that portion of the page paste it into word & attach the audio some how.
After a couple minutes, I realized that probably wouldn’t work & if it did would end up being a very convoluted. I also noticed that, at least in the case of the Google results, it’s just fetching a mp3 file of the word.
Well after some analysis, I saw a pattern and realized that a Bash script could make short work of retrieving the audio for my words. So after a short amount of time I had a script that not only was able to download the audio, but also play it back immediately.
All through the console!
I’m still surprised almost every day by the limitless functions and amount of power one has with a little knowledge of the Bash shell.
So, through out the month I would add little things here and there to improve upon my awesome little script. Once of these things happened on the day Google didn’t have a pronunciation of a word, but I came across a site: vocabulary.com that did.
After looking at Vocabulary.com’s page source, I realized it wasn’t going to be as easy…I did however see another pattern and with a little help from Awk, I had a functioning script that would retrieve the audio pronunciations from Vocabulary.com.
Once I had the pronunciations, I also wanted to retrieve the definitions automatically. Why would I continue to add to that word document if I already had half the process automated?
This portion was relatively easy, but I do have some things to iron out because the source used for definitions, synonyms and antonyms has produced some inaccurate results.
As of right now though, we have a functioning script that takes a word as input, will do it’s best to retrieve the pronunciation from multiple sources so we can get a better idea of various dialects and finally downloads the definitions to a txt file.
All the data retrieved is stored in a sub-folder that is named using the word that was requested all within a single parent folder simply named vocab. This makes it super quick to find the words we’ve looked up, and can even see when we did by looking at the folder creating date.
It’s a helpful script to help us expand our vocabulary. I think its important to be well spoken because if your not, no one’s going to take you seriously. In my case, I’m hoping to pull off sounding smarter than I actually am. 😉