Friday, November 17, 2017

Sell-out? Pragmatist?

So, am I a sell-out or just a pragmatist?

Long ago, nearly ten years before Linux was released, I enjoyed the simple, no-nonsense, high-performance properties of the UNIX/Linux culture.  The belief that a tool should only be as complicated as required by the task and no more, truly resonated in my young mind.  Being a down-home, poor farm boy, I had very little appreciation for "bells and whistles".  And, as such, over the years I have enjoyed Linux.

Unfortunately my inner pragmatist needs to come out of the closet.  Why?  There are two hobbies that I would like to enjoy more fully: photography & ham radio.  Certainly there are great programs that run in Linux for both hobbies.  Unfortunately, aside from a few exceptions, I must admit, the better applications run under Windows.

Still on the fence, I evaluated my complete set of needs.  Certainly, programs running on Linux could support my basic list of user requirements.  There are some ham radio programs out there.  There are some great photo utilities like RawTherapee and ImageMagick on Linux.  Still walking that fence.

But there is one additional requirement...  I want to spend some time honing my C# and .NET skills.  Sure there is MONO on Linux; spending an afternoon with MonoDevelop and MONO pushed me in a different direction.  There is no way I could hone my C# skills using MONO.

So...  I re-evaluated...  Sure, Linux has RawTherapee, but Windows has ACDsee, the Canon DPP and a host of other photo management and manipulation programs.

Certainly, there are some great programs under Linux for amateur radio, but I want to get back into PSK31 and maybe SSTV and HSCW.  The programs in Windows are far more flexible than those for Linux IMHO.  And, honestly, there are no decent, up-to-date logging programs for Linux.  Certainly there are some ham radio logging programs for Linux but they don't meet my requirements.

And so...  I made a change.  Earlier this week I backed up my Linux machine and installed Windows 10.

Honestly, it has issues that I will write about later, but I am not ashamed.  Already I have ACDsee Studio running for photo management and DPP & RawTherapee installed for image development and manipulation.  OpenOffice runs well and I have Microsoft VisualStudio 2015 installed for programming and honing my C# skills.

No, I am not a sell-out.  I am a pragmatist.

Wednesday, November 15, 2017

Google, where for art thou?

So, Google...  Why aren't you indexing my blog?

I see traffic from your spider (or crawler or whatever you young folks call them...), but when I google specific, uniquely identifiable strings in my posts, the results don't show my blog.

Sure, Google shows my different index tags and in general shows the blog but not the specific posts.  I remember running Razor's Edge and To Farm Again, and firmly believe every post was indexed.  Nearly a decade ago I ran a website that indexed terrestrial radio stations that streamed online... I received more traffic on that website in a week than I have ever received on this blog.  Why? 

I have a Privacy Policy...  I don't post lewd, titillating or illegal content...  Why, oh why????

After some reading, a few things have come to my attention...  1) I do not post here regularly.  2) People don't know about this blog and therefore don't link to my content.  3) I don't attempt to push SEO.  4) Perhaps this blog doesn't have as much focus as it should.

So...  Maybe I shall start posting more frequently, try getting some publicity, read some things about SEO and focus my posts a little more.

Or maybe not...  Hey, I did make a whole $100 from Google over the course of five years on those other blogs and really wasn't tying to drive traffic.



Tuesday, November 7, 2017

Time to Upgrade a Bit

There, sitting on my bookshelf for more than a decade has been a nearly un-read copy of Victor Shtern's book, Core C++: A Software Engineering Approach.  Ever since college I have wanted to dive into C and later, C++.  As it occurred, my professional life yielded very little opportunity to learn either.

So...  Finally; after all that time gathering dust and being shuffled between at least three cross-country moves, I am diving into the wonderful world of C and C++.

According to my calculations, I should complete the book in about 100 days, if I read 12 pages a day (and perform the prescribed programming exercises).  Yes, it's a long book, but at the end is a prize: learning a new language.   And, well...   another prize...  I promised myself a new laptop after finishing the book.

