Detailed Testing of Very Large Forms

I was given the task of “testing everything” regarding an integration for my client.  

image

This is a screenshot of a document of screenshots; appropriately zoomed out so that no detail is visible.

  • The source system is in yellow; those are portrait screenshots of a multi-page web-form.  
  • The target system is in gray; its several screens of a Windows app.
  • It used to be that gray was loaded from PDF’s, and yellow generated PDF’s.   Human error, lots of time, etc.
  • Now there is an intermediate system, lets call it blue, that is used to load the gray system.   It has a code-generated API document that is 467 pages long, that mostly tells you that X field is stored at Y location in the database that gray displays fields from.

You might think that this could be straight forward, but its not:

  • Some fields in yellow are old, and do not belong in gray
  • Some fields in gray are manual entry, cannot be loaded via blue.
  • Some fields in gray will in the future be loaded by blue, but not yet
  • Some fields in yellow actually go to another system, purple.
  • Furthermore, yellow is customizable.  Not everything is displayed for everybody; some of the fields had never been used before to my knowledge, and might just be old stale stuff.

No problem!  Just have the business persons spec out which fields go where!

  • There’s a business person who knows yellow.
  • There’s another person who knows blue.
  • And another person who knows how blue loads gray, and knows more about gray.
  • Everybody knows about the existence of purple. But, I didn’t find a person who knew purple.  And blue doesn’t talk to purple, and we’re only talking to blue.
  • These people are hard to pin down and have like 15 minutes to spare, tops.
  • Even if I could get them all together, how to document it?
  • The solution would be to find the person who was interested in having yellow go to gray who knew the fields on both sides.  Unfortunately, there was no such person available.  This is all speculative work that someday, in the future, would be good to have. 

So, sensing somebody will have to feel the pain… I volunteered (billable) to Brute Force Test it.   Where do I start?

  • I could get an alphabetical list of all the fields in yellow
  • I mostly knew how yellow was put together – approximately which page had which fields.
  • I knew almost nothing about gray.

My Solutionimage

  • Put on my QA Hat.
  • Turn on everything possible in yellow
  • Create a full application (ever possible field filled out), send it through blue to gray.
    • Take screenshots of every screen so there is no doubt what I put in or what I got.
    • Generate an Excel with the list of all fields from yellow, and the values I filled them out with.
  • Because I don’t know gray, I’ll iterate through it one field at a time.  
    • The other ones, I can much more quickly find things, so less seek time.
    • One page, one field at a time, find what I think is the maimagetch in yellow
      • I did this against the excel spreadsheet that I had generated from yellow.
    • Using pen and paper, cross stuff off from my screenshots of gray.
    • Using Excel, update the field to field to field spreadsheet with success or failure
  • Use Excel Filters to the group the fields into which groups need to be asked to which person.
  • Ask the questions, get answers, in the 15 minute window I could get everybody together during. 
  • Address individual fields with detected problems one at a time, with screenshots of yellow blue and gray as needed.

imageThis has been my life for the last week and a half.  I’m almost through my second pass of fixing fields, thanks to feedback from the person who knows gray.  And we’re a lot smarter about what in yellow doesn’t map with gray.

Mr. Pink was not harmed during this process.  He can definitely say that he wasn’t because he knows when he was and when he wasn’t.  But he cannot definitely say that about anybody else, because he doesn’t definitely know.

Working Two Clients

I find myself in that not-great-but-necessary position where I’m working with two clients at the same time.

The deal is – one project, A, is winding down.  There’s an (unknown, but getting clearer) picture of the amount of testing that needs to happen.   And my other client, with project B, really needed something changed (prior work) before June 4th.   At the time we said yes, it looked like A would finish in the middle of May …

Here I am.  Both clients know that I’m working with them part-time, and that I have the other client whom I’m also doing work for.   Both are excellent business partners and are easy to work with.   No problems!

However, I’m left with having to juggle tasks between the two of them.  How and when do I switch?

My answer is, I use a modified Franklin Covey Planner system.  I thought I could easily find a link to something that explained it, but I couldn’t, so I’ll just lay it out.

