Monday, January 2, 2023

Migration

 I've migrated.  Current address is lostinthecstoremarket.wordpress.com


Come visit me over there.  Drop by.  Say hi.  

Thursday, August 11, 2022

Ubuntu changes

 I ran an Ubuntu 12 box for a long time.  It was running off some old, cast off hardware.  It was great to mess around with.  For a while, I ran all my accounting through that.  Which had its own problems once my bank no longer allowed a Quicken style exports.  They just allowed pure export into Quicken.  But that's a different story.

Eventually, the computer died.  It was old, and running off cast-off hardware as I mentioned.  So I found some new cast-off hardware, and rebuilt the system.  Except I decided to put in Ubuntu 20.  I'm not sure I like it, but it's here.  There were some interesting download that I found through the Ubuntu store(?) or whatever it was called.  

I realize it's been a while, but the things I liked aren't there anymore.  I guess I spent too much time when I should have been hurrying.  But I digress.  I think it's time to actually spend some time on this.  It's the problem of having too many ideas running through your brain and not enough time to work on all of those projects.  Maybe I need less sleep.  Sometime that works, but only for a short while.

Back to the new Ubuntu store thingy.  It doesn't work as well as it should.  It runs through an icon-based format.  That was something I remember from before.  But this time, the setup doesn't work as well.  Especially when you get to the bottom of the page.  Maybe some updates will help.  I doubt it.  


Anyone know what those bottom two icons are?  I don't.  And I can't read them.  Nor is there a scroll bar to look at them correctly.  And it's not just the entertainment section that has this problem.  All of them have the same design flaw.  I'm guessing whoever tested this didn't spend enough time testing. So let's hope they fix this on a patch.  I've got an update running in the background so we'll see.  

Moving from 12 to 20 is quite a bit of a jump.  I ran 14 and 15 for a bit, but those were all work environments where I was doing specific things and couldn't just play around.  It was all Graylog if you want to look back and examine those posts.  

Let's see what happens when I play more.  


 


Thursday, August 4, 2022

We're all in marketing now

 So we're all in marketing now.  I don't know how to take that.  For the longest time, I spent my efforts trying to stay out and away from marketing.  But that doesn't seem to be something I can proceed with.  I'd rather delegate that task to someone else.  I love building a team and surrounding myself with people who are considerably better at jobs than I am.  Build the team around your weaknesses and what not. 

What I don't really like doing is side tracking all my current studying to go work on something I've only vaguely been interested in before.  But that's what I need to do.  Because we're all in marketing now. 

In my side time, I run a small non-profit.  It's a branch of a national organization based on teaching kids.  It gives me the opportunity to try out teaching theories and ramble for hours on end with impressionable youths.  I get to fill their heads with succesful thoughts and build them into something that can go somewhere.  Instead of whatever junk is being taught.  But that's another story.  

Because I'm in charge of the organization, that means I'm also in charge of the recruiting and retention.  And the big thing I need to do is up my marketing game so I can take my group of 10 kids and turn it into 30.  And hopefully grow my parents support basis as well.  And try to fund the entire thing on shoe-string donation budgets.  But I digress.

Getting support is easier when you've got a considerable number of children to show you are working with.  10 kids out of a city of 200,000 just isn't that many.  It's less than 5 families.  

So now I'm in marketing.  And I have to figure out how to market the program to increase enrollment so we've got more kids coming in, which makes more kids want to come in.  More people, more people, more people. 

More problems, but I've got to get the marketing going first. So I have to educate myself.

I drug a couple of books out of my bookshelf that I haven't read before.  I'm going to work on those first.  Successful Marketing for Small Business by Cohen and Reddick is the first.  I've made it into the first chapter, and it seems like it might work.  But it's also from 1981.  

The other is The 22 Immutable Laws of Marketing: Violate them at your own risk! by Ries and Trout.  Looks like 1993 on that one.  Another book that predates the modern internet.  But the concepts still maintain.  

I'm not going to drop the $500 or so on the Breakthrough Advertising by Schwartz yet.  But it might be worth it in the long run.  There's a ways to go before I get there.  

I remember a little bit of marketing from college.  I think I took one course.  In the end, I wrote a marketing concept for the group project based on the idea that no one knew who we were.  It was about an oilfield additive company that was trying to sell their product to get more production out of their wells.  I don't remember what the product was.  I just remember I never had to give the presentation.  

Out of all the group projects I did, I think I liked that one the best.  There were a few interesting people to work with, and they seemed to have their own ideas.  A few with a greater entrepreneurial edge than me.  And I've been toeing the water on that one for a good decade.  But I never could find something I was interested enough in selling.  

But now we're all in marketing.  If you have any good ideas on books to read, let me know.  I'll throw it on the list. 

Wednesday, July 27, 2022

The Idea Machine

 What is the idea machine?  And where does it come from?  

It starts as an inkling in the back of your head, of ideas half thought and concepts not taught.  Perhaps it's a combination of a dozen different things.  Maybe it's something you keep saying over and over again.  And often it's just a creation that came through your brain.  

When the idea machine starts working, it's best to keep track of what it is saying.  Take notes.  Do not ignore the idea machine.  I can't remember the author, but the gist is thus: what you focus on grows.  If you focus on failure, you get more failure.  If you focus on ideas, you get more ideas.  

99% of them are going to be terrible.  But that doesn't matter.  I think it was Richard Branson who said "Opportunity is like the bus.  Another one comes along all the time."  Or something like that.  It's a good point, though.  Keep developing ideas.  Keep thinking.  

How long will it take?  Longer.

That's a pretty indecisive answer.  Some of the ideas in my head have been running around since 1992.  And I still haven't brought them to fruition.  Some of the ideas just require the correct set of inputs.  So I guess the best option is to keep putting in more inputs.  

I've been listening to the Autobiography of Benjamin Franklin on audio book.  It's a good book that I got from Librivox.  It's the single author version.  Though his focus was primarily on the printing business, some of his ideas are pretty good.  The focus on creating value and frugality are definitely before their time.  

But I'm pretty sure his idea for the dollar bill was not "In God we trust" it was "Mind your business".  Which for him meant a large collection of different things, and fit in his category of what he wanted to pay attention to and focus on.  

Can I be any more broad and evasive than this?  Yes, yes I can.  Because my idea machine has merged into a half formed idea.  Now it's time to start producing the content.  Because the idea is worth very little.  It's in taking the idea to execution that it becomes valuable.  And that is the long slow, dull process.  But it's going to be a process that needs to be followed.  

The idea is one thing.  And that's great.  But executing the idea and bringing it to something that exists in the physical world?  That's the wonder.

That is where the real fun is.  

But now?  Slowly off the cliff into the oblivion of creation, and towards the valley of the unknown.  Somewhere in there, there's a Seth Godin quote.  

Monday, July 25, 2022

Is it working?

Is whatever you are doing working? 

That seems like an easy question, but it's a lot harder than is usually assumed.  It can be a problem of undefined success criteria.  When you set out to define your whats-it did you clearly define the success criteria?  If I'm guessing correctly you probably didn't.  

So why don't you sit back and define your success criteria.  Is this one of those full fledged plans, or just some concoction running through the back of your mind.  Because executing those is a pain in the ass. Turning that twisted hunk of an amorphous idea into reality is the stuff dreams are made of.  But with the plans you got going right now, it might as well be a pipe dream.  