So...  I had better get to it.


Wednesday, November 1, 2017

Visual Studio Professional 2013 Crashes on Windows 10... A Solution!!!

So...  This morning Microsoft pushed down a large Windows 10 update.  My Outlook had been randomly crashing since installing Windows 10 so thought it would be a good idea to install the update.


After only...  30 minutes, the update was finished.  I started my normal every-day work programs like Chrome, Putty, SQL Server Management Studio, Excel, Outlook, etc...  Then I started my installation of Visual Studio Professional 2013.

Nope.  Wouldn't work.  Would simply lock up with this window (on the left) after just about 15 seconds.

Event Viewer showed the exception in two separate events:

First Event:
Application: devenv.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentNullException
   at System.IO.MemoryStream..ctor(Byte[], Boolean)
   at System.IO.MemoryStream..ctor(Byte[])
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.Utilities.BitmapFromPngOrJpeg(Byte[], Microsoft.VisualStudio.Shell.Connected.ConnectedUser.Logger)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.AvatarCache+<>c__DisplayClass2.<.ctor>b__0()
   at Microsoft.VisualStudio.Shell.InvokableFunction`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].InvokeMethod()
   at Microsoft.VisualStudio.Shell.InvokableBase.Invoke()

Exception Info: System.ArgumentNullException
   at Microsoft.VisualStudio.Shell.ThreadHelper.InvokeOnUIThread(Microsoft.VisualStudio.Shell.InvokableBase)
   at Microsoft.VisualStudio.Shell.ThreadHelper.Invoke[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func`1<System.__Canon>)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.AvatarCache..ctor(Microsoft.VisualStudio.Services.Profile.AvatarSize, Byte[], Boolean, Microsoft.VisualStudio.Shell.Connected.ConnectedUser.Logger)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.AvatarCache..ctor(Microsoft.VisualStudio.Services.Profile.Avatar, Microsoft.VisualStudio.Shell.Connected.ConnectedUser.Logger)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.ProfileCache..ctor(Microsoft.VisualStudio.Services.Profile.Profile, System.Guid, System.Uri, System.String, Microsoft.VisualStudio.Shell.Connected.ConnectedUser.Logger)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.Connector+<ConnectAsync>d__1.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.IdeUserSession+<ConnectAndInitializeSessionAsync>d__a.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.BaseUserSession+<ConnectAsyncImpl>d__17.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
   at Microsoft.VisualStudio.Shell.Connected.ConnectedUser.BaseUserSession+<ConnectAsync>d__2.MoveNext()


Second Event:
Faulting application name: devenv.exe, version: 12.0.21005.1, time stamp: 0x524fcb34
Faulting module name: KERNELBASE.dll, version: 10.0.16299.15, time stamp: 0x2cd1ce3d
Exception code: 0xe0434352
Fault offset: 0x001008b2
Faulting process id: 0x1958
Faulting application start time: 0x01d35325baa1390f
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: b0bb84fb-22a5-4efd-a88e-57bb6b1a32ca
Faulting package full name:
Faulting package-relative application ID: 

So...  After about 4 hours of poking on the internet and trying different things I found a solution that worked for me.  This will only work for people with valid logons to Microsoft MSDN who have access to Visual Studio.  (I am not certain how this would work for the free versions.)

  1. Run this in a command box:   DEVENV /resetuserdata 
  2. Add the line 127.0.0.1 app.vssps.visualstudio.com to the HOSTS file.
  3. Start Visual Studio 2013 and you should see a screen like the one below...
  4. Clicked Sign-Out on that screen.
  5. Remove the line added to the HOSTS file.
  6. Restart the computer.
  7. Go to MSDN website to get your Product Key for Visual Studio Pro 2013 (or whatever version you have installed.).
  8. Start Visual Studio.  
  9. When the User Information / Product Information screen pops up again, click “Change my product license.” 
  10. Enter your Product Key.
  11. Close Visual Studio and restart your computer one more time.


