Monday, November 14, 2016

A Base-64 Decoder That Works!

Let's face it...  debugging ASP.NET production websites can be challenging.  HTML sessions are 'stateless', meaning from one post to the next, the server has no idea what post came first.   For example, let's say there is a website that prompts the user for their name on one page, and on the subsequent page the user is prompted for their address.  Well, the server has no intrinsic way to join the data together from those two pages to save it all in a table somewhere.

Web scripting language use various methods to store this state information.  Some use cookies to store the data from one page to another.  Some use a unique key, placed into a cookie, or in the URL as a parameter to retrieve the data from an internal 'session store' on the server.  ASP.NET can save the session state several ways.  One way to save part of the session state is in something called a ViewState.  This is basically the state of a page; just part of the entire session state.

Well, this ViewState is stored right in the web page as a 64 bit encoded string.  It's not encoded but definitely looks that way.  It's unreadable without a decoder.  Anyway...  If something is stored in the ViewState, programmers can have a bitch of a time trying to pull it apart and see the data.  But...  This information can be invaluable to debugging a production problem.   There are varied ViewState tools on the web for decoding this gobeldygook into something that is somewhat coherent.  I use Base64 decoder and encoder at motobit.  It's simple and works.

Wednesday, November 9, 2016

So, Trump Is Our President

What the hell is this company coming to???  Think I will create a series of these...  Share as you wish.  Some may not be safe for work; you have been warned!

Sunday, November 6, 2016

Simple Is Still Simple

Yes, contrary to the conventional state of technology and computer programming, simple is still simple.  Well, at least it should be.

Quite frequently I read different articles about programming in an attempt to maintain professional relevance.   Some are well written articles on good programming techniques.  Some are poorly written but the core material is still good.  Some are well written pieces about some fluff fad and then there are occasionally the poorly written article about some programming technique or library or concept  that has 'bad idea' written all over it.

Monday, October 24, 2016

Solution to DDOS Attacks from the IoT

Last Friday, October 21st, the company DYN was the recipient of a rather massive DDOS (Distributed Denial of Service) attack.  Companies and tinkerers won't like this simple solution because it causes them to do a little extra work.  If this potential solution doesn't solve the problem, it would certainly mitigate it.

It's simple.  For those old enough to recall free AOL disks, remember how many included an account password printed on the CD/disk case?  Well, the same thing could be done for IoT devices.  Manufacturers of these things could simply print two random English words on a label and stick it on the IoT Device.  This password is burnt into the device as its factory default.  There is no standard factory default.  Let's face it...  The bulk of people using and installing IoT devices either don't know there is a password on their new-fangled refrigerator, or they just don't care to change it.

Seriously

water-wood
january-carolina
protien-curious
wrecked-quipped

These passwords would be so much better than admin or system or the ever-popular password.

Tuesday, October 18, 2016

Mouse Peep in a Snow Storm - or - How NOT to Operate QRP

So...  On last Sunday (2016-10-16) there was a little ham radio contest called the "Illinois QSO Party".  Yes, I am a licensed amateur radio operator, and have been continuously since 1983.  Since then I have talked to folks all over the world  from my car or home office, completely without this new-fangled thing they call the internet.

Anyway, my wife and I went to the Peoria Ham Fest several weekends ago and I bought a late 1970's Yaesu FT-7.  Sure, I would have preferred my favorite, an Icom IC-706, however my play-budget is currently quite limiting.  The Yaesu was only $200; the Icom runs around $700.  Add another $100 for antennas and other accessories, and the Icom will simply cost far too much right now.  At any rate, for $300 I purchased a rig and enough wire and coax to make antennas for the 80, 40, 20, 15 and 10 meter bands.

One thing...  The FT-7 is considered a QRP rig; that means 'low-power' for you non-hams out there.  Generally, this radio uses less power than a computer monitor.

Since tossing a 20M dipole up into the trees, I have been making regular contacts with mobiles on the County Hunter Net (14.336 MHz) and a few special events stations.  Signal reports are 'ok' but not outstanding.  This is how it works...  The other station "calls CQ" and is specifically listening for other stations to call them on a certain frequency.  They are listening.  So, when I call them with my little low-powered rig, they hear me and call me back.  It works.

I remember reading somewhere a long while ago that QRP stations really shouldn't call "CQ" (i.e. is anyone there).  It will be a waste of time.  Other hams tuning around the band might hear your puny little signal but move on to a louder signal because it is easier to make a contact with them.