Cue another drug reference.  Pipe dream: something that a person ingesting large amounts of drugs would imagine as the drugs run through their system.  Assumed to be something magical and fanciful.  

Might as well be a pipe dream with the level of pre-planning that went into this thing.  But you say "I know what I'm doing.  I've been thinking this out for years." And that's the problem.  You've been thinking about doing this thing, and not actually executing.  You've been listening to the collection of people that tell you it's more important to dream big dreams.  Sure, those are great.  But until they are executed they are worthless.  

Dreams without execution are worthless.  I'd almost say they are worse than worthless.  They are the half-thought ideas that are dragging you down when you should be going up.  You know what makes you feel better?  Executing some of those dreams.  Better to write a book that sells one copy than never finish the book.  Because it could sell a million copies.  But you will never know until you get the idea out of your head.  

Now that we've got that bit in order... How do we tell if this thing we want is actually succeeding?  Go back to the idea you created.  Go back to your original document.  Your original document should contain a few intervening steps that show where you are going, and how to guess that you are on target.  Did you complete goal one?  Are you talking to the people about your project?  Are you marketing it well?  Or at all.  I hope you are marketing it.  Are you making it a little bit closer to the finish line?  

Or are you stuck in a nebulous la-la land where you do things that don't really matter?  Because that's the way to tell if you are going the right direction.  Are you going somewhere and getting some sort of result.  Are there more words written?  More subscribers?  More content produced?  An income?  More income?  More hits to the website?  More comments?  

And which of those things is actually worth measuring?

The hard question about hard questions is that they are hard.  Which sounds like the stupidest sentence in the world.  Let me ask the question in a different manner:

Does it matter if you wake up at 5 am?

There's a lot of posts about that.  Lots of rise and grind people in the world who declare 5 am is the magic hour.  I do it.  I have been doing it for years.  But is that really the secret?

What about the midnight people?  Work until 1 or 2 in the morning after the hustle and bustle of the day is over.  That's the real ticket.  Or is it?  

I'll give you a real big hint: the time of day doesn't matter ONE BIT.  5 AM.  3 AM.  4 AM.  11 PM.  12 AM.  The specific time doesn't matter at all.  

Now let the hate mail flow...

What does matter?  That you have some time in every single day scheduled out to work on whatever it is you want to work on, free from distractions and free from the interruption of the rest of the world.  Freedom to work on what needs to be worked on without having to answer the beck and call of the world.  

That is what matters.  The time does not. Regularity matters.  Isolation matters.  Working on the important thing matters.  

All the rest is junk.

So how do you measure whether this thing is working or not? 

If I knew that...  well.  I wouldn't be here, trying to figure out the same thing.  

Thursday, January 27, 2022

That's not how you get there

 I've been reading through Bold by Peter Diamandis.  It's an interesting book, with a lot of interesting ideas.  In the same period, I was listening to the audio book of The Traveler's Gift by Andy Andrews.  Despite both books being really good, I find them interesting in different ways.

There's only one big problem: both hit periods where you just need to power through to make it to what you really want to hear.  In the Traveler's Gift, it's the beginning.  If you can power through the first two to three chapters and get beyond how bad life sucks, then you are in for a treat.  The rest of the book is really interesting and well worth the time spent. 

Bold doesn't work that way.  Bold has a tendency to go from very good to slog in numerous places.  Some parts are brilliant, and leave me thinking about places I could go and ways to apply the things listed.  And then you have to slog through a good chunk of stuff to make it back into more interesting stuff.  That's just the way the book is written.  

The big problem I have with Bold is me.  I know I dislike working in large groups, forming companies, and solving the day to day people problems.  I'd rather spend my time working on my things and hope it all goes and works out well.  Or if it doesn't, I sit back at the drawing board and try to rewrite and revise.  Those rewrites and revisions solve lots of problems.  

But it's hard to make it work that way for complex processes and procedures.  It's not the complexity that's the problem.  It's the scope.  Some of the things I envision doing are the work of entire teams, done by one person.  And the pace I have to create these complex machinations just doesn't fit on scale.  Maybe if I had two to three hours a day just to work on my own ideas it might.  But I don't have those.  I have too many other problems to solve, and often it's other people's problems that need resolved.  Or a way to monitor something so a person who's not me can get the information necessary to make the right choice.

If they actually follow the flow chart I created, which is unlikely.

There's always resistance.  No matter how good the idea, there is always resistance.  And trying to get the most resistant person to follow the procedure is the hardest.  Because they don't know what the data means, and won't follow the procedure.  Even if it will lead them directly to what they need to act on. Because they don't understand it, and they won't focus on the material you have told them to focus on.

Simple questions become complex.  Go to this website.  Look at this specific thing.  What does it say?  Does it say X?  Then there is a problem.  If it doesn't say X, then there is no problem.

"What about this thing four lines down the page?"

"Ignore it." 

"But I can't.  It says alsdfhasdlfkhjalgedfj and I need to know what that means."

"It is not relevant to the problem at hand." 

"But I need this information."

And this is how the conversation goes.  From people who won't take the effort to learn LAN switching, router behavior, or any other complex technology.  

I know I need to learn more about cell signal strength and signal to noise ratio, but I don't have time to do that right now.  So I have to accept that when I look at that piece of data, it doesn't mean anything to me.  But the square box that tells me the router is on cell backup?  Yes, that is the important bit.


Tuesday, December 28, 2021

Essential Worker fun

 So... the last 2 years or so Covid.   Short answer: I can't tell the difference.  Nothing changed.   People wore masks.  Then they didn't.  People didn't go to work.  Then then did.  


Two years later?  Nothing has changed.  Some people still work from home.  Others don't.  

The behaviors that were caused by the global pandemic that was pretty pathetic in its death toll have all fallen back into the same behaviors that existed before.  For all the lessons learned, the only one really learned is that buildings are expensive, and having people work from home works just as well.

What budding capitalist doesn't want to get rid of ridiculous capital expenditures and blur the lines between home and work?  Because that's really what happens.  The business no longer has to pay for that giant building any more because all the employees are working from home.  And those work from home employees are fighting to keep job away from home.  It's a losing battle from most people.  Most of us just aren't that rude. 

What's going to be interesting in all this is the collection of leadership lessons in managing a remote work force.  And finding out how many of those managers are a simple waste of time.  But that's a discussion for another day.


Thursday, December 23, 2021

System changes and Dead Horse

Innocuous changes can have large results on a program.  They can take the form of some very simple changes.  


But not all those changes are easy or small.  And "the way things are" isn't always the best method of operation.  But that's the way the operation runs.  And many operations run this way for years without anyone changing the operational procedure. 


There's a meme running around with a person on a dead horse, complaining that businesses are stupid and are unaware the horse is dead.  It's not just businesses.  It's all people.   The pull of the familiar is universal, but that doesn't make it accurate or correct.  And realizing the events that are occurring in your life and of your creation are altogether more complicated.

How many people are out there right now causing drama on social media, wishing they had a drama free life?  

How many people are living paycheck to paycheck, without realizing their own behaviors are causing them to live paycheck to paycheck?


See: the noticing the dead horse is a lot more complicated than it seems.  And doing something different in the midst of "effective" solutions is exceptionally hard.


