Friday, December 11, 2020

What do you call the person who graduated last in their med school class?

Doctor.

It's an old joke, but one I very much appreciated today. Just like the person last in class, I would like to have done better: I needed 700; I got 721. I was pretty close. But, at the end of the day, this still belongs to me....

Badge for MCSE: Data Management & Analytics

I knocked out 70-762 today. 

Study materials:
Udemy Courses
MeasureUp tests
Microsoft Press Exam Ref books
Exam Skills
Microsoft.com Exam Reference

MCSE: Data Management and Analytics

Since I began my professional geek journey a little over two decades ago, I've known about the big Microsoft MCSE Certification. It's changed a bit over the years, but I honestly never thought I'd be one of the people to obtain one. On my journey to MCSE, I am now 3 for 3 (well, technically 4 for 5, but we don't count MCSA for SQL 2012/14, right?). That's 70-764 and 70-765 for an MCSA: Database Administration. And today caps off 70-762 for an MCSE: Data Management & Analytics

I know Microsoft is retiring MCSx at the end of January, but this was a requirement for where I work. I've  only had a few months to knock out all 3, but I'm a little proud of myself for actually pulling it off. It helped that I've been a database person for several years now, but it REALLY DIDN'T HELP that COVID has played a little bit of havoc with our ability do things like be around a proctor. I've been fortunate that we have a proctor site on base that I can take these tests in. There is absolutely ZERO chance that I could make my home office an acceptable place for an exam proctor.

Since I have access to that on-base proctoring, I think I'll probably also take 70-761 and add on the MCSA: Database Development while I can.

And since Microsoft has apparently decided that Azure will rule the world, I guess I'll be taking a look at that next. 

I'm going to try to enjoy my shiny new MCSE for the last couple of weeks of the sh*t-show that has been 2020, and not even think about certification stuff until January. 

Yeah, right.

Wednesday, December 9, 2020

An Aviation Legend Has Passed Away

Chuck Yeager's life reads like a storybook. His aviation career started on the mechanic side, but he apparently decided to become a pilot after realizing that "pilots have beautiful girls on their arms". During his early exploits as a P-51 fighter pilot, he was shot down over France, but survived the bailout to be rescued by the French Resistance. He escaped over the mountains to Spain, carrying another wounded pilot (who he had to preform emergency surgery on in the field), and was reunited with Allied forces. He was able to talk his way back into a flying slot, and on October 12, 1944, shot down 5 Luftwaffe planes in a single engagement - two without even firing a shot at them (by colliding during evasive maneuvers). Later that November, he became one of the first pilots to shoot down a German ME-262 jet. 

Chuck Yeager came home from WWII as a Double Ace, with 11 confirmed aerial victories.

At that point in their career, a pilot has had a pretty good run, so they should probably retire, right? Not Chuck. 

Photo: Smithsonian Air & Space Museum On October 14, 1947, Chuck Yeager climbed into the cockpit of a Bell X-1 (named "Glamorous Glennis" - like all his other aircraft - after his wife), to attempt another first. 

Up until this point, it was believed that an airplane couldn't move faster than sound without breaking apart. It showed an unbelievable amount of guts to want to prove that belief wrong, and it took a very special pilot to be willing to risk everything to shatter that belief. Chuck was that pilot.

The margin of error for that flight was incredibly slim, and when his drop plane released him well below the required speed, the attempt very nearly ended in disaster before it had even really started. But Chuck Yeager's piloting skill allowed him to keep the X-1 under control and begin his test run. 

According to Yeager himself, the only indication that he had even crossed the Sound Barrier was a small blip on the airspeed indicator. 

He did it.

His earlier exploits as a pilot had already likely ensured himself a spot in the history books, but this event highlighted him. Everyone would know the name Chuck Yeager.

He ushered in a new age of aviation, and he continued on to push the limits further and further. He faced death several times over the course of his career, but kept on keeping on. His story is legend.

On December 7, 2020, Chuck Yeager, one of the most legendary and fascinating people in the history of aviation, passed away at 97 years old. 

From his autobiography"I haven't yet done everything, but by the time I'm finished, I won't have missed much," he wrote. "If I auger in (crash) tomorrow, it won't be with a frown on my face. I've had a ball."  

General Yeager, you have been an inspiration to pretty much every pilot I've ever known. Thank you.


Bill Bramhall's editorial cartoon for Wednesday, Dec. 9, 2020, following the death of Chuck Yeager, the first pilot to break the sound barrier. (Bill Bramhall/New York Daily News)


Tuesday, December 1, 2020

Advent of Code 2020

 Advent of Code 2020 has begun! 


I have a lot going on right now, but let's see if I make it further this year than I have in past years

Friday, November 27, 2020

Two Down.....

One (+1) to go.... And an MCSA!

Up next is 70-765.

Study materials:


I studied hard for 70-765, and I procrastinated a bit again on going in to take this test. I wanted to knock all 3 of these out before Thanksgiving, but my Imposter Syndrome was really flaring up. I was slow. And then, because of COVID, I was delayed trying to get into my testing center. I could have done a remote proctored exam, but that would pretty much meant finding an alternate, quiet place to go for it. There's no way possible that I'd be able to clear my home office enough to satisfy the proctors. Plus, I've read some horror stories about proctors ending tests if someone just looked away from their screen. No thanks. 