Absolutely.  I wasted an hour on Sunday calling CQ with my little QRP radio during the Illinois QSO Party and made exactly zero contacts.

So, the common thought holds... When running QRP, don't call CQ...  It's like a mouse peep in a snow storm.

Thursday, September 22, 2016

Getting a 500 Error When Trying to Access a REST API from C#?

This just might be the solution.

Here's the deal...  I need to write a simple C# client to access data from a REST API served up by an Apache Tomcat server.  Not a big deal at all...  should be pretty simple...

Should be...

For some unknown reason, my attempts generated nothing but '500' errors from the server.  Myself and our resident network wizard captured my traffic and we compared the headers of a successful GET using CURL and the non-successful attempt using my simple C# program.

After trying a few things with no success, I noticed the CURL capture showed an 'Accept: */*' header.  My C# program did not.  So, I added this...

request.Accept = "*/*";

SHAZAM!!!  No more 500 errors.

No search results from Google helped.  None mentioned this as being a possibility.  But, heck...  it worked.

By the way, this Apache server is what I like to call LegalWalled.  Yes, it's our server but if we touch it, or even log onto it using SSH without the guidance and approval of the vendor's support group, we could violate our support contract...  so opportunity to dig into why that specific error was generated.


Monday, September 12, 2016

Yes... I did that... Don't remember it, but did it...

I am a programmer (or is that obvious?).  Once in a while I will be tasked with researching or changing a program that I originally wrote.  I get the most recent code from our Source Repository System and start reviewing the code.  There is no doubt the program came from my brain, but it is certainly not familiar.  Why did I put these functions into a DLL?  What was I thinking when I designed this junk table?  OMG, WHY did I use singe letter variables???  WHY?!?!?!?!?

Maybe this happens with people in other professions...  read this to mean I hope sincerely that any doctor, dentist, commercial pilot or member of law enforcement who feel a similar temporary disorientation should firmly consider taking the day off!

Does a mechanic one day, look at a half-rebuilt carburetor that they have been working on for a month and wonder what motorcycle it came from?  Does a blackjack dealer in Vegas pause and wonder what those cards with an "A" printed on them mean?  Does a baseball umpire call "STRIKE!" before the pitcher throws the balll?

Anyway...  Walter Bishop from Fringe may never have said this, but maybe he could have...

Friday, August 26, 2016

"We WANT to Protect You..."

Imagine this, if you will...

Your daughter and yourself own and operate a small jewelry repair and gift shop in an old brick building on a busy old street.  Most of the business have been there for decades.  There's the deli and coffee shop, and the used book and curio shop, and the pharmacy, and the motorcycle repair and accessory shop, and the sporting goods store, and the small bank branch on the corner.  The town has a bustling core of tourist traffic that supplies ample amount of financial support.  This tourist business is solid but does cause a few issues with fraudulent credit cards and so forth.  The merchants do what they can but accept this as a typical danger of being in business.

You notice one day, some merchants are installing these new loss-prevention machines that really seem to be stopping all credit card fraud.  Unfortunately they are hesitant to discuss the details and are somewhat unhappy, saying foot traffic is down significantly even though the number of tourists in town is increasing.

One day a couple of fellows come into your store and offer this new system to you.  They offer to place a detector and door lock on your front door free of charge.  All they ask is that all purchase transactions you make go through them, 'for security purposes.'  They will hold all money for three days in their bank account for transaction validation, then release the funds to your bank account.

Here's the big catch...  only people who have registered with their service can enter your store.  Sure, they can look in your window, and if they ask, you can let them in if they haven't registered, but they don't recommend it.

"Everyone else on your street are using our system and LOVE it!  No one has had a fraudulent purchase since our systems have been installed," they say.  You tell them you will think about it.  They give you their card and leave.

One month later you are balancing your books and realize fraud is up by 20%!  Generally foot traffic and cash flow has increased but not enough to cover the new fraud.  You call the two fellows selling the anti-fraud solution and have it installed.

That's what seems to be happening to E-Bay.  Buyers can look at the items but unless they are PayPal users with validated accounts or addresses or whatever, they can't even put a bid on items.  You aren't a PayPal customer, you are shit-outta-luck.

That's how it works...  There's fraud happening so E-Bay offers this great service to a few merchants.  It's a little shady and locks the buyer base but it works.  As more and more merchants use this service, fraud becomes focused on those merchants who don't use it.  So, those merchants are pressured into using the service for 'protection'.