There are a lot of good books on why we don't notice these things.  Scarcity is one of them.  But that only deals with a portion of the problem.  Despite what people say, memes are just another political format.  Another way of getting that specific piece of knowledge that set in just a way to get a specific set of people to react.  To build up your base camp.  To get people to agree with you.

Even if it ignores the broader consequences and truth of what is going on.



Monday, December 20, 2021

A bit more Java here and there

 Some days, the cost of code is crazy.  The ability to build and code solutions to problems is not something everyone has the capability of.  But then when you see how little code it can take to solve a problem, you realize just how expensive code can be.  


With a bit of messing, I figured out how to write an event messenger in Python to handle a built in system integration.  It took me about 300 lines of code.  


Funny thing: a few weeks after I figured it out, a vendor offered me their solution.  For $15 per month, per site.  I kindly told them no.  At 20 sites, that's about $1 per month, per line of code.  Which is pretty nuts to say the least.

So I moved on, and decided I wanted something a bit more permanent.  My code runs as a nohup process on an old Ubuntu box that is acting as a syslog receiver.  Which made me think: why can't I write my own syslog receiver?  


Nothing really prevented me from doing it, but I didn't have a decent IDE in order to do what I wanted.  I've used syslog collectors from SolarWinds and Graylog.  Both were functional for what they do, but that don't do what I want them to do.  Alerting is part of it.  Data collection is another part.  But there's so much more that I think should be and could there.  Somehow that blend of SIEM and syslog collector always seems to appeal to me.  That gathering of "EVEN MORE DATA".  And I do understand that more data doesn't necessarily mean better decisions.  It just means more data to sort though.  And the need for more algorithms that handle that data, so the alerts generated off that data can be reduced from the thousands to individuals.  


But like I said, no IDE.  Microsoft makes a good one, but it's not free.  I like Visual Studio.  I just wish they gave it away for free until you get to a certain level.  Like the SQL Express model.  So I quit using their stuff.  And I moved to Eclipse.  


Eclipse is pretty decent.  The autocomplete makes me mad here and there.  But it's functional, and it allows me to build complex, multi-hundred lines of code applications.


Like my syslog collector.   That I finally wrote in Java.  

And that's about all it does right now is collect syslogs.  But I've got plans for that sucker.  Because eventually I'm going to take that 300 lines of Python code and turn it into Java.   And I'm going to attach a SQLExpress database to it, along with an IIS front end for a web application view of the mess I'm creating in the background.  Why?  Because I like web front ends.  

And because I want to learn more about SQLExpress and IIS.  And that's generally a good enough reason for most of these projects.  Or at least I think so.


Friday, August 6, 2021

Continuations

 

So you have decided you want to produce something.  Great.  You are half way down the road to a sustainable stream of income.  And then the question arises: what do I produce?  

You are going to hate the answer.

Pick something.

Anything.  Doesn't matter what. 

Produce it.

Production done?  Good.   Now publish it.  

Where?  It doesn't matter.  Put it out somewhere for someone else to see.  Produce and publish.  That is your cycle for the rest of your life.  If you do not produce, you will not get paid.  If you do not publish, then you will not get paid.  Random great screen writer is not going to magically show up at your door and ask you about your next whatsit.  They just aren't.  

And if you run into one of them out and about on their daily lives, they really don't want to hear about it.  You are probably the fourth person that has come to show them the best script they've ever seen.  So what then?  

There are methods to get this type of thing accomplished.  But do you want to do it on the first thing you created?  Are you ready for that kind of criticism?  Or do you need some sort of small win that says "I can publish this".  I'd go for the second, so you can polish your chops.  

Remember: there are multiple types of people in the world.  There's everyone else, and there is Ferris Bueller.  Bueller, though fake, is the archetype of person that lives by an entirely different set of rules.  Whereas his friends follow the basic rules the rest of the known world follows, Bueller follows a collection of rules that aren't as easily knowable, and are rarely taught.  

If I knew those rules, I'd be writing about that.  Instead, I'm writing about producing something and throwing it to the wolves.  

And in general, do you know what is going to happen?  Nothing.  You will publish, it will be ignored, and life will go on.  But at least you published.  Because although in general nothing will happen, that isn't always the case.  If you can catch that kind of buzz with a few friends that think what you are doing is quality work, then they might pass it off of their friends, and their friends' friends.  It could be epic.

But it will never happen unless you publish.  That brilliant knowledge in your head won't ever come to life if you don't ever write anything.  The head is a terrible place for knowledge.  Get it out and get it on paper.  Get it to the place where people can examine and criticize.  You might not get a single sale or review.  No one might read it.  But at least you published, and that's more than the rest of the world can say.  

Don't be Al Bundy.  Don't live in the limelight of the idea of the person you were twenty years ago.  Go out and create something new.  Use what your limelight twenty years ago taught you.  Did it teach you hard work?  Discipline?  Dealing with popularity?  Dealing with being hated?  Take that.  Tear it apart.  Write about it.  Because there are others who have experienced the same thing as you.  And they want to hear from their kind.  Believe me.  We do. 

I read Echo In Ramadi by Scott A Huesing because I thought I might be in it.  I wasn't.  Some of the locations I remember were.  But people pick up things that speak to them.  That they think might interest them.  Maybe it makes them feel like a part of a tribe.  Maybe what you are writing appeals to that tribe.  You don't need a lot of people to read your stuff, you just need some people to read your stuff.  

They may hate it.  They may like it.  They may never finish it.  That all might happen.  

And it could make you the next J. K. Rowling.  But you'll never know unless you publish.  


Friday, July 23, 2021

More questioning thoughts

 

So the question is: what kind of content should I produce?  What do I know that other people don't know?  

What do I know that I can teach to other people? 

I spend most of my time trying to understand the choices I have made, and examining systems that will make better choices the next time.  Part of that is habit creation, and part of it is analysis.   Perhaps the real problem is that I haven't spent decent time in actual analysis of behaviors and choices.  

So what is the sufficient amount of time?  Right now, I go by the seat of my pants on making choices.  Bad experience compounded a lot o times to create answers that are generally correct.  But then generally correct is not always correct.

And there goes the perfectionist mentality in me, trying to find the perfect solution.  Whereas the trained brain portion says pick any solution.  So where is the distinction?  Probably in the question: does this decision matter in the next two years?  If its the difference between the chicken and the fish, then the decision won't matter twenty minutes from now.  

But aren't many of our decisions like that?  Many of them are very small and insignificant in their own right.  I've always been a skinny guy, and it doesn't matter what I eat.  So I don't have the problem that others have with weight.

On the other hand, I have a problem with weight.  I'd much rather add another 30 pounds of muscle.  Would I be happy if I did that?  I don't know.  That depends on whether I'm looking forward to where I want to be, or looking backwards to where I was.  

I heard a pretty good description of the subject form Dan Sullivan.  He described it like thus:  at the beginning of the period, you are a position A.  At the end, you are at position B.  Where you want to be is position C.  

Whether you are happy or not is what you do when standing on position B.  Do you look at C, and see how far you have to go?   Or do you look back at A and examine how far you have come?  The happy person stands at B and looks back towards A.  The unhappy person looks at C.  

It's all a question of expectation vs reality.  Did you always compare yourself to the expectation?  If so, you are comparing yourself to something you can never be.  Despite all your hard work, you will never meet that reality.  That image of what you want to be is something you are highly unlikely to ever reach.  Partly because the ideal is far away.