image

  • I divide the page into my two clients.
  • I make a list of everything I can think of that needs doing, whether urgent or not.
  • I figure out the A priorities.  These are things that are critical, MUST be done today, or at least very time sensitive things.
  • Then the “B”’s – important stuff, like do-this-week kind of stuff.
  • Everything else is “C”s, or (gasp) D’s, which I might never get to.
  • At this point I deviate from the Franklin system, and I add some other prefixes:
    • W = things I’m waiting on.  
    • Q = things that can happen quickly, like in a pomodoro. 
    • T = things that happen at a certain time.  Ie, i don’t have a choice of when to do them.
  • I then go through and assign priorities.. A1..N, B1..N, etc.
    • In general, if its more risky, i’d give it a higher priority.
    • If it affects more people, I’d give it a higher priority.
    • I’ll put the Q’s before the non-Q’s.   Because crossing more things off my list is better.

Then, here’s the two client bit:

  • I always do A’s cross-client, switching context as I need to.
  • Then I settle down on one client till my next big break, like lunch, perhaps .. work on its stuff.
  • Big break – lunch – or visit the Gym just down the street.
  • Resume with other client.

I don’t try to hide from one client if I have an “A” to go work for the other client.

Another hack I’ve found is, instead of using Pomodoro’s with an alarm, I’m using them with 25-minute playlists (from either Spotify or Amazon Prime).  When the music stops playing, its time to wrap up the current thought and take a micro-break.  I have tried Richard Franklin’s “Music to Code By”, but I seem to be doing more EDM now – stuff like Gold Panda, Tycho, etc.     Thank you Amazon Prime Electronic Betas for Work Playlist.

I hate Sugar

I hate what sugar does to me.

And by sugar, I also mean simple Carbs like Bread and Donuts.  Especially Donuts.

Yet, here I was again.   Friday Donuts showed up in the office.   “I wonder if it tastes just as good?”  I get tired of the mental battle.  I give in.  Chomp.   The chocolate glazed one is sickeningly sweet.  So I eat the sugar raised one instead, that one is almost perfect.    Slug some more coffee after it. 

Here’s what it does for me, if I am to be honest:

  • In about half an hour, I’m sweating.
  • The places where my muscles are tired and worn, like in my forearms – they hurt.  (wheat has this effect on me)
  • The skin on my feet dries up, goes gray.
  • My eyes change how they focus.  I now have to look through a lower part of my progressive lenses to achieve the same focus.
  • My brain wakes up – it gets excited.
    • But, I think it gets excited in an unorganized, random way.
    • Not as a finely Tuned Tool of Tantamount Thinkstruction.
    • It gets hard to hold a single thought down, instead, I start thinking of everything.
      • This is great for project management.  It is bad for coding.
  • 2-4 hours later, my brain crashes.  Intense sleepiness comes over me.  Its hard to think.
    • I can postpone this crash by sacrificing more sugar to the cause.

Under the Hood

Under the hood, here’s what I believe is happening:

  • I’m a Type II diabetic.  This means that while my body pumps out insulin, the insulin doesn’t work quite as well as it would in a normal person, so the sugar is not cleared from my blood quite as fast.
  • Any meal of more than about 25g of carb, depending on GI index of the food, spikes my blood sugar up beyond the point of my insulin being able to handle it.   I’ve clocked it at 165-200 before.  Which isn’t AWFUL, but it is over 140, the “toxic” level for certain types of cells.
  • With my blood sugar high, various other diabetic things happen – dryness, eyes, possible neuropathy (nerves screaming in pain and then dying) (hasn’t happened to me yet, though I occasionally have an isolated twinge, like a needle prick).
  • Eventually, 2-4 hours later, my body finally gets to the point where its clearing up the sugar.   My brain, used to the influx of sugar, senses things drying up, but it can’t switch to an alternate fuel source yet, and so I hit a wall.   Queue the need for a nap.
    • Sad thing is, it seems to want to crash as the blood sugar drops, not as it gets down to a certain level.  I’ve had crashes when my sugar was dropping at about the 130 range.

Even further under the hood, here’s more of what’s happening:

  • Because I pump out so much insulin, and insulin is a signal to the body, two things happen:
    • Insulin signals the body to store the excess sugar as fat.  This seems to happen around the belly for the most part – BEER BELLY!   (I wonder if its because the sugar didn’t get far from the intestines and then immediately got stored, before it could get further away)
    • Insulin prevents the body from burning fat.    So even if I’m starving, and my body needs energy, if my insulin levels are high, my body won’t burn fat; rather it will burn protein, or go into starvation mode. 
      • I measured this for myself several years ago.  By “this” i mean how my body will ignore the sugar that’s floating around.  Right when I first got diagnosed, and we were experimenting with dosages.  I went off my medications, my average blood sugar levels went up, but I was recording everything that I hate.  I averaged 1800 calories a day, ran, AND I gained 5 lbs, in a month.   I should have lost 5 lbs instead.  Calculations ensued – I deduced that my body was running on 1300 calories a day.  And I felt like crap.