Here's what I did.  Yesterday I browsed E-Bay looking for deals on used lenses for my Canon Rebel.  BINGO, I find a lens and try to put in a bid.  I don't use PayPal so...  BZZZZTTTTT...  I can't even enter a bid.  I try entering a bid for another lens.  BZZZZTTTTT... same thing.  Another?  Same thing.

WTF???

Here's what will probably happen in the future...  Customers will not like this requirement to be 'verified'...  Foot traffic in E-Bay will start declining...  E-bay will need to change their validation.

Just my half-asleep $0.02 worth.

Wednesday, August 17, 2016

Webcollage bug/irritation repair

So, I am enjoying my little Linux build with that little AMD APU detailed in my last post...  Something is missing...  YES!  A good screensaver.

Oh...  Yes it has been a while since my last post, so what?  I've been boating and working on the house and generally enjoying the outdoors while the weather is agreeable.  So...  pfft...

Anyway, I installed the XScreenSaver package with several additional screensaver packages.  One looked intriguing...  webcollage by Jamie Zawinski.  Webcollage uses dictionary files (just lists of words) to seed simple searches on several internet search engines.  When the screen saver is activated, a random image (or part of an image) from a random webpage from the results of searching a random word is placed on a the screen like a collage, one image over the other.

Needless to say there is a lot of online bitching about this because quite simply, it can display porn and other NSFW images.  OK, so some people don't like it.  Personally, I find it intriguing.  But...  occasionally the following text would show up on the screen...  sometimes several times before a screen redraw covered the text:

Use of uninitialized value $vals in index at /usr/share/perl5/HTTP/Headers.pm line 264
Use of uninitialized value $vals in concatenation(.) or string at /usr/share/perl5/HTTP/Headers.pm line 267

After trying a few repairs to the webcollage Perl source, I just went into Headers.pm and fixed it there.  Here's the repair:

sub as_string
{
    my($self, $endl) = @_;
    $endl = "\n" unless defined $endl;

    my @result = ();
    for my $key (@{ $self->_sorted_field_names }) {
next if index($key, '_') == 0;
my $vals = $self->{$key};
if ( ref($vals) eq 'ARRAY' ) {
   for my $val (@$vals) {
my $field = $standard_case{$key} || $self->{'::std_case'}{$key} || $key;
$field =~ s/^://;
if ( index($val, "\n") >= 0 ) {
   $val = _process_newline($val, $endl);
}
push @result, $field . ': ' . $val;
   }
}
else {
          if ( defined $vals ) {
   my $field = $standard_case{$key} || $self->{'::std_case'}{$key} || $key;
   $field =~ s/^://;
   if ( index($vals, "\n") >= 0 ) {
$vals = _process_newline($vals, $endl);
   }
   push @result, $field . ': ' . $vals;
          }
}
    }

    join($endl, @result, '');
}

My changes are in red.  Not sure if the bug is in webcollage or if it is in Headers.pm but here ya go.  This is the fix.  Damn, I love open source!

**Disclaimer:  I am NOT a Perl programmer, I only know enough to successfully poke around Perl source and figure things out.
**Suggestion: Anyone running webcollage might want to consider two things: 1) it uses internet resources to perform searches and retrieve images; 2) some of the images shown on the screen could really get a person in trouble at most companies, not to mention what might happen should certain significant others see certain images.

Wednesday, June 8, 2016

New Minimal Linux Box Up and Running

Long Time No Post

Quite a few things have happened since my last post.  One of the most important, of course, is the completion of my little new Linux box.  Here she is...

Silicon Power Slim 60 GB SATA3 SSD drive.  It is only 2.5 inches wide, offers SATA3 6Gbps connectivity, and very energy efficient.  I selected this SSD because it was inexpensive, fairly fast, and rated as quite energy efficient.  Formatted this as ext2 and used it as my OS and swap drive.  Spent $30.




Toshiba 500 GB 7200 RPM hard drive.  It is your basic 500 GB 7200 RPM SATA3 hard drive.  It offers SATA 3 6Gpbs connectivity and a 32 MB cache.  I selected this drive because it was inexpensive, had good reviews and was the right amount of storage for my needs.  Spent 45$



