Job Woes

So, here lately things have been hell, other than my new daughter, she’s awesome!

Job doesn’t appreciate me

I’ve put in nearly a year at my latest (and hopefully last) job. I have hit the ground running, even created a project that should be capable of saving millions of dollars soon. The company isn’t in the best shape either digitally or revenue-wise so it should be something major for them.

The catch? I basically hate my job. No, I take that back, I really dislike my bosses.

Being volunteered for a weekend, working 4 near 24 hour days with not only no recognition but also punishment. Yeh, I got drug into a tiny meeting room TWICE within the past 3 weeks with my two bosses over a bunch of nothing. Just because I was pulling 6pm to 7am hours one fine day and made it in to work, even had a demo early in the morning on a WFH, boss knew, but I still get the double team.

But on the flipside…

This all just makes me strive even harder to create not only a place for me but a place for others under this workplace tyranny. Let’s face it, the company I work for is failing, all good options are useful. But they allow these narrow-minded VPs and above dictate things that kill the buzz before it can even be used.

It’s quite sad when your bosses have to double team you, over nothing when you are an all-star performer. At this company, they recently did a huge push for saving money. There is a ‘top project’ that has saved about a few hundred thousand dollars. My self made project is slated for millions. I have went above and beyond. Have been a complete fan and zealot, what gives?

Old fashioned ‘bosses’

That’s the problem. Do not get me wrong. I’m grandma raised and I love older folks. But when you allow your personal views to not only effect your underlings and the company you work for, then it’s time to put on the brakes.

Directly against the company’s values and beliefs all I ever hear from my one ‘boss’ is his ugly tone towards innovation. Such as “this is not Google, this ain’t Facebook, we’re not Yahoo!” in the most side-of-neck talking, gimme some dip type of tone I’ve ever heard of. Wow. This is what fortune 500 companies choose to staff up with? No wonder your stock is the lowest it’s been in 20 years. Good grief.

Me? I’m not afraid. I’m so friggin tired of this corporate bullshit. The time changes. The world changes. Things change. We have to keep it moving. But here I am having to defend myself against not one, but two of these types. Don’t wanna admit you don’t understand something but still wanting to boss shit. I don’t get it. It’s call self-educating — you’ll look so much less ridiculous that way bro, trust me.

Startup, please save me!

I’m glad to still be putting all this intense focus and energy on my startup. Everyday after a rough day at work I still find it in myself to keep going. Like Albert Einstein spoke of, it’s my imagination. I see success, I feel success, I want success, I pray for success.

I vow to never let any employees that work for us go through such corporate tyranny. This is the main reason I work so hard — so my kids don’t ever have to do this dumb potato sack race crap with hands tied behind you and spikes on the ground for no reason whatsoever, purely for the hell of it.

Also, John Legere is my hero.

Fixing ‘Unable to read group information from repositories.’ CentOS/RHEL Install Error

For a few days I’ve been encountering an error with installing CentOS onto a server. Now, I’ve installed possibly hundreds of times before so I could not understand why I was receiving this error.

The Annoying Problem

The error that’ll popup in the CentOS installer GUI is “Unable to read group information from repositories. This is a problem with the generation of your install tree.

You may be able to reach an extended error by checking consoles. as seen via Ctrl + Alt + F* keys, respectively).

04:01:15,620 DEBUG storage: no type or existing type for sr0, bailing

So I Googled and searched for clues or fixes for this particular error. Most folks said that you need to check the checksums for the downloaded ISOs. Some folks had actual CD/DVDs burned so for them they needed to check the checksum and/or reburn at slower speeds.

So I checked my checksums, no issue there. I even re-downloaded the ISOs, tried many different versions (one tip was that this ‘bug’ was introduced in newer version of CentOS/RHEL), etc.

At this point I’m already hours in and knee deep in solving this problem. I think and say to myself lets the same ISO on other servers. Worked like a charm. So what the heck?? I’m thinking this server must have something about itself so I jumped into the BIOS and reset to default to clear any funky settings that may have been there. No dice still.