And why the heck do I need a donut anyway?    These answers are specific to my weakness:

  • One author puts it as “Labrador Retriever brain”.  My brain is hooked on the sugar.  It LOVES it.  It was designed to love it.   It craves it.  Precioussssss.    Some folks have tons of willpower – I can have willpower, but it comes and goes in spurts, and if there’s something else big going on, that’s where my attention goes and poof! I’ve given in.
  • There’s a social aspect of it.   I want to belong, I want to participate in the customs going on around me.  I don’t want to be left out. 
  • I have memories of emotional happiness associated with some past occasions involving donuts (and bagels and danishes). (and little smoky sausages, and chocolate wafers, and orange juice, and spaghetti, and french fries, and … )

Recent changes in Diet

Lately, I’ve been listening to the Primal Potential podcast, and I read through the Bulletproof Diet book, and I’m trying something:

  • Bulletproof coffee for breakfast.
    • my body is already at a low level of insulin from my overnight fast
    • keep it at a low level of insulin, and give my body energy in the form of good quality fat
    • turns out, my brain is very sharp when running on fat. 
    • This is not a long term replacement for a real meal; just gets me past breakfast to lunch.
    • OMG trying to find an article that isn’t either a) debunking it or b) selling it, is really hard.  Try for yourself. 
  • Limited Carbs for lunch
    • 25-50g or so.
    • Quest bars
    • Hearts of Palm and Quinoa salad from CostCo
    • Trying to find other things that fit this mold.  Trader Joes has lots of little interesting things.  CANNOT do Panda express (wah)
  • Dinner = moderately healthy, but can go awry (pizza!) if the situation calls for it.

This was my plan till the Donuts showed up this morning. 

New Plan: Surrender

My new plan is to surrender to the donut.  Or the cake, or the pop tart.

  • I will take a plate.  This plate might be decorated or beautiful.
  • I will place said item on the plate, with great solemnity.
  • I will place said plate in the refrigerator.  Or perhaps under a non-see-through-lid in my office.
    • I could label it “Mogwai” – its cute, but watch out when you feed it.
  • at 3pm, I WILL CONSUME THE NOM NOMS ON THE PLATE.

Delayed gratification.  Let my body run without large insulin spikes until after lunch, if possible.   After the lunch spike dies down, then subject it to Donut.   Then the subsequent crash doesn’t affect my work-day.

Reserving the right to eat a bite of the donut, and throw the rest in the trash.  That’s a possibility too.  Preferably at 3pm.

Kittens

imageFor the last 60 hours or so, we have had to put aside all our normal routines, and adapt to a new routine:  of being foster-parents to squirmy, wormy, squishy, squeeky Kittens.

Our son’s friends found them in a ditch by a highway at an abandoned house.  Initially, the kids thought they would nurse them back to health, but their patience was run down, and so we made a decision and took over as foster parents.

But this is a geek blog! 

Right, so:  I repurposed one of my Dropcam’s, on nighttime mode, watching the kitties.  I have an alert set up for litter box use:

image

Here’s some things we’re learning about them:

  • When we feed them, they will eat a bunch, and then they’ll stop.. but they’re not done yet!   give them a little bit to digest, they might run around like banshees for a bit.. work up a bit more appetite.. then they eat again.. THEN they are done.
  • They know how to use the litter box! thank god.   I had to help some of them with #1 and #2 .. once we got past the initial dehydration and stuff, it was okay.
  • To heck with all the feeding schedules on the internet.  When they get hungry, the two bigger ones start trying to suckle the smaller ones.  Not good for the smaller ones.  That’s when we know for sure to feed them.  Its been about every 4 hours or so, although I think we get a bit of a reprieve when its dark out.
    • Speaking of suckled little ones, they are the first to wake up and the last to go to sleep.   Learned habits.
  • Calories in, Pee & Poop out.  Everything else in the middle is optional.  Their bodies are programmed to grow, and their instincts guide them well. 