And, that's it.  My Visual Studio Professional 2013 is running fine once again.  Well, with one exception...  Now, every time I start it, I am prompted for my MSDN password.

There is mention that once you get VS running, you can select Tools -> Extensions and Updates -> Updates and install Update 5.  If you opt to try this upgrade install, be certain you have the time.  My upgrade is still downloading after 20 minutes.

Edit 1: Installing Update 5 does seem to complete the fix.

YMMV

According to this reference, this specific problem started happening today...



Wednesday, October 18, 2017

My Brain

From time to time my brain does a self review of interests and projects, some inactive, some abandoned, some retired and yes, some still active.  Over the last several decades this list has grown quite a bit.  Unfortunately I tend to abandon interests rather than retire them.  It's like an operating system running a bunch of programs.  Retiring a program means shutting it down and performing garbage collection, releasing it's resources for other things to use.  Retired projects will likely never be restarted.  Abandoning a project means leaving its image in memory and only releasing any reserved CPU time.  There is a slim possibility abandoned projects could be restarted.

So...  Here is my periodic list of interests and projects in no particular order...



Tuesday, October 17, 2017

Beauty Lies in Simplicity - A Little Forum Software

This has been tumbling around in my brain for a while...  An extremely spartan forum script.  Something relatively small, very fast, uses minimal bandwidth and presents as a standard HTML page with no CSS or client-side scripting.  And, it must be reasonably usable with the Lynx browser.  For those of you who don't know, Lynx is a text based browser that has been around since the 1990s.

Why do it?  Why build a super-simple forum script?  Well, I consider it an experiment.  How fast and simple can a forum script be?

The intended audience is one; myself.  If others want to use it or help, cool.  Those interested, check back here.  I will post updates as they happen, using the label BLISf, which, funny enough, it the name of the script. :-)

Tuesday, August 8, 2017

All the Data Bloat

A little foreward...  This is not a 'bitch' post, it is merely a set of observations.  If anyone takes offense, perhaps they should be reviewing how they code and store data.

96 bytes.  That's all I need.  This specific information I want for the next three days and nights can be represented in 96 bytes.  Could someone please answer this question?  Why are these 96 bytes wrapped in 144,383 bytes of HTML, JavaScript and CSS?  Additionaly, this doesn't count the over 20,000,000 bytes for images.

Let's factor in transfer and render time.  A transfer of 96 bytes, with its necessary TCP/IP communications protocol overhead, is quite fast.  Even from Antarctica to here, a 96 byte transfer is VERY quick.

Rendering what this 96 bytes represents is equally quick.  Rendering a 20,000,000 byte page in a browser requires decrypting stuff and processing CSS layout information and running JavaScript code and converting images into bitmaps for display and handling any necessary animated graphics.  My particular computer at this time, an eight core AMD Vishera FX CPU, 16 GB RAM and 15MBs internet connection requires maybe 5 seconds to retrieve this page and display its graphical representation.

96 bytes?  Nearly instantaneous.

What do these 96 bytes represent?  It is the current local weather conditions, and the forecast for tonight and the following three days and nights.  12 bytes for each day/night.
Precipitation Percent: one byte
Sky Conditions one byte
Weather Condition: one byte
Temperature: one word
Wind Speed: one byte
Barometer: float (four bytes)
Wind Direction; one byte
Visibility: one byte

Other things might be OK to add; perhaps humidity, barometric trend, watches and warnings, sunrise, sunset, moonrise and moonset.  Still, after adding these items, the 96 bytes would become a still slim 152 bytes.

My benchmark page, weighing in at a hefty 20MB is here:  New Boston, Illinois Wunderground

Rather than slim and narrow, wide is apparently a 'thing'.  Are all the additional abstraction layers and frameworks and graphics and tracking completely necessary???

Please...   Think about slimming the data when working on your next project.

