Miscellany 17.7.0?

imageSometimes, I feel like I’m failing this blog.  This blog was supposed to highlight all the awesome new stuff I was learning .. on my job, mostly. 

That is not what I’ve learned from, lately.

Its only been 15 days or so since my last miscellany post.   In those last 15 days, my work has been:

  • Images and CSS and javascript, small changes.
  • “Why did X happen?” .. let me check the source code that we didn’t write .. trace it through 3-4 layers … here’s why that happened.  Your options are A,B,C.
  • How to route network cables neatly (Actually.. this is huge.  My 20yo self wishes he knew this).
  • Lots about door security systems.  I might have covered that in another post.

The rest of life has been interesting –

  • Refining my Rubik’s Cube skills.    I’m considering memorizing the Ortega method.  It brings back some magic.
  • Arranging a Disc Golf outing with some friends.   Researching form, practicing, getting better at it. We have 3 courses to choose from!
  • After way too long off, went out for a run again .. this time in FitKicks.  2 miles.  Maybe not such a good idea, i think i need a size smaller maybe.  Next race in less than 2 weeks!
  • Considering signing up for the triple crown and Derby Half-marathon for 2018.  Because Goals.  Also, a membership to the YMCA.
  • My grandson does just about anything and I melt.
  • Bose QC35 Headset.   Forking expen$ive, but yet…  the best tool for its job?  I was in a loud urban environment, and I could participate on a conference call without any problems.   Connecting to two devices at the same time really works for me (laptop + phone), and .. I find myself no longer dreading phone calls.   I’d rather do a phone call with these on than any other way.  Here’s a negative review for some contrast.
  • Mozza Pi – new place in Anchorage.  Worthy of a visit.  They’re not open for dinner yet, want to get their process honed before they ramp up.

I’m getting pretty excited – past the 50% mark on studying for the AWS Solution Architect Associate exam.   The last course on VPC’s really dialed in some stuff that I was wondering about. 

I don’t know that I’m going to get any time for my personal projects .. not for a while.  I think “exercising my body” has taken over for the summer.   And that’s okay.

Cheers

Miscellany 17.6

imageBusy busy .. we’ve had a house getting interior painted, and interior carpeted, and most of my home time has been spent tearing down and putting things back.   Not much time for projects.

At work, though, several new skills.  I’ve done a lot more infrastructure stuff, which has included:

SSL stuff

  • Dealing much more with SSL certs.  I now know PFX vs CRT vs PEM vs CSR, etc.  I had to rekey a cert because the person who requested it didn’t know how to get me the private key they used, and .. AWS Elastic Beanstalk builds CPU’s on the fly, so you have to shove the PFX in after the build.  
  • Using openssl to move these things around.. running from bash under ubuntu under windows, the official one.

Building and Network stuff

  • Dealing with a Card / Fob / PIN system for building access.  They break it down to:
    • The doors (and readers)
    • The “timezones” (actually sets of T1..T2 timeslots unioned together)
    • The Access Levels, which are a combo of DOOR: (Readers) x Timezones
    • The card, which is a union of Access Levels
    • And there’s other shit like multi-panel transfers, and web admin accounts, and stuff.
  • Helping with an office move .. odds and ends.  I’m the backup to the main sysop.
  • Figuring out easy ways to do patch cable management.    And cleaning up cables in general.  My 20-y-o self would squirm, but I finally have the patience now at 45.  Or am I 46?  I forget.

AWS Stuff

  • The learning curve continues.    40% of the way through the course.  I’m delaying taking quizzes till several days after listening to the material, to verify that I’m doing things from long term storage.
  • I really want to program with the stuff, but that’s not my scope right now.

Billable Work

Nothing terribly exciting.   Except the ones in bold.  Its been a splattering of things —

  • SSL Certs in an AWS EB site
  • MVC website carousel updates
  • Tracking down why some stuff blew up (in code we didn’t write)
  • Some lost source code.  Decompilation to the rescue!  Updated some SQL that has started to fail.
  • Some .Net custom code for Peak21 ERP system – testing and rewriting and proving that an API was broken.
  • Oracle ERP system moves, changing connection strings and testing things
  • Adding Fedex shipping to a website instead of UPS, via Shippo.  Some refactoring to get things more configurable.
  • Using Feature flags a lot more, because that way the code can get out there, and then await other configuration to catch up.  FSGD!