So how do you end up cultivating that on a regular basis?  And what makes us think that it's a good idea to avoid reality with such measures?  A lot of both probably comes from what we have been inadvertently taught wrong.  Gratitude is rarely taught in class, and it isn't something you see glorified on TV.  Telling people the way it is seems to be the main method of the day, though that has a tendency to aim and nothing and hit it every time.  

Perhaps the problem is not in either approach.  It's in not producing.  Realistically, the difference between success and failure is not gratitude or any other routine.  It is about producing versus consuming.  The more you produce, the more you grow.  You could think of production in the agricultural sense.  Production is planting seed that may or may not grow.  The more seed you plant, the more likely you are to get a giant crop. 

But most people plant no seed, and wonder why they don't get a crop.  Out of the 24 hours in a day, they spend 0 of them producing.  Of the things they do produce, they are producing for someone else.  But producing some product, no matter how bad, for ourselves?  Never.  Can't possibly do that.  

Success is not about what you want, it's about what you do.  And if you want to break out of what everyone else is doing, then you must create content.  It doesn't have to be original.  Let's face it: Motzart's first symphonies weren't original.  The beginnings never are.  But they are just those: beginnings.  You have to start and go somewhere or you will never end up anywhere.  

Tuesday, February 25, 2020

Upgrades break your stuff.... python 3.4 vs python 3.7

So...  The new version of PRTG rolled out and Python 3.4 is now deprecated and Python 3.7 is a thing. 

What does that mean for me? 

Everything I wrote before is now broke....

so...  that big chunk about paepy...  you can forget all that.

Luckily, I spent the time figuring out how to make all this work.


starting point...

result = []

result is going to hold our collection of strings that we'll add together prior to dumping into PRTG.


Next bit.. 

We need this bit to create the proper JSON format before we start dumping stuff in. 

 result.append(" { \"prtg\" :{ \"text\": \"OK\", \"result\":[")


Second bit... 
result.append("{\"channel\": \"name of the thingy\", \"unit\": \"Custom\", \"value\": " + value_of_importance + ", \"is_float\": \"True\"  , \"primary_channel\": \"True\", \"warning\":\"0\", \"is_limit_mode\": \"True\", \"limit_min_error\":\"0.5\", \"limit_max_error\":\"1.5\", \"limit_error_msg\":\"the message\"}")

So... you're going to have to escape a lot of quotes.  General stuff....  escaping quotes is \".   So if you want a quote (")  you need to write \" to get a quote and not finish the line.

It's a bit pain to say the least.

The not so much pain is that the end result can be dumped into a JSON validator and you can find what needs to be fixed and what is wrong.


Other web pages I found valuable:



Please use the previous article I wrote on troubleshooting to find the actual JSON output and dump that into a validator to make sure your JSON is good before pulling your hair out.  The big thing that is going to be a problem is adding the correct amount of commas after the channels.  

One comma at the end of each channel, except for the last one.

Use the len() command to solve that problem.

To be more specific.....   len() = blah.

Create another variable...

currentRun = 0

Increment variable at the end of the for statement.
if len() > currentRun:
    result.append(",")    #add a a comma

That should be sufficient...

Now....   One everything is done...  

Need to add this bit to the result so we can the end of the JSON.

result.append("]}}")

Ok... got that...  

Now everything is is stuffed into result, but we need to get rid of the commas that normally show up when you just add a bunch of strings together.....


So...

finalResult = ""
         for items in result:
             finalResult += items
    
print(finalResult)

And with that print statement, we're done.


We've got rid of commas in the wrong place, got rid of paepy, and upgraded from Python 3.4 to Python 3.7.....

Looks like we're good.

Monday, December 30, 2019

PRTG: solving your problems

So you wrote a nice custom script to monitor you Next Cool Thing, and it doesn't work.  Not only does it not work, you can't figure out what is wrong with it.

So how do you solve it?

First, turn on sensor debugging. 

Go to the sensor in question, then Settings.  Scroll down until you find this bit. 

Turn that on.




Got that?   Good.

Now the interesting part.  Where are my readings? 

C:\program data\Paessler\PRTG Network Monitor\Logs (Sensors)\

So there you have it.

Kind of.

You get two files for every sensor.   One file indicates all the stuff that was sent to the sensor via PRTG.  That's the file with the name "Result of Sensor XXXX.Data.txt"

The other file is the output after the script has been run.  That's "Result of Sensor XXXX.log"

From there, it's time to go read that second log file and try to figure out what the problem might be.  The big problem I have with troubleshooting Python scripts is the lack of an Idle interpreter in the default installation of PRTG. 

That's survivable.  Notepad is there.  It's just more annoying. 

The second part of reference is that the interesting bits about what failed is generally at the very end of the script output. 

Is this the perfect debugging scenario?  No.  But it does provide the information you need to figure out why your script isn't working.

You did write the script on a machine with better debugging utilities to try and make a good proof of concept, right? 

So best practice in my eyes: write the entire script except the output bits on a separate machine before transferring it to the remote probe and/or primary server.

So...   Have fun, and go squash some bugs.

Thursday, December 5, 2019

PRTG: Making Custom Sensors to monitor strange things with Python


#verion 1.0
#last modified 12/2/19
#
#v 1.0   initial revision / prtg integration
#
import sys
import json
import urllib.request

from paepy.ChannelDefinition import CustomSensorResult


