Wednesday, December 24, 2025

2025 Wrap-Up

If I were to sum up 2025 in a phrase, I might call it "trial by fire."  This year saw great improvements in my handling of my workload and resulted in a much better work-life balance; however, it wasn't exactly smooth.  Challenges of all kinds were peppered through the year -- health challenges, financial challenges, technical challenges, mental health challenges, scheduling challenges, etc. -- but my year-end report card shows more and better successes than on many previous years.

I can't deny that it was a good year.  I am just a much harder grader of myself than of my students.  In last year's wrap-up, I said, "Let's all have a fantastic 2025 full of happiness, health, hope, and headway."  If that were the criterion, then I definitely passed!



Physical Health

Walking and biking distance goalA (104%)
Weight loss goalF (40%)

Financial Health

Savings goalD (68%)
Debt reduction goalA (100%)

Life Balance

Reading goal
  1. The Legend of Sleepy Hollow - Washington Irving
  2. Berenice - Edgar Allen Poe
  3. The Masque of the Red Death - Edgar Allen Poe
  4. The Dunwich Horror - H.P. Lovecraft
  5. The Murders in the Rue Morgue - Edgar Allen Poe
  6. When Cats Had Wings - Karen A. Dahlman
  7. Dark Air - Terry Carnation
  8. Metzengerstein - Edgar Allen Poe
  9. Ligeia - Edgar Allen Poe
  10. The Black Cat - Edgar Allen Poe
  11. The Curse of Calen Taur - Paul Sharville
  12. The Conversation of Eiros and Charmion - Edgar Allen Poe
A (100%)
Video game frequency goal
  1. Ghostbusters: Rise of the Ghost Lord
  2. Until You Fall
  3. Vader Immortal: Episode I
  4. Vader Immortal: Episode II
  5. Vader Immortal: Episode III
  6. Rez Infinite
  7. Flames & Fortune
  8. Immortal Planet
  9. Cat Quest
  10. Dig Deep
  11. Star Wars: Tales from the Galaxy's Edge
  12. Space Pirate Trainer
  13. Power Force
  14. Pixel Dungeon: Dungeon
  15. Pixel Dungeon: Library
  16. In Death: Unchained
  17. Pioneer: Endless Journey
  18. Pixel Dungeon: Ruins
  19. Cozy Grove: Camp Spirit
  20. Star Wars: Battlefront II Classic
  21. Dungeon Defenders
  22. Dungeon Adventure
  23. Pixel Dungeon: Time Rift
  24. Sam & Max: This Time It's Virtual
A (100%)
Board/card game goal
  1. Wingspan
  2. Payday
  3. Stormvault
  4. Fate: Defenders of Grimheim
  5. Sorry!
  6. Trailblazer: JMT
  7. Project L
  8. Scooby-Doo! The Ghost Clown
  9. Scooby-Doo! The Creeper
  10. Castle Ravenloft: The Final Transformation
  11. Horrified: American Monsters - Banshee and Bigfoot
  12. Horrified: Universal Monsters - Mummy and Invisible Man
  13. Dark Tomb: Crypts of Aurelian: Chamber of Decay
  14. Dark Tomb: Crypts of Aurelian: Catacombs
  15. Dark Tomb: Crypts of Aurelian: Oram's Tomb
  16. Sequence
  17. Dark Tomb: Bloodthorn Island: South Docks
  18. Dark Tomb: Bloodthorn Island: Shadow River
  19. Dark Tomb: Bloodthorn Island: Bloodthorn Island
  20. Horrified: Universal Monsters - Frankenstein and Creature
  21. CoraQuest: The Great Teapot Caper
  22. Bag of Dungeon
  23. Betrayal at House on the Hill
  24. Betrayal at Mystery Mansion
  25. Demon Ship
  26. Horrified: Greek Monsters - Medusa and Siren
  27. Dark Tomb: The Ice Chasers: Azur Tavern
  28. Dark Tomb: The Ice Chasers: Mountainside
  29. Dark Tomb: The Ice Chasers: Khordon's Pass
  30. Dark Tomb: The Ice Chasers: The Ice Cavern
  31. Sequence Dice
  32. Horrified: World of Monsters - Yeti and Sphinx
  33. Dice Conquest
  34. Horrified: American Monsters - Mothman and Ozark Howler
  35. Back to the Future: Dice Through Time
  36. Castle Panic
  37. Ghostbusters: Protect the Barrier
  38. Under Falling Skies - Roswell
  39. Mansions of Madness: Horrific Journeys - Murder on the Stargazer Majestic
  40. Tiny Epic Zombies - Greaser Zombie
  41. Shuffle Dungeons - Lunar Fox
  42. Legends of Sleepy Hollow - Class Dismissed
  43. Paranormal - Tanin the Witch
  44. Haunted Halloween
  45. Horrified: Universal Monsters - Dracula and Wolf Man
  46. Horrified: Dungeons and Dragons - Displacer Beast and Beholder
  47. Junk Orbit
  48. Battle of Hoth
  49. Bag of Dungeon: The Lost Dungeons
  50. FUSE: Countdown
  51. Lucidity - Lady of Envy
  52. Proving Grounds
  53. Dead Men Tell No Tales
  54. Liar's Uno
  55. Shuffle Dungeons - Loot Lizard
  56. Horrified: Greek Monsters - Chimera and Minotaur
A (133%)
Jigsaw puzzle goalF (25%)
Music practice goalF (8%)

Professional Development

Complete four hours of professional developmentA (900%)
Complete Tenure PortfolioA (100%)
Finish card interpreterC (70%)
Finish game conciergeC (70%)
Finish Operation S.C.A.R.E.F (30%)
Rebuild web siteF (40%)

Hobby Projects

Assemble Area 51 modelF (0%)
Epic Duels AI opponentC (75%)
Improve game spaceA (100%)
Reorganize officeB (80%)

Overall, it was a great year. Let's do it again in 2026, but better!

HAPPY NEW YEAR!

Tuesday, December 31, 2024

2024 Wrap-Up

It would hardly be an exaggeration if I were to claim that 2024 is the best year I've had in a decade. It was clearly one of them.  Though it certainly had its low points (healthcare and its related, ongoing financial challenges certainly come to mind), it also revolutionized the way I manage my workload, thanks in large part to my dear old friend Shawna being an outstanding coach and accountability partner. (No disrespect to the other accountability partners who have tried to help me. I know they're dealing with burdens at least as heavy as mine.)

Above all, this year resurrected my game development career.  I made a series of difficult decisions which required me to let go of some old attachments. Fortunately, this is paying off in huge ways so far.  For years, I have agonized and lamented the direction my life took, which carried me away from my relentless passion for game development and onto other failed ventures.  I haven't the words to describe how it feels to back in the swing of my lifelong obsession.  You can expect more on this on my other blogs in the coming year.

Here's how my goals for the year turned out.


Physical Health

Walking and biking distance goalA (95%)
Weight loss goalF (0%)

Financial Health

Savings goalF (58%)
Debt reduction goalA (100%)

Life Balance

Reading goalA (92%)
Video game frequency goalA (100%)
Video game completion goalA (Pass/Fail)
Board/card game goalA (100%)
Jigsaw puzzle goalC (75%)