Some stuff I’m figuring out personally:

  • I am insanely proud of them every time they figure out something new.  Like, leaping, or climbing up my leg, or batting a ball.
  • I feel very honored whenever any of them decide to use me as a perch, or play in my lap, etc.  I guess I’m one big momma kitten to them.. playing king of the hill, etc.
    • Taking my momma cat job seriously – my wife is dealing with the formula and feeding, and I’m dealing with with the cleaning.   So I’m taking a wet rag to any part of them that seems dirty.  Faces, tails, butts, bellies – its all fair game.  And they cry like little boogers and make bad faces, but when I’m done with them, they’re clean, and they can go back to playing.   I’m proud of what I’ve done so far.  I think my previous cats would be proud…
  • Speaking of, I’ve had my cats. [livejournal link]  Whiskey died at the age of 14, and Samantha died at 19.   I love cats, and I wasn’t planning on getting more cats.  These cats are (hopefully) temporary – there are lots of friends who are expressing (relatively serious) intent in them.   We’ve had to say “no” to any visitations until after 10wks or so and the FEL-V results come in.  Avoid any hopes being dashed.     I don’t want to keep the cats because:
    • OMG the smell of stinky litter.
    • litter under your feet.  litter ending up in your bed.
    • My wife is allergic.
    • I’m a little allergic as well.
    • We want to downsize and be able to travel.
    • Wet cat food smells horrible.
    • Hair hair Hair everywhere.
    • Being strangled by cat-butt at night.
      • So in a way this is the perfect little morsel of “getting the kitty loving” – and hopefully it moves on.

Anyway, enough philosophy and intentions.  My coworker Choma believes I’m doomed, they’re going to be ours forever.  We shall see.   Here’s some stinkin’ cute cat pictures thanks to my wife’s Instagram feed:

image image
image image
image image

God bless those little kitties.

Thoughts about being a Tutor – 2015

A while ago, I was a mentor for CodeLouisville.    It was fun, but it was also Front-End design – something I needed to learn on the fly to keep up with the coursework that I was mentoring.  I met a lot of folks who were excited about learning.

There was some criticism of the program, though.  One such criticism was, Why aren’t you teaching .Net?  Louisville has a lot of .Net work available.  The answer, for CodeLouisville, was a lack of teaching resources.  They are reliant on “free” resources (as in, LFPL paid TreeHouse and thus it was now free for Louisville residents and workers), and at that point in time TreeHouse did not have any .Net curriculum.  (They have since hired somebody and they are working on it).

This annoyed me, and so I (along with some other folks) tried to design a .Net curriculum.  I think the design was good, but the problem we kept hitting was the lack of consistent free curriculum.   And under the umbrella of CodeLouisville, I couldn’t venture into paid curricula like Pluralsight, for example.

The other thing holding me back was, adjusting to the speed of a class of people.   Some folks go fast, some folks go slow.   How to enable success?

And finally, there is the conversion of time to money.   I used to not have any free time, but thanks to kids getting older, I’m finding myself able to reclaim an evening or two a week.  I have my own projects I’m super-interested in, however, I’m also interested in having spending cash to buy coffee and gadgets with. 

So here’s the pitch:

  • Hire myself out as a private .Net / C# Tutor.
  • I get to help a person 1-on-1 in the direction / goal of their choice.
  • I get spending money.  Cash, Starbucks Gift Cards, or Amazon Gift Cards all work for me.  

How much $ do I charge?

  • For folks with hardship, I don’t know yet.  
    • Definitely won’t be enough to replace my day job Smile
    • Maybe the first time around, its on a pay-as-you-can basis as I get the kinks ironed out of the process? 
      • I want to help people get better, so I’d discount myself for folks in hard spots.
  • In cases of non-hardship, I would not discount myself.  For example:
    • Employers hiring me to train-up their employee
    • Parents hiring me to tutor their high-school kid.    
    • I’m thinking $50/hour for these instances, that feels right.  
      • I reserve the right to change my mind before or after a session;
      • I will not change my rate during a 2-month session.

What’s the curriculum and method of study?

  • Depends on where the student is at, and where they want to get to.
  • I would steer the student towards Pluralsight.  Its got the best content that I know of, as a learning tool.  I would, in fact, discount the cost of pluralsight from my tutoring fee.  But if that’s not how they learn, we can find other ways for them to collect information.
    • There is a TON of content out there, but the quality varies.
  • I would guide the student into picking a personal project that is interesting to them, that is not too hard, yet not completely ridiculously easy.
    • The personal project must involve at least two related sets of data.  We need some parent/child complexity to be real-world complex.
  • We would meet once a week for 1-2 hours, and pair-program (or side-by-side program) our way towards completing that project.