ASRock C70M1 Motherboard with AMD Dual Core Ontario C-70 APU.  This mini-ITX motherboard/CPU combo offers very low power consumption, no unneeded video capability (I only needed basic VGA), up to 16 GB RAM, 64 bit processor/data bus width, four SATA3 6Gbps connectors and a host of other things.  No, this is NOT a gaming or server mobo/CPU.  The C-70  APU is only dual core and runs at about 1GHz but this board is extremely quiet, energy efficient and seemed to fit my requirements.  Total price of this board was $40 - not bad for motherboard and CPU.

I added a couple of Mushkin 2GB DDR3 RAM sticks for $22 and a basic APEX 250 watt power supply for 19$.  I tied it all together in an old Dell computer case and installed Debian Jessy.  The only little issue I had was the fact my little USB WiFi dongel wasn't supported natively.  Really, it was a minor issue.  After some research, the driver source was located on GitHub, it was easily compiled and installed.

So, for a total of about $156 I have a new little Linux box.  ( had an old flat screen VGA monitor just wasting space so used that).  Pretty happy so far.

More details and maybe a benchamark or two.

Tuesday, March 29, 2016

OMG .NET, You Are Crazy!!!

OK, so I am doing something simple...  adding a ControlParameter to a SQLDataSource.  I just want to add it as an optional filter.  The ControlParameter points to a TextBox.  Like this...

<asp:ControlParameter ControlID="txtFiltCC" Name="TCity" PropertyName="Text" Type="String" DefaultValue=""/>

Not only does the result return nothing, according to the Microsoft SQL Server Profiler, the query is never even sent to the server!!!  

What the HELL!?!?!?!?

I change the SelectCommand to not use the @TCity paramater and still...  no query sent.  The GridView bound to the SQLDataSource reports that no records were retrieved.   Hmmm...  makes sense since according to SQL Server Profiler, no query was sent.

Then I find the ConvertEmptyStringToNull property on the ControlParameter.  It's default is 'True'.  Hell, I don't want it to be null, so I change it to False.  Friggin SHAZAM!  The SQL query is sent and I get a result set.  Why the HELL would the ConvertEmptyStringToNull cause a query to not be sent, especially if the parameter isn't even used in the query????  This works fine...

<asp:ControlParameter ControlID="txtFiltCC" Name="TCity" PropertyName="Text" Type="String" ConvertEmptyStringToNull="False" DefaultValue=""/>

Really, Microsoft...  This is a crazy little piece in ASP.NET

So...  For anyone scratching their head about a GridView not being populated from a SQLDataSource that is using a ControlParameter pointing to a TextBox, this just may be the solution.

Thursday, March 24, 2016

Just a Little Old

So, using a five year old PC is 'sad,' eh?  According to Apple's Senior Vice President of Worldwide Marketing, Phil Schiller, about 600 million people are using PCs that are over five years old... "This is really sad."

Sad, eh?  A computer is a tool.  If that tool suits the user's need, why change?  Ya, I am a high-tech, hip, cool, well-informed geek of fifty years old but have been using the least expensive cell phones on the least expensive plans I could find; that is, until two years ago.  That was when we moved out to our little rural house on the lake, with barely any cell signal.  That was also when my personal interests turned to landscape and documentary photography.  My main camera, a Canon EOS Rebel T3i doesn't support geo-tagging, so I specifically bought a phone that had good RF power, supported geo-tagging photos and was on a carrier with proven coverage in our rural little hideaway.

And...  after 35 years of using computer screens, my eyes tend to strain with small screens, so I opted to get a 'new & improved' Android cell phone with larger screen.  And, I am happy I did.

In my garage there exists a hammer; a tool.  It is likely 20 years old.  It fits my key requirements: hammer a nail while allowing my hands to grip it properly and not cause undue strain on my wrists.  Why would I want to purchase a new tool if this one works?

My philosophy of PC upgrades is the same...  If the PC fits the requirement, why upgrade?  Only this year did my little HP Mini-110 stop working.  I didn't upgrade because it suited a certain purpose: small size, fully functional for web browsing, would run a word processor and was incredibly easy to throw in my motorcycle's saddle bag or car's trunk when going somewhere.  It was six years old this year.

We have a six year old desktop running as a media machine - it plays DVDs, streams video and music, and functions as a data-backup computer for the other PCs in the house.  Ya, it's six years old but why change???  It works fine!  A newer computer would offer nothing more given these required functions.

I have an old HP desktop from the early 2000's running Debian Linux.  That old fella is used for things like learning C++, ImageMagick and Python and experimenting with the wild side of Linux's low performance world.  It is perfect.