Professional Development

Make a plan for completing Ph.D.F (0%)
Complete Unity Essentials PathwayA (100%)
Complete four professional development programs at workA (100%)
Start a new game projectA (pass/fail)
Finish card interpreterF (0%)
Finish game conciergeC (70%)
Rebuild web siteF (10%)

Hobby Projects

Paint Star Wars blaster replicasA (95%)
Assemble Area 51 modelF (5%)
Epic Duels AI opponentF (pass/fail)
Storage solution for Tiny Epic DungeonsA (95%)
Finish Demon Ship componentsA (100%)
Reshape D&D and Tiny Epic miniaturesA (100%)

I am more excited than ever for the coming year. I have some incredible momentum going that I intend to maintain for as long as possible, and I hope to share it with you, my friends.  Let's all have a fantastic 2025 full of happiness, health, hope, and headway.

HAPPY NEW YEAR!

Friday, May 17, 2024

End of One Era, Start of Another

Today, May 17, 2024, is a big day in my career trajectory.  This day marks the end of my original one-year, temporary, full-time faculty contract at College of DuPage (COD).  This is the end of one of the biggest gambles I have ever taken, stepping down from tenure at Triton College to be a temp at COD.  It seems like a good time to answer a frequently asked question, which takes many forms but essentially boils down to something like this:

"I thought you loved Triton College.  Why make the switch?"

I do love Triton, and I'm not leaving entirely.  But sometimes difficult decisions must be made for the sake of one's career and overall wellbeing.  There are good reasons why I gave up a secure, tenured position -- with outstanding benefits -- for a temporary one with no certain future.  

On the surface, there are some clear and easy ones, such as a substantial increase in income and a shorter, simpler, safer commute.

Digging a little deeper reveals more reasons:  a merciful escape from the infeasible responsibility that derailed my career, an opportunity to become part of a dedicated, supportive team rather than flying solo, and a great deal of autonomy and flexibility in establishing my schedule.

But at the real heart of the matter is this:  Triton's CIS programs are barely a fit for my expertise, while the CIS department at COD thoroughly embraces it.

At Triton, I was continually at risk of not meeting my required teaching load hours.  There aren't many software development courses there, and the few they have are often cancelled due to low enrollment.  I even created an all-new software development degree to compete with other similar institutions, give some of our courses a more suitable home, and create a space where I could fit in and contribute more meaningfully.  However, this program has yet to really take off.  Demand appears to be lower than I was led to believe through both qualitative and quantitative sources.

On the other hand, the Computer and Information Science department at College of DuPage completely centers around software development and game development -- my two great loves.  There is no shortage of classes, so I will never run the risk of not meeting my load.  In fact, I was overloaded last fall due to taking over sections that didn't have faculty.  My time at Triton hindered my software work and completely severed me from my game dev side, and COD puts me in constant contact with these.

So, while Triton may occasionally let me glimpse my happy place from a distance, COD lets me live immersed in it.  This is the real essence of why I took the risk and swapped my full-time and adjunct statuses with these two great colleges.

What does the future hold?

I will have a full-time, tenure-track position at COD starting in August.  In less than two years from now, I'll have tenure in a department where I am a natural fit rather than a tangential one.  My career has already begun recovery, as have my physical and mental health.  

Life is good and getting better!


Sunday, December 31, 2023

2023 Wrap-Up

Wow.  It was five years ago that I last posted an end-of-year wrap-up.  It is no coincidence that it was also the last time I took a break from my job without repercussions.

2023 has been an incredible year.  I escaped an unfeasible employment situation and raised my income in the process. I regained some autonomy in my career, and with it, some hope.  My overall wellbeing has improved immeasurably, and I am profoundly grateful.

Though I didn't blog my goalsetting efforts this year, I nevertheless set goals as I always do.  Here's how they turned out, in terms of letter grades.


Physical Health

Walking and biking distance goalA (97%)
Weight loss goalA (100%)

Financial Health

Savings/debt goalF (30%)
Improve cashflowA (Pass/Fail)

Life Balance

Reading goalA (96%)
Video game frequency goalA (100%)
Video game completion goalF (Pass/Fail)
Board/card game goalA (100%)
Jigsaw puzzle goalA (100%)

Professional Development

Make a plan for completing Ph.D.F (10%)
Complete Unity Essentials PathwayF (33%)
Complete Unity Junior Programmer PathwayF (0%)
Complete card interpreter projectB (80%)
Complete game concierge projectC (70%)

Hobby Projects

Rebase Mansions of Madness monster miniaturesA (100%)
Paint Star Wars blaster replicasF (10%)
Assemble Area 51 modelF (10%)
Make a custom Ghostbusters dice towerA (100%)
Build a Mansions of Madness map tile organizerA (100%)

The coming year's goals will include many of the same things. Some will be revised or refined. I'm working on it!

HAPPY NEW YEAR!

Friday, November 17, 2023

A Time of Thanksgiving and Reflection

It has literally been years since my last published blog post. I haven't blogged regularly since I started my previous full-time job, which effectively disrupted my entire life and wellbeing.  Coincidentally, that is one of my inspirations to write this post.

The Fall

The story starts around 2015-2018, but I'm going to skip forward to Halloween night, 2022.  As a traditional Halloween activity, I did a spirit board session late in the evening to ask for a word of general advice. The message I got was, "Figure out why you expect [your employer] to get wiser." (Name withheld to protect the innocent.)

For years at that point, I had been struggling to figure out a way to carry the burden I had been assigned. The eternal optimist in me kept thinking that things would eventually improve and I would be able to succeed in my role.  The spirits' message helped me to reconsider, especially after what happened in the following month.

It was a year ago now -- give or take a few days -- that my mental health hit a low not seen in decades, if ever.  My friends know I feel and express genuine gratitude for the countless blessings in my life, as they always outnumber and outweigh any negatives.  I smile and laugh more than any other emotive expression, and it's authentic.  So, when I sunk to a point where it felt like the positives were being ground to dust by the negatives, I knew something was really wrong.  It just isn't me to think that way.  It was more than a subjective perception; I could model it mathematically.

My best efforts, my hardest work, my longest hours, my most careful planning, my most productive days...none of that could make a dent in the mountain I was under.

Rock Bottom

My futile efforts resulted in the sacrifice of my health, relationships, education, and professional goals.  I knew this all along, but one day in November 2022, it all hit me at once.  I realized that the best possible outcome I could hope for would be to just barely stay caught up, and sacrifice everything to do so.  That was the best case, though still horrible, and I couldn't achieve it.  

Feeling utterly defeated, with my life's dreams but a distant memory, I cried for two days straight.  I had never been further from where I wanted to be, and the path back to it was completely obscured by the circumstances in which I found myself.

The Rebound

It was at that point that I prayed, putting a heartfelt desire out to the universe, for a solution.  Trusting in God as I do, I wasn't about to dictate the form of that solution.  I simply asked for my life to be in a more balanced alignment, in whatever form that might take.  I said, "If you want me to continue toward my original goals, please show me a way."

I watched for things at work to improve as a result of this.  They didn't.

