Friday, September 11, 2015

Circling the globe (the thoughts in my head)

I went on vacation this last week.  I didn’t spend any time working.  It was wonderful.  Now, it’s Saturday and I’m back to getting ready for work.  The mental processes are starting to grind away, and get back to what I was working on.  At the moment, I’m updating Visual Studio so I can work on the program I was writing in C#.  I know I’ve heard a lot of disparaging things about C#, but I’m not terribly concerned.  There are too many purists in the world. 

C# is a tool.  Nothing more.  If it’s not the tool you need for the job, then don’t use C#.  C++ is a tool.  Java is a tool.  Visual Basic is a tool.  They are all tools.  Nothing more, nothing less. 
Each tool out there has a specific use, and some tools are better for certain applications.  I can’t say C# is any better a tool than Java in this case, but it’s a tool I can manipulate easier.  I also spend a lot less time fighting the interface and more time working on what I’m interested in working on.  As such, the thing already reads XML files, runs threads, and generally works like I want it to.  It’s not complete by any means, but it’s on its way there. 

In the period since I started writing this (it’s been about a week) I read Seth Godin’s Small in the New Big.  It’s quite a remarkable book, and there’s a lot I’d like to say about it.  I’m really not sure what to say, though.  There truly has been a paradigm shift and in the world, and those trying to follow the old paradigm seem to be getting left behind.  It’s much easier to follow the new paradigm.

But what is the new paradigm?  I think the answer is release early, release often, and benchmark everything.  Quit trying to make something perfect, and make something you can release. 

So I think I’m going to go with that, and make something I can release.  I’ve already started working on it, but it’s neither groundbreaking nor amazing.  But it’s something. 

When you release often, you end up basically throwing a lot of stuff up, and hoping some of it sticks.  I’m not sure if that makes sense, but it does to me.  If I release something in the next month or so, then I’m doing better than I have in the last few years.  Too much thinking and trying to come up with the perfect idea.  Too little time releasing. 


I think I also realized the background for the past few months (maybe a year) has been chemistry related.  I like the picture, but this has nothing to do with chemistry.  I should probably change that.

Wednesday, August 26, 2015

C# this time, and Lua

Well, after a bit of digging, I'm back into C#.  I'm looking at that because of the need to examine the current status of a network.  And I had something like that built in VB.net, but i couldn't figure out threading.  So the program didn't play nice or update very well.

Well, I found a few webpages and figured that out.  This post on dailycoding.com was one of them.  That really helped get the ball rolling, so now I can run a ping function in the background and invoke updates to get things changed during program execution.  I'm guessing that I finally learned something out of that one because the code had been stripped down enough to where there wasn't a huge collection of extemporaneous junk that needed beat past.  Is it that hard to write code documentation that gives basic understanding without having to reinvent the wheel?

Which brings me to Lua.  I started using some products from Digital Loggers.  Basically the Rack Mount AC PDU.  It's a great product with a great concept, but changing from Basic on the Web Power Switch to Lua on the Rack Mount AC PDU causes havoc.  All the scripting type stuff that used to be easy with the Basic scripting language now has to be rewritten from scratch.

Did I mention you have to fight past bad Lua documentation?  I'm not necessarily saying Lua has bad documentation.  I'm saying Digital Loggers implementation of Lua is a pain.

For example...

function test_display()
    DISPLAY "\1Percent %%\v"
    DISPLAY "\2Backslash \\\v"
    DISPLAY "\1%a\v" --  current Bus A

This is an example of some code provided to change the display.  

Great.  Can someone tell me where the variable name is in that code block?   I know the -- blocks are comments.  DISPLAY is a command to show something on the display. Got that working.  Great.  

Secondly, on the script bit I know the line \1% indicates the first line, and anything afterwards is printed out.  But where is the variable?  

So if I want to put in a wait function, and then display on the screen "rebooting computer", I have to write individual reboot functions for every single device.

I could just write a wait(time in seconds, device name as string) function and call that whenever I needed.  But as is, it looks like I'm having to write inline functions.

Joy.  That defeats the entire purpose of object oriented coding and complex scripting languages.

Thursday, July 30, 2015

More Programming

So.  After a bit of time away, I finally had some time to work on programming.  I’ve been working on the idea of a program that teaches speed reading.  Essentially, the goal is to present words to a sentence faster than the subject can normally read.  Sounds like a great idea, right?  Except that Java isn’t really a real time system, so getting threads to sleep for 240 milliseconds just doesn’t work.  That would equate to 250 words per minute reading pace. 

What I end up getting is entire lines of the text, in speeds that are considerably less than 250 words per minute.  Though… a little messing and reading made me realize my conversion factor was off.  It seemed like the answer should be…

(1000 milliseconds X 60 seconds) / (word per minute pace)

I revamped the equation to take a different method.  I think I was running into too many float to integer conversion errors.  Or at least that’s what I’m going to blame. 


But it looks like Java can’t do that kind of precision in waiting.  Googling lead me to a lot of the same answer.

If the speed is slow enough then the pacing works correctly.  But it looks like either 1) Java isn't capable of printing 1 piece of string at a pace of less than 300 ms, or 2) I'm not a capable enough programmer.  

So, that's that.  Perhaps it's time to go back to looking at C++.  

Saturday, July 18, 2015

On Call

