Saturday, March 24, 2018

The Road to Ruby on Rails

Learning Ruby on Rails

Wow, Ruby and Ruby on Rails is a different animal. What I like about it is that it's monolithic and self-contained and what I don't like about it is that it's monolithic and self-contained. What I mean by this is that Ruby and Ruby on Rails is so different and in its own world, it practically forces you to specialize in it. Specialization is very dangerous thing for software developers because software technologies are constantly and rapidly changing and therefore skills in high demand today could, and most likely, as all things, dry up tomorrow. When you are forced to look to another skill, it's always the "years of experience" over "acquired skills" that count. What hiring managers always fail to understand is that software engineering is software engineering, no matter the programming language, framework or methodology. Blah.

I few Ruby/Rails ways of doing things

-Ruby likes to call what are well-known as an object's "properties" object "attributes."
-Rails has a million short-cuts to do the same thing that really only saves a few characters of typing.
-Ruby and Node.js have many similarities so you have to wonder which came first. I'm guessing Ruby. After that, one has to wonder which came first Ruby or Python. IDC.
-Static class methods are defined/named with the prefix of "self."
-The Ruby gem that is a test suite product to test Ruby code, called RSpec, likes to refer to a "test case" or single "test" as an "example". This test suite gem likes to refer to "assertions" as "expectations." So far, I really like the RSpec gem except for its own terminology for what is well-known, industry-wide, nomenclature.

RSpec is like nothing you've seen before

RSpec is a test framework for testing Ruby programming language and Ruby on Rails applications. It seems to bend over backward trying to couch test implementation as if expressing paragraphs of English sentences. Unfortunately it uses a terminology that is not common to the software development industry - past or present (and I know a little about the past). It's a bit rough to wrap your brain around but I can see that you can get away with using a small subset of the specification to do a decent job at testing your ruby code.

Monday, March 12, 2018

The Spouse is Mightier than the Sword

I have good friend who is a fellow developer, and a great one I should say, that developed a tool he uses in the course of his business as a freelance developer. From the first time he showed me the product, I told him what I thought. That is, I thought the product was too complicated for its rather simple purpose, that he used terminology that no normal user of his product would understand and that had features where the complexity of the feature outweighed the utility and usefulness of the feature. He'd laugh off my feedback.

So way down the road, close to when his tool is nearly completed (in his eyes), he has his wife give him feedback on the product. AND GUESS WHAT! She mostly had the same feedback as me!

So I had a good laugh at the fact that he took his wife's feedback over me and implemented the required radical changes! So now, when I want to change his mind about something, I'll go through his wife.

A powerful lesson for those mere mortals, like myself, when there is a need to influence a brilliant person.

Thursday, February 08, 2018

My Bank's Website Can't Add!

I'm doing my income statement for my taxes and I discover I'm $12,000 off. What! So thinking it's a dumb mistake, I stay up nearly 24 hours without breaking away from my desk, not even to eat, racking my brain and scouring the numbers to see where I went wrong. It finally dawned on me to to recheck the beginning and ending balances for the year.