However, I did start seeing job postings looking for people with my qualifications.  I also had lunch with an advisory board partner who practically offered me a job on the spot.  I didn't take it (yet), but it was a flattering surprise that felt synchronistic.  Also, my part-time employer (which is the best I've ever had), opened up a full-time, temporary position for someone just like me.  This is the role I have now -- temporary, but absolutely worth the gamble.

TL;DR: Finally Getting to the Point

The point of this story is that no matter how bad things look, it's never hopeless. We live in a loving, supportive universe that responds to us if we just clarify our needs and ask.  Prayer works.  Gratitude fuels it.  After struggling for years, my solution came fairly quickly once I clarified my desire and directly asked for it.  Signs began appearing within a few days, and within a couple months, I could begin in earnest my path to salvation.  Now I can hardly relate to the broken, defeated man I was just one year ago, and I'm grateful.

Yes, I am thankful for all of this and so much more.

Happy Thanksgiving, everyone!

Friday, April 9, 2021

More Randonautica Fun

This is a quick post about two more Randonautica intentions just so I don't forget about them.

Yesterday's Trip Broke My "Pattern"

Yesterday, while my son and I were returning home from a dental appointment, we decided to go randonauting on our way home.  We set the intention of new, hoping to see something new, something being built or created, or something we've never seen before.  The point it generated, an attractor power anomaly, was well inside a golf course, far away from anything we could easily access at the time.  Since we hadn't known about the golf course before this, I suppose you could say it was new to us.  We still have no idea what would have been at the point or in the zone.  I rate the fulfillment of this intention as inconclusive.  It's debatable.

The main reason this is worth mentioning is because it disproves the apparent pattern that I mentioned in my last post.  Our first experiences with Randonautica seemed to always give us attractors at familiar, well-traveled spots, and voids took us to new and unfamiliar places.  This breaks the pattern, as I don't play golf and will likely never set foot on this golf course.  Therefore, this was an attractor at an unfamiliar and highly unlikely place.

Today's Google Maps Randonauting

Today, my kid was playing with my phone and he opened Randonautica.  He set the intention of fun and generated a point.  The point it generated was another void, but was in easy walking distance of our house.  Since we didn't have time for a walk at the moment, we decided to check out the spot on Google Maps just out of curiosity.

The exact location of the point it generated, with the intention of fun, was someone's backyard swimming pool.  Because of thick foliage along the street side, it was only barely visible from street view, but on the overhead map, it was precisely the exact location generated by Randonautica.  Wow!  Intention clearly fulfilled!



Tuesday, March 30, 2021

Early Adventures in Randonauting

I am grateful at the moment that this blog has no regular readers, as I have now gone more than a year without writing a post.  It's a shame, really, because I love to write, share information, organize my thoughts, record my experiences, and benefit from so many aspects of such journaling.  

I recently found a good use for a personal blog, however.  My nine-year-old son Avery and I have recently discovered Randonautica, and our first experiences have convinced me that it might be worth documenting our outings to gain a better understanding of how this whole thing works.  At the very least, it'll be a good log of our adventures.

Our First Randonauting Adventure

We tried it for the first time a few weeks ago.  Although it gave us an enjoyable walk around our neighborhood on a beautiful spring day, the significance of the anomaly was inconclusive.  I let Avery set the intention and he chose weird.  "I want to see something weird," he said.  I would have objected to this intention on the basis that it is subjective, and therefore anything we see could be judged as "weird" by someone.  But since it was our first time out on Randonautica, I went along with it.

The first time we tried to generate a point, we chose the smallest possible radius of one mile centered on our home and asked for an attractor.  The app said it was unable to locate any anomalies in the area.

So then we increased the radius a little and again asked the app to give us an attractor.  This time, it found one after a lengthy delay.  The anomaly was centered on a house just slightly more than a mile from ours.  We walked to it and circled the block it was on, as much of the block was included in the anomaly's radius.  However, we found nothing that jumped out to us as "weird".  There was a downspout attached strangely to the corner of one house, and some awkward-looking backyard fences, but these weren't exactly the mind-bending experiences we had expected or hoped for.  Still, it was a fun walk and good quality time with my kiddo.

Our Second Randonauting Adventure

Yesterday we decided to take a short break from our work (my job and his school) to enjoy another beautiful spring day.  He and I had already been discussing possible intentions, and he had decided that our next intention would be animals.  Wildlife is abundant in our area, so this seemed like a sure thing regardless of any quantum random anomalies.

This time, I requested a power anomaly within a five-mile radius from home.  It gave me a void anomaly that was nearby, but on a street of which I had never even heard.  I didn't know this road nor its neighborhood even existed.

As we drove, Avery said he was hoping to see any animals, but he kept thinking of rabbits and cats. When we arrived in the area, we didn't see any animals other than the plentiful population of birds who are always around everywhere.  A nearby house had Easter bunny decorations in its front yard, but we weren't sure if that counted, since Easter is less than a week away at this point and bunny decor is certainly not hard to come by.

Near the exact center of the anomaly, however, was a bank of mailboxes where a flyer about a lost cat was posted.  That felt significant to us, partly because it was near the exact center of the anomaly, and partly because we sympathized with the family who lost their beloved pet.

Our Third(?) Randonauting Adventure

After the discovery of the lost cat flyer, we still had a little more time before we needed to be back home, so we decided to set one more intention.  Keeping the same five-mile radius, the kiddo set the intention of big. We again asked for a power anomaly, and again, we got a void on a road we didn't recognize.

The point ended up being at the far east edge of a huge and gorgeous cemetery whose existence was completely unknown to us.  At this point, there were several things that could be considered "big," such as a big, huge bush behind a big, tall, majestic statue on a big, massive stone slab overlooking this big, sprawling cemetery.


My Thoughts Thus Far

Given my always-on, conscious connection to spirit and the whole field of potentiality, one might think it may be difficult for Randonautica's synchronicities to really impress me. Nevertheless, it certainly appears that the app -- or the quantum random number generator from which it draws its data -- works as advertised.  I look forward to gaining more experience and familiarity with it over time.

One final thought that may be worth noting:  When the app identified an attractor, it was right on a major street that I traverse frequently.  When it identified the two voids, they were both in places that were nearby but completely unfamiliar to me.  Both were places that I was extremely unlikely to discover on my own for any reason.  One was a dead-end street in a neighborhood I didn't even know existed.  The other was the far edge of a cemetery I didn't know about, and I was tempted at several points to turn around since it looked like the roads were about to end. If not for Randonautica and Google Maps, I would never have driven that way on those extremely narrow roads even if I had discovered the cemetery on my own.  I am eager to see if these relationships between attractors and voids is repeatable or just an arbitrary coincidence.

We'll be Randonauting many more times and I'll report all about it right here. Stay tuned!


Saturday, December 28, 2019

2019 Wrap-Up

Here we are at the end of 2019 and the end of the decade.  There is so much to say about how this entire decade has gone that I can barely summarize it.  When this decade started, I had a different set of job responsibilities, a lower level of education, a different set of pets (April and Hiko have been my only constants), a smaller circle of friends, a different house, and no children.  In nearly every way, my life has improved dramatically.  My career has advanced in so many ways, I have more degrees and certifications now, more friends, a dream house, and best of all, I now have my son Avery.  What a ride!  As I said in my Thanksgiving post, it is simply impossible to count my blessings because there are far too many.