if __name__ == "__main__":

    location = json.loads(sys.argv[1])
    
    parsed = "http://" + str(location['host']) + "whatever else in the url"
    
    page = urllib.request.urlopen(parsed).read()
    

    #data comes out as binary type.
    #convert from binary to normal string
    np = page.decode('utf-8')

    scrip = np.split('



    for lines in scrip:


    result = CustomSensorResult("OK")


         result.add_channel(channel_name="channel1", unit="Custom", value=status_value1, is_float=True, primary_channel=True, warning=0, is_limit_mode=True, limit_min_error=0.5, limit_max_error=1.5, limit_error_msg="channel1 failed") 
         result.add_channel(channel_name="channel2", unit="Custom", value=status_value2, is_float=True, is_limit_mode=True, warning=0, limit_min_error=0.5, limit_max_error=1.5, limit_error_msg="channel2 failed")


    print(result.get_json_result())


Base code for a python script sensor for PRTG.   

Using this method, you write a script to scrape a web page, and then present the information to PRTG as a JSON file.

The limits are used to define up/down/warning status.

In this case, I have outputs of a binary 1/0 for working not working.

So how does that work?   

Notice this bit.

result.add_channel(channel_name="channel1", unit="Custom", value=status_value1, is_float=True, primary_channel=True, warning=0, is_limit_mode=True, limit_min_error=0.5, limit_max_error=1.5, limit_error_msg="primary connection 

And breaking that apart, the section here
is_limit_mode=True, limit_min_error=0.5, limit_max_error=1.5, limit_error_msg="channel1 offline"

Let's break these down.

Note: these names aren't the same those expected or presented for EXE/Advanced sensors on the PRTG custom sensor page.

is_limit_mode = Sets PRTG to know that the output has acceptable ranges of input.   
limit_min_error  = This sets the lower limit that defines an error.  Depending on your output, there may not be one.  I'm using outputs of binary 0/1 in this case, so I set it to .5.   Therefore, a 0 output is defined as error state.
limit_max_error  = This set the upper limit that defines an error.   Depending on your output, there may not be one.  In my case, there is never an upper maximum error.   So I set it to 1.5.   
limit_erro_msg = The message you want on PRTG for any device that may be not working.


So, with these setting set correctly, PRTG will report an individual sensor is down based on the values you assign to status_value1 and status_value2.  So now, you can alert based on those settings using normal PRTG alerting.


What this base script doesn't currently do:
  1. Parse anything.  Parsing the web page is based entirely on what you are looking for.  The page I was looking at was all table based, so splitting the data into tables made sense.  You will have to handle that portion.
  2. Deal gracefully with urlib.urlrequest.open() errors.   You will get a JSON error in PRTG when you try to pull a web page you can't get.  That's a simple try/except statement.  Use this message in your except portion to report failure gracefully.

            result.add_error("Your Error Message Here")



Secondary important thing...   probably the most important.  

See this block? 

 location = json.loads(sys.argv[1])
    
    parsed = "http://" + str(location['host']) + "whatever else in the url"

This block accepts json data as input to the script.  
The second part location['host'] pulls the IP address setup on the sensor to feed that data into the script.   So this script can be written once and run on multiple devices.  That's what makes this script extendable.

Now...   

So, you've got the initial script working.

How in the world do I troubleshoot this thing when I suddenly get a bunch JSON errors when I deploy it?   

That's the subject of another discussion.

Sunday, July 21, 2019

Thoughts in consideration


Judge success not by reaping but by sowing.  
Focus on something for 30 minutes and think of nothing but that thing.
Creating an iron will based on creating and following rigid systems 
Hard work isn't the answer.  Impact wasn't improving.  Figure out what works.
-What am I required to do?
-What gives the greatest return?
-What gives me the greatest reward?
Focus your attention on (1) what you must do, (2) what you ought to do, and (3) what you really want to do.
Subjects I need to study and understand:
[]Restraint
[]Generosity
[]Hard work
[]Motives
[]Honesty
[]Patience
[]Humility
[]Productivity
[]Dependability
[]Temper
[]Attitude
[]Facts
[]Goals
[]Planning
[]Boundaries
[]Proper Thinking
[]Common Sense
[]Prosperity
[]Emotions
[]Sowing
[]Direction
[]Correction
[]Conflict
[]Pressure
[]Criticism
[]Judement
[]Confrontation
[]Forgiveness
[]Ethics
[]Ownership
[]Ambition
[]Listening
[]Co-Signing
[]Responsibility
[]Debt
[]Saving
[]Developing People
[]Understanding People
[]Inspiration
[]Influnence
Measurement leads to success.  If you can't measure it, you can't control it (notes)
Effective system include application (notes)
What looks like a people problem is often a situation problem (notes)
To change, you have to change the persons situation
self-control is an exhaustible resource
What looks like laziness is often exhaustion
What looks like resistance is often a lack of clarity.
To change you must provide crystal clear direction.
Mis-allocation in abundance leads to scarcity. (notes)
Scarcity requires being right all the time and the consequences are devastating.
Pain and pleasure are the driving factors of all change



Links to all notes are private.  Should the notes become interesting, those will be posted at some other point. 

Wednesday, April 10, 2019

monitoring applications

Part of a decent monitoring scheme is making sure business critical things are running all the time.  PRTG and powershell are a great way to do that.

$errorFound = $false


try
{
    if( -not (get-process -ProcessName "blah" -ErrorAction 'silentlycontinue' ))
    {
        throw 
    }
    $textVal = "OK"
    $errorFound = $false
}
catch
{
    $errorFound  = $true
    $textVal = "blah Not Running"
}



write-output ""
write-output ""

write-output "blahProcessRunning"


"Status"
   

"1"
"1"
"
"     



if($errorFound)
{
    write-output "0"
    write-output "1"
    $textVal = "blah Process not running." 

}
else
{
        "0"
        $textVal = "OK"
        "1"
    
}

"" + $textVal + ""
write-output ""
write-output ""
write-output ""

write-output "BlahProcessRunning"


"Status"
   

"1"
"1"
"
"     



if($errorFound)
{
    write-output "0"
    write-output "1"
    $textVal = "blah Process not running." 

}
else
{
        "0"
        $textVal = "OK"
        "1"
    
}

"" + $textVal + ""
write-output "
"

Note: Blogger as far as I know is doesn't have a good way to post full code.  So there's a bit more to it than this, but it's all opening and closing brackets. 

Ok, so there's all the code.  Most of it is pretty dull.

The heavy lifting is done by the get-process ProcessName "blah" section.  Which is pretty self explanatory.  Works great when the process happens to be running.  The problem is what happens when the process doesn't run.

When it doesn't run, you get red powershell text.  Which is what we don't want. Adding -erroraction "silentlycontinue" gets rid of the error text.

But now it fails and doesn't tell us anything.  Also not what we want.

So try-catch.

Which doesn't quite properly work.  It doesn't give any output at all.

The answer was the if(-not ((process)) ) bit followed by the {throw}

So, if you get some sort of failure, silently continue and throw an error.
Which the catch picks up.

And now we've got some nicely formatted text that changes based on whether the process is or is not running.  And with business critical processes, that's what you need.

Now, get-process dumps a lot of interesting data that you could feed back to PRTG.  Frankly, I wasn't that concerned.  I just wanted to know whether the process was running.

As for install procedure, let's not skip that.

Install a PRTG remote probe.
Drop this file in the CustomSensors\EXEXML directory.

Change the policy for the x86 version of powershell to unrestricted.
Or sign the code with your own code signing cert.  I don't know how to do that.  So  I go with the first.

That's in c:\windows\syswow64\windowspowershell\1.0\powershell.exe

Not the same one as opening a command prompt or searching for powershell.exe.

So there you go.  Alert as your company dictates and or want.

Saturday, February 16, 2019

Thoughts on the c-store

So as working in a c-store is vastly more complex than you'd think, I guess it's time to cover the technological fun of dealing with what's in a c-store.

The primary things everyone thinks of is the point of sale.  Point of sale is an important point, but not the only thing.  In general, most point of sale systems end up having a server, and 1-2 terminals.  On top of that, you have some sort of device to handle the fuel controller.  Sometimes those are IP based, sometimes not.

In the modern arena, you also end up with network connected pin pads...   If we were making a list, we'd have..
1 )POS router
2) POS switch
3) POS controller
4) POS terminals 1
5) POS pin pad 1
6) POS terminal 2
7) POS pin pad 2
8) Fuel Controller

I'd always recommend 2 POS terminals.  Why?  Because if one goes down, all your in store sales are down.  And most of the money made in a C-Store is not out at the gas pump.  The gas pump is just a driver to get the customer inside the store.  In any situation, 2 is 1 and 1 is none.  Redundancy, redundancy, redundancy.

So, we've got the money maker down and out.  Problem is, you still don't have a primary network connection for all the rest of the stuff.

Now, people have tried to merge the POS router into the site level router.  That's a bad idea.  The purpose of the point of sale router is to segment all the money making from the rest of the system.  It's not good to try and merge all that together to save a marginal amount of money.  Don't scrimp on the main things.  Get a good router/firewall and probably the vendor specific point of sale router.