My biggest challenge is not feeling rushed, feeling the weight of everything in my list bearing down on me, along with the craziness of learning things on the fly.

Changing Schedules

I’m trying to wake up earlier .. so that I can spend time at Starbucks .. do a little journaling, keep track of bills and fiscal transactions, write an email to my recovery sponsor.. start my day off right.  Hit rate: 60%.  Benefit: 200%.

Diet Experiments

https://www.jimmyjoy.com/products/plenny-shake is delicious.  It does clean me out a bit, but the energy curve on it is nice and stable.  When I’m on it, I crave sugar way less.. I get full faster.  I will be reordering it.   Tastes way better than soylent, IMO.

Running

Two 5k’s done.. several more to go.   I have heart rate, date, and pace information .. should make for an interesting plot.  

Home Office Organization

I made an inventory of stuff, and sorted it by:  Visibility, Usage, Importance, Replacement value, Sentimentality.  And used that to figure out what went on which shelves, etc, and what to release.

 

 

That’s it for now.  I expect my world might clear up a bit around July.

Its been forever.. here, lets watch some ice melt.

One of my gifts to our life was a GE Opal Nugget Ice Maker.    

I was curious how stale the Ice could get.   So I timelapsed it.  Here it is, from about 6am to about 11pm:

[youtube=http://www.youtube.com/watch?v=4G6I-FdJVZI]

 

My guess is that its loosing maybe 1/3 volume in about 12 hours.  So maybe 36 hours for a full refresh of ice?

 

In other news:

  • I finished up a session with Code Louisville .. several unlisted videos from that.   May make them public in the future.
  • I’ve transitioned over to covering maintenance tasks at work – and figuring out my tooling for capturing that flow:

image

  • I’m also trying out using a google group in “shared inbox” mode to capture requirements naturally from emails
  • I’ve got a zapier zap for converting emails into cards on the above board.
  • I ran more than 2 miles for the first time in 2 years or so!
  • We as a family tried to go without an internet connection at home, and we only lasted about 2 weeks.

I’m hoping that my schedule has cleared up a bit..

  • At first, I barely had time to take care of just the emergencies, I had left myself no time to breathe with all my projects / commitments
  • Now, the last 3 nights, I’ve had options of what to do with my time.. and I’ve mostly been catching up, decompressing, regaining my humanity
  • I’m promising NOTHING (that’s how I get into trouble), but just writing this blog post .. feels like I’m coming back to an equilibrium of some sort.

Inventory of Projects

I’ve been meaning, for a while, to put together a spreadsheet of the (software) projects I’ve worked on in my life so far.   The sheer number of them is staggering.

The thought was I could put in enough columns so that .. an interesting taxonomy could emerge. 

Its also one of those things where, I never thought the list would get so large that I couldn’t remember them, but.. here I am.  I guess 26 years of paid experience will do that to a person.

I Started It

I tried to do that for a bit – here’s what I got:

https://docs.google.com/spreadsheets/d/19ivowzqQJiPrMVk8rAfHbZ-cf_G6tqmQAzqYIW1sc00/edit#gid=0

image

The columns I have so far are:

  • Name
  • Year(s) – turns out some of them extended over multiple years.
  • Employed by + Project For – working at igNew, my project was for a client other than my employer.  But before that, these were the same.
  • Implementation Details – this was pretty hard, to figure out what columns to use:
    • Language – Its mostly C#, but if I go back far enough there’s some Java, Perl, Clipper, etc as well.
    • UI – technologies related to UI stuff
    • DB Backend – technologies related to database stuff
    • Host Platforms – I was trying to figure out how to say Asp.Net MVC vs a Windows Service.
    • Additional Technologies – I think maybe EF + Dapper need to move to DB column
  • Management Details
    • SCM used.. this feels like an unnecessary column, who would ever want this info?
    • Unit Testing / Mock framework – if sorted by start year, can see how this becomes important
    • Integration Testing – as I think this is super important, putting it out in its own column.
    • CI/Build strategy – or lack of it – how we went about running the project
  • Project Management Details
    • Roles
      • Engineer = “thought about how to do it” + “did it”
      • Lead Engineer = “mostly all me”
      • Project Manger = “updating the Burndown” + “Communicating estimates + schedule”
      • Ops Support = “things broke in Prod.  Figure it out.”
    • Slices  – If I worked with a team of people, then these are the bits that I worked on.
    • Proud Of – this is probably the best part of looking back.
    • Coworkers + Contacts – I’m going to have to go look up many names for Contacts.

What Now?

There are so many projects!   I put down 11 tonight,  I think the list of paid things is..  probably in the 40’s? 1-3 per year, depending on role, and then add in another 30-40 of fun things?

I guess I could make a list of all the projects I could think of first .. vertically .. going through each Job.

I could (and will!) also add in all the for-fun projects that I’ve done.  

But Why?

Simply put, this is to battle Imposter syndrome.   Also, in my job, I’m undergoing a role shift – where I’m taking on more Ops and Maintenance type work – it feels like a good time to look back at my career as a software developer and take some stock of what I’ve accomplished so far.

The other part of it is, … my resume.  I don’t need one at the moment, but every time people talk about keeping a resume updated … the level of detail involved … gives me anxiety.  So the thought is, if I have this spreadsheet out there – my resume can become more of “who I am” and “what I care about” and shove all the detail crap to this spreadsheet.

Time Inventory: 1 week in February

After listening to https://www.relay.fm/cortex/44, I decided to do another round of time-tracking.  I had done this twice before —

https://geekygulati.com/2012/06/28/where-did-my-time-go/

https://geekygulati.com/2014/06/04/time-use-may-2014/

This time, I used a new tool, https://www.toggl.com/app/timer.  More on that below.

Results

image

imageimage

  • My time is evenly spent working, and sleeping, and “everything else”.
  • Everything else – “entertainment” (youtube, twitter) took the most time. 
    • This is a direct reaction to the political climate right now – this was me staying glued to my versions of news sources, to get a feel for “what’s going on out there”.  Not necessarily healthy.
  • Then Family, and being around other people
  • Then Admin, which is chores and self-care thing.

Not too bad.   The “Entertainment” is too large, but otherwise, this feels solid.

The way that I tracked it this time, if I was driving to work, that was “work” time, but tagged with driving.  So, I could narrow down to just the “driving” tag and see where all I was driving on the behalf of:

image

  • As expected, most of the driving was to work.   My 30 minute commute is represented accurately.
  • Lots of driving for “social” reasons – to have breakfast or lunch with friends.
  • Recovery and Teaching are next – also good.
  • Nevertheless, 9.5 hours in a car during the week.  Of those 9.5 hours,  3 hours were logged as “listening to a podcast”. 

I don’t always want to listen to a podcast when I’m driving.  Sometimes, I prefer silence.

I also spent 11 hours and 13 minutes engaged in “eating”:

image

  • Thanks to notes, I can see what I was eating, and who I was eating with.
  • I spent around 2 hours eating by myself (at my desk, or drive through).
  • The rest of the time was split between friends, coworker-friends, and my family.

Toggl

I did NOT like it.  For the purposes of doing 24 hour coverage, it was NOT easier to use than Eternity (an iPhone App).  However, it was definitely better at reporting.

Specific reasons of dislike:

  • Starting a timer on the phone, then stopping it on a computer – timer kept going on the phone, throwing things off.
  • Very hard to adjust things AFTER the fact.    In Eternity, it has “locked” times so adjusting end of one thing adjusts the start of the other, etc.  With a calendar display where i could just slide times around, rather than having to enter every digit. twice.
  • Gap detection only possible using the website client.   And then, when I detect a 6 hour gap from 4 days ago…  it took way too many clicks to try to get time entered.

I would say Toggl is more directed at business-type things – not personal enthusiast things.    And that’s fine.  

Changes to consider for the Future

  • I need to get my Youtube / Twitter / News intake, more under control.  
    • We might be doing another experiment – getting rid of internet at our house – and I might be downloading “what do I want to watch” to my iPad while at work, and further delaying what I watch.
    • I think I overkilled with watching Colbert + Noah + the other guy.  I think I’ll rank Trevor Noah at the top for me, I don’t need to see all 3 folks’ interpretations of what happened that day.
  • I have to get exercise back in there somehow.    I don’t yet know how.   Probably less being social?   Combine it with family?  Here kid, let me strap you in to my chest and run on a treadmill.
  • I didn’t do much (any) cooking this week.  Previous weeks, I had 6 hours of cooking in there – at least.   However, that’s also quality family time for me.
  • I also need more personal, not-scheduled, do-whatever type time.  Places where my creative side can come out.  Like writing this blog post.

Good news – I have a week of vacation next week.  Help me juggle and resize things and try to come up with a plan.

Levels of Being Freaked Out

flowchartoffreakedoutness2The events playing out at the airports freaked me out over the last few days.

I realized that my security instinct was kicking in – I’m not directly threatened – but my instinct is still kicking in.  Okay, acknowledged.

I started thinking about all the “threats” that my system was reacting to, and .. after sharing them with my sponsor, realized, I could zoom out and get a perspective.

Here is my perspective (click to zoom in):

 

 

Specifically, there are two sub-sections which I need to zoom in on:

image

This is the “well, either things will go to shire or they won’t, and as much as I can figure, I should take actions to affect the outcome, and me harm none.” branch.

Secondly:

image

This is the “catastrophic failure of society” branch.

I had to think pretty hard about the green arrow – this is related to me choosing to arm myself or not (in a way).  There’s a subset of “short term society crash” vs “long term society crash” where my answers are different – I think I would arm myself to “keep my peace and order” until society order is restored.  I don’t know about long term crash.

Okay, good.  I have a framework in which to rest my fear.

Now What?

Society hasn’t folded, so I guess I’m at “Discern Actions” stage.   There’s actually more to it than that:

Awareness

This is the tumultuous part.    This is when the inputs that are coming in the eyeballs cause discord in the brain.   Best thing I can do at this point:

  • Don’t shut down, let it in.  Need information for the next stage, knowledge of what is going on.
  • (at least not me) don’t react in indignation.  Indignation may be short term good for my emotions, but its not a long term strategy.   Good news: plenty of other people to carry the indignation immediate action torch for me.

Acceptance

  • This is the point where one has a decent enough perspective of what’s going on, that one understands the system that is in play.  Now the better vs worse actions are visible.

Action

  • Act without expecting outcomes.

 

Thats all I have for now.

Blue Apron: roasted cauliflower pitas

Made my 3rd of 6 Blue apron meals (last shipment arrives Tuesday).   It went rough, but I figured out some things:

  • Definitely check out the recipe online:  https://www.blueapron.com/recipes/roasted-cauliflower-pitas-with-purple-potatoes-spiced-yogurt
    • They have little videos showing easier ways to do things – like – peeling carrots.  Helps with the overwhelm as well.
  • Print out the recipe from online.  I did a photocopy of the recipe in black and white and crossed things out as I went, if I had printed it out, it would have been easier to read.
  • Get appropriately sized bowls for everything ahead of time.
  • I probably need more salt and pepper.  I swear .. put in the taters.  salt and pepper.  add oil.  salt and pepper.  remove and put in bowl add lemon.  salt and pepper. 
  • Lock the camera down with magnets (or use a better camera).  However, dropcam is so convenenient .. just do stuff and create the timelapse later.  No editing.  But yeah, it would be nice to have a really high res timelapse.  Could do it with my phone, I guess..   (video nerd came out, sorry)

Once again, the recipe took 2 hours from “decision” to “prep” to “cook” to “plate” to “eat” to “clean”.   So about the same as driving half an hour to a restaurant.   I did not have my wife’s company this time.   Would have been cost:  $20.

The food was delicious!  I think they’re growing on me. 

Timelapse:

[youtube=http://www.youtube.com/watch?v=IbuCSCNZynQ]

My attempt to do the moonwalk in slow-mo didn’t come through quite right.  (Its during the purple potatoes).

Blue Apron–Timelapse + Minor Analysis

I am investigating different ways to go about eating.  First up to try: Blue Apron.

There are a gazillion reviews of it, so I won’t focus there; instead I’ll go for my reaction.

Timelapse

First, here’s a timelapse of me preparing https://www.blueapron.com/recipes/potato-artichoke-quiches-with-romaine-orange-salad .  The time covered is from 5:54pm to 7:15pm or so – from the time my wife picks the recipe to me plating the food.

[youtube=http://www.youtube.com/watch?v=GptVmizTcIA]
video caption here is what i entered

Analysis

Going through the video at normal speed, and inventorying myself:

Stage Their Est Me Comments
analyze recipe so I don’t miss anything. (none) 5:56-6:04
8 min
The text is pretty scrunchy, so I convert it to a flowchart of sorts.  I don’t refer to the flowchart again, but connecting all the things in a flow helps me consider everything.
Get Hardware (none) 6:05-6:08
3 min
Pots, pans, salt, pepper, oil, etc… and bowls for ingredients.
Unpack food (none) 6:08-6:11
3 min
Sorting 2 recipes, I had already made one.
Arrange (none) 6:11-6:13
2 min
I wanted everything easily visible and available in its own bowl.
Prep 15 min 6:13-6:31
18 min
I slowed down on the orange, I think. It was frozen-ish and my hands got numb.
Cook: 35-45 min 6:32-7:14
48 min
Broken down further
  Taters 12-13 min 6:33-6:46 13 minutes
  Taters+Art 2-3 min 6:46-6:49 3 minutes
  Mix with Egg   6:50-6:52 Everything till starting to pour them in
  Pour them   6:52-6:53 I was afraid of missing.
  Bake 18-20 min 6:54-7:14 20 minutes.  Thank you Timer.
  Salad   6:58-7:01 (Extra Salad Chopping)
Plating   7:14-7:16 2 minutes
(eating) Not included in the time lapse.
Cleanup 7:35-7:44 Unload + Load Dishwasher, Clean stove.

So end-to-end time with no technical debt: 2 hours.

It was quality time, with my wife hanging in the Kitchen with me as we chatted about stuff.

So Is It Worth It?

To try to analyze it more objectively, I think its a 3-D plot.

For Health Level, its a bit arbitrary.  1= bottom, 2=mid, 3=good.  Circle size = bigger = healthier.

I did not include Tastiness.

   

image

image

The labels overlapped, its in the bottom right of the grid.

So,

  • Its healthier but much more time-costly than going to a place like Noodles & Co which is 20 minutes away.
  • Its better than costlier long-wait-restaurants like Mikato. 
  • Its about the same as driving 40 minutes to the Whole Foods to eat at the buffet there.
  • Amortizing the cost over 4 meals, its probably the same as going to a grocery store to shop, and then cook, something healthy .. maybe.  I don’t have actual samples on this yet.  I will soon.
  • I put Soylent on there. 
    • Assuming you don’t have an adverse reaction (I do)
    • and you don’t have objections to the idea
    • its “perfect” nutrition, very fast, and at fairly low cost. 
    • Its not friendly with my diabetes, either.

When viewed through this lens, I guess its okay.  Its not earth-shatteringly better, its just.. more tuned. 

Summary (so far)

You have to like, and have the time, for the cooking.

If you like cooking, and hate shopping, and like trying new things, it would be PERFECT for you.

For me, cooking is okay, the hard thing for me is the time.

I have one more recipe from them to try, then its off to Green Chef or something like that.

Year End, Backup, Archival

image

 

Because I have the time available, rather than just reacting, I’m trying to plan what I’m going to do with my various sources of information.  Its on my head to keep them backed up (in case of data loss or service loss) and archived (long term storage, and also dealing with service loss).

There were too many things!  I’m going with “resilio” (formerly bittorrent sync)  as my offsite, in-my-control backup (if it dies, the files are just plain old files on a hard drive), but i still need to get my stuff from Dropbox / Google Drive etc to resilio.   But how I get the stuff there?

So I added a Risk and Importance column where low numbers = don’t care and high numbers = care, multiplied them together, and got a priority.

Starting the copies while I go do other cleanup stuff around the house…

a Rubiks Cube, a father, and a son.

Note the lowercase f and s.

My father showed me how to solve a Rubik’s cube.

There were many things sub-optimal, perhaps, about my nuclear family of origin; however, some things that went very well:

  • In the 1980’s, when the Rubiks’ Cube became a thing, lots of people were writing books on how to solve it.
  • Not a lot of Maths books though. My father (Sat Pal Gulati) always wanted to be famous, respected, known, and he decided to write a maths book about the maths of a Rubik’s cube.  This was probably 1984?
  • He showed me, by example / osmosis, his solution..
  • .. which gave me a mindfulness of patterns.
  • This mindfulness of patterns has helped me in my programming career and in life in general.

Or maybe, I was always prone to pattern-recognition, and this was one of the first ways my mind used that skill.

My father was never able to publish his book – he finished it, and I remember him working with some printers in India to get it published, but he only printed a few (100?) copies, and never got a distribution channel to sell it.  But he was very proud of it, I think.   I would love to get a copy of it, but I don’t think I can.

My son enjoyed playing with a Rubik’s cube.

I’ve shown off my Rad Rubik’s Skills every now and then – mind, I’m not a speed solver.  Best time so far has been 1:58, usually more like 3:00.  Mostly as a party trick, I don’t own a cube of my own at the moment.

At a family gathering, my wife’s sisters’s husband’s brother’s son had a cube – and it was a big topic of conversation for the evening.  I showed off my inner child’s skills (thank you dad).   Later in the evening, my son (who is now a young man, on his own, with a son of his own), picked up the cube.. and I could see his gears turning, his fingers ruminating.  My heart melted.

So, for Christmas

I am investing.

I am investing in the availability of patterns for young (and not quite as young) minds to grab on to.

I am investing in my inner child who loved this stuff.

There’s a beauty that I cannot describe in working with these kinds of puzzles.   Its the same beauty that I see in Maths that people either get, or their eyes glaze over.

Just waking up in bed this morning, my mind started playing with a 4x4x4 cube, and I realized how the solution is the same as the 2x2x2 – the inner edges are the same as an inner 2x2x2.

What’s this Pattern / Solution?

Jade asked about being able to solve it, and I’ve been thinking about it.   I think there are some realizations that add up:

  • First you have to be able to see the “edge” pieces from the “corner” pieces, and the relationship to the “center” pieces.   Pieces are not in place till all the colors match their respective centers.
  • Then, given you have a face that is already solved,  you can find two moves:
    • one move A will remove one piece from that solved face.
    • a different move B, to put that one piece back in the solved face.
    • your solved face is still solved.
    • Sorry, we’re going into Maths territory here by giving things names like A and B.
  • Then, you study the effects of A+B on the rest of the pieces
    • some pieces swap with each other
    • some pieces go for a 3-way swap with either other
    • sometimes pieces rotate in place.
  • Now think about mirrors.  So if you do a move on a left side, vs if you mirror it, and do it on the right side.
  • Now think about (A+B) + (A’ + B’)  (yeah, I had to jump into Maths.  I could make a video if someone asks)
    • Some things will cancel out
    • This ends up moving a few pieces with surgical precision.

I wrote the above before I found the links below .. its so much easier to show.

What Specifically did my father show me?

My father’s system has you solve the top face first, and then work on:

  • Bottom corners placement
  • Bottom corners rotation
  • Bottom edges
  • Mid edges placement
  • Edge rotation

Pattern 1: To position and rotate corners

Click on the bottom row of buttons to move the cube around, S to stop rotation, R to reset rotation.

  • A+B: https://rubiks3x3.com/algorithm/edit.html?moves=rDRDFdf
    • A = rDR moves the Yellow-Orange-Blue corner piece out
    • then move the YOB piece back in with B = DFdf
    • omitting a final d .. better for combining below
    • Yellow face stays unchanged
    • White Corners:
      • Red-Blue unchanged
      • Orange-Green and Orange-Blue 2-swap (with a rotate)
      • Red-Green rotate (rotations are always in pairs, the other part of this rotate was in the Orange-Blue)
    • Use this move to position corners, don’t worry about rotation.
  • A’+B’: https://rubiks3x3.com/algorithm/edit.html?moves=LdldfDF
    • Same as above, but mirrored.
    • Same effects, except a different piece rotates.
  • A + B + A’ + B’:    https://rubiks3x3.com/algorithm/edit.html?moves=rDRDFdfLdldfDF
    • The two front bottom (white + orange) corner pieces don’t move.
    • The two back bottom corners (white+red) rotate so that white ends up on the back.  Ie, whatever was on the L+R is now on the bottom.
    • Use this move to rotate corners.

Pattern 2: To move things from the middle to the bottom edges

Pattern 3: Moving Edge pieces around

Rotating the cube so that the offending middle pieces are.. well, you’ll see:

Pattern 4: Rotating Edge pieces

This one is so simple, yet .. amazing somehow.

And that’s it.  That’s all I had to remember to get the cube solved.

The same moves apply to solving the 2x2x2 – there are no edges.

And this morning I realized it would solve the 4x4x4, 5x5x5, etc, as well.

Thanks Dad.