To get the beginning balance of 2017 for the account, I had to query a range of dates that preceded Jan 1, 2017. So I queried transactions from Nov 1, 2016 to Jan 15, 2017 (there's not much activity in this account). Then I picked the very last transaction of 2016 and called that my starting balance for 2017.



See if you can spot the problem in the attached listing of a range of transactions.

I thought my beginning balance should be $23,290.33. But wait!
the previous balance is 11,289.85. What's 11,289.85 + .48?

It's supposed to be $11,290.33, not $23,290.33.

Take a look at the attachment, you won't believe your eyes.

Anyway, after using $11,290.33 as my new beginning balance, I'm only off by $137. Much better!

Hey Bank executives, you need to stop going with the cheap bids for your online banking websites. Unbelievable.

This Bank's website is particularly bad, riddled with defects, clunky and slow. Ask me what bank it is and I might reveal it.

Tuesday, January 30, 2018

Just added yet another production service...

I'm setup with the hardware and software to render your favorite vinyl LPs to iTune (Apple lossless) audio files. I can even add the meta-data that iTune uses to correctly insert the files in the iTunes library. Of course, the files match CD digital quality.

I can even filter out the rumble and scratches but I personally don't prefer since the rumble and scratches are endearing to me.

So if you want to bring back those fond memories, contact me.

Monday, January 29, 2018

What the heck, going ahead and learning Rails (as in Ruby on Rails)

I know or played with many JavaScript frameworks (including, jQuery, Angular 2++, Vue.JS), a little Cordova WebView targeting, CSS3 and Bootstrap, HTML5, middle-end technologies like NodeJS, PHP and .NET. Meanwhile Ruby on Rails has recouping a surge of popularity (I'm not sure why or it might be a figment of my imagination - if you know, please share). But whatever, I decided to take the next step and am now learning Rails and its companion webserver Puma. What the heck, get it over with. At first look, Rails seems to be what everybody calls a CLI implementation. And, the Ruby on Rails framework is pretty complete, having thought of and providing everything a developer needs under a single project directory structure (minus the language Ruby itself and the database server).

First thing "not" to do. Don't try to integrate MySQL server installed with XAMPP with the Ruby on Rails framework installed using Homebrew and Gems - no work'y and a huge waste of time trying to figure out how to make it work - blah.

So here I go...

Friday, January 19, 2018

What's nuts about the latest, new programming languages and programming language enhancements

1) There is really nothing new about them. In fact, some are a re-hash of languages and days gone by. The authors of these languages just don't know history, leading to history repeating itself, over and over and over... (recursion, infinite looping...). Blah!

2) Most of the languages aim to do one thing, reduce typing. Really? No programmer types these days. Smart editors and IDEs auto-complete and do the typing of all the programming text leaving only data to be typed. And data is always cut or copied and then pasted.

3) The new languages strive to remove the need for syntactic sugar (end-of-statement markers like ';' and '(' and ')' to group parameters, '{' and '}' to mark lexical levels...) reducing the readability of program source, returning code back to the days of terse, unreadable gibberish, mass of random text. Rendering the source difficult to review, visually debug and pass onto the next developer. Blah!

4) Let's not forget, introducing more ways, usually with less keystrokes, to do the same thing bloats the language; bloating it into volumes of documentation. Please, keep the language separate from libraries - don't integrate functionality into the language that can be simply packaged as a library.

Let's make a new rule. If your programming language can't be described in a book with the same number of pages or less than "The C Programming Language" by Kernighan & Ritchie, please just stop. And, yes every programming language needs documentation - a language is only intuitive to the person who authored it. Really.

Monday, May 30, 2016

So What Happened with the Job Interview?

Well it's been two years since my last post. In my last post, I talked about a job interview with a small startup where if I was extended an offer and decided to take it, I would walk away from a mega-company that I've been working at for twenty-five years.

Well I did get an offer. And it did pay more than my salary at the mega-company so I left the mega-company after twenty-five years. Pretty stupid ah? I left without taking an early retirement or downsizing severance package because I promised myself I wouldn't leave unless I had a comparable or better paying new job. The timing, of course, never worked out.

The position with the startup didn't last - the startup didn't have product or a viable idea for a product. I see that the startup's name is still mounted on the side of the building but I don't know how the startup could possibly be sustained at this point.

Nevertheless, I was a fifty-plus-year-old out of a job in the midst of Obama's utopian shrinking economy. That'll put a spring back into my step.

So what happened to me? Are you dying to know? You would be amazed.

Sunday, May 18, 2014

The Dreaded Software Job Interview

I was at a job interview the other week. It's something I dread. It's like taking tests in college, I just freeze up over the easiest of technical questions. I practically have to start counting with my fingers and toes. Also, while my brain freezes, my mouth starts to run, talking about all the observations and strange things that occur in the software industry and in my current job. These observations are sometimes perceived as painting me as being a maverick, someone who bucks the system, someone who is not optimistic and can drag a team down. This perception can't be further from the truth.