Why is the action of not upgrading a computer more than five years old "...really sad?"  Simple...  The person who make that statement receives a paycheck at least partially based on people upgrading more frequently than every five years, whether they need it or not.

Wednesday, March 23, 2016

Da' Truth!!!

So, there I am; innocently driving our ferret back from a veterinarian visit when what in my wondering ears should echo???  The ranting, irritating, disingenuous voice of Sean Hannity on our local AM radio station.

Now, I am neither liberal or conservative; neither republican or democrat.  I am a proud independent.  That stated, never have I listened to the Sean Hannity show when something was said that didn't make me giggle because of...  well...  Here's what I heard on the trip home from the vet...

Sean is ranting about how President Obama and Hillary Clinton were both "friends" with the Reverend Al Sharpton;  how Reverend Sharpton is a rabel-rouser, a firebrand, an agitator.  Those things, I just don't know and honestly don't really care.

Here is what made me LOL...  One of the voice tag lines for the show had something to do with the "Truth";  something like "Only the Truth!" or something like that.  OK...  Still don't care...  but then the LOL hit.  According to Mr. Hannity, the President and Ms. Clinton both "Kiss Al Sharpton's Ring."  Really?  I mean, did they kneel?  Were they all sitting?  Did they bow?  Was it one-on-one or a threesome?

Mr Hannity???  Pictures?  "Only the Truth" but you say they kissed his ring?  Do you have a reference for this?  Can you prove they kissed his ring???

Years ago these type of radio shows irritated me.  Now they simply provide my inner child with comic relief.  Keep talking!!!  I need the laughs!

Friday, March 4, 2016

Break-Even Performance/Cost Evaluation of Two Computers

So, my cheapie motherboard is on it's way and still waiting on my Pine64 to be shipped.  Hmmm...  I have been wondering how I can evaluate which platform will get me the best 'bang for the buck.'  Well, the main job of these machines is to use ImageMagick and maybe some other image utilities, to comb through hundreds (or thousands or millions) of photos and identify meteors.

So...  I start at total system cost.  A complete Pine64 should cost about $40 (inclusive of processing board, flash drive and power supply).  A complete, low-end AMD system using an AMD Dual-Core Ontario C-70* processor  (from NewEgg) should cost about $85 (inclusive of motherboard, processor, 4GB RAM, flash drive and power supply).

I want to evaluate which is a better value based on the amount of time required to process the same 100 images through the same processing steps.  It is really a pretty simple calculation; just required me to open some cranial doors to past algebra classes...  Those door hinges were rather creaky this morning. :-)

The calculation is simple and based on the ratio of  costs; in this case, 40/85.  Let's say the Pine64 requires 10 minutes to process 100 images.  For the AMD solution to be a better bang for the dollar, how many minutes should it take on the AMD platform to process the same 100 photographs?  simple...  10 * (40/85)  or 4.705 minutes.  Any longer and the Pine64 is a better deal.  Any less and the AMD solution is better.

And...  by inverting the ratio, we can solve how many minutes are required by the Pine64 to have a higher performance; 85/40.  Let's say the AMD requires 5 minutes to process 100 images, then 5 * (85/40) = 10.625 is the breaking evaluation point.  If the Pine64 takes less than 10.625 minutes, it is a better deal.

So...  Some algebra...
p1 - Price of system 1
t1 - Time to perform a process on system 1
p2 - Price of  system 2
t2 - Time to perform a process on system 2

t2 = t1*(p1/p2)  - use if t1 is known and looking for t2
and
t1 = t2*(p2/p1)  - use if t2 is known and looking for t1

If the real world results are less than or equal to the above results of t2 or t1, then that system is better in terms of performance/cost.

Now, back to something a bit more simple - website migrations, SQL optimizations and thredifying single thread processes...  oh boy oh boy.

* - Processor and Board Disclaimer - Yes, I know the AMD C-70 is an older, less powerful processor.  That, however, means that available motherboards are quite inexpensive.  Plus, the power consumption of the C-70 is really very low - big plus.

Thursday, March 3, 2016

OMG! News Flash! SalesForce & TITSUP

HAHA  OH MY GOD!!!  Thanks goes out to Simon Sharwood and The Register for this article about a Salesforce Outage.

I simply MUST quote their update:
"One of Salesforce.com's European instances is enduring a lengthy un-planned PITSTOP incident – that's a Partial Inability To Support Totally Optimal Performance, a whit below our other status indicator of a Total Inability To Support Usual Performance or TITSUP."