The main point of this post, however, is to reflect on my goals for the year and see how they ended up.  The following table is the one that I posted at the beginning of the year but with progress updates.


GoalsStatusNotes
Continue to improve my physical health.
  • I will walk 1,000 miles as measured by the pedometer on my phone and Google Maps.
  • I will improve my flexibility and balance through brief daily and longer monthly activities.
  • I will monitor and chart the progress toward my ideal body weight.
About 1/3 successful

  • As of December 26, my estimated walking distance passed 1,000 miles. (Success!)
  • I have been doing minor stretching, but nothing near what I had intended. (Half a success.)
  • My body weight spiked a few months ago and has since begun to come down, but I am still a few pounds heavier than when the year started. (Failure.)

Continue to improve my financial health by saving a specific amount between all of my accounts.


Success
I have reached my savings goal.  I'm setting a higher one next year.
Read 50 books.
Success
Thanks in large part to audio books and long commutes, I have far surpassed this goal.
Play 50 games.
Success
I have played all the following games and more at least once this year:
  1. Sequence
  2. Play Nine
  3. Bacterial Takeover
  4. Clicker Heroes
  5. Word Stacks
  6. Phrase Wheel
  7. Cat Robot Defense
  8. Old Maid
  9. Go Fish
  10. Ghostbusters: The Board Game
  11. Gauntlet:  Slayer Edition
  12. Overcooked
  13. Star Wars Battlefront
  14. Diablo III
  15. Castle Crashers
  16. Zen Idle
  17. Ghostbusters VR
  18. Power Painter
  19. Battleheart
  20. Portal
  21. Cat Quest
  22. Job Simulator
  23. Vacation Simulator
  24. Galaga
  25. Bridge Constructor Portal
  26. Ball Blast
  27. Clash of Blocks
  28. 5-Minute Dungeon
  29. Brick Breaker Champion
  30. Siralim
  31. Dig Dug
  32. Portal 2
  33. Ghostbusters Blackout
  34. Idle Kingdom Clicker
  35. Aperture Tag
  36. Pac-Man
  37. Ticket to Ride
  38. Clicker Heroes 2
  39. Space Pirates and Zombies
  40. Lost Treasure
  41. Smash Hit
  42. Payday
  43. Deadlock II
  44. Ancient Amuletor
  45. Endless Legend
  46. Kingdom Rush
  47. Star Command
  48. Polytopia
  49. Granny Legend
  50. Wii Sports Resort
Complete a Testing Tutor prototype for my dissertation by May.
Failure
For the fourth year in a row, this was a complete failure.  I temporarily dropped out of the program in the fall semester, since my coordinator duties are requiring my complete attention.  I don't know if or when I can resume.  As long as I am coordinator, I cannot foresee this happening.
Play music 50 times.
Failure
I played about three or four times, maybe.  Another huge but unsurprising disappointment.

So, as you can see, it was a largely successful year, though very far from a perfect one. I intend to make 2020 the start of my best decade ever, and it will come with a good set of goals to get the ball rolling.

Thank you, my friends, for your support!

Thursday, November 28, 2019

Thanksgiving 2019

It used to be a tradition for me on Thanksgiving to make a blog post enumerating the many things for which I am thankful each year.  I've fallen out of the habit as my life has become far more busy and difficult.  If I were to do it this year, I was expecting it to be far less detailed than usual, due to the severe time constraints.  But fate has given me an opportunity in the form of a long train ride.

Here is a rundown of just some of the things for which I am truly and deeply thankful this year.  I realize it's a bit long, but as Roberto Benigni said, "It is a sign of mediocrity to demonstrate gratitude with moderation."

I am thankful for the abundance of good things in my life, such as...

Abundance of opportunity.  I am thankful to have multiple jobs that I love and countless opportunities to use my position, knowledge, and experience to improve the lives of others.  At the most basic level, this is all I ever wanted.  I'm still working on perfecting the details, but I am grateful for what I have.

Abundance of friends.  Social media keeps me connected with loved ones who are far away, and my varied and numerous job duties have led me to many new friends.  I cannot express enough appreciation for these new friends, many of whom have supported me in substantial ways with my work duties. The mere existence of these people has reminded me that miracles are normal and unexpected blessings can happen every day.

Abundance of money.  Though it rolls in and out like the tides, financial security is a major bright side to the fact that I spend nearly every waking moment working.  I may not have a lot of extra, but I have enough for my family's needs and that's perfect.

Abundance of good influences.  This year has inspired some of the greatest personal growth of my life, which I credit to good friends, good mentors, and good books.

Abundance of love.  All of the previous entries on this list really boil down to one thing -- the constant stream of love that flows through me continually, in and out as regularly as the sunrise.  Love is abundant in all areas of my life and it forms the basis of all my gratitude.

I am thankful for my things, such as...

My house which is my favorite home ever, my car which is my favorite car ever, my bike which is my favorite bike ever, my bass guitars which are my favorite guitars ever, my computers which are my favorite computers ever...and so on, and so on....

Most of all, I am thankful for the amazing people in my life, such as...

Avery for being my best buddy and the coolest kid I know.

Michelle for taking such excellent care of me, Avery, and our home. I honestly don't know how we would get by without her.

Carol Keeth for being my personal nurse consultant when my health isn't great, and one of my very best friends all the time.  I literally cannot enumerate all of the meaningful things she has done for me and my family over the years.

Antigone Sharris for being my mentor and sharing her secrets on how she works the miracles that make her department such a huge success.

Jean Dugo for helping me find the data I need in order to make informed decisions, and for regularly reminding me that I'm never alone and always have someone around to help if I just reach out and ask.

Jennifer Davidson, my new boss, for being a truly motivational leader and a tremendous source of support in times of need. I find that my fear of letting her down far outweighs my fear of any sort of reprimand.

Sandy Poremba, for saving my butt more times than I can count...even as recently as this week!

Rami Salahieh for opening new doors in my career and allowing me to do the same for him. Also for lending mutual support in dealing with the needless frustrations inflicted by our mutual employer (who shall remain nameless for that is contrary to the point of this post).

Dawn Brokaw for being an outstanding long-distance friend.  I never know how to express my appreciation for the tiny morsels of kindness and encouragement that she sprinkles throughout my weeks or our unique, almost sibling-like bond.  I haven't seen her in about 13 years but that fact has done little to hinder our friendship.

Ralph Normington, on the subject of long-distance friends, for remaining my friend even though it sometimes takes me several days to respond to his messages. When an impatient person chooses to be patient with you, that means something!

Steve Santello for the various ways that he has boosted my career over the years, from giving advice to helping me think things through to offering me exciting teaching opportunities.  I can't even count them all.

Natalie Waksmanski for being a great mentee (formerly) and a great friend. I was honored to be a guest at her wedding reception last weekend. I wish her a lifetime of happiness in all areas of her life.

Mary Ann Fleming for her immense generosity.  She has given so much of herself for the good of me, my family, and many others who are fortunate enough to know her. If I lived for 128 years, I would not have enough resources to repay all of her kindness.