While we're talking about site level routers, you need a backup credit card solution.  I recommend cellular.  Phone dial-up has grown worse and worse, and is generally unsupported decently.  Cellular signal is generally pretty okay, and running a small 300 MB data plan just for backup credit card traffic is well worth the cost.

The cell backup might run you $100 a month.   Realize in one network outage that lasted 3 hours, a large size store can run $500 in credit card traffic.  One outage more than pays for the cell backup for the next several months.

So, we're also going to need a site level switch.  That's to plug all those other devices in that have nothing to do with processing money.  It's all in the automation and scaling.

9) Site level router
10) Cellular backup device
11) Site level switch
12) Site broadband connection

I glossed over the site broadband connection because that generally depends on what you've got in the location.  Large cities will have a great cable modem system.  Small ones you deal with what you can get.  Your needs dictate.  Other than AT&T DSL, I've never had any real issues.  All generally run the same tech and have the same stuff.

My problem with AT&T DSL narrowed down to the inability of them to provide a static IP with unfiltered network to form VPNs.  It's home service for home users.  Anyways...

Now that we've got the primary network setup and the POS running, we've got a system that will work. 

Now all the other things in the store that have nothing to do with making money, but do.

13) Alarm system.
Assuming your store is going to close, you're going to need one.  Most of the one's I've dealt with borrow a port on your network so they don't have to pay for their own.  Cuts your cost a bit.

14) HVAC system
The modern HVAC system is nice and network connected.  So the maintenance team can get alerted when those pesky coolers fail.  And that gets expensive when you lose all that product.

15) Remote power systems (multiple)
I'm primarily talking about devices made by Digital Loggers, Inc.  They are a great company, and make a great product.  So what's the purpose of this thing, and why do you put one (or more) in your locations? 

Ever had to drive several hours just to pull the plug on a device?  Ever hated that?  Ever wanted to do it from the comfort of your desk?

Buy one of these things.  Or more than one.  I put one on every single terminal out of town.  Rebooting a device once generally pays for the travel/time cost of one of these devices.

16) Back office computer
This might be the only traditional computer on site.  Purposes are handling paperwork and ordering.

17) Side bar devices
These are all those stupid little terminals to implement things the point of sale doesn't.  Checks processing, food stamps, money orders, and gift cards.  They junk up the counters and make small amounts of money.  But everyone has them.

18) Printer
A good multi-function network printer is well worth it.  Outsource this sucker as best as possible, and save your IT.  Printers are a mess.

19) NVR/DVR
The device I don't like the most.  Probably because of the expectation of what the DVR is good for.  The purpose of the DVR is for after event examination.  It's not for stopping some kid stealing candy.  You are not going to stop that kid by staring at a tiny screen.

20) DVR POE switch
To power all those cameras that cover everything from the fuel island to the junk isle.

21) Tank Level Sensor
Used to monitor the underground fuel tanks.

22) ATM
In the c-store world, you need to be in the ATM business.  It's not complex, it's not expensive, and it makes decent money.  Throw it on cell backup, and then when the rest of the world is down you can still have people pulling their money out at $2-4 dollars a hit.  Fill the ATM with $20s out of your deposit, and you don't even have to pay separately to fill the ATM.  It's win-win-win. 

23) Battery backup
You need a network connected battery backup.  It doesn't do any good to have a battery backup on your major system and then not even monitor it.  Crazy.  But that's the mentality of many people.  We'll go into that one on a later date. 

24) In store music
Those blaring, pre-built playlists interspersed with your own custom ads make for interesting stuff.  It can either be great or horrible.  It also lets you control the type of music that is played in your store.  Don't like country? Then you'll probably hire an employee that brings a boom box and plays it way too loud.  The same can be said for any type of music or talk radio.  Pay for in store music and control the experience.  It's probably not going to make you much money, but it will give you a unified experience across your chain.

25) In store media
Paper menus are out-dated.  You can do it all with a raspberry pi, piSignage, and a TV.  It's also dirt cheap in comparison to some of the other options. 

26) Gas price signs
These generally don't have a network connection, and integrate directly with the point of sale.  But it's another piece of electronic that needs to be considered. 

27) Safe
I hate safes.  I really do.  I don't think they should be managed by IT departments.  But I do, and I hate them.  They are a necessary evil of the system.  It's the best way to store the money prior to pickup by armored car or before it goes to the bank.  Even if the IT department doesn't manage the device, it's likely the thing has a network jack.  Which means you need to network it and fight with the safe tech that doesn't know the difference between DHCP and DNS. 

Come to think of it, that's most point of sale techs as well. 

Anyways.

That's a separate argument.

So I think that about covers what is in the normal c-store.  Realize that's 27 devices, but could easily be 35-40 without IP cameras. 

How?  I put at least 4 WebPower switches in every out of town location.  So there's 30.  Add another few side bar devices (checks, money order, food stamp, gift card) and you're up to 35 and quickly.

Add the IP cameras, and you've got 60+ network connected devices in one location. 

That's a lot of network for a place that sells cigarettes, beer, and gas.

Monday, January 28, 2019

Waffles

Waffles. 

So...  At some point in my life, I picked up the connotation that a waffle was a person who couldn't make a decision.  I have no idea where that came along.  I think I've also added a secondary meaning in that a waffle is a person who won't get to the point. 

Generally, I use it as a verb. 

Usage: Bob needs to quit waffling.

Urban dictionary agrees with me.  So I must have not been the only one who came to that conclusion.  Either that, or I picked it up somewhere. 

So I've been listening to a lot of Librivox as of late.  Librivox is a collection of copyright free books read by people.  Some are good readings, and some are terrible.  It's a crap shoot, really. 

I've been going through "The Book of the Damned" by Charles Fort.  Generally, I'm okay with listening to strange stuff.  But this guy just won't get to the point.  He basically goes on and on about nothing.  He waffles with the best of them.

I'm going to finish it.  But I'm going to do it at one chapter a day, but his "nothing is truth" spiel gets real old real quick.  On the plus side, the reader isn't a monotone. 

It's humorous, though.  People like him populate the work force and life.  The Internet is full of discussions like this.  Firefox pocket seems to be full of them.  Maybe their just the right level of click bait to get hits without ever purporting to solve the problem. 

I read one a few days ago about someone saying people should eat more meals earlier in the day.  And the end result was the suggestion that big government intervention was the solution.  "Solve poverty, and all these solutions solve themselves." 

No.

No they don't. 

Because poverty as currently defined is not "solvable". 

The current definition of poverty says the bottom X percent live in poverty.  So if you are in the bottom X percent, you will always be in poverty. 

You may have a million in the bank, and be eating high class meals every single day.  But because you are at the bottom in comparison to everyone else, you are in poverty.  No matter what you do, there will always be a bottom X percent. 

The answer "solve poverty, and you solve the other issues" is also in direct contradiction to the work done in Switch by Chip and Dan Heath.  They suggested that throwing money at the problem wasn't going to solve anything.  The best answers are small answers. 

The size of the solution doesn't have to match the size of the problem.  A good solution is almost always well smaller than the problem we perceive. 

Rearranging the diet of a bunch of Vietnamese solved their malnutrition issues without large amounts of government subsidies and financial spending.  There was no multi-million dollar solution with a super giant government study. 

Just a guy with a clip board and some questions, asking where things were succeeding.

That answer is too simple.

See... many solutions are like that. 