.Net is Huge, what specifically would I cover?

  • I’m an old fogey, so I’d start the student off with a console application.
  • Get them to put data in a database.  Start of with SQL Express.
  • Then either go with a Windows/WPF version, or a WebForms/MVC version, of their app.
  • We can also visit other topics like web services, javascript/jQuery/Ajax, SSRS, stored procedures, optimizing SQL, profiling, EF, etc.
    • I am intentionally wanting to take the student the “hard way” through doing some of the stuff (the way it used to be done) before we switch to the easier way which hides the complexity.  For example, SqlConnection before EntityFramework.
  • If desired, we can visit “advanced” topics like:
    • Unit testing, IoT/Dependency Injection
    • Integration Testing, Automation best practices
    • Scale testing (I’d need to refresh myself on this)
    • Waterfall vs Agile vs Scrum vs …
    • Art of Software Estimation
    • I suspect these are more appropriate if I’m hired by an employer to up-train an employee.

What I cannot do:

  • I am not a UI / CSS / Make it Look Pretty person.    I would not dare teach best practices around that.
    • I am, however, good at detecting UX problems (usability). 
  • I am not a mobile-dev person at this time.
  • I cannot teach an uninterested person.  You have to want to learn, be curious.
  • I cannot guarantee employment if you are un-employed. 
    • However,  if you show me the job description your are interested in, or if you are an employer, tell me what you want your candidate to be like, I can teach towards achieving those skills.

Am I a good instructor?

  • Rider Rodriguez, who ran CodeLouisville, thinks I am.
  • Most of my students during my single stint at CodeLouisville as a mentor think I am.
  • I have a very good intuition / radar: I can detect where people are at in their understanding of something and then guide them to getting new things understood.  
  • I’ll hazard a Yes.
  • If I’m not, I’m open to feedback, and I can learn from feedback.

Does this take away from CodeLouisville?

  • First, CodeLouisville does not currently cover .Net programming.  So, no, I don’t think so.  If a person really wants to learn .Net, and thus spends their time with me instead of them, then who is being served?
  • Also, I’m doing this one-on-one.  If I were teaching a class, then that might be different, but I’m really trying to focus on making one person shine at a time.
  • If CodeLouisville does pick up .Net, I definitely would not want to detract from them getting students and/or compete with them.   I will visit that thought in the future when it becomes reality.

 

What do you think?   Is this feasible?  Do You know somebody who would want to hire me in this manner?   Find me on twitter at @sunjeevgulati if you are interested.  

Currently available for May/June/July 2015.

CodePaLousa Day 2 (for me)

There’s a code conference in town, CodePaLousa.  5th year for it; this would be my 2nd? 3rd? 4th? year attending (I skipped a year, I think, and I may not have been to the first one).    For many attendees, this would be their first day, for me it was my second.

I wasn’t sure I could go at first – I had a wedding to attend.   Life happened, and we couldn’t go.. but then, the idea of taking a whole week off – it didn’t feel like I had the vacation time to spend.  So, instead, I asked if I could be of service.  Maybe I could spend a day there… soak in the crowd.

I was taken up on that by @emschw.  So far, I have:

  • Stuffed goodie bags (with the most articulate and well-mannered yet definitely eye-for-detail-and-they-will-let-you-know young ladies, which would be @edcharbeneau ’s oldest two daughters)
    • We had a lot of fun figuring out process!
  • Vacuumed most of the meeting rooms (Styrofoam packing material debris from putting together the projector stands and podiums etc)
    • image With OMG the world’s worst vacuum cleaner.  I had to pull the vacuum off its wheels and angle it to get good suction against the carpet.  It was a good upper body workout.
  • Put up floor-standing banners.. wow those things are cool!
  • Impromptu learned to edit the lighting in one of the conference rooms
  • Bagged and moved T-Shirts and GoodieBags off the tables back to the lock up area.
    • image Deadlifted cases of stuff up onto a cart (I just learned how to deadlift properly, it was fun!)
    • A very nice and friendly lady named Barbara, who is on the cleaning staff at the KICC, really helped me with elevator control.  The cart was too big to fit in the elevator.  She rocks.
  • Been a room monitor. 
  • Attached clips onto lanyards
  • Hung out with so many cool and fun people.  