Remember, the old maxim 'Less is More'  holds especially true in the world of computer programming.

Friday, July 21, 2017

Too Much Codez!!! WHY?!?!?

Why must some programmers place as much code into a single file as they can?  Seriously?  Is this some sort of challenge?  Is there some advantage unknown to me by shoving all of a program's code into a single file?

Really, I am not a huge fan of the MVC pattern.  It places, sometimes, arbitrary guidelines regarding what should be placed in the Model, the View and the Controller.  However, it is better that the SEIOF pattern!  (Shovel Everything Into One File)

In my opinion, a logical separation of interests is best and basic.  One file for the GUI, one or more files for the application or business logic and one or more containing global types, classes, utility code, etc...

Placing all that into one large bucket can be confusing.  Please...  If you are a programmer, please, please separate your code a little bit.  Help save the next programmer's sanity.

Oh...  And those long methods/functions/procedures...  While in college I was taught that a method, function, procedure, subroutine, what-have-you, should be less than a page of printed code.  While that isn't always possible, it is still a guideline that I try to observe, and firmly believe other programmers should as well.

Happy Friday!!!

Tuesday, July 18, 2017

This is one HOT little post!

Sooo...  What exactly are you expecting???

Dirty minded people...

It's HOT here...  88F with a humidity that would make any jungle animal quite comfortable.

Anyway...  My mind turned to this blog again.  You know, I really SHOULD post more here.  I mean, with my newfound projects and all.

Projects, you ask?  Yes, I have a few new ones...

  1. Learn C.  I mean, more than the typical advanced, scrolling, multicolored "Hello World" sort of level.  I mean, really learn it.  I really thought long and hard about whether I wanted to learn X86 Assembly or C.  My brain is still on the fence just a bit, but when I sat down, wrote a "Hello World" program in each, the C version compiled and ran the first time.  My Assembly version required some research to understand some of the assembler switches on NASM.  Sure, I got my assembly program to, er...  assemble but was a pain.
  2. I found my favorite college textbook, "An Introduction to Data Structures With Applications" by Tremblay and Sorenson.  There may be better text books out there that cover this subject, but this is the one I have...  And from my days at WIU, it is my favorite.  What am I going to do?  Well, when I used this book, all of our projects were written in USCD Pascal.  What I would like to do is use several languages to write all the projects in the book.  I am thinking of using C, Free Pascal, Modula III and Lua.  Maybe a few others like Assembler, C++, Python, Java or Rust.  Not certain, but it sounds interesting.
  3. Maybe...  maybe find an open source project to contribute my time.  
  4. Sailing...  boating... sailing...  OMG, I am a sailor!  Yes, my significant other gave me sailing lessons for my birthday.  Finished class about a week ago and bought a little sailboat built in the early 1970s by a company in Missouri called Advance.  She is 16 feet long, and also known as the "Sweet 16".  Great little boat, but is just for me.  Our 18 foot cruiser is currently in the shop for repairs and HOPEFULLY will be home before there is ice on the lake.
  5. Project StarStare, my little project to automatically detect meteor streaks in night sky photos is on a temporary hiatus but my be revived this winter.
  6. RuralRuins will see some new photos, I promise.
Anyway...  Probably a few things to blog about here.

And...  There is plenty to bitch, moan and complain about...  So...  Be back soon. 

Monday, May 29, 2017

WeatherUnderground Is Selling WHAT???

So there I am, innocently checking the forecast for today on wunderground, when what to my wondering eyes does appear?  BOOBS!  BREASTS!  HOOTERS!  (etc... etc..)  YES!  What has happened???  I wanted to know if our local lake would have weather agreeable to walking along the beach this afternoon and, while my primary goal was achieved, I also experienced an eyeful.

The advertisement on their page was not selling pornography, please don't think that; this advertisement was selling clothing.  Specifically, high-end blouses that are quite see-through!  I'm not a prude by any means, but is this a website that should include this sort of advertisement?