HAHAHAHAH!!!!!  OH MY!!!!  TITSUP!!!!!  Never have I seen TITSUP and Salesforce on the same page before.  SO apropos, So right.  Thanks for the Thursday morning laugh!!!

**Disclaimer - I am not a fan of Salesforce, its abysmal development environment, its incomplete programming language APEX, its poorly thought out data structures and generally the whole Salesforce concept and system.

Wednesday, March 2, 2016

Oracle VM VirtualBox - Just a Misleading Error Message

Three weeks of fighting a "cold from hell" gave me time to think about my little project to automate a search for meteor photos.  Sure, I have a PINE64 on order.  Sure, it may be delivered later in March.  Sure, there may be a flavor of Linux available for it sometime soon.  Sure, I may be able to build ImageMagick and other tools I need for the Pine64.  Sure, the performance may be acceptable for my goal.  Crap, no planned PXE/net-boot planned.

What if...  Let's see...  a complete Pine64 compute node with 1GB Ram and the OS on an 8GB flash drive will cost roughly $35 accepting a lot of "maybe" assumptions.  Let's remove the assumptions and calculate the cost of a good old AMD or Intel processing node.  Looks like a 64 bit AMD based system with 4GB RAM, with PXE boot will run about $85.

So...  I decide to emulate a 32 bit Debian text-only install on an Orable VM Virtual box using 4GB Ram to sort-of emulate the AMD solution.  Which gives me an idea for a new word...

umulate - An emulation that is not exact; allowing certain differences for the sake of brevity or simplicity.  "I am going to umulate this Debian install; the real machine will not have a hard drive, but will boot from a flash drive."  But...  I digress...

BUT SMACK...  An error pops up from Oracle Virtualbox when I try starting the virtual machine...

Failed to open a session for the virtual machine DebianPNode.

Under "Details" it read...

VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED)

Well, after some research and comparing this virtual machine with the operational virtual version of Debian, I arrived at a repair that seemingly has nothing to do with the error.  I changed the Base Memory for this Virtual machine to 3072 GB and SHAZAM.  No more error.  Keep in mind, my machine has 8 GB and runs a pretty lean install of 64 bit Windows 7.  Why this misleading message popped up, I have no idea...  but reducing the Virtual machine's Base RAM fixed the problem.

Friday, February 19, 2016

Teaching an Old Dog New Tricks.

Regardless the age of an old programming dog, new tricks are pretty important to learn.

My initial success with night sky photography with my Canon EOS Rebel T3 tumbled in my mind over the last few days.  Recorded remnants of a thought from a few years ago popped up when searching an old personal hard drive...  An automated search for meteor photos.

Well, I was nearly there.  After spending a few nights with ImageMagick and some meteor photos, I built a basic recipe to find meteor strikes in night sky photos.

Hey, I thought...  I have a PINE64 on order.  Wouldn't that be cool to make one of these tiny ARM based computers comb through photos for meteors?  Ohhh...  With a little thought this could be easily scalable.  What about controlling my camera with one of these PINE64 computers?  Maybe a loosely coupled cluster of these $15 computers to search these photos in different ways?

I needed a control language for this; something interpreted and not terribly complex.  It only needs to be able to run shell commands, copy files and talk to MySQL.  Lua had my vote until I tried MySQL.  After two hours of trying to make it work on my Windows 7 computer, the necessity for a different language became apparent.  Sorry Lua.

A buddy of mine at work likes Python.  My daughter learned a little Python at college last year.  Python is a language specifically being ported to the Pine64.  The memory footprint of Python is larger than that of Lua but should work fine in the constrained environment of the Pine64.  MySQL Connector was easy to install and setup.  After a running a few little trial scripts, I was convinced Python would be my control language for this little project.

So, over the last week or so, this old dog has learned a few new tricks; and he is enjoying it!

Saturday, February 13, 2016

First Dark-Sky Photo! May have a new Hobby!

After reading a little bit following a few frustrating attempts at dark-sky photography, I think I might just have a new hobby!

Actually came out better than I thought it would.  Orion, Gemini, Cancer and Canis Major are all obvious.  The star cluster M44 is easy to see and with a little squinting, M67 is there. 