Carl Hultquist for bringing decades of love and happiness to my family. His funeral was on Thanksgiving Eve this year.  He will be missed.

If pets are people too, I must include April and Zeena.  April is one of my favorite pets ever and I appreciate her grace, patience, gentleness, elegance, and natural beauty.  She's the biggest and friendliest spider I've ever known and I love her dearly.  I'm still getting to know Zeena, but I already appreciate her impressive physical feats, her adorable timidity, and her gorgeous markings.

As I've written this list, I have realized the utter impossibility of listing everyone for whom I have sincere, heartfelt gratitude.  I could go on all night:  Judy and Roger McVey, Jill LoBianco, Dan Mottert, John Owrey, Mo Habeeb, Rathi Ramakrishnan, Patty Hultquist, Janet and Lloyd Rahn, Karina Martin, Humberto Espino, Tim Nystrom, Eric Morton, Tanvi Bhatt, Deb Baker, Katy McGuinness, Lauren Kosrow, my entire program assessment subcommittee, the group of dedicated faculty who report to me, the many people who support me in my leadership and teaching roles, my treasured extended family, my social media friends...the list goes on and on.  I can't possibly mention everyone!

Perhaps I should just summarize it all with an expression of thanks for the seemingly infinite blessings in my life.  "Count your blessings" is an oft-repeated bit of advice, but mine are too numerous to count.  That's a great problem to have.

Happy Thanksgiving, everyone!



Wednesday, January 30, 2019

A Comparison of My Current Employers

Since I started regularly working for three different employers, I have been asked questions about how they compare with each other. People are understandably curious about how other similar organizations operate.  I personally think it's healthy and productive to see how others do things so we can all gauge and improve our own effectiveness.

To answer these questions,  I started listing some of the differences that I have noticed between my workplaces.  I have steadily grown this list over the past semester, and I now feel that it is complete enough and accurate enough to share.

I will rate and score each organization on each criterion. A score of 3 indicates that this organization is the best of the three in this aspect, while 1 indicates the worst.

CriteriaTriton
College
College
of DuPage
DeVryCategory
Winner
Communication to employees 231COD's internal newsletters are excellent, and the emails regarding campus events are nonstop.
Social responsibility 321Triton genuinely cares for the community they serve, they actively seek ways to better support it, and are constantly offering fun and educational events to the public.
Academic freedom 231COD wins for two reasons. First, their course outlines are excellent, clearly and concisely enumerating the learning objectives without the unnecessary pages of assessment details and hourly breakdowns that Triton's contain. Second, they are not constrained by the same articulations that Triton is obligated to follow. Triton runs a close second, however, as faculty have loosely-monitored, godlike powers in their classrooms. Academic freedom is notoriously limited at DeVry, who prescribes the entire content of their courses.
Classroom facilities 132COD's rooms may smell weird, but they're spacious, well lit, and have all of the technology to support all of their courses in every room. Whiteboard space is also plentiful (an understatement), as are markers, erasers, and printer paper. Triton loses here mostly because of the poor lighting design and lack of supplies, and DVU loses because of the limited whiteboard space (covered by the projection screen) and restrictions on what we can do with the classroom computers.
Faculty/staff lounge 123DeVry has comfortable and lightly used staff lounges at most of their campuses. These lounges feature fridges, microwaves, plenty of tables, and soft, comfortable seating. I am unaware of whether COD has such a thing, but I know for certain that my building at Triton does not.
Campus 321Triton has a spacious, well-landscaped, and beautiful campus. COD has amazing buildings, but their campus is almost entirely occupied by them and parking lots. DeVry's environment has been accurately described as "corporate" and "sterile".
External community events 321Triton, as I mentioned above, has community events on campus for the public all the time -- nearly every day, in fact.
Internal community events 231COD also has events going on constantly, but they're oriented more toward the internal campus community rather than the general public. They do have public events, but not on the continual daily basis that Triton does.
Faculty workload 321Triton faculty are under the direction of a clear-cut, union-backed contract.  Anything that we do outside of that contract potentially involves extra pay or some other perk. The only reason COD loses here is because their faculty are also expected to serve as official student advisors -- a good and reasonable thing, but it is extra work. DeVry tends to load faculty with as much work as possible.
Schedule planning 231COD has their schedules determined several months in advance.  Triton operates on the scale of weeks (a couple of months at best) in advance, while DeVry is still bumbling days in advance.
Course offerings 231COD offers many sections of most classes, and wait lists still form.  Triton offers multiple sections of a few, but many of their offerings rarely (if ever) run. DeVry offers relatively few onsite classes.
Commute from home 231COD is around 30 to 40 minutes in normal traffic. Triton is usually around 50. With DeVry, it varies greatly based on which campus I'm going to, but my old office was well over an hour away in the lightest traffic; nearly two hours if weather, construction, or congestion interfered.
Electric vehicle friendliness 321Triton has three conveniently located Chargepoint stations. COD has one station that has been out of service the entire time I've worked there. DeVry has none unless you can find a public one within walking distance, which is rare.
Technology support 123DeVry wins this category in general because every campus has their own friendly and competent IT staff who are empowered to do whatever I need them to do at any time. COD is a close second simply because I have never needed IT support there due to their excellent classroom facilities as mentioned above. Triton loses here because their PCs are missing applications that I like to use in class, plus they wrap a lot of  perplexing red tape around IT requests.
Textbook ordering process 132COD makes this effortless. I remind my coordinator what I'm teaching and a textbook magically appears in my campus mailbox. DeVry is a close second because their textbooks are all electronic and appear automatically, but they're temporary and can't be kept. Triton requires us to contact the publishers ourselves to request books.
Classroom access 231COD gives me an employee ID card that unlocks all of the classrooms with a swipe. Triton requires that I fill out paperwork to request physical keys from the campus police department every semester. DeVry makes us hunt down a security guard or IT personnel to open classrooms.
Snow days 231COD tends to cancel classes due to weather at reasonable times and in a timely fashion. Triton waits until it's almost too late most of the time. DeVry rarely ever cancels at all, though they have recently shown a huge improvement in judgement on such matters.
Paperwork 132COD wins easily because there is never a need for physical paper to ever be used for anything. Their technology infrastructure handles it all electronically. DeVry has an infrastructure that is nearly as good, but is mired by micromanagement regarding its use. Triton is the only one who relies on actual paper, and they rely on it for nearly EVERYTHING. It would be comical and quaint if it weren't so embarrassing and tragic.
Course shell setup 231COD wins for reasons that are easy to see when compared to the other two. Like DeVry, COD's course shells are automatically created for every class. Like Triton (but unlike DeVry), we have complete control over the entire content of the shells. So, DeVry loses because faculty are not allowed to own their shells, and Triton loses because the shells must be explicitly requested individually for every class every semester.

So, all in all, who wins?

Shall we choose the victor based on number of categories won?  If so, the scores would be:
  • Triton:  5
  • COD:  12
  • DeVry:  2

Or should we simply add up their point values?
  • Triton:  38
  • COD:  50
  • DeVry:  26