Part of my unofficial job title is trying to figure out how to solve fundamental problems.  Fundamental problems are those that cause a collection of other issues.  One such issue is replacing the battery pack in a Ruby.  Replace the battery pack, and then you have fewer boot fix issues.  Getting rid of Buypak 6.00.06 seems to be one as well.  Maybe Buypak 6.00.10, too.

Anyways, solving those kind of issues involves a lot of thinking and some decent analytic software.  We use SysAid for our helpdesk/ticket management software.  It works pretty good.  Anyways, looking at categories of service requests is hard when you have serial offenders of people who don't categorize or assign service requests.  When you've got 100+ open service requests, and around 60 haven't even been given a category, it's hard to deal with the real issues.  With that many open service requests, it's hard to even identify where the real issues are.

I guess I'm used to using intuition and on calls to figure out where issues really exist.  On call is a special time.  I'm not going to lie.  Most of the time, they suck.  It's a soul grinding time of 60-70 hour weeks of nothing but pure panic level.  Everything is a crisis and the world is always falling apart.  Very few of the crisis are real crisis.  But it's a necessary evil.

Almost every on call teaches me something.  Moving in towards network administration, I get less of the day to day breakage and problems that occur.  In many ways, that separates my time away from crisis to solving bigger problems with longer term solutions.  But it is hard to solve long term problems if you don't know what those problems are.

Its fundamental root problems that need solved to really make a difference in the amount of service requests.  If you don't solve those problems, then you don't decrease the work order load.  Is the issue training?  Or is the issue user error?  Some user error issues can be traced to training issues.  Others can be traced to bad software.  It's a matter of figuring out which is the real issue.

What does anyone else do to solve fundamental issues?  What about on calls?

Tuesday, July 7, 2015

Antiquated, Arbitrary Systems

I home school my children.  Why I do that is a subject of a different post.  The subject of this post is to understand the contrast between public, private, and home schools.  It is fairly obvious to me that public schools as we know it are a way of the past.  The need to learn more material at a faster rate needs better methods of teaching that are more reproducible.  The herd mentality isn't going to work as a system much longer.

Think of the average public school.  You have a collection of subjects taught in a micro landscape with no tie to the rest of the world.  Secondly, you have students at differing levels of interest being forced in with those students who have no interest.  Third, you have an arbitrary knowledge level system that forces every student, regardless of ability, into a group.  Tackling these issues has been something home schooling has never had to deal with.

And before I move on, class size doesn't matter.  I had a high school size of 140 and no class I took had more than 20 people.  And yet there were still people who passed high school barely capable of reading.

Now, I'm thinking the answer is going to be a combination of software and hardware.  Software provides the basis and the consistency of the system, while hardware produces the interaction.  Would an hour of class be as bad if the student spent their entire time standing, working on the board?

Secondly, you could have the program tailor itself to each individuals skills and abilities.  No more passing because the teacher just doesn't want to deal with you any more.  Computer programs have infinitely more patience than the average teacher.  The converse to that is now the gifted students will move at the pace that keeps them challenged as well.  If they learn a subject in five minutes and can prove competence in the next twenty, then there would be no need to keep going on for another fifty minutes.  Move on to the next subject so that gifted mind can keep up.

And when the mind hits a roadblock, the system slows down and doesn't let them move on until they have mastered the subject.

I think I envision the next generation being raised by computers in individual rooms or cubicles.  The teacher still exists in this environment, but their purpose is to help frustrated kids and give the hands on approach to the child that needs it.

I know the system we currently have does not work.  That's quite evident.  So the goal is to radically redesign the system to something that does work, and is reproducible.

I also seem to remember something years ago that stated Algebra was a college level course.  And now, it's a junior high course.  If you want the next level on movement, you have to get more people up to a higher level learning faster so those people can spend more time with the requisite knowledge to figure out the hard problems.

Sunday, July 5, 2015

post CCENT

I passed the CCENT.  Grading criteria was between 300 and 1000, and passing was 803.  I scored a 907.  Hooray for me.

The test was copyrighted 2013.  There was a lot of subnetting through out.  Not much IPv6.  There was four question problem on OSPF.  Another was on security settings.  Which reminds me.  I need to test one of the configurations they performed.  Because I think I know the answer, but I don't know if I was correct or not.  

I guess now on to something else.  Back to studying the stuff I've been studying.  I'm currently reading Simple Nature by Benjamin Cromwell.  After that, it's on to Mechanics and then my study of physics takes a temporary break.

Other stuff I'm currently reading include The Book of Five Rings by Miyamoto Musashi.  After that one is finished, it's off to The Hacker Playbook by Peter Kim.

There's an entire list of books after that, but that collection will keep me good for several days.

Remember: people don't grow without intentional effort.

Wednesday, July 1, 2015

As the world burns...

The world burns.  I study. 

I’m concerned with Dora (Discover, Offer, Request, ACK) the DHCP explorer and her friend Bubu  (broadcast, unicast, broadcast, unicast) and learn on source, forward on destination.    

Open suckiest path first:  Hello, dead beat dad.  Losers suck right?  Losers suck up.  Ack.  (link state packets for OSPF.)
Basic ACL near destination
Extended ACL near source
Deploy access class to limit access to console
Default information-orginate
Ip helper-address


I’ll know Thursday if I pass.  Wish me luck.