Fortunately, the Army base that I work on has an Authorized Testing Center right across the street from my office, so guess where I decided to take the test.

Unfortunately, the main proctor there was quarantined because of COVID, and the other proctors were either unavailable or had tech issues with Pearson. The clock was ticking, and I was running out of time. 

Fortunately, I was able to schedule a slot THE DAY BEFORE THANKSGIVING! Huge Thank You to the people over there who were able to schedule me in right before a holiday on short notice. 

This test was harder than the first, but once again, I finished with plenty of time left. I think it took me just a little over an hour to finish. I thought I'd tanked this one, too. But the voucher I bought included a free retake, so I could study over Thanksgiving and retake it the next week. No biggie. 

70-765 Badge

Final Score: 790 :-)

It wasn't spectacular, but it was PASSING. I got to breathe a huge sigh of relief and know that I'd get to at least enjoy my Thanksgiving break. 








Best of all, I got to call my wife and tell her I had now earned one of these:





















Now all that's left is just to cap it off with 70-762 and the MCSE. I got this. 

Wednesday, November 18, 2020

RECAP: Adobe ColdFusion Summit 2020 - Day 2

 This will continue my mostly stream-of-consciousness review of Day 2 ot ColdFusion Summit 2020 online conference.


DAY 2 (For me at least) 

At 613 AM CST, there are 2412 Total Attendees with 311 now attending. 

Times are still listed as IST, so I have no idea what time what is showing today. Guess I need to do some time zone calcs. :-/


1. Become an Application SUPER-HERO - Reduce the impact of technical debt and keep applications performing as they should -  05:00 PM - 05:50 PM (IST, GMT+5:30) - David Tattersal

I came in well after this one started. This schedule display is really disappointing. Sorry, David, but I'll have to watch the recording of this one. 


Well, I guess this was the "actual" end of Day 1. There's a large break now until the next sessions, so I guess it's time to start my morning here. Coffee and shower. Be back in a bit...


NOTE: Just found https://www.worldtimebuddy.com/. It's showing me a running conversion from IST to CST, so maybe that'll help with scheduling. If nothing else, it easily shows that IST is 11 1/2 hours ahead of me here, so that definitely makes it easier to translate this schedule. A 9PM IST session is a 930AM CST session. Guess I'll be back in a few hours for the actual start of Day 2. 


-----------------------------------------------------------------------------------------


ACTUAL DAY 2 START:

Going into the first "official" session of the day.


1. CSS Crash Course for CSS Haters or Novices - Jessica Keener  @mistersender Twitter/Github


The lower the specificity, the better CSS will work. 

Star Wars illustrations of CSS Specificity Rules is AWESOME!

Doesn't recommend inline style's or !important tag.  NUCLEAR OPTION

CSS => #style vs .style vs style

Semantics - Naming stuff is hard.

Problems with CSS:

- Specificity

- Difficult to locate styles

- Poor context. Where is stuff?

- Difficult to maintain specificity

IT CSS == Inverted Triangle of CSS - @csswizardry (Harry Roberts)

*** BEM method - Block | Element | Modifier - Solves the problems of specificity, context and consistency.

ex card__title--modifier => 

Use Source maps.

GoogleFu: "Flexbox and Grid", "lobotomized owl selecter"


NOTE: Using https://www.mmhmm.app/ for preso. Only available for Mac. But Windows Beta coming soon according to their site. 


Recommended "CSS Secrets: Better Solutions to Everyday Web Design Problems" by Lea Verou



NOTE: As of 10:29 am CST == Total Attendees : 2717 Now Attending : 636


2. Isolation is a Good Thing (For Your Local Development Environments) - Dan Skaggs

This is a talk about using Docker in ColdFusion. 

By default, CF running in a Docker Container, is very isolated (pretty useless). 

- To allow browsing, set up config to talk to webserver inside container. Open/Alias ports. 

    -  This allows access to the Admin panel. 

    - NOTE: In production, you may not want to expose the Admin interface. 

- To serve our code:

    Need to map a folder. CF Docker image, by default, expects to see code inside the image in /app folder. 

- Stop the Docker then map the "volumes" in the docker-compose.yml.

- For CF2021, must install needed packages. 

- When things go wrong..... log files. Must be mapped to an on-disk folder. 


--- I stopped writing notes as Dan talked. More info about setting up databases and data connections. 

I need to learn more about Docker. 


3. Securing ColdFusion Applications - Pete Freitag

I've watched Pete give similar presentations before. They're always full of good information. Pete is a very sharp guy, and any dev will definitely benefit from learning more about security. 


Mature code bases - fun to secure. 


Security often isn't addressed until after a breach. 


First step to securing your old code is to just delete the old code. 


Don't use homemade version control. index_2.cfm is a bad way to version. Version Control is not a fad.


Find obsolete code by looking for files that haven't been modified in the last year. Linux also has the ability to display Last Access of some files. 


Patch your servers. Make sure you're running a supported version of your software. 

Core Support for CF2016 ends Feb 2021!

Also look at OS and Java. 


Follow the Lockdown Guide.


Equifax Breach is a great example of why you should check your software and components. 


Continuous Security ->>> 

  You need version control. 

  Use source inspection security tools. 

  

New functions in CF2021. 

InitSAMLAuthRequest