And I have loved every second of it

I think I put it down in a profile somewhere lately:   I love people.  Especially people who are doing their best, who are being true to their word, who are genuinely excited about what they are about.  I want to help and uphold these people in any way that I can.

Its even better when these are people who are doing technical geeky things that I understand and can relate to.

But, there’s more going on, under the surface.

I want to be a speaker.  There, I said it. 

I want be a speaker about something that I LOVE, where excitement pours out of my pores when I talk about it.    I love my job, don’t get me wrong, but I’m really not that excited about anything going on these days.   EF vs NHibernate vs Dapper vs SqClient;  MVC vs WebForms; angular vs knockout.. these are all tools.  That I use to make people’s lives better.  I can use any of them with enough reference material.  Not what I love.  

No, the code that I love — the last times I felt that, I was actively developing an LPMud.   Think C# syntax, (link is to the main.c of a interactive monopoly game written in LPC) .. but in a ruby-like environment, with hot-swap code, dedicated entirely to monsters and players and rooms and swords and spells and stuff like that.   Think World of Warcraft meets text-only adventure games. 

Stepping back for a bit:

I guess I could do a talk about writing automated tests.  However, its been a while since I’ve done that (for work).   I could talk about how it makes long term maintenance and growing of a project into a breeze.  Being a consultant now, I don’t spend long-term on projects anymore, so its no longer a good fit.

I guess I could do a talk about scale testing, and automating scale testing using Powershell.   Its been almost a decade since I did that. I’d have to re-discover all the tools for driving the tests.

I could do a talk about (non-certified, trenches) project management; tips, tricks and patterns learned over the last decade or two.

I could do a talk about ethics and morality and perspective in the workplace – patterns that works, patterns that don’t.   (Derived from principles in other sources which I will leave anonymous). 

I could do a whirlwind tour of 3D printing using FDM.  That’s pretty recent.

Hey, if you read this, somebody ask me to do a public talk on one of these things.  I may not do it for me, but I’ll do it for you.  And that might launch me somewhere.

Psudeo-Plan

I have an idea brewing in my head.  I’m going to open it up for feeding:

  • Learn me some Erlang.   Because Erlang is so … cool.     Specifically, the multi-node scalability of it, and the hot-swapping of runtime code.
  • Somehow interface Erlang with WebSockets (or something) and a front end thingy to make the start of a mud-like thingy.
  • Test various methods of how I would go about writing a mudlib inside Erlang.  There’s straight message passing, possibly luerl (Lua in Erlang).. ?
    • At this point, Erlang is just the tool.  Right now it looks like a good tool.  There are other tools I know better – C# is one of them.   But, is it the end result, or the journey? In the end, I would have wished I had done it in erlang because of the scalability of it.     
  • Do a simple mud with a simple mudlib.  
    • You are standing in a room. 
    • > North. 
    • You are by a bridge, there is a troll there. 
    • You see: 
    • Troll
    • > Attack troll
    • You attack the troll viciously and Hit!
    • Troll attacks you!
    • > quit
  • Open things up so that folks can write their own mud-like games (again).
    • The “Driver” is the super-hard bit where all the connections are dealt with; it hands off to…
    • The Mudlib is the easier bit that deals with how players, monsters, rooms, etc all interact with each other
    • The Mud is the actual adventure, defining the actual rooms and monsters and stuff that is the story.
      • This is where teaching comes in.  To write a mud, you have to learn how to code (a little bit).
      • Writing code for a mud is MUCH more exciting and satisfying than writing code for the real world.
      • And it conveys the excitement of writing code.   Instead of the $ of it.
  • Revisit the mudlib and instead make inventories 2-D, and make it into a 2-D world with an unlimited size map (in NxN chunks, where each chunk also knows about its immediate 8 neighbors, max effect size = N).
    • This brings in all kinds of other stuff, like calculating paths, and speeds, and true area-of-effect spells, and .. and.. ooooooo fun
    • Work on a javascript client for the above using <whatever technologies are best>.  I’m staying with 2D because 3D is NOT my thing.   I’ll probably default to using pictures of text (font-graphics) rather than actual graphics (because, not my thing).
  • Open things up so folks can write their own 2D world games
    • Hopefully with the same driver and different text vs 2D worlds, some clever folks can write an easy-to-use 3D mudlib.
    • And then people can write their own MMORPG’S easily!?
    • Will it scale?  Hence the Erlang.
  • Give a talk (or talks) on all the stuff that I did.