Many companies do a terrible job at evaluating candidates - and I'm talking about both small and mega companies. In a typical interview, there is usually the "How would you move Mount Fuji" type questions. That is, they want to see your thought process in approaching and attempting to solve an impossible task. For me, the problem is not the question, but that it's asked in a highly stressful situation. So in a sense it's a stress test. Here's the problem with a stress test for software engineering candidates: it's not reality. Good software choices can never be rushed and good software practises never come out of a stressed, quick-turnaround environment. Good software takes research, collaboration, a lot of rework, a lot of testing, making trade offs and back-of-the-mind, secondary, subconscious thought. The usual form is you take all of that and ram it into a time-table that in no way can resemble a schedule that can be depended upon. To me, the formulation and translation of tasks to scheduled releases is pure hocus-pocus - only managed by extraordinary individuals possessing great common-sense, experience (in regards to "real" software engineering) and patience. A good software engineer has to deny himself and quietly and quickly advance the judgement of others.

I have to tell to you though, I was very encouraged by this last interview. Why? Because one of my interviewers shared with me his thoughts about how so many software companies interview candidates wrong. Wow, I thought to myself, this guy gets it. I WANT TO WORK HERE!

I don't know if I'm going to get an offer but I hope I do. My opinions and observations that I can't help myself from expressing are opportunities. That is, opportunities to create something really special, to increase the efficacy of a project team or product, to meet customer needs, etc... Really, they're just problems that I observe and notice that might have a solution. A solution to implement and move forward from so that the next problem can be taken on.

If I get hired, I might start like going to work again. Wow, what a concept. (But really, I never stopped working.)

Saturday, April 26, 2014

I'm back.

I started reading a book entitled "Choosing Yourself" by James Altucher. The author is pretty eccentric. But I'm starting to implement what the author calls "Daily Practice." Why? Because I have to get out of my current blood sucking employment situation where I've been for twenty plus years. Yes, I'm a software developer working for a major corporation. James Altucher contends that the days of cradle-to-grave corporations are toast. That corporations really, really want to get rid of their cubicle employees (and remote employees, for that matter). And I see this on a daily basis, the desperation is thick.

I really need to stop blogging about politics and the stupid stuff I hear in the news. In fact, I have to stop watching the news because there is nothing I can do about it. It makes my head explode. Instead I'm going to blog about what I know about - me. HA! I choose me to blog about. AND GUESS WHAT - I'M MORE INTERESTING than the crap on the news. Just ask my friends. Accept for Chris, he's really an interesting tormented soul - maybe more about him later.

OK, let me talk about one of the many things that happened at work this last week. It's so funny and typical.

A colleague and friend of mine, who is the smartest guy I know, had to integrate a software change (get it in the finished product). However, the software change had to be matched in two software repositories. (For those not in the industry, a repository is where to place your supposedly finished, tested, and approved software changes so the changes can be bundled into the customer installable software product). If the software change was not matched in the two separate repositories, the change is rejected. So my brilliant friend submits the same change to repository A and then to repository B, because there is no way to submit to both A and B at the same time. The change is rejected with a grammatically and semantically incorrect error message that I wish I could share with you but I can't. So my brilliant friend submits the change to repository B and followed by repository A. Same rejection and error message. And as you could of guessed, there was only one person in the entire corporation that knew how to get around the problem. And yes, he wasn't available. I think my friend and I going to have tee shirts made with the text of the error message - IT WAS THAT FUNNY!

The tee shirt will go something like this:
"I work at a place where I get this error message:
[Error Message]
Can you help me?"

Going on sale soon. Please submit your orders.

A new business idea: a tee shirt company which makes tee shirts with real world examples of implemented gibberish. (Coming up with new business ideas is part of my "Daily Practice" - thank you Mr. Altucher)