InitSAMLLogoutRequest

ProcessSAMLResponse


NEVER TRUST A MIME!


Bank of Insecurity is AWESOME!


4. ColdFusion + ReactJS (Round 2): Taking front-end interactivity further - Minh Vo

http://draftstudios.com/demo/

5. Get your Front End Rolling with Vue and InertiaJS - Eric Peterson

These last two sessions dealt with a lot more front-end than I've used. Great info. Both Minh and Eric are very knowledgable educators. These sessions were engaging and 


6. Panel Discussion - Future of ColdFusion

Rakshith Naresh 

Brian Sappey 

Dan Wilson 

Tim Cunningham


The future of ColdFusion definitely lies in The Cloud with more REST functionality. 



After the end of the final Panel:

Total Attendees : 3019

Now Attending : 456


There isn't going to be a closing session, so it looks like it's just ending. 


note from chat:

Charlie Arehart46 sec ago

In case Dan doesn't clarify it, we should note that in CF2021 there is now an alternative to the full gui installer, in the new Express/zip installer. But it doesn't take away from the point he's making about the value of Docker to not even have to "install it" at all, and to be "within Docker" and easily removed/rebuilt/updated via yaml, etc.


==================================================

https://teratech.com/state-of-the-CF-Union-2020-partial-Results


RECAP: Adobe ColdFusion Summit 2020 - Day 1

 This will kick off my "mostly" stream-of-consciousness recap of Day 1 of Adobe's ColdFusion Summit 2020 online conference.

SCHEDULE


Adobe used vcofex.com for the conference. It looks nice. It looks well-organized. The PIP when leaving an Auditorium is pretty cool. It's nice to be able to watch your presentation while still being able to look at the schedule or around the exhibit hall, and especially while being able to access the Help Desk. 

My initial opinion is that this platform is nice, but this event is very poorly put together. The Schedule is confusing: Times are displayed in IST, and since India is almost 12 hours ahead of me, it shows start times for me many hours off. There doesn't seem to be a way to fix this for whatever reason, and initially, the presentations weren't allowing me to join because my time was still way off. It appears that they did something to open up sessions when they go live, but it's still confusing. I did find out that, since it's only two "Auditoriums" running each track, I can just open both up in two different tabs, and then just see when the other starts or stops. 


Day 1

Total Attendees : 1459    Now Attending : 945

1. Keynote:

There were some tech issues. Because of the schedule, I wasn't able to open the Auditorium presentation, so I missed the beginning, and with continued "lagginess" after I was able to open the preso, I also missed large chunks of it. I'll watch the video later. 


2. Managing deployments for your government clients - George Murphy

George talked about how to set up a CI/CD pipeline for an employer who is very locked down and without internet access. This is very applicable to me, since the Army if extremely locked down on what can be run and how we can run it. I'd love to set up some sort of Source Repo and CI/CD for our workgroup. I mostly do database stuff, but I also do some coding and some reporting development. I'd love to be able to get something set up to help keep history of what we have and what we do. 

2b. I switched over to the end of Brian Klaas' talk Building Serverless ColdFusion Applications with cflambda. Brian is always incredibly energetic in his talks and is extremely knowledgeable. I got to have dinner with him last year in Las Vegas at CF Summit 2019, and he was just a great, fun and enjoyable person. And he's very smart. He makes me want to know much more about AWS. 


3.  CFCrimes: Top Ten Issues Migrating to a Modern CF Stack - Mark Takata

Unfortunately had to leave about 10 minutes into this preso. The first few minutes were pretty interesting, so I'll be watching this one on video. 


4. Do It with ColdFusion: Building Your Own Tools with CommandBox - Matthew Clemente

Also missed the first few minutes of this one. His presos are always very informative, and I really want to learn more about CommandBox. So I'll be catching up on this one. So far, some of the CommandBox tools are pretty cool. Print Helper looks very impressive. (Can find what colors your terminal has available). 

There were some tech issues, and Matt's preso ran long. Sucks because it had to be cut off early and I'll have to watch the replay for the end. Otherwise, it was a pretty interesting preso. 

SLIDES HERE


5. This sessions has two presos that I'm very interested in. Charlie Arehart's "Hidden Gems" recaps are always pretty awesome, and I imagine with the recent release of CF 2021, he'll have some good info. But I know that he'll be posting about this and/or presenting this one again, so I may end up watching Dan Wilson talking about modernizing apps with APIs (especially since I can just rewatch these again later).

5a. How to modernize your application with APIs - Dan Wilson

 -- Don't know if this is more tech issues, but it appears that the previous session ran long, and I joined this one several minutes into it. 

One word. "Spaghetti". Dan is reminding me that it's lunch time. 

- Low Encapsulation - Low code reuse. 

 CopyPasteMania (c) :-)

 Taco Based Encapsulation - Medium - Just a little bit of code reuse. 

 Fried Chicken Encapsulation - High - Lots of code reuse. 

 

 He mentioned Adam Tuttle's REST Assured book. I bought this when Adam first wrote it, and he's apparently getting back into more Taffy again. Great stuff.   DISCOUNT CODE: CFSUMMIT


5b. Hidden Gems in Adobe ColdFusion 2021 - Charlie Arehart

 --- See my note on the other session. Scheduling got a little wonky here. 

 Caught the tail end. Lots of monitoring info available. More cool stuff. 

 