I just back into the BIOS to check other parameters and also because I now got an error about f0 (the floppy drive (3.5)). Still no dice!

The Much Awaited Solution

So with my luck nearing it’s draw and thinking that I may as well head towards imaging/swapping hard drives with a solid server unit, I finally hit the jackpot.

I left my home office computer and went to have a drink of Wine and work on my laptop in the garage, then Eureka. I think to myself, what is the natural line of progression for the fix?

  • Reset BIOS settings (already did this)
  • I could try another distro (I did, Ubuntu Server installed without issue)
  • Use a DVD ISO instead of Minimal ISO (maybe a fileset or ‘dependencies’ are not being met somehow)
  • Use a NetInstall ISO (should ‘grab’ anything it needs within the online ‘grabbing’ process)

So I went ahead and downloaded the full DVD ISO as well as the NetInstall ISO for my version of CentOS. I used the NetInstall ISO first over IPMI ISO mounting to get it loaded as I normally do.

After this, I rebooted the server. Next, I went thru the install process without issue! I nearly couldn’t beleive the sight of the ‘Congratulations’ page in the CentOS installer after I’ve been tinkering with soooo many different iterations of the installer to get it to work and also determine the cause.

If life was like that Justin Timberlake time movie I’ve just bought you at least half a solid day or more. Haha.

I hope this helps someone save some time and frustration.


Use the CentOS NetInstall ISO to install CentOS. I believe this either has extended support in terms of drivers/related. Or it may be using a different/expanded feature set so to speak. I’m not a CentOS developer so I’m not sure, but the method works though.

PHP Laravel / Eloquent: MySQL 300+ columns vs

Yeh, I can’t act like I’m some DBA God or something, so yeh, with that out of the way let’s talk about some of my latest developments. As you may or may not know, I’ve been working diligently on a new startup which I’ve been coding in PHP on top of Laravel 5.

What I’m trying to do

I need to save data about users in a database table. This data would be created and inserted on a daily basis and would likely never need any updates beyond the day/moment said data was created.

At first I thought about creating a new column on the newly created table in MySQL and then adding serialized data to them. This would work but I would need to instruct PHP to ‘break down’ the serialized data to an array and then grab results from this array. Again, since this data shouldn’t need to be updated reads wouldn’t be too huge of a problem (aside from having to read the entire serialized ‘packet’ of data within the column).

What is needed

I’ve spent about 18 hours planning, testing and brain crunching a possible schema that’ll:

  • Work the best
  • Keeps table size small
  • Easily accessible
  • Standardized

So, how can we accomplish this?

Table Schema:

v1 (I like to mentally propose solutions in iterations of efficiency and then test them)

For each table row I’d need to save the following:

id (auto incrementing), user_id, related_data, timestamp(s) . So, the ‘related_data’ field would be the one that would store the serialized data.


There is a very helpful post over at the Percona blog. If you aren’t aware, Percona is a solid resource of SQL pros and should be checked if you need solid answers/suggestions.

Storing serialized data within MySQL isn’t the best practice according to Percona.

  • It requires ‘sub-processing’ on the data to be able to get the result you are after.
  • SQL will be required to read the entire record to get any data.
  • This breaks the convention of MySQL and kinda defeats the purpose

I will say that storing serialized data in SQL does have it’s purposes and qualified uses. But not for the way that I intended to use it (see above).

So, what should we do?

After hours and hours of mind picking the best solution. I discovered that in a latest version of MySQL (and other SQL daemons)there is now support for JSON datatype fields! This is pretty friggin’ awesome!!

What this means is that we don’t have to serialize data via PHP before inserting into the database – SQL daemon will handle that. Plus, we don’t have to read the entire row/column result just to fetch a piece of it – we can specify the key. Similarly, we also don’t have to rewrite the entire row/column result just to update a fragment of the data.

This is pretty slick and pretty sweet.

Umm, does Laravel support this?

Next I checked if Laravel supported this functionality. If it doesn’t I’ll be required to write some raw SQL to manipulate the DB table, etc.

It turns out that Laravel does support both JSON & JSONB datatype fields. Very nice. Now I just need to figure out how to use Eloquent to create a record in this new SQL table.