Me?  I'm opposed to a so called "living wage".  Not because I think people should be broke.  It's because the inbred fallacy that assumes if you start paying people more they will start making better decisions with their money.  A person broke at $8 a hour will be broke at $80 an hour.  The person didn't change.  Just some number that values their work.

The problem is not the amount.  It's the person. 

The wants of any individual are infinite.  The income of any individual is finite. 

All of your wants are not going to be met.

No matter how much you make.

Period.  End of story.

Even billionaires have limits to their wants.  They may be trying to solve bigger, more complex problems.  But their is a limit to what they are capable of solving.  It's simple math. 

Elon Musk is a billionaire.  Still can't do everything he wants. 

Maybe a lot of cool stuff.

But wants are always infinite.  And they always will be.


Thursday, January 24, 2019

Can't Commit: a short story about dating


It's a bit dark.  The teachers always said don't start your work with weather, but I'm going to anyways.  Does dark constitute weather?  It's definitely a condition.  Like maybe they didn't want you to start with weather because it's easy to evoke emotions.  And yet they do the exact same thing most of the time in their school work.  It's all pain and misery and dark and stormy nights.  

Maybe it's a trope, but let's face it: most people don't read anyways.  Like half the world can't read in any language.  And the other half hasn't picked up a book since they left the public education system.  So really, you're dealing with about 30 people declaring what you should and shouldn't do in writing, because they are tired of reading "that kind of book".  It's such a terribly small portion of the population, you might as well do what you feel anyways.

Of the people that are left, and there's maybe a couple of million of them out of the trillions in the world, less than one percent are going to buy your book.  So we've gone from a trillion people down to a million, now down to 10,000.  Of those, only about 25% are actually going to make it past the first chapter.    So now we're down to about 2,500.  Of those, 85% are book critics.  They are the kind of smarmy people who declare in worlds what the rest of us should do.  They make dictates on high about what should and shouldn't be done.  And it's not like they are any better people than those 375 that are left.  They are just people.  

Unless they've had the book judging app added to their brain stack.  If they've got that, then they are different.  And not in a good way.  Straight up weird people who should probably quit buying major app enhancement stacks for their brain and, you know, do something.  But that's a lot of people.  And these are just the critics in the world.  That's what they do.   

But of those 375 left, I'm sure they don't care.  They didn't spend that extra 20 large on a book judging app for their brain stack.  They just want to kick back and enjoy the story.  And they are willing to give you at least a part of their day.  Maybe some.  But then is it the right genre?  Because you can have hard science fiction and that's only going to appeal to those hard science fiction people.  Those science fiction camps like to stay apart and fight giant meaningless flame wars on the Internet about how one genre is better than the other.  And then most of them are now gone.  Who's left? 

Just my editor.  And frankly, they stick around because they are getting paid.  And that's just as good a reason as any to stick around.  Except my editor is now getting up...  and giving me the middle finger...  because she hasn't gotten paid.  Because I'm an author, and she only gets paid when I get paid.  And I haven't gotten paid, because I haven't finished the story.  So now that there is no one left to care about how I start a story, I'm going to start it how I want.  I'll show them.  They'll see.  

It was a dark and stormy night.  Upgrade nights always are.  For some reason, when you need to do some complex task it seems like the world decides it's the best time to find a big slopping pile of mud to throw at you.  You know the kind of night where you'd rather lie in bed and wait for it to all be over?   No.  Guess my bed is more comfortable than yours.  Maybe you should think of getting a new bed.  

But then, my bed isn't that new anyways.  Had that thing since the end of college.  It's worked it's way through a good many nights, let me tell you.   And quite a few girlfriends.  Probably two dozen of them if I had to guess.  Which isn't a bad number.  But the bed is a bit used.  Maybe I should think of getting a new bed.  Especially after that one girl.  She used to use the thing like a trampoline.  Maybe that's why there's a spring starting to point through and poke me in the back.  

On second thought, my bed isn't all that good.   But I'd still rather spend time there rather than go out in the middle of the night during a rain storm to upgrade a firewall.  It's just the way it goes.  At least there wasn't any lightning.   I was on an upgrade one night and lightning hit the transformer next door.  So after my heart landed back in my chest following the gigantic explosion I sat there and watched as a all the equipment in the room slowly died as the battery backups failed.  It was a sad little symphony of beeps and boops, slowly fading away until you have this one final battery backup that just won't give up the ghost.  It was doing it's best to keep the system running, but it was just not making it.  The beep got sadder and sadder, and then finally gave up.   

And I decided I had to pee.  And realized I was behind mag-locked doors that failed closed.  So I couldn't leave the server room to go pee because the power was out.  I would have liked to go home, but that was not going to happen.  Luckily, I made a few calls and got the maintenance team to figure out what was wrong with the emergency generator.  Once they had that thing fired up, the lights on the room turned back on and I made a run for the door.  It was like the pee of the gods.  It lasted forever, and felt like I was losing a bit of my soul down the commode.  But I did feel a lot better after that. 

My girlfriend was mad because I told her it would probably only take an hour to get all this stuff back to working, and I didn't get back home until quitting time the next day.  Electronics get mad at you when you turn them off in the middle of an upgrade.  They do not like it at all.  It took me a good bit of finagling to get that one back in operation.  I kept running into some weird "can't commit" error.  I don't remember the whole thing.  Just that part.  We rolled back and forth between different versions and different configurations probably fifteen times before I finally stopped and started looking at different stuff. 

Even the remote support guy was confused.  He didn't really want to tell me there was a bug in the system but I'm pretty sure there was a bug in the system.  And it was a nasty bug.  I guess I was the guy who found the nasty bug, as well.  So they kept having me try various things to hopefully get this broken box back to working.  And I was getting mad because I was camped out in the server room with a laptop, having to type all these commands.   Typing is so much work.  I mean, VR interfaces are so much better than typing.  And it was a bunch of "show interface all" and no GUI and handles to torque and adjust in the v-space to make things work.   No nice green lights and red lights and checklists.  It was all "show interfaces status" and reading long lines of cryptic output, trying to figure out why the system had decided it didn't want to do what it wanted. 

And the darn thing gave me a so many random errors that meant nothing.  "Instance of an object could not be referenced" doesn't even mean anything.  It's just a bunch of words all crammed together, pretending to be English and not really saying anything.  It's like the people who wrote this stuff live in some strange archaic world with their own words and the rest of the world doesn't mean anything to them.  They're so obsessed with writing their code and keeping their language separate and out of the light that they make sure everything has about fifty different references to things only they understand.  I mean, where in the world did I learn about pointers other than grade school?  No wonder them programmed types are all so weird and squirrely and don't have any good relationships with the rest of the staff.  

But it was always the same error with that firewall.  "Commit failed" over and over again, with no real indication as to why.   Maybe if someone had said "look, you: we redefined how we reference the pan global networks, so your old IP version 6 address  scheme isn't going to work anymore. Don't you think it's about time you moved to IP version 9?"  But no... just "commit failed" and "object reference not set to the instance of an object".  Just some random collection of errors that mean nothing to no one and cause the rest of the world to pull their hair out.  

And don't get me started on IP addressing.  I mean, why do we have an IP version 4, version 6, and version 9.  Whatever happened to version 1, 2, 3, 5, 7, 8, and 9?  No one knows.  All the data in the world stored all over the place in blazing fast networks that can pull down the entire Library of Congress in less than a minute, and you can't tell me what happened to all those different versions of IP?  Not a single person in the world could tell you.  They just disappeared into the aether.  