NOTE: As of right now, there are 1812 Total Attendees with 830 currently online. It's great to see this many CF Devs interested in CF Summit. 


 6. Have a career, Expert status not required - Dave Ferguson

Dave is always a good speaker, which shouldn't really be surprising considering his background. 

"What is an expert?" Good answers. 

So...... apparently Dave and I have a very similar Geek Origin Story. BASIC, Commodore 64s and MUDs. Best way to start. 


7. Panel Discussion - ColdFusion Application Modernization Challenges

 Kishore Balakrishnan

 Nolan Erck

 Brian Klaas

 Charlie Arehart

 Gavin Pickin

 David Byers

Last session of the day. Good panel discussion of the issues facing CF devs. Lots of good info, especially the recommendations about learning resources.


There are some very interesting sessions happening overnight, but I can't stick around to watch them. I'll catch the videos later. 

......

DAY 2 Coming Next .... 



Wednesday, October 21, 2020

One Down ...

Two (+1) to go....

I work as a DBA for a government contractor. I've been in the same seat for almost 4 years, but, since government contracting follows a different set of expectations, I'm currently on my 3rd employer. My first company wanted me to get an MCSA: SQL <WHATEVER>, and I began it on the SQL 2012/2014 path: 70-461, 462, 463

At the time, we were using SQL Server 2008, 2008R2 and 2012. I passed 461, then missed 462 by a couple of points, and while I was studying up to retake 462, we upgraded to SQL 2016 (another fun adventure that I need to write up) and got rid of anything lower. 

For an MCSA on SQL 2016, it only required 70-764 and 765, so it was also 2 more tests. I figured that route would be much more applicable to my work, so I abandoned 462 and switched to studying up for the SQL 2016 certs. Then there was some shuffling at my original company, and I ultimately got traded to another contractor earlier this year. The MCSA was no longer a requirement, and I had a lot of other priorities that caused me to keep procrastinating on the cert. 

Big mistake. I should have finished it, but it is what it is. 

In late July, I got traded again, to my current contractor. They wanted an MCSE: Data Management and Analytics. That's when the real fun began. 

When I dug back into the certs, I found out that Microsoft decided to retire their MCSA and MCSE certs in June. However, because COVID-19 has made 2020 a bit of an "interesting" year, they extended the retirement to January 31, 2021 (after a non-trivial amount of complaints from those currently in the testing cycle). Despite the retirement, my company still wanted the MCSE. Thus restarts the adventure. 

Chosen Path:
Since 762 is part of the MCSA: Database Development, I figured I'd also do test 761 before the end of January and get that MCSA, too. Why not, right?

First up was 70-764

Study materials:
The test was 44 questions and 2 hours to complete. I finished in 58 minutes and had a minor panic attack. I only marked 3 questions for review and it wouldn't let me go back to others. There was no way I could have finished that fast without seriously screwing something up. I went back to do as much review as I could on those 3 questions and finished up with only about another 5 minutes left on the clock. Time to see how bad I failed it...

70-764 Badge

Final Score: 824 :-)

I can promise you there was nobody more surprised than me to see that score pop up. 

But I did it. And I was thrilled

I finished the first one and now only had to knock out two more. (Did I also mention that in October I had to renew my Flight Instructor certificate? Such a fun month. But I digress..)

Now, on to the next one. 

Tuesday, July 28, 2020

T-SQL Tuesday #128: Learn From Others - July 2020 - Part 2


T-SQL Tuesday
So I thought about this one a little more, and I think I'll make it into an unintentional two-part T-SQL Tuesday post. In my initial post, I expressed my gratitude to AirborneGeek (t/w) for bringing me into the madness that is databases. But I didn't really tackle the intent of his topic for the month. 

Kerry, you know where I came from. You know my aviation background. So you know that I 100% believe in the importance of being able to learn from other people's mistakes. It's a big part of how pilots learn not to break things. 

I didn't set out to be a database person. I didn't intend to be in this place. But I can't exactly say that I didn't ask for it. I'm apparently more masochistic than I thought. I mean, when I met you, I was a ColdFusion developer...... Now I'm a DBA. I could have had a much lower-stress life if I'd just stuck with being a pilot. Sometimes I question my life choices. But it is what it is, right?

I submitted late this month, and I wish I hadn't procrastinated. I think your topic was excellent, and it is something that I completely understand. The global airline industry had to suffer some very hard lessons before they realized that knowledge-sharing, especially of the bad stuff, was actually an extremely good thing

I spent years as a Flight Instructor. You don't learn from perfection. There have to be mistakes. That's what "learning" is. But, sometimes, it's better for you if someone else had to learn the hard lessons first. Just so long as they tell you about them. And if you listen to what they did wrong, maybe you won't go down the same path. 

I could probably write pages about how to assess a risk and how to manage that risk after you've assessed it, but it always starts at the same place: you have to be able to IDENTIFY that risk first. And no matter what the topic is, you don't know what you don't know. Murphy understood that. And I'm willing to bet that anyone who has worked with any sort of system for longer than a few months understands that sometimes things break unexpectedly. Most businesses that I've ever been associated with work at a pace that's much more appreciative of your ability to quickly find the solution on Stack Overflow. I'm willing to gamble that most people would prefer not to be the first person to write a blog post about what they found out and how they fixed it.