No matter how you score it, it's easy to see that Triton College and College of DuPage are both excellent places to work.  COD takes the lead mostly due to the cleanliness and simplicity of their well-defined processes, an area which appears to be a major weakness at Triton.  (For instance, my on-boarding process at Triton was sloppy and confusing, and to this day I have not completed everything I was told to do.)  Nevertheless, I love working at both places and hope to continue for many years to come.

So, I can say that College of DuPage is an outstanding place to work, Triton College is a great place to work, and DeVry University is another place to work.

Hopefully this satisfies the curiosity of my friends and colleagues who have wondered.  If not, you all know how to reach me.  (Better idea:  Visit me on campus and see for yourself!)

Tuesday, January 1, 2019

Bring It On, 2019!

Ladies, gentlemen, and...others, here are my goals for 2019!


GoalsStatusNotes
Continue to improve my physical health.
  • I will walk 1,000 miles as measured by the pedometer on my phone and Google Maps.
  • I will improve my flexibility and balance through brief daily and longer monthly activities.
  • I will monitor and chart the progress toward my ideal body weight.
0%
These goals are repeats from last year.  My success ranged from moderate to none, so I'm trying again.  I intend to succeed at all three sub-goals.
Continue to improve my financial health by saving a specific amount between all of my accounts.


70%
I have a specific dollar amount in mind that I would like to save. I will track my success by totaling the balances in my accounts and calculating the percentage of my overall goal.  The percentage here represents how close to the goal I am now.  It is highly likely to rise and fall through the year.
Read 50 books.
0%
Last year I specified "non-work related" books. This year I'm counting all books of every kind and source.
Play 50 games.
16%
All games count: board games, card games, video games, mobile games, any games. I'm counting games played during my New Year's celebrations and mobile games:
  • Sequence
  • Play Nine
  • Bacterial Takeover
  • Clicker Heroes
  • Word Stacks
  • Phrase Wheel
  • Cat Robot Defense
  • Old Maid
Complete a Testing Tutor prototype for my dissertation by May.
10%
This goal was an utter failure last year, but the fall semester brought some inspiration and unexpected help.  I'm renewing it and starting again with a head start.
Play music 50 times.
0%
I have a new acoustic bass that needs to be broken in, right?  Gonna play it a lot, and my old electric bass, too.

Sunday, December 30, 2018

2018 Wrap-Up

It is time once again to list out my goals for the coming year.  Based on my performance in 2018, I have a great feeling about 2019.

Before I post my new list, let's recap. Here's how I ended up on my 2018 goals.  I'll start with the successes.

Accumulate and maintain six months' budget (Success)
Through effort and discipline, I have saved enough money to cover about six months of expenses if I were ever to lose my income.

Read 12 non-work related books (Success)
Thanks to audio books, I blew this number away by nearly four times.  I read 48 books, but I did end up counting textbooks among them.  Still, I read (or listened to) over 40 non-work related books.

Play at least one video game per week (Success)
I've played PS4 and Wii games with my kiddo, plus a few new PC games and mobile games.  If you count casual mobile games that only take a minute or two to play, then I do this more than once a week.

Increase frequency and regularity of contact with friends (Success)
I still don't have regular contact with all of my dear friends, but I do vastly better now than I ever did before.

Figure out my next career move (Success)
Well, I started a new job at Triton College this year!  That has turned out to be a great career move so far.

Improve flexibility and balance (Moderate success)
I am nowhere near where I had hoped to be with this goal, but I have improved a little.  I'm going to keep working at this in the coming year.

Walk 1000 miles (Outcome uncertain)
My old phone quit working about halfway through the year, and my pedometer stopped along with it.  I had no way to track my steps for over three months.  Before it stopped, I was ahead of schedule on this goal, so it is entirely possible that I met it.  However, I have no way to definitively assess it.  I will start again in the coming year and try for another thousand miles.

Play music every month (Failed)
Again, I did better at this goal than ever before, but still fell short.  Another goal to renew for 2019.

Decrease weight (Failed)
My weight had decreased in the beginning of the year, but came back with a vengeance and I ended up further from the goal than where I'd started.  I will renew this goal for the coming year.

Complete Testing Tutor prototype by May (Failed)
Nothing whatsoever had been accomplished by May.  Toward the end of the year, my student team had successfully completed a database design and some preliminary web design, and they had begun some research on how to implement some of the functional requirements.  Real progress is being made, and I am renewing this goal for the coming year but with a much better head start.

Rebuild my website (Failed)
I have experimented with some CSS rules for layouts, but have yet to apply it to my actual site.  This is not a priority at the moment.

In my next post, I will list my new goals for 2019.

Friday, March 2, 2018

I'm INFP now?

A friend of mine posted a link on Facebook recently that leads to a Jung Personality Test on SimilarMinds.com. The test and the way it is scored are similar to the standard Myers-Briggs Type Indicator.

I found it interesting that I got mostly the same result except that my T has become an F. My feeling appears to have overtaken my thinking. The last two times I took a similar test, they both had me straight down the middle on every category and resulted in INTP. Now, nearly 15 years later, I am suddenly INFP. Personally, I don't feel a strong dominance of either one over the other, and I don't think it matters much anyway.  I do feel, however, that this summary of INFP is an accurate assessment.



INFP - "Questor". High capacity for caring. Emotional face to the world. High sense of honor derived from internal values. 4.4% of total population.
Take Free Jung Personality Test
Personality Test by SimilarMinds.com

Thursday, March 1, 2018

Progress Report: March 1, 2018

In my first post of the year, I outlined some goals that I intend to accomplish in 2018.  I believe the best way to improve my chances of success is to keep track of my progress on each one. To that end, here is my first progress report.

GoalsStatusNotes
Continue to improve my physical health.
  • I will walk 1,000 miles as measured by the pedometer on my phone and Google Maps.
  • I will improve my flexibility and balance through brief daily and longer monthly activities.
  • I will monitor and chart the progress toward my ideal body weight.
On trackSo far, so good! All three of these sub-goals are progressing well.
  • As of the end of February, I have walked 203.17 miles. That puts me ahead of schedule so far.
  • I have been doing various stretches every day. I'm not sure if they're helping though.
  • My weight has dropped nearly five pounds since the beginning of the year.
Continue to improve my financial health.

I will accumulate and protect the equivalent of six months' budget as a safety net for the turbulence during my inevitable job transition.
UncertainWith the major real estate transaction that I just made, along with the various expenses involve in this unique fixer-upper opportunity, it is difficult to tell whether this goal is happening or not. I will continue to monitor it as the dust settles.
Read an average of one non-work related book per month.On trackIn January, I finished reading The Biggest Mistakes That Keep You From Living A Miraculous Life by Marci Shimoff and Debra Poneman.  I also re-listened to some good old audiobooks: As You Think by James Allen, Law of Attraction by Michael Losier, and E-Squared by Pam Grout.