Some fine tuning is still necessary - the focus is still not as sharp as I would like and less trees would be nice.  Our backyard is an OK spot for now.  Getting the focus properly set and fine tuning a few other things just might let me see some decent objects down to 7+ magnitude or maybe even more dim! 

Photo date/time: 2016-02-12 at about 2248 Central Time. 
Camera: Canon Rebel T3
Lens: EF-S18-55mm f3.5-5.6 IS II
Focal Length: 18mm
ISO: 1600
Aperture: 4.0
Exposure: 25 seconds
Tripod: Super cheap (and I mean CHEAP) Targus from Walmart.

What is my goal?  I want to see meteors!!! 

Astrophotography - might just be a cool little hobby!

Monday, February 8, 2016

Adventures with a free PC and Linux

Many people do it...  In many parts of the world, dumpster diving is a profitable undertaking.  As a matter of fact, I knew someone in Los Angeles years ago who made some nice cash by simply checking out local dumpsters, cleaning her finds and selling them on Craig's List and E-bay.  Most of her finds were clothes, fashion items and artsy collectibles.  Me???  Back in my college days I could regularly be found snooping around dumpsters for electronics items.  Some of my best finds from years ago include an oscilloscope, several televisions and a shortwave radio receiver.

Well, even now when I see something interesting in the garbage, I simply can't help myself.  A few weeks ago my wife and I were driving to the local grocery store.  In the parking lot of the grocery store is the local community dumpster where people occasionally toss their unneeded electronic items.  The local waste disposal company hands that stuff off to an electronics recycling company...  Unless someone gets it first.  On that rainy cold January day I grabbed a soaked Dell Dimension E310, Dell monitor and an Epson printer.

"Sure, honey!  I bet I can get that stuff to work!"   She just looked at me sideways, smirked and nodded her head.

After a few weeks of drying, I cleaned everything up, applied electrical power and SHAZAM - up popped a Windows XP logo.  She Works!!!

Sort-of...  The installation of XP was messed up; likely due to malware.  It was SLOW, booted erratically and generally did not behave like a healthy computer.  What to do...  My wife wanted a computer to browse the internet and handle email; basically something to replace her laptop until we can afford a replacement laptop.  Me; well, I would like a separate computer to let me brush up on C.

This computer fit the bill.  It only has an 80GB hard drive, 512 MB RAM with an Intel Pentium 4 processor running at 2.8 GHz, but that should be able to handle these undemanding tasks, right?  Well...  It depends.

I didn't want to waste time repairing and/or reinstalling Windows XP, so I decided to install Linux. My first two choices were Ubuntu and Debian.  This wasn't because they were especially fast or known for performing well on older, under powered machines.  These were selected because they were mainstream distributions and...  I already had installation ISOs on my work computer from a previous project.

First up...  Ubuntu.

I burnt the Ubuntu 14.04.03 installation ISO to a flash drive and installed it flawlessly, albeit slowly to the Dell.  After install, the little TP-Link WiFi USB dongel worked easily.  Basically, the install worked but was SLOOOWWWW.  I was not used to the Ubuntu desktop and honestly is was not intuitive for me to navigate.  Where is the control panel?  The settings?  Fading windows and sliding controls aren't necessary here.  How the hell do I shut them off???

There was no desire in my blood to google every little question I might have about this installation.

So, not happy with the interface and performance provided by the default Ubuntu installation, I decided to try Debian Jessie (8.3.0).

Quick lesson here - when using the Universal USB Installer program from pendrivelinux.com, remember to format the flash drive before copying a new installation ISO over a previously copied installation ISO.  Not doing so caused all sorts of problems.  Debian wouldn't install and regularly complained about a missing kernal image or problems installing GRUB.  Subsequently trying the Ubuntu install caused both installs to get tangled; I saw some Debian install options on Ubuntu reinstall attempts!

At any rate, after finally, successfully installing Debian with the XFCE desktop,  all was almost good.   Performance was decent and XFCE navigation was intuitive and complete.  Supposedly my little TP-Link USB dongel should have worked but didn't.  So, after a little research I downloaded, built and installed a new driver and...  drum roll please...  After spending only $15 for power and VGA cables and a lazy Sunday afternoon, my wife has a temporary computer and I have something to mess around with and brush up on my C... with operational TP-Link WiFi.

Hurray for dumpster diving.!!!

Friday, February 5, 2016

Photography - Just a Little Hobby