Yeah, my girl was pissed after that night and a day at work.  She was mad at something or other before I left.  Said I wouldn't show up for her functions to save my life, and she was probably right.  Her functions started off as interesting.  We'd go clubbing and then out for a few beers and it would be great.  We'd dance and have fun and have a few laughs.  And then those parties left and it became wine and cheese tastings with "good and proper" people who talked it super pretentious accents and talked about their 401k's and the state of the global pan-dynamic movement.  I have no idea what the global pan-dynamic movement is.  I think it has something to do with people who are bored at wine and cheese parties.

But anyways I made it home and she started yelling at me because I had to work.   And I tried to tell her it was a dark and stormy night, and nights like that aren't good for upgrades.  And she just yelled back and told me to quit worrying about stupid cliches.  She kept droning on about needs and responsibilities and all sorts of nonsense like that.  And I was not fulfilling her needs as a fully expressed woman.

And I kicked back on the couch with a beer and told her I don't know what a fully expressed woman was.  And as far as I could tell, there really wasn't much difference between a fully expressed woman and whatever the opposite was.  Maybe I should have waited for her explanation was about a fully expressed woman, because that sent her on some sort of other tirade that didn't mean anything.  

She kept using these words that mean absolutely nothing but sound interesting when you drag them all together.  And she kept droning on, and droning on.  So I got another beer.  And another.  And then she asked me a question and I didn't hear her because I wasn't sure if she was still talking to me or to someone on the phone, so I had turned on the TV and started watching the game.  

And she finally looked over at me, and started screaming and stormed out.  Guess I'm glad we never completed the full move in thing with her.  Not with her droning on and screaming while I'm trying to have a beer and watch the game.  It just wouldn't work.  Too noisy.  So that was the end of that relationship.  I tell you, it just doesn't work like that.  So much for that relationship.  I decided it was just about time to move on with that girl.  She decided she needed to be a fully realized woman.   I still don't know what that means.

A few weeks later, I was dating some girl I met at the bar who happened to be a friend of a friend of someone I didn't really remember.  Which was great, because I got to bring up random stuff to try to remember who this person was, and the girl would fill in all the details I needed.  I asked her what a fully realized woman was, and she couldn't tell me either.  She talked about a lot of stuff, but pan-global dynamics and fully realized people was not them.  It was great, except she didn't like upgrade nights either.  

About that time, we changed out some servers and had to get them up and running.  And these servers were quite possibly the most cantankerous servers I've dealt with in years.  Something about the IPv9 stack they coders had written.   Coders!  They still drive me up the wall.  And this time they kept adjusting the stack range and size.  I'd drop a DLL in, reboot the system, and she'd crash.  So the developers blamed the firewall, and the firewall guys blamed the server guys, and it was some giant 15 way circle jerk that never went anywhere.  And some point in there, the girl who knew someone called because she was bored at home.  So I decide it's time to finish this thing off.  So I did what any logical person would do: vendor thunderdome.  I got them all on the same party line, and then they got to argue with each other instead of me.

Now I have to admit: vendor thunderdome is just about the most fun you can have in this job.  After hours and hours of people passing blame and telling you how the entire thing is your fault and not theirs, they get to argue with the guy who they were blaming the problem on.  And suddenly that air of "it's not my fault it's yours" leaves and you end up with some amazing conversation as people work through the strangeness of their own systems.  

And while these vendors were arguing between each other and actually starting to solve the problem, the girl kept calling.  So I added her to the line.  And it got really awkward there for a few minutes as she went on a tirade.  And these vendors were all just awkwardly talking to each other trying to solve the problem.  And the girl finally hung up the phone.  And the vendors got back to jabbering along as I pressed buttons and told them results.  I broke up with that girl once I got home.  

She started giving me an earful about how I made her look stupid and why was I being such a jerk and all sorts of other things.  And I told her she was a crazy and needy and I needed some space.  Which was my polite way of saying get out of my apartment.  But she didn't get that, so I told her we were through.  She ignored what I said for a good ten minutes.  Then I started chunking her stuff into the hall.  Sorry, I'm not dealing with some crazy lady that can't let me work when I need to work.  I've got bills to pay, and when it's time to fix a problem I'm on the job until the problem is fixed.  Otherwise they fire me and then I don't get to buy beer and watch the game.  And that's just not going to happen.

So yeah.  That one was over.  About that time, the company decided to put in a new phone system.  Probably the most complex over wrought thing I've ever seen.  Took four servers just to run it all.  Considering the complication of it all, it probably should have cost us about nothing.  But that didn't happen.  It was huge, and expensive, and complex.   And the company hires these people to come in and run all the cable, because hey, we've got better things to do that run cable.  Except they were terrible at the job.  Just terrible.  I may not be the most motivated person in the world, but I like to at least do a decent job.  Prevents me from having to do the same job over again when I go ahead and break what I did the first time.  I like doing things once, and then leaving.  One night stands are the best.

So, when I could have done the job myself instead I spent my time chasing these cable people around.  I had plenty of other things I would rather do, but this one girl they had was pretty cute.  Purple hair and big boobs, and sure, she was a bit chunky.  But not badly.  She was good to look at, and she liked to laugh.  So while I was teaching them how to run cable and do it the good and proper way, she and I kept talking.  And we talked a lot.  Somehow, I kept ending up one the group with her.  We had plenty of time to talk, and the more I talked the more she seemed like a pretty decent girl.  So near the end of the job, I got her number and asked her out on a date.  I got some job about how she wouldn't date anyone she'd ever met on the job.  And I told her that was fine, but she needed to lower her standards or tell me where she hung out and we could meet there.  

So that line worked great.  It's not the fanciest line I've used, but I have to admit it got her to give me the address of her favorite bar.  So we ended up there.  And we talked for a bit, but there wasn't much of a game on.  And we tried to play pool, but I'm terrible and she's like the shark at the game.  Either that or I'd had way too much beer.  Probably too much beer.  But I digress.  I think it was half price pint night, and I'm a sucker for half price pints.  I can buy twice the amount for the same amount of money.  Whoever came up with this plan was either completely loaded or a genius.  Either way, I spent a lot of money buying beer.  But I would have spent a lot of money on beer anyways.  

At some point, we staggered home and fell asleep on the couch watching old TV shows.  We didn't even do anything!  It was crazy.  But then we woke up in the morning with terrible hangovers and no good excuses, so we gave ourselves one.  And from then, we were pretty inseparable.  She was fun to be around, and liked to drink beer and watch the game.  What could possibly be wrong with a woman like that?  And then I ended up with a triple on call and she never went crazy when I didn't call her.  It was the strangest thing.  I've never met a woman like that.  It was weird. 

After a few months, all this crazy talk started going through my head.  Like this girl was the one and I was going to marry her and we'd settle down and have a beer and watch the game and have some children and do all the normal family type stuff.  Maybe it wasn't so back.  But my mind went back to that stupid firewall that kept saying "can't commit".  Here I finally had a girl who wasn't a bunch of strange commands and lines of stuff that doesn't make any sense.  Here was a girl that actually made sense.  Why not?   Why not hit the button one more time and see if it finally commits?