In February, I began reading The Game of Life and How to Play It by Florence Scovel Shinn. I have also listened to two audiobooks by Jerry and Esther Hicks: The Law of Attraction and Ask and It Is Given.
Play at least one video game per week.On trackThrough most of January and February, I was able to take short but frequent breaks to play Gauntlet: Slayer Edition and Fat Princess Adventures with my son.
Raise my professional credentials.Not startedI probably shouldn't even list this separately, since the only credential I can really work on right now is my Ph.D. which is in the ABD stage.
Complete a Testing Tutor prototype for my dissertation by May.Not startedI have debated and strategized on how to go about this, and I have a plan. Now to clear away enough other things from my task list so I can concentrate here.
Rebuild my website rather than work on a game.Not startedNo time yet.  I suspect that my dissertation is going to take precedence over this.
Play music at least once every month.FailingI enjoyed moderate success at this in January, but with the chaos of moving in February, it all fell through. I intend to get back on track with it in March.
Increase the frequency and regularity of contact with my friends.On trackI have reached out to some of my friends through text, IM, email, and social media with brief updates. I still have friends who I have not yet contacted, but it's a work in progress that is off to a great start.
Figure out my next career move.On trackAfter much contemplation and soul searching, I have come to realize that I need to stick primarily with education. To that end, I have stopped looking at software development jobs for now, and have focused my search only on education-related opportunities, including a very unique and exciting short-term curriculum support contract for a local company.

Monday, January 1, 2018

Farewell, 2017! Hello, 2018!

Every year at this time, like most people, I make resolutions and set goals which play out to varying degrees of success. The list is generally vague, though, including loose examples rather than objectively verifiable metrics. This year, I'm going to take a different approach.  I'm going to be specific. I'm going to include things I want to do on my calendar alongside my obligations. I'm going to share my progress with a few close friends. Maybe I'll even blog some updates along the way. (You may have noticed that I haven't been posting much of anything lately. Rather than bemoan the reasons for that, I'm going to focus on correcting them.)

Here is my refined list of goals for 2018:

Continue to improve my physical health.

  • I will walk 1,000 miles as measured by the pedometer on my phone and Google Maps.
  • I will improve my flexibility and balance through brief daily and longer monthly activities.
  • I will monitor and chart the progress toward my ideal body weight.


Continue to improve my financial health.

  • I will accumulate and protect the equivalent of six months' budget as a safety net for the turbulence during my inevitable job transition.


Read books that are not just for work or school.

  • I don't know what kind of pace I can keep up for this, but I would like to average about one book a month by the end of the year. I'll keep a reading log and make use of GoodReads.


Play video games on a regular basis.

  • I will take at least one brief video game break every week. I bet my son Avery will help me with this. I'll keep a game journal.


Raise my professional credentials.

  • Eventually I want to upgrade my certifications, but my one and only goal for this year is to make substantial progress on my dissertation. I intend to complete a prototype by May.


Rather than work on a new game this year, rebuild my website.

  • It's embarrassingly out of date and poorly designed. If I am to be taken seriously as a web technology professional, I need to redesign my website.


Reacquire and improve my musical ability.

  • I have a list of nearly 30 songs that I intend to practice on a regular basis.  Every month I will practice at least one or two, and more if I have time.


Increase the frequency and regularity of contact with my friends.

  • I'm not sure what's a reasonable metric for this, but it is a goal. If my loved ones see this, maybe they'll do their part, too.


Figure out what my next career move is going to be.

  • Maybe I'll find a new job this year, or maybe the events of the year will present a new path, but no matter what happens, this will be the year that I take the first steps toward whatever comes next for me.

Have a great 2018, everyone!  

Thursday, November 26, 2015

Thanksgiving 2015

Happy Thanksgiving, everyone!

As I do almost every year at Thanksgiving, I sat down to ponder all of the things for which I am thankful. It started to feel extremely familiar, and I realized that this year's list is nearly identical to last year's.

We have a bulletin board at work where colleagues were asked to post a note about something they are thankful for.  I wrote:  "A job that I like (most of the time) that pays well enough (most of the time) with coworkers that I love (most of the time)."

But in addition to that, the things for which I am thankful this year are much the same as what I wrote about last year.  I was and still am thankful for:

My family.  My son is still great, and my wife has done better this year in general.  I'm sad that I can't see my relatives today, but I will enjoy the day with my immediate family anyway.

My career.  I am thankful to have a steady job that pays the bills (as long as I keep a tight rein on my spending, anyway).  It's difficult to say whether it has improved this year or not.  On one hand, I did get nominated to the position of Faculty Chair.  On the other hand, this move has required sacrifices beyond my expectations.  Nevertheless, I appreciate the confidence that my coworkers have in me, and am certainly thankful for the upgrade to my resume.

My students.  Now that I am Faculty Chair, the way I work with them is much different than it used to be, but I am thankful that I've had very few truly difficult ones to deal with. Most of them are very grateful and appreciative of the help I provide to them.

My colleagues.  I now work more closely with them than ever, and they're still as great as ever.  We tend to pile a lot of work onto each other, but we also assist each other whenever possible, and that's the kind of teamwork that I love.

My friends.  I still carry a perpetual burden of guilt regarding the lack of contact I have with my friends, but I have improved this year, at least with a select few close ones. I am extremely thankful for those who have helped me to improve the frequency of my contact with them.

My education.  I am thankful for the opportunity to pursue my doctorate degree, the financial support provided by my employer, and the fantastic experiences I've had so far in this program.  It's perhaps the most exciting thing I have going on right now.  The pressure has increased and my level of comfort with the tasks has dropped sharply recently, but venturing outside of our comfort zone is how we grow.  I am thankful for the chance to do so.

My house.  I complain all the time because my current house is twice as expensive but half as good as my old house, but I have to admit that it's far from being the worst thing people live in.  I'm thankful that it's adequately comfortable and functional, that it's in a good location, and that I have a home at all.  Not everybody does.

Happy Thanksgiving!

Tuesday, June 9, 2015

Why I Love My 2014 Mitsubishi i-MiEV


I recently bought my first electric vehicle -- a 2014 Mitsubishi i-MiEV.  I absolutely love it!  However, I have discovered that not everyone can understand why I love it.  So the purpose of this post is to lay out some of the reasons why this may be my very favorite car ever -- and I've had quite a few.

First, I love the way it feels to drive it.  It handles extremely well, with perfectly smooth acceleration and an impressively tight turning radius.

The steering wheel feels great in my hands, too.  Though it isn't adjustable, its size and position are perfect just the way they are.

It is distinctly different from any other vehicle on the road.  It has been quite a conversation piece with strangers, a number of whom have taken notice and asked a lot of questions.  I also catch a lot of people staring at me.  I can't tell if it's curiosity, admiration, or disdain, nor do I care.

I love the tiny size.  It's so easy to park and maneuver, and yet has plenty of headroom and space for hauling groceries and shopping bags.  I occasionally struggle a little with driver-side legroom, but for the short trips I take for work and errands, it's not really a problem.

The motor is so quiet that some of my passengers have been startled when the car starts moving because they didn't even realize that it was running yet.

No more oil changes.  Oil is dirty and expensive, and scheduling oil changes is inconvenient at best.  That is now a thing of the past for me.

Saving the best for last, I am happy to be free from gasoline.  As of this writing, I've driven nearly 2,000 miles and haven't used a single drop.  This means:

  • No more gasoline smell on my hands and clothing.
  • No more handling of those filthy pumps.
  • No more breathing in those harmful fumes.
  • No more paying outrageous fuel prices.
  • No more air pollution.
  • No more consumption of non-renewable resources.
  • No more standing outside in bad weather waiting for my tank to fill.  I just plug it in at home or at the gym and go inside.