Ham radio, shortwave radio, electronics, motorcycles...  These are all things that have faded from my life over the last ten years or so.  Occasionally this fact weighs heavily on my little inner kid; he just doesn't understand how avocations and interests in my life tend to be cyclical.  In the mid to late 80's I was active in amateur radio and electronics; then again in the late 90's and once again in the mid 2000's.

In the late 2000's motorcycles and motorcycle repair were very important activities.  One might say they were vital activities in my odd little world back then.  Not only did I nearly completely restore a vintage Suzuki VX800 but I rode across the county solo, not once but twice.  Memories of my motorcycle past are a bit melancholy at times.
BUUUUTTTT....  An old interest is rising again and I like it; photography.

Specifically, I enjoy making landscape and agricultural photos.  There is just something fulfilling about recording a certain moment in time.  When the moment and light and camera settings are just right and the shutter snaps, honestly, I get goosebumps.

Standby - new photo website coming soon.  :-)

Thursday, February 4, 2016

The 4400 - An Old Review by a Crazy Old programmer

Some couples go out at night after work for a few drinks.  Some go out dancing.  Some like plays or theater.  Others enjoy participating in sports.  Some like to go mudding in big 4x4 pickups.  Others enjoy riding together down quiet stretches of highway on two wheels; we certainly shared a few blissful motorcycle miles.

Unfortunately fate, the bitter harsh bitch that she can be, narrowed our pool of potential shared activities significantly.  That, however, just means a life adjustment.  Rather than go out of the house to participate in some activity; we stay indoors for the most part.   And, what do we frequently do???  Binge watch television shows.

Last month my wife found this show, The 4400 on Netflix and we decided to watch it.  So, one night after the next, weeks on end we watched The 4400 from beginning to end.  And the review???

Well, it's no Breaking Bad, however it was worthy of binge watching.  The 4400 series begins with 4400 abductees being returned to Earth all at once on the shore of a Washington State lake, out of a giant ball of light.  Over the course of the next 43 episodes we watch as some of these 4400 people re-integrate into society.  Consider two important facts about these folks... 1) They didn't age a day from when they were abducted;  2) They all have special 'abilities'.  So an abductee from 1977 wouldn't have aged.  If the person was 25 years old in 1977, they were 25 years old when they returned.  And...  the abilities...  One of the main characters can heal, one has telekinesis, one can take away 'abilities'...  The list goes on...

Add in a shake of government conspiracy, societal unrest, little science fiction, little tiny amount of mystery and romance and there it is...  The 4400.  Really, to me this program appears to be a thinly veiled mish-mash of Heros with The X-Files.  Even though The 4400 was aired before Heros, the former seems more stiff and less engaging.  For me, Heros was more entertaining, engaging and enjoyable; it even seemed more original.

So, if you like Heroes or The X-Files, you just might like watching The 4400.

Tuesday, January 19, 2016

More than 110M People have already upgraded...

WOW!!!  According to the "ad-ware" pop-up message that seems to appear more and more frequently on my computers, more than 110 million people have upgraded to Windows 10...  and for FREE, none the less!!!

Did they do it on purpose?  Or...  did these people really look at what they were getting?

On a slight tangent...  Apparently in recent history an incorrect assumption was made somewhere in my cerebral cortex...  I assumed Windows was NOT "ad-ware".  I thought this was commercial software that was to be free from advertisements.  Oh, sure...  This COULD be construed as simply being a somewhat irritating upgrade message.  More that somewhat irritating at times perhaps.

And why would the tagline "More than 110 M people have already upgraded..." be a motivating factor for myself, a computing professional, to switch operating systems?  I am a critical thinker (most of the time),  and, as I get older, am gaining a slight disdain for rapid change.  Not long ago Windows XP was phased out.  Now...  I am being brow-beaten to upgrade my Windows 7 machines to Windows 10?

Seriously, 110 million people...  Let me see...


  • According to the Society of Thoracic Surgeons, about 1.1 billion people smoke cigarettes.
  • According to the Huffington Post, 70% of all men in the US, and 30% of all Women watch pornography.  That calculates to about 153 million people in the US.
  • According to About.com, there have been 700 million iPhones sold throughout the world.

No...  Number one, I am not going to take up smoking; Number two, porn is boring and I get more action that I can handle from my better half; and Number three, I like my Android phone.

And...  No, I am not upgrading to Windows 10 until I absolutely MUST.  Now...  Buzz Off, Microsoft!

**Microsoft, Windows, iPhone (etc...) are all owned by their respective owners...  I don't want them.