There are other folks who have done muds; but that doesn’t help me.  I’ve got an itch, its a coding itch, and I keep ignoring it, and it keeps coming back for scratching.  

And I want it Now

One of the hard parts for me is a) breaking this up into smaller pieces, and b) being consistent and working on those pieces till I get somewhere.     I keep postponing, saying, “hey on Christmas break I’ll do this” – and then I don’t.     And I may postpone it again.  But that doesn’t change the fact that I feel it in my bones that I want to do this.   Its been 24 years, and the itch is still there as strong as it was on day one.  I can almost cry, its that deep and it feels so good to contemplate it.

So..  yeah, that’s where I’m at.   I hope that some day I can give a talk on something that I love, and be an example of a person who followed his dream.  

Having possibly said too much, I’m going to post this anyway.

More random little things

I continue to be scattered; dipping my toes into a little bit here and there.   Actually, that’s a little harsh – its more like, we got some interruptions, I got behind in various things, so I’ve mostly been trying to catch up on life, leaving only a bit of time for fun, creative endeavors.

But, I must create/fun, or I get grumpy.   So, the symptoms of my creativity:

image

I created a full color 3D sandstone print for my nephew for his birthday.  Instead of Shapeways, I used Sculpteo.. and was very impressed with their service.   I haven’t received the print yet, but I hope its good.

In City:Skylines (no recent picture available), I finally let a city grow up to get metro stations.  I’ve found that geographical arrangement is secondary to having a good pipeline for traffic flow.  Ie, you can do almost any arragement as long as there’s a (elevated to stay out of the way) highway leading back and forth between I<->O/S/C<->R.  Next up if I get back to it is Cargo / Freight / Ships / etc.

I’m watching an awesome lecture series on Human Behavioral Biology from Stanford.  I imagestarted at the end (thanks to a reddit post that led me there), and now I’m watching the whole thing.   Most wow for me so far:  Game Theory and how that was discovered to exist in real species, and the differences between Tournament and ___ species, and how (unaware) humans have some tournamenty-ness driving their behaviors.  

At work, very recently, I get to embed Lua in a business app!   (Lua is the scripting language used by imageWorld of Warcraft, for example).  The idea is I have a very dynamic set of data – that I need to map to a very fixed structure.   Rather than write brittle code (change a field, change code), or very complicated code (to describe how things map into a multi-dimensional structure), I instead host a script and let the script do the mapping – and the user can change the script.   Set up stuff before, clean up stuff after, done.   Currently in the test console app stage.   (click on image to zoom in to see sample code). 

I’ve been watching the ISS HD feed more often lately.  I keep trying to get an overhead imageview of KY during the daytime, but I keep missing it.  My next opportunity is 6:50pm tonight as I write this.    Satflare.com/isshd provides a map right next to the live feed, and an overlay of features – pretty awesome.   Be aware that at night, the cameras don’t pick up any city illumination so it looks very dark.

I ordered a replacement wire sheath for my Solidoodle 2.  It arrived, but I haven’t had a chaimagence to install it yet.   I don’t have anything specific that I want to print.. so its not a priority.  I do have a pattern growing in my head, having to do with collecting data from waze about driving habits and then making a 3D version of driving habits.

imageI’m halfway through a Football Kicker/Punter Coach-shopping video.   This is actually for pay.   Another hour left or so.  This is my next priority; getting finished this weekend, its bugging me.

Oh! I also got to learn Photoshop in an evening, to make an advertisement for my mom’s business.  Thanks to LFPL’s Lynda.com integration, I was able to watch the Photoshop Essentials course for free – and it got me enough mastery within an hour to be able to:

  • Use layers
  • Free-form crop to correct a picture of a sign
  • Color correction (my video experience helped here a lot)
  • using clip and mask layers to limit blurring to portions of the screen to make text more visible
  • using clip and mask layers to apply some selective de-brightening of overly bright elements

Very proud of how quickly I picked it up, but its also thanks to good coursework available.

I am a Jack of All Trades, master of none, but Apprentice or Journeyman at several.

Fun Things Lately