This is definitely the start of a beautiful friendship between me and electric vehicles.  If your lifestyle is such that an electric vehicle could suit your needs, then I recommend it without hesitation.


Friday, February 13, 2015

It's All About Expectations Management

A few people in recent years have asked me how my wife and I manage to make things work when we both have so much going on in our lives.  It's a good question.  After all, my wife fills her schedule to the brim with client appointments, and any open holes get plugged up with social outings, shopping, cooking, housework, or some other diversion.  My schedule is no better -- it's currently bursting at the seams with teaching duties, curriculum development, Ph.D. studies, and a lot of time looking after my son.

If you've read any of my blogs at all, you know that the bulk of my life is firmly rooted in technology, so I'm certainly not accustomed to giving relationship advice.  However, I think that being a husband makes me qualified to share my experience as such.

So how does it work?  The answer is "expectations management."  It's an idea I picked up from my profession as a software engineer.  The primary purpose of managing expectations is to maintain a consensus between stakeholders regarding what can reasonably be expected from a project.  We aim to prevent disappointment by establishing what can realistically be delivered, and these expectations are periodically adjusted as details emerge and feasibility is assessed.

Some people place unreasonably heavy expectations on marriage.  For a time, I was one of those people.  Popular culture seems to suggest that we must marry someone who shares our interests, a companion who likes to do things together, a best friend that we can talk to about anything, a source of strength through life's challenges, someone to share a bed with on those cold nights, and a partner who will encourage and support us to reach our goals.  For some relationships, a subset of these expectations may be somewhat realistic.  For others, they are not.

In my marriage, for instance, not a single one of the above features is achievable on a large scale, but this does not necessarily imply a failed project.  Rather, the focus is shifted onto what can be done, and the expectations are set accordingly.  It's just a matter of accepting it for what it is and appreciating the good things.  For example, my wife is an outstanding chef.  (Check out her amazing cooking blog.)  She's also good at helping me take care of our son.  She does most of the grocery shopping and pays most of her own expenses.  She provides countless favors both large and small, like driving me to work when the weather is bad and helping me with various personal hygienic routines such as haircuts, shaving, and nail trimming.  I tremendously appreciate all of these things and more, and I take every opportunity to let her know.

So, to the question of how we make it work, the answer is a wise old classic: Focus on the positives, appreciate what you have, and maintain an attitude of gratitude.  Don't be overly obsessed with comparing yourselves to others, or to what is considered "normal" or "healthy".  Just be thankful for what you have and you may find that it's enough to get you by.

This is not just marriage advice, it's good advice for nearly all aspects of life (well, outside of software testing and risk management anyway -- it's terrible advice in those areas).  Accentuate the positives!


Saturday, February 7, 2015

Software Construction Fundamentals

As with all activities in software engineering, construction is based on a set of fundamental concepts which serve to establish goals and drive much of the work that is performed.  Following is a brief introduction to these concepts.

Minimizing Complexity

In construction, more than any other activity, minimizing complexity is utterly essential.  Fortunately, there are many guidelines to help us achieve this goal, including but not limited to the following:

  1. Code should be simple, readable, and understandable rather than clever or overly compact.
  2. Code should exhibit good “code hygiene.” This means it uses meaningful names, follows principles and best practices, contains sufficient and accurate comments, contains few or no public attributes, uses constants rather than hard-coded values, contains no unused variables or functions, minimizes code duplication, provides consistent interfaces to classes, and so on. 
  3. Code should be constructed using a modular design. 
  4. Programmers should follow a set of standards or conventions for the style of their code. Coding conventions can include guidelines such as capitalization, spacing and indentation, comment styles, names of different types or categories of variables, the organization of method parameters, and more.

Anticipating Change

Someone once said, “If a program is useful, it will have to be changed.”  This may seem backwards at first glance, but it is true that if your program is being used, people will eventually find problems with it, think of things it could do better, or encounter unexpected situations that the program was not designed to handle.  Therefore, programmers should always think ahead to what kinds of changes may be required in the future, and try to structure their code so that changes can be made with minimal disruption to the original design and functionality.

Constructing for Verification

Programmers should consider how difficult it will be to test the code, and try to structure it in such a way that it can be easily and conclusively tested.  Recommendations for accomplishing this goal include:

  • Follow coding standards that are specifically intended to support unit testing.  This usually implies a modular design and the Single Responsibility Principle.
  • Perform regular code reviews with a focus on testability.
  • Organize code to make it compatible with an automated testing tool.
  • Use the simplest possible programming language control structures.

Reuse

Reuse comes in two different forms:

Constructing for reuse means developing the code in such a way that it can be reused in new systems. Code for this purpose must be general, cohesive, and easily decoupled from its original context if necessary.  In other words, it should follow the same principles of design that were discussed in my posts on Fundamental Software Design Concepts and Software Design Principles.  Code constructed in this way provides a high return on investment, because once it is developed, it can be used again and again without repeating the development costs.

Constructing with reuse means integrating existing code with new code to create a new application.  Existing code could be something developed internally by your own organization, or it may come as part of a third-party library.  One advantage of this is the likelihood of increased reliability.  If code has been used successfully in previous projects, then it is likely that many of its defects have already been found and corrected.

Saturday, January 31, 2015

Software Design Principles

In software design, there is a direct, strong, and undeniable correlation between principles and quality.  These principles guide us to create good designs which become good code which becomes good software.  It is absolutely worth your time to understand these principles and remember them.
There are many more principles than these, but the ones listed here are solid, proven, fairly well known, and will guide you to create strong designs.

The Single Responsibility Principle says that each class and each function should have one single, specific, and well-defined purpose, and it should never do anything that is unrelated to its purpose.  This principle is essentially just a reminder of the importance of cohesion.

The Hollywood Principle says, “Don’t call us, we’ll call you.”  What it means is that some classes should serve a high-level purpose and be the ones that drive processes, while others should simply perform the low-level tasks and nothing more.  High level classes should invoke methods of lower-level classes, but never vice versa.

The Principle of Least knowledge says, “Only talk to your immediate friends.”  When diagramming your design in a UML class diagram, each class should only invoke methods of classes that are directly connected to it.  This provides many advantages; one of the most significant being that it greatly reduces coupling.

Occam’s Razor is a well-known scientific principle that we can modify slightly to fit the purpose of software design.  It says if two different designs are both satisfactory, then the simpler one is better.

The Open/Closed Principle says that classes should be open to extension but closed to modification.  The idea is that code should be designed so that new functionality can be added without changing the existing, working code.

The Liskov Substitution Principle says that if you can design your classes to depend on abstract classes and interfaces, then any subclass of those can be substituted in later regardless of how it implements the functionality behind the scenes.

Favor composition over inheritance.  In many (but not all) cases, using composition for code reuse works just as well as using inheritance.  Composition has the advantage of looser coupling, improves reusability, simplifies testing and maintenance, and provides numerous other benefits.

Separate the aspects that vary from the aspects that stay the same.  If your design must work within several different contexts, identify what is different between those contexts and what stays the same.  If you can separate the part that stays the same, then you only need to worry about adapting the part that differs.