Honestly, off the top of my head, I can't think of any unique problem that I've run into that I haven't been able to Google my way out of. I'm also fortunate to have an exceptionally good team that is able to cover the subject areas that I'm not an expert in (like the network). I got a rather late start in the DBA game, so I don't have Bertrandian levels of experience as the Guardian of the Databases. But when I was primarily a programmer, I was grateful that I wasn't that person when a database went sideways, and I've also come to appreciate that I used to be an extreme database abuser. I never really would have had the opportunity to ask Kerry silly questions if I hadn't been. 

In answer of this month's T-SQL Tuesday, I don't really have my own individual story to share, but I can affirm the importance of both sharing information that you probably wouldn't want other people to know and of accepting that information without any sort of judgement. There's a reason that people warn about making sure that you have a WHERE clause when you DELETE something, or the joys of accidental Cartesian JOINs on large tables. At some point in a career, everyone has done it. Or they will. 

It's really hard to top a willingness to talk about what went wrong when your error cost millions of dollars and possibly hundreds of lives. But, if an airline can talk about how they screwed up, then no company should have even a tiny problem recapping the decisions they made that caused a multi-terabyte database to go poof at 4PM on a Friday. 

And no DBA should be too remiss to learn from (and not repeat) those mistakes.



Monday, July 27, 2020

T-SQL Tuesday #128: Learn From Others - July 2020

T-SQL TuesdayI don't write enough here. I let myself get too busy, and I often miss things that I want to write about. I have several articles that I've started and dropped and several ideas that I never even started. I do a great job of lurking and not a good enough job of participating when I should. So it's no surprise to me that I've been sitting on this post for a week and missed the deadline to officially participate. 

T-SQL Tuesday #128 for July 2020 was hosted by a friend of mine; someone I worked with a few years; and the person who is directly responsible for my transition from just a ColdFusion Programmer to also a SQL Developer (and now a DBA). 

When @AirborneGeek came to work with me, I was primarily a programmer who knew just enough SQL to literally be dangerous. I could get a query to return the data I wanted, no problems there. I had fallen into the normal trap of "My queries are slow. It's gotta be the database's fault." Or Network. But we all know the network is the cause of 99.9% of all problems, right? 

I think one of the primary reasons we even created his team was because we were an application running off of millions of records, with NO database experts, and our applications were slow. 

Specifically the reason why I became somewhat fascinated with SQL was because I ended up being responsible for an internal report that had to be run overnight because it ran for HOURS. I can't remember if I was the original author of said report or not (wouldn't be surprised), but it didn't really matter since it was my responsibility now. I thought it could do better, so I approached our new database team to see if they were smarter than me. Everyone knows that programmers are smarter than DBAs anyway, but I figured "What the heck?". I gave him my query. 

He held onto it for a couple of days, and when he handed it back to me, it looked nothing like what I had given him. But it gave me the same data and ran in only a few minutes! 

It may have been Voodoo, or it may have been Black Magic. Regardless, if not for my silly internal fault of always wanting to know "Why?", I'd be on a MUCH different career path.

Over the next couple of years, I had plenty of questions for him and the rest of the Database Team. The more I learned about how the database was supposed to work, the more I came to realize how wrong I had been doing things. That team taught me about how to do proper JOINing, proper indexing and generally how to make things faster and much more efficient. Also about how important it was to not accidentally write a Cartesian JOIN on a 10M row table.  ( Just FYI: That can apparently discover the memory limits of your SQL Server and earn you a desk visit from the DBA.) 

I know that my questions for @AirborneGeek probably seemed very basic to him. He always showed me patience when he answered my questions. He never treated me like an ignorant programmer, though in hindsight, I realize now how basic some of my questions must have seemed. So, What Can I Learn From Others?