I don’t know when I’ll have time to do a proper update, so here’s a list-dump of geeky stuff I’ve been up to lately:

  • I started playing Cities: Skylines two days ago.  My brain is processing all kinds of patterns around roadways and pedestrian paths and stuff like that. 
    • imageimage
    • Left was my 6th or so city.. Right is my 8th or so city.  I keep trying to get things “perfect”. 
    • I made a chart of “Noise Polluting” vs “Ground Polluting”, and another chart of “Who wants to be near whom”. 
    • My best idea so far is a big Triangle with Commercial, Industry, and Residential at each corner.
  • My 3D printer broke, and then resurrected itself – there’s a loose power wire going to the extruder.  Its jiggered so that it works for now.
  • I volunteered to make a unique 3D print for a fundraiser basket.  I started off in blender, ended up doing it mostly in OpenJSCAD.  Here are the draft (left) and almost-final-but-slight-oops (right):
  • At work, not much is new.    Still working in an fairly simple MVC app, which deals with gathering user input, filling out PDF’s, and submitting information to various external services.
    • A little bit of PDF parsing and modification that I’d never done before.
    • A little bit of image-detection using some System.Drawing libraries (to detect if what the user uploaded was a valid image)
    • Mostly churning through smaller tasks in preparation for a release.
    • A lot of dealing with configuration migration problems.   Finding a way to export and import configurations between environments so that changes only need to be hand-typed once, and then can be copied from environment to environment. 
    • Next week I get to start investigating 3 services I’ve never talked to before.  Exciting!

House Print 4/N: “Second Beta”

image

I have 3.5 floors printed!  And they go together!  With Stairs!

image image
image image

There are some problems:

image I forgot to cut a section out of the “concrete” that the family room sits on to make room for the stairs from the basement up to the family room.

I also had a hard time getting the steps on the left to fit – I had to resort to my wife’s Dremel to cut some of it down to size.   (Incidentally, a Dremel doesn’t cut it, it selectively melts it via friction)

image I did not make the basement 7ft high like it really is.   Thus, the kitchen is than in reality – and the stairs are the wrong height.

In this same picture, you can also see the problem I have with trying to get the stairs to fit.   
The kitchen wall does not line up with the bedroom wall.

image I ran out of filament with 3 pieces of the bedroom to go.   If I had not made mistakes, I could have gotten the whole thing in a 1kg spool.   (In the pictures above, notice the bedroom has no upper section)

I have ordered a 2kg (5.5 lb) spool of white (“Studio Line White” from JustPLA.com);  With it I’m going to start over.  This time:

  • Correct the basement height
  • Put the stairs in from the start so they get “cut” correctly.  
  • I want to reflect where the ground level is better.

~~~~~~~

For this blog post, I snapped this tag:

https://github.com/sunnywiz/housejscad/tree/Post4

image

When I get time, I plan on making a how-to video – for my own benefit, since a year from now I won’t remember the details:

  • How to create the blueprint
  • How to size the blueprint to create the text overlap
  • How to use the code to generate the STL’s
  • How to use the Join libraries to make the pieces possibly fit each other
  • How to use the Cut libraries to make things printable on my print bed and Plate them
  • How to use the Microsoft / NetFabb Cloud service to fix the model
  • How to use Blender to section the shells off into separate prints
  • How I glued things together (as best as I have found so far)

Pewee, we have a problem (House Print 3/N)

(I live in Pewee Valley, KY, not Houston, TX)

image

This is the 1:48 scale print of the fourth floor.   The source is here:  https://github.com/sunnywiz/housejscad/tree/Post3  and the STL files you are seeing here are bedroom0.stl, bedroom1.stl, and bedroom2.stl.

Problem: The top half doesn’t quite fit the bottom half.   This is because the top half isn’t large enough to hold the shape together – when the roof prints, its warm, and as it cools, it wants to shrink, and so it wants to curve.  The bottom print wants to do the same, but the walls are large enough to prevent this from happening.

Solution: no-roof.  Which, my wife points it, is the way to go:  then you can easily play with the furniture inside.   The side effect of that is, in the current iteration, I won’t be doing top/bottom alignment tabs (similar to the “cross” thing on the left side of the picture). 

Otherwise, the 1:48 scale is working well.  Here is the same bottom half, but with Victorian doll furniture inside it:

image

The checkerboard at the bottom of the picture is also working well as a place to glue things.  Here it is glued to the next piece:

image

Pretty proud of it so far!