After getting off work around 6pm on a Friday, I decided to tear into the code and figure out what’s up. The day before I learned that there was nearly no documentation on interfacing with SQL JSON datatype fields other than docs that talked about how to add a JSON datatype column to Laravel DB using Eloquent, etc.

So I searched, and I searched, and I searched (and gamed off and on) without finding much. It was until about 6am that I finally made progress but began receiving errors such as ‘Indirect modification of overloaded property’ and ‘ERROR 1118 (42000) at line 23: Row size too large (> 8126)’. So, I figured I needed to sleep and would continue the next day (today).

After waking up, playing with and feeding my daughter and having some coffee I was able to hit the garage for a bit for a smoke. During this time I figured out how to save and retrieve data from SQL JSON datatype fields.

This is kind of funny, I actually likely wrote this out when I first began testing for workable syntax. After the data was saved it appeared as:

Tinker: {"key1":"value1"}

I previously had created a bit of super on the fly test code, which is below. Forgive the brevity of it:

function testTwitHistt() {
    $testt = new \App\TwitterUserIDHistory;

    //$testt->MASTER = 'testing';

    //$testt->MASTER = ['key1' => 'key11', 'key2' => 'key22'];
    //$testt->MASTER = {'key1': 'crap1'};
    //$testt->MASTER = {"k1": "value", "k2": 10};
    //$testt->MASTER = array('key' => 'value');

    //$testt->MASTER['key1'] = 'key11';
    //$testt->MASTER['k1'] = json_encode('test');

    //$testt->MASTER->k1 = 'test';
    //$testt->MASTER->k1 = json_encode('test');

    //$testt->MASTER->attribute["key1"] = 'keyy1';

    $master = $testt->MASTER;
    $master['key1'] = 'value1';
    $testt->MASTER = $master;


function testTwitHisttRead() {
    $fetch = \App\TwitterUserIDHistory::find(2);

    return $fetch->MASTER;
    return $fetch;

As I said, I like to work in iterations as I’m sure you can tell from the above code. The last uncommented bit of code in testTwitHistt() is the code that actually was able to write to the table successfully without error. testTwitHisttRead() is a test function I made to use with Laravel’s Tinker in order to see the return.

I hope this helps someone out there facing the same thin docs on this subject. I wrote this post quickly in order to continue working on projects and will likely clean it up at a later date.

An enlightening quote

“To enjoy good health, to bring true happiness to one’s family, to bring peace to all, one must first discipline and control one’s own mind. If a man can control his min he can find the way to enlightenment, and all wisdom and virtue will naturally come to him.”

— Buddha (supposedly)

PHPStorm not uploading minified files

I love PHPStorm, I really do. There is an issue lately that has been bothering me. Whenever I save a file, my file watchers kick-off and begin to minify files such as CSS or JavaScript. This part works fine.

The problem lies with these minified files being uploaded to my server. Currently, I have PHPStorm set to upload files when I save them (CTRL+S). I would like PHPStorm to also upload the minified files once their parent are modified and uploaded.

How to enable auto-uploading of minified files in PHPStorm

All you need to do is pop open the upload on save dialog (Tools > Deployment > Options). In this dialog there is an option called ‘upload external changes’. Enable this option by ticking the checkbox.


Problem solved!

Maybe I’m closer to success

I have been diligently working for over a decade now. I remember in the beginning, being a small poor kid from the urban projects, when I first started tinkering with things that I just wanted to learn more about different things. It all started with IRC chat and wondering how I could become an IRCop/NetAdmin. Take all of this for a long, long, long ride aways and now I am here where I am.

I have been continuously creating project after project over the years (and months), all the while thinking that ‘hey this one should definitely be the one that will work out’. And falling flat on my face when things don’t quite pan out. I’m not a lazy person by any means, yes, I like to sleep in some days but for the most part all I really want is to be able to build a way for me to be able to concentrate and build stuff, interesting stuff, useful stuff that folks will both like and appreciate. Innovate the world even if the world doesn’t think that I can.

There have been many, many, many days where I would get off of work from my day job, return home and right after stepping through the door go to pick up my laptop and enter the digital realm known as the internet to continue working on my personal projects. I wouldn’t even eat, maybe grab a beer but never really just relax and enjoy myself. Although my mind has been somewhat drained by corporate America, I still ALWAYS find time to work on my stuff. Some days are better than others, meaning some days no matter how hard I try to stay awake I fall asleep on the couch, with the laptop in my lap, sometimes hand is still on the mouse. That’s dedication if you ask me.

Before my Grandma (my entire world) passed away, one of the things she would always tell me is to have patience. Have patience Michael, have patience, have patience, have patience. I remember her soft beautiful voice and it resonates within me each and every day. Like a driving force. I do my best to remember her, her voice and her words as they are precious to me.

In this world, as strange as it is. I look up to all the people that start companies that have employees (that they MUST protect the livelihoods of) and think of how awesome this must be. I’m not a Dwight Schrute type of character that only wants power and control, but I’m the type that wants to be able to live my life how I want to. Not always being second in line to someone else, to always have to be stressed out and pressured about being 1 minute late or 1 minute behind on my lunch. Not having to work for those that are not persistent like I am, care like I do, have passion about tech things like me, the list goes on. Oh how great it must be to be able to run your own life. Which is why I have been working so very hard over the years.

I want my children, family and friends to be able to take shelter from the cruel world in the little cubby that I’ve been able to desperately carve out. Whether or not I’m still here, living or not, on this planet. There is no better feeling than that in my opinion. It’s all I want and dream about, each and every day. I have already promised myself not to be a formidable foe to those that are less fortunate, and instead, to help and further the lives of others.

My latest project, Socialius, should be something that others will want to use, like to use and is solid while they are using it. I’ve put in hundreds if not thousands of hours into it brainstorming, implementing ideas, fixing/fine tuning implementations, squashing bugs and much more. Many long nights that I’ve wanted to play Skyrim or just relax have went into this project.

TLDR: Just releasing some steam from trying to attain success. I’ve been working for over a decade to create a sustainable and respected business. I think I’m doing too much and spreading myself a bit thin.

Virtualmin: Upgraded PHP and Apache not running as username


Recently when I was working with Virtualmin I needed to upgrade PHP on the server. At first, this wasn’t a problem / I didn’t notice it. But later on I installed WordPress and during installation I was prompted to enter FTP details. I’ve installed WordPress dozens of times and have had this issue in the future – which I was able to easily solve by updating permissions or chown’ing.

This time around my normal set of things to do didn’t work at all. So I was left stumped for a while.  I double checked the permissions and owner. I even temporarily used 777 permissions, still, no dice. So my next thing to check was going to be what user is actually trying to run the PHP. To do this, I opened a top window in my SSH client and monitored as I loaded a webpage for the website in question.

Bingo! The user that was executing the PHP code was none other than Apache! I already knew that the configuration of the website within Virtualmin should be running any PHP code as the website’s owner/username. With this new information I now know what I needed to do.

How to Fix This

Now I’m good with Apache, Linux as well as PHP but I’m not a know it all, especially for all of these pieces of tech so I Googled to find a fix. As it turns out, one can fix this issue by updating the php.conf on the system (usually located in /etc/php.ini) and either removing or commenting out a couple lines (these lines override Virtualmin’s modifications, namely, the /home/USERNAMEHERE/etc/php.ini that are created when you create another virtual website within Virtualmin).

A user on Stackoverflow pointed out this issue, all you need to do is open the php.ini / php.conf file on your system and edit as follows (and restart httpd daemon afterwards):

Comment out SetHandler lines with a #. Or the whole FilesMatch node.

#<FilesMatch “.+\.ph(p[345]?|t|tml)$”>
# SetHandler application/x-httpd-php

What is occuring is that when you install another version of PHP to your server other than the default one that Virtualmin installs some configuration is overridden. Namely, the above lines that should be commented out. When these lines aren’t commented out the PHP handler becomes the one of the newer version of PHP, not the one that Virtualmin sets up on a per host basis.

Hope this helps someone out there.