As another pilot, I completely agree with the premise that piloting and DBAing have a LOT of similarities (disasters differ in magnitude, but are very similar in remediation, and a lot can be learned from other people's "Uh-oh" moments). 

My post really isn't so much about how I've learned to deal with SQL disasters, but about how I've learned to be grateful for the people who got me here. 

I can't say it enough, "Thank you, Kerry."



Though I guess I should also point out that the curiosity that was sparked has also led me to learn more about certain types of disaster remediation and recovery than I ever really wanted to know. So "Thanks again, Kerry."

Sunday, April 26, 2020

Come To Adobe ColdFusion Developer Week!

Just short and sweet... Adobe ColdFusion Developer Week is coming up. May 18-22, 2020. 

Hubble: A 30 Year "Failure"

Way back in the primitive days of post-WW2 America, astronomer Lyman Spitzer wrote a paper discussing the benefits of a space-based telescope. He spent the next couple of decades trying to convince anyone to help with the development of this telescope.

After many funding problems, a bunch of technical issues, an extreme delay caused by a Space Shuttle disaster (that traumatized almost half of U.S. school kids, including yours truly) and a sky-rocketing budget, on April 24, 1990, NASA finally launched the Hubble Space Telescope into orbit.

Hubble has had a somewhat difficult history. It was a very ambitious undertaking with a lot of moving parts that had to be precise to an extremely small degree. It had plenty of naysayers, and the cost overruns made it an easy target for jokes about NASA and budgets.

But the HST is an instrument that is going to significantly improve our abilities to look further into space than we've been able to, and we were going to get back some AMAZING pictures.

And then....

Credits: Left: E. Persson (Las Campanas Observatory, Chile)/Observatories of the Carnegie Institution of Washington; Right: NASA, ESA and STScI
Credits: Left: E. Persson (Las Campanas Observatory, Chile) /
Observatories of the Carnegie Institution of Washington;
Right: NASA, ESA and STScI
The initial results were quite a bit underwhelming. The jokes took on a whole new life, even prompting Jay Leno to joke that Hubble should be shot down and put out of its misery. The project was a bust. 

But fortunately, NASA has some pretty smart, persistent people working there. They realized that there was a problem with the mirror, and, since HST was designed to be manually serviced, they set out to do just that. It took a few space walks to get the mirror fully corrected, but after just the first fix in 1993, they got...

Credits: NASA
Spiral Galaxy M100 - Before/After 1st Fix
Credits: NASA
Hubble was working a lot better. 

In the ensuing years, Hubble has been upgraded and significantly improved. It has made over a million impressive observations, made numerous discoveries, significantly increased our knowledge of our universe, given us stunning images to look at and sparked an interest in space. Hubble is a pretty impressive redemption story and has become an unimaginable success. Not too shabby for a project that was only supposed to last for 3 years.

The James Webb Space Telescope has some pretty large shoes to fill. 

Happy 30th "Birthday", Hubble!


Hubble's Deployment
The Hubble Space Telescope, seen from the space shuttle 
Discovery during the observatory's deployment 
on April 25, 1990.   (Image: © NASA)

Jupiter Moon Transit, January 24, 2015
(Image credit: NASA/ESA/STScI)
Cosmic Reef
Hubble took this image, titled "Cosmic Reef," 
released April 24 to celebrate its 30th anniversary.  
(Image credit: NASA/ESA/STScI)

And a big THANK YOU to NASA, the ESA, the Goddard Space Flight Center and everyone else involved with Hubble.

Friday, April 17, 2020

Goodbye to an Old Friend

Today, I said goodbye to one of my oldest friends; a friend that has been with me for almost two decades.

This friend came along at the beginning of my software development career and has seen me through the many ups and downs of my path as a professional geek. When my youngest child was born, this friend was already there. Many years ago, this friend was destined for permanent retirement; thrown out like common refuse. Worthless. Headed for oblivion. But I saw value. I came to the rescue.

Home to home and half way across the state, this friend has followed me. It has been a rock and a comfort for me. I have battled many dangerous enemies with this friend. It has witnessed many of my adventures. This friend has helped me to face many challenges.

Sadly, it's time to say goodbye.

When I first found this friend, it was in a professional setting. Over the years, the friendship has moved to mostly leisure time.

The COVID-19 Quarantine has given me a chance to reconnect with this friend in a way that I haven't really experienced much in those ensuing 20 years. The last three weeks of Work-From-Home have given me the chance to spend a great deal of professional time with this friend, as opposed to the countless hours of fun and games this friend has been there for.

But the decision was made to move on before this craziness began. Commitments were made. Other companies were engaged to implement this split. I feel a little bad trading this friend in for a newer, younger model. But it had to be done.

My friend of 20 years will be leaving me today.

Old Friend
Goodbye, old friend.

I am frankly quite impressed that it has made it this long. Only ONE of its siblings survived this far, and that one met its end about 3 years ago. I wish I remembered the brand. I believe my brother and I purchased office furniture at Office Depot. We bought several of these chairs, and then a couple of Executive Chairs. All of them lasted MUCH longer than I ever expected them to. Whatever it was, it was a very impressive brand.

But, alas, it is time to move on.

New Friend
Hello, new friend.

I can only hope that this new chair is able to form the same long-lasting bond that the other one did. It's not as fancy as the old one was, but, so far, it's comfortable.

Time will tell.

Friday, March 13, 2020

What A Week!

Last Tuesday morning (March 3,2020), a little after midnight, my phone alerted me that there was a Tornado Warning in the area. I turned on the TV just in time to watch the News Channel 5 station get hit dead on by a tornado. ( and there's the Reporter's view ).

Shortly after that, it started raining pretty hard at my house, and the lightning flashed to a green sky. I knew it was coming our way.

I ran to get my wife out of bed and get downstairs with our son. We made it about halfway there before we lost electricity. The tornado touched down about a thousand feet from my house. It was over pretty quickly.

It was late, but my neighbors were out checking on each other. It was really too dark to see the full extent of the damage, but my block fared better than just a block over. Amazingly, I don't think anyone was seriously injured, but we did have a lot of downed trees and damaged houses.

We got electricity back yesterday.

Community response has been TREMENDOUS!

The day after the tornado hit, a friend of mine came over to help me cut up some trees. While we were doing that, another guy came up with his chainsaw to help cut. He didn't want money. He just wanted to help. Then we had volunteers from all over come into the area to help with cleanup. They finished cutting up my downed trees and hauled all of the stuff out to the street. All within just a few hours. The city has been coming by to haul off the debris.

Nashville Electric Service has put in a HEROIC effort and got our power back on.

My wife and I have been living out of hotels this week. I have some very good things to say about one, and some not so good things to say about another. When I get a chance this weekend, I'll post up some of the photos I took and videos I found, and I'll add a little more detail to my post.

There's still a lot of cleanup to do. The school my wife teaches at was severely damaged and classes had to be relocated. And there are other houses and areas of town with A LOT of damage still. A neighborhood just a few miles away from me was pretty much flattened.

We got lucky.

And despite the destruction, the people here are another reminder of why I love living in this town.

Thank you, Nashville.

Saturday, February 29, 2020

Happy Leap Day!

To be today, a year has to:

- Be divisible by 4
- NOT be divisible by 100
    - UNLESS it is also divisible by 400

Since 2020 meets the requirements:


HAPPY LEAP DAY!!!


... or as it's known to some who are finding out today that they messed up a date calculation somewhere,
March 1.

Sunday, February 2, 2020

Even More Date Masking..... Sorta

Today is is the 2nd day of February in the year 2020. And just like any palindrome, this means that it's written the same both forwards and backwards.

Today is a Palindrome Day!

Palindrome Days are pretty rare, except for the first few centuries of a new Millennium, which is where we currently find ourselves. I was here for the start of this Millennium, but (...since I don't want to make my vampire traits overly obvious and draw the attention of Buffy & Friends...), I doubt I'll be here for the start of the next one.

What makes this one pretty cool, is that it doesn't matter which of the two main maskings you use, mmddyyyy or ddmmyyyy, today will be the same. It's also pretty much the only day within my lifetime that the non-ISO date formatting simply doesn't matter.

Since I'm in the U.S., and we want to be different from pretty much everyone else, I commonly see my standard American mmddyyyy masking. That makes today 02022020. Or if you reverse it, it becomes 02022020.

But say I was looking at today from somewhere that is pretty much the rest of the world. Today is ddmmyyyy: 02022020. It still gets to be a palindrome!

It's also the 33rd day of the year AND there are 333 days left in the year.

Courtesy of https://www.pinterest.com/pin/523684262891075625/
Geek Overload = 11!
Since my brain has already exploded, this morning, at 02:02:20 UTC (or your local timezone if you're cheating), we can kick that palindrome out to a time component.

What if we go with ISO-8601 standard formatting: yyyymmdd. That's 20200202. The digits shift by a character, but we're still a palindrome. We have hit a palindrome date in 3 different formats!

This also makes today a Global Palindrome Day!

Our last one was November 11, 1111. I wasn't there for that one either. And our next one won't occur until 12/12/2121. Oddly enough, my son's birthday is December 12. But that date is slightly above the Guinness Record for Oldest Person. Who knows. At that point, he'd be over 120 years old. It would be pretty cool to cement a fairly interesting and likely unique Guinness Record.

But, once again, I offer you a very geeky Happy Global Palindrome Day!

Tuesday, January 28, 2020

Crystal Reports Permissions, Oh How I Hate Thee!

At work, we are decommissioning our Crystal Reports XI server and migrating to an SSRS 2016 server.

Permissions in Crystal Reports are a great big pain in my backside. 

That is all.

Thursday, January 16, 2020

T-SQL Tuesday #122 - Impostor Syndrome


This is the first time I've participated in a T-SQL Tuesday, and I need to start with an apology for being late. I know I'm technically violating the rules by several hours, so I don't expect to win the massive prize that these come with, but it is what it is, right?

The irony of my tardiness is that a large part of the reason I'm late (and the primary reason this is my first T-SQL Tuesday) is because I was waffling about whether or not I had anything useful to contribute. It feels a little odd to realize you are doubting your ability to talk about Impostor Syndrome.

On to my Origin Story:

 I've been into gadgets for pretty much my entire life, and my dad did his part to encourage my curiosity. He grew up working on cars and motorcycles, and he liked gadgets, too. The 80s provided him with plenty of geeky little things to play with. Fortunately, he was an airline pilot and had a little bit of disposable income for those geeky toys, so he could vicariously get his techie fix through my brother and me.

When I was a kid, I cut countless little snippets of wire for various iterations of the Electronic Lab Kits from Radio Shack (one of the BEST stores EVER). I disassembled numerous RC cars, so I could see how they worked. He bought a Commodore 64 and subscribed to Family Computing Magazine. I'm betting I'm not the first person to use those things to teach myself BASIC. I was off to a pretty geeky start.

In high school, I got two big things: 1) a serious girlfriend (who became my very patient wife), and 2) my pilot's license.

When it was time to pick a college, my mom wanted me to follow my geeky leanings and learn to be a programmer, but in the early 90s, a Computer Science degree was pretty much learning C and FORTRAN. No thanks.

After graduation, I decided to follow in my father's footsteps. I was going to be an airline pilot, too.

I immediately went off to Flight School, and for the next 6 months, I earned a few more certifications and became a Flight Instructor. I had been deemed skilled enough to teach other people how to fly airplanes. Cool, right?

I still wanted an airline career, so college was a Bachelor of Science in Professional Aviation . While there, I was also a Flight Instructor for other students in my same program. Several of my students are zooming around the skies today for Delta, United, FedEx and others. I was good at it. I knew what I was doing.

In the mid 90s, I got my nice, new degree, and I finally had enough qualifications for a move to the airlines. But it wasn't what I expected it to be. I didn't enjoying it as much as I enjoyed teaching, and a decent pilot salary was still about a decade away; it wasn't enough to feed myself, much less a wife and soon-to-be kid. I wasn't sure what to do with myself. Pardon the pun, but my life was kind of in a holding pattern.

 At the time, my little brother (who DID listen to Mom) owned a web development business and was looking for some help. He asked me to assist part-time, which shortly turned into a full-time need. I was enjoying myself, and didn't realize that I had just ended Career #1 as a pilot and started Career #2 as a programmer.

But this isn't where my Impostor Syndrome started. I knew that I was new and that there was a whole lot I didn't know; my expectations of myself were at an appropriate level.

It was a small company, so I learned way more than just how to program. I helped set up our network (a few times, since we moved). I had to administer all sorts of computers, including our application servers and databases and our workstations. When we acquired a company that customized portable computers (now called tablets) for pilots, my aviation knowledge turned me into a Subject Matter Expert and I became a lead for R&D. I was doing well and feeling pretty good about my ability to contribute.

And then the events of September 2001 made it difficult for both aviation and software development companies. We had to close a few years later.

I was a contract web developer for a few years, then landed at a Background Screening company. THAT is where my Impostor Syndrome kicked in. For several years, I was a software developer, then I did Support, then Business Intelligence (due to my earlier curiosity about our data), then back to Software Development. I learned a tremendous amount about all sorts of things, but I never felt like I knew enough about whatever it was I needed to know at the time.


I ultimately left there to get back into data, and since then, I've bounced back and forth between Software Dev and Database Dev, all the while, proclaiming that I couldn't help with X problem because I didn't know enough since "I am not a DBA". Which was usually followed by me researching whatever the problem was and ultimately helping anyway.

Throughout my career, I've worked with some VERY smart people. My curiosity has led me to read and follow other VERY smart people. This really hasn't helped me feel any better about my own skill level. I'm essentially a member of the unwashed masses who are "self-taught". My background and professional education are in Aviation, not Computers. I don't deserve to be with these people. Pretty soon, they'll figure out how clueless I am, and I'll be done. Humiliated and cast out.

That's pretty much the way I've felt for the last decade. I've worked many extra hours and done a ton of extra work so that my bosses won't discover that I'm not qualified for my position and should be fired on the spot. I started this very blog several years ago with the express purpose of being more visible and vocal for other devs, but I haven't written near the content that I wanted to because I've often feel like I don't really have anything to add to the conversation. For the last couple of years, I've wanted to speak at conferences, but I've procrastinated submitting my topics because I didn't want to try to talk about something I was clueless about (even though I did quite a bit of research to prepare). Too often, I sabotage myself because self-doubt creeps in.

 Last year, I realized that I've been working in IT over TWICE as long as I was an active pilot. I also can't really compare my skill level in Aviation to where I am in IT. They aren't the same. IT is a VERY broad field. There's way too much to know for any one person to know more than a slice of it. And Google has made me see how much there is that I just don't know.

Several years ago, I started going to a few conferences and actually began meeting some of the bloggers and writers that I had idolized. I discovered that they are every bit as brilliant as I thought they were, but they're also human and not the keepers of impossible volumes of knowledge that I'd built them up to be. They'd likely be the first to tell me that they don't know everything. And that's OK. The secret to being really great at something is to recognize your own weaknesses and cover them with other people who excel in those areas.

That realization has allowed me to understand that they are still extremely qualified EXPERTS, despite not having every answer, I need to learn how to accept the same from myself.

Today, I AM a DBA. And I'm still a Programmer, too. I'm doing what I enjoy doing. I'm not as fast as some people, but I don't have to be. I also don't know how to fix every problem that comes my way. But I don't have to be that person either. I still don't feel like I'm always the best person to fill my seat, but I'm beginning to realize that I know a bit more than I think I do. And if I don't know something, I find the answer. I try my hardest to make sure that my responsibilities are covered to the best of my abilities.

It's OK that I don't know everything. Nobody expects that of me. It's not realistic. I just need to convince myself to hold me to the same standards, expectations and limitations of everyone else.

It's hard sometimes.

Wednesday, January 8, 2020

IRL ISO 8601!

This morning I went to the doctor and experienced my first real-life ISO 8601 Internationalization issue.

The Check-in Nurse asked me to verify my birthday. I told her "7/1/xxxx" instead of "July 1, xxxx", and she told me she hoped I had a Happy Birthday yesterday.

I appreciated the sentiment but was knocked off kilter for a second. My birthday happened several months ago! Then I quickly realized that 1) She is from somewhere other than the US and 2) THIS was the exact reason why I have been a long-time proponent of using ISO 8601 data standards for database and application dates. (Those were my actual thoughts, and yes, they were very geeky.)

For those not familiar, ISO 8601 essentially describes a standard way to display dates so that you remove any confusion in common international representations.

For instance, in the US, a date of "7/1" is interpreted as "the 1st day of July". But in most of the rest of the world, "7/1"means "the 7th day of January".

Countries by Date Format

It's not difficult to see how this can cause quite a few problems because we in the US have gone our own way on this.

She apologized for her "mistake", but all I could think was that it was actually my national culture that was on the divergent side.

Anyway, it was a great personal reminder of the necessity for a standard.


TL;DR: If you want to avoid confusion when you store or display dates, please use some form of yyyy/dd/mm ... (though I guess even those lower-cased masks can lead to incorrect display of a date in different coding languages).

PS: I HATE DATES!