Deep in their Terms Of Service, there are references to 'Network Advertising Initiative" and "behavioral advertising" and the "Digital Advertising Alliance."  My reading of their many pages on privacy and data collection and cookies brought my fuzzy mind to one conclusion: they don't care much and leave it up to the users to either accept it, use some sort of tool to opt-out of certain advertisement programs, use an ad-blocker or use another weather website.

Honestly, there is NO reason any advertising algorithm would accurately believe I might be interested in seeing overpriced see-through blouses.

Is this a matter of corporate greed or desperation for a few more pennies of advertising income?  Is this a failure of AI and/or "behavioral advertising" code?  What worries me about this is, what if a precocious five year old used his mom's computer to check the weather and saw...  BOOBS???  At least PG-13 boobs.  When I was a kid, these might even verge on the edge of a "Rated R" evaluation.

Continue reading for screen shots.  Fair warning...  these are likely not safe for work.

Thursday, March 23, 2017

Implementing a Simple Weather ScreenSaver in Linux

Starting with that first real-life tornado experience as a seven year old, I have been intrigued with the weather.  Going back to my college days I would watch the Weather Channel for hours-on-end when not doing school work.  After my freshman year (1985 or 86 or 87; don't remember completely), I passed my ham radio Technician test and was able to participate as a weather spotter.

Wanting to watch the weather on my computer while at work, many years ago I wrote a little program that would rotate the Windows background image through several current weather maps downloaded from NOAA and NWS websites.  Honestly, it worked OK, but not stellar.

Living Las Vegas gave me very little drive to be informed with the weather; it was simply depressing.  Hot... Hot...  OMG Hot... WTF Hot... oh... one nice day.  meh...  FUUU HOT!  I did NOT like the weather there.

Now, living back in the mid-west, I have been gaining interest in watching the weather again.  Since watching any cable weather outlet while working is quite distracting, a weather screen saver is the next best thing.  In this post I will detail how to setup a desktop Linux distribution (Debian "Jessie" to be exact) to download maps and radar images from the NWS and have the screen saver cycle through the images.  Personally, this runs on my spare Linux box next to my work computer.

Friday, March 17, 2017

A Linux Mint Live USB With Persistent Storage - The EASY way

Honestly, Linux Mint is my favorite Linux distribution.  Every piece of hardware I have ever thrown at it has worked out-of-the box without additional drivers.  Linux Mint with Xfce is quite lightweight and responsive on the somewhat older and under powered hardware I have a tendency to accumulate and use.

Anyway, to add to my previous post, Linux Mint Saves the Day, I wrote that post immediately after setting up the Live USB and watching a few things from YouTube and Netflix.  Unfortunately it was not after I booted to the flash drive a second time.  You see, the Linux Mint Live USB does NOT have persistent storage.  What I had initially done to setup the machine for watching Netflix was completely gone, thrown into the bit-bucket, fed to the monster of system confusion.  In short, making changes to a Linux Mint Live USB installation will NOT be saved for the next time you start a computer from that Live USB.

So, first thing I did was order a cheap little 250GB drive from NewEgg.  Cost only about $20 I think.  Anyway, while waiting for delivery, I researched the problem.  Oh, there are many interesting looking instructions on how to create a Linux Mint Live USB with persistent storage.  Unfortunately most of these solutions looked to be a bit complex and involved and even somewhat confusing.

Then, I thought of it...  Another flash drive...  Just install Linux Mint from the Live CD to the empty flash drive!  Now...  this is SLOW.  I sat there for nearly two hours while it installed.  And the resulting Linux Mint install on the USB is equally slow but does work.

So...   the solution: install from Linux Mint Live USB to an empty USB.   My recommendation: spend a little more than the cost of a USB drive, buy an inexpensive hard drive and install there.

** BASIC DISCLAIMER 
Don't know if this solution will work in all cases.
I used Linux Mint 18.1 "Serena".
My computer had USB 2, not 3 or some other faster, better interface.
Some other things I can't think of at the moment.

Wednesday, March 8, 2017

Linux Mint Saves the Day

So, there my wife and I were...  Just sitting in front of our television, preparing to continue our binging of Jessica Jones when, for some presently unknown reason our media computer would not boot.  After a bit of investigation I determined that the six year old Seagate hard drive had ceased working properly.  At times the BIOS would see the drive and Windows would partially boot but inevitably lock.  Other times, the BIOS saw no hard drive.

So...  No Netflix, no Winamp, no YouTube, no Hulu...  Nothing but on-the-air broadcasts.  We live in a rather rural area that is only covered by Iowa PBS, and affiliate stations for ABC, CBS, NBC and Fox.

Last night I thought, rather than buy a new hard drive for this old computer, why not just run Linux Mint from a live flash drive?  And there it was...  Just that easy.  Well...  almost...

After getting Linux Mint running on a 16GB USB flash drive, I tried Netflix using Firefox.  Netflix complained that the browser wouldn't handle it.  OK, I download, install and try Chromium.  Nope...  Same thing.  After 30 minutes I discovered the solution...

If you want to watch Netflix on Linux without doing a lot of tweeking, use the Google Chrome browser.  Just install and use. No tweeking or adjusting.  It just works.

Many thanks to the Linux Mint and Google Chrome folks!

Friday, February 10, 2017

Anyone Else Tired???

So, this is my "on-call week" for week.  That means I need to be available constantly from 8AM Monday through 8AM on the next Monday to fix things at work.  Usually not much breaks; us programmers don't like to piss-off the other programmers when they are on-call by writing shit code.  And...  none of us want to get 'the call' from any of our bosses.  Seriously, we are all professional and most of us have worked where I am employed for the last fifteen years.  Personally, I am at nineteen years later this year.

Anyway, being on-call occasionally requires waking up at any hour of the night to fix something that is broken.  Two nights ago something little broke at about 5AM.  It was a simple repair but I couldn't go back to sleep.  Last night I had trouble falling asleep and this morning had to wake up at 4AM to assist with a software roll-out.

I'm tired.

Over the years I have created a list of activities that are verboten on days such as these.  This list includes: buying things online; bidding on items in online auctions; signing anything important; investing; handling power tools; motorcycle riding (or bicycle riding for that matter); boating; building bon-fires and working on the household electrical system.

This morning I added another item to my list of verboten activities...  updating computer operating systems.

I foolishly thought updating my Debian Linux machine would be a no-brainer...  Log on as root and apt-get update and then apt-get upgrade.  Several packages did indeed update.  Even saw a few comments about a kernel upgrade.  No biggie.  I just sat back, focusing on my coffee and the software rollout, allowing the upgrade to continue.

Coffee break.  I check the upgrade and YEA, it is complete.  I then start  my backup script; just a mount and then a call to unison.   BBBZZZTTTTTT!!!!!!!  I see an error...

mount error: cifs filesystem not supported by the system

You see...  I have a Verbatim NAS I use as a hot backup for all my PCs.  My Linux backup script simply uses mount to connect to the NAS and unison to perform the backup.  After the update/install it was just not going to work!  I scrambled...  My Windows machines could connect to the NAS.  My other Linux computers could connect as well.  I was pissed.  I searched and poked and tried different things for hours.

Then...  after several coffee's and a few ef-bombs, something occurred to me...  I hadn't rebooted the machine.  Shit!  I rebooted and SHAZAM, all is good in my Debian Linux world.  Nap time... that's allowed.

Friday, February 3, 2017

What to do with all that speed???

So, computers based on quantum physics are already being planned, designed and in some cases even being created.  The electronics used in quantum computing do not rely on relatively slow semiconductors; they use near instantaneous quantum technology.  No, I don't know the details, but I do know that once some developers get access, there will be abstractions upon abstractions upon abstractions built, to the point where a quantum computer will perform about as well as a 80386 running OS/2.