Wednesday, October 30, 2013

Score Genie on Day 30

Well we named the App "Score Genie".   I orginally had all kinds of thoughts about having magic type effects as you recorded and viewed scores, but it just was not in the cards.  Perhaps a later version or the upgrade packs will have these type of features.  For now, I am just glad the App performs well and is simple to use.

Today was the last day of the challenge.  Since I submitted the App yesterday, today was mainly clean up.  I added any known bugs, tasks, and future design goals into my issue database program (You Track).  I also updated my design notes and generally put this App away for the time being.  I imagine I will be opening it up next month or two to add some upgrade packs.  For now, I am very glad to have the App submitted.  I can finally get my weekends back and most of my evenings, which is nice too.

I imagine Rebecca and I will continue to blog on the company, since we both find it kind of cathartic to document the challenges and other work we perform.  Since this was our first blog, it was fun to jump-start the process using the 30 day challenge.  It turns out we kind of like blogging too.

Would I do this again?  Maybe.  It makes for a very busy month, but it also really feeds the Geek part of me that gets to do so much coding in a compressed timeframe.  I also admit the thought of cranking out Apps every 30 days would be an exciting boost to the Zenerdgy App portfolio.  For now, it is just comforting to know that we can put out an good App this fast.  It will probably help for future project planning.

For those people who actually followed this blog, thank you for your time and attention.  I hope it was at least mildly entertaining.  I imagine that I will poll my friends and family to see what they like or disliked about the blog.   I am sure we can improve on the Musings.

Tuesday, October 29, 2013

I Clomp?

For the record, I do clomp into a room.   Its not intentional, but from listening to my kids, it must be genetic.  They get it from me.
Oct 29 and I have submitted the App.  I am pretty excited about it, but as usual, wish I could have done a better job.  Better job?  Ask any developer and they will probably tell you about how they could have just added this or that, or if they had just a bit more time...  At these times, its best to just nod your head and say, "Thats nice."  Developers and their additional features/fixes are a Mobius Strip of intentions, but can drive you mad if you follow them all.
I am feeling pretty confident that this App will get accepted, but you never know for sure.  I usually introduce something new with each project.  It is one of the ways I learn and grow as a developer in that platform.

-- Geek Side Note -- 

I have to qualify 'platform'.  Each language or environment you develop in has its own advantages, quirks, and limitations.  Developers learn to adapt to these platforms over time.  Some developers may adapt faster than others and some may remember all the layers of the platform better than others.  I am neither of these groups, but I do enjoy learning and progressing in a platform.  Code is fun.

Tomorrow is a going to be a clean up day.  Get the project ready to sit on the shelf for a month or so.  (I hope.)  Prepare for Halloween and plan the next phase of Zenerdgy.

Rebecca: New Year Resolutions

Last night, I was all nice and cozy, under the covers, in the bed.  I had the reading lamp positioned just perfectly.  I only have 50 more pages in my mystery novel…the killer is about to be revealed.

Ben clomps into the room and announces that he will submit the scoring app this week.  I try to look interested, and I murmur, "That's great honey.  I am so proud of you."  Back to reading.  Ben is not finished.  He tells me about the few remaining tweaks and the testing plan.  Again, "Great honey.  Sounds like you beat the 30 day challenge."  Back to reading.  Ben is not finished.  He starts, "I think…"

He completes this sentence with "…you should make a New Year Resolution."  WHOA!  What???!!!  People are horrible at keeping the resolutions that they make for themselves.  Most have given up the grand commitment by January 2nd.  I cannot even imagine the success rate of a resolution created by someone else, even if it is your life partner.

Ben does not miss a beat for declaring my 2014 resolution.  He states that I should resolve to spend more time on the marketing of Zenerdgy.  He has fulfilled his commitments on designing, programming, and submitting the apps.  The apps will not make money if I do not get busy on the marketing.

I am not sure what I said out loud, but in my head: "Get in line, bud.  Everybody wants their pound of flesh - my JOB; my children; our family; you, as my husband; and now you, as my co-worker.  GRRRR."

After some time to think (and calm down), Ben, my business partner, is right.  I do need to fulfill my marketing commitments to Zenerdgy.  We have a business plan with tasks, person responsible, and due date.  Ben has been great about staying on track and following the plan.  It has been fun and amazing to watch Ben build an app in 30 days.  On the my side, there are a lot of missing checks.  To give Zenerdgy any chance for success, I will need to increase my efforts.  In my very full schedule, I just don't know how or when.

Ben, my husband, just needs to let me finish my mystery!

Monday, October 28, 2013

Almost There

I know.  I skipped a day yesterday.  The Boss is upset, deadlines are not being met, dogs and cats are lying down with each other, its bad.  Well, maybe not that bad.  I did get back to the project today and have cleaned up an issue with the zooming of the score pad.  Last night while playing a family game, we noticed that the zoom was not filling the screen in all cases.  That was one of today's fixes.
Another issue requested by my users was for the "+/-" input screen to keep track of the last type of entry.  Since most games are just adding or subtracting scores, it is nice to have the app auto-remember the last type used.  Again, it would have been useful while we played last night.  Fixed today.

I created the app submission with iTunes Connect, with all the required descriptions, App icons, and screen shots.  I also built a prototype support page for the app, which is also needed for submission.  Since I have a whole 2 days left, I am planning on submitting the app tomorrow.  I want to run through both the iPhone and iPad versions one more time and see if there are any other 'gotchas' that I missed.
I prefer 'Morning Guy's' better for performing this testing, as 'Evening Guy' seems tired and possibly unreliable today.

Saturday, October 26, 2013

I Little Pinch Will Do Ya

Well that was easy.  I added a total of about 6 lines to the scoring screen and now it is supporting 'pinch' zooming in/out.   Of course, I experimented with a few different approaches before I hit on this solution, but am pleased with the end result.  It didn't take too long, which is good for a Saturday goal.  My other Saturday goal to rake up the leaves in the yard.  This took up a few hours of the day, but gets that off my plate until more leaves fall… Hey!  This chore is going to be around for a few more weeks!

I should note that even after I submit the App, the work on the App is not done.  I try to catch up on my design notes, comment the code better, log future upgrades and bugs in the system, and get everything looking tidy.  This help me to put the App on the 'shelf' while I switch over to working on another App creation or upgrade.  If I do my tidying job right, it will be much easier to pull of the shelf later and get right back to working on it.  I have set aside a few leisurely days for this effort before the month ends.

Friday, October 25, 2013

Rebecca: Not much left over

Because of my corporate gig, I had to leave the house before 5:30am for the past two mornings.  Since I need more than 30 minutes to put myself together, I had some early alarms.  I am so glad it is Friday...

BUT Ben has needs.  Ben wants to submit his scoring app by Sunday, and he needs me to review his recent design changes and the app description.  Before he hits the "send" button, he likes me to generally review the app and stamp my "approval".

With my longs days at work, Ben has picked up the slack at home. He is ready to get this app submitted,  and I know he is trying hard not to put extra pressure on me.  Although I am ready for a glass of wine and brainless TV, I will put some time and thought into the app key words, description, and help pages.  While the tank is almost empty, there is enough to get this baby home.

Thats Not Where I Left My Font!

    Nothing Earth-shaking was done today.  I did some more clean up of the code and bug fixes.  I added the 'splash' screens on App startup for all the different device resolutions.  I also updated the Text color and sizes to be saved between sessions.  This means the last text size and color you were using will still be chosen when you come back to the app.  So, "Yes, this is where you left your font…"  Now the app pretty much goes right back to where you were when you left it.  Worse case, the previous game will be available in the History tab with all the latest scores and changes.

  I also added some smaller updates like showing the App version in the About screen and using a layered image approach to build the Scoring type icons and images.  The means I merge a scoring type image with transparent sections on top of a background page image.  This is done on the fly and saves me a lot of preconfigured icon image creation.

    I merged all the changes back into the 'trunk' and then promptly made another branch for a 'pinch to zoom' experiment I want to try.  I would like to give the user the ability to get a overview of the scoring pad by pinching or stretching the screen.  If I can get it work without messing with the existing score layout, then it will be a nice addition.  If not, the App can live without it for first release.  I am giving myself until Sunday to get this branch working.

    Sunday is also the day for submitting the App to iTunes Connect.  Hopefully, I will have all the descriptions and help page information ironed out by them.  Actually, that is Sunday Guy's problem, because tonight, Friday Guy is going to enjoy a beer and a movie.

Thursday, October 24, 2013

Collections and Selections

    Today was not an exciting one, but a few bugs and layout quirks were worked out on the App.  I was able to clean up the various Scoring Type and Text Color selections.  Both of these options use Collection Views, which are a fine way of showing a bunch of boxes in a flow layout.  It handles resizing and keeps a pretty good layout look.  Kind of like tables, but instead of just vertical item growth, it goes horizontal too.  They are pretty easy to create, but I still managed to kill a lot of time trying to get the selection of a box to show correctly.  I already had them working, you could select items and they did their actions, but I wanted a simple highlight box around the box to show it was selected.  Three hours later, I finally stumbled across the correct code combination that worked with my layout and storyboards.  Pretty silly and a grand waste of time for such a small item, but I did need the knowledge and the screens look better.  Another lesson learned.
   So the App is in good shape.  I have to work up a splash screen and possibly some other feature, but I think it is ready for the family to bang on it.   My revised schedule is a release on Sunday, Oct 27. This is 3 days early for the 30 day project, but the submission process could have a few snarls.  Better early in this case.  I hope.

Wednesday, October 23, 2013

Setting Pretty

    Well, it was a good day.  I hit all my daily goals early.  Now the score text (font) colors are customizable from the Settings screen.  Along with the different font sizes, it adds a bit of polish to the App.  The fact that I got some more practice using the Collection View again is just a plus.   I also added 4 more 'scoring types'.  These are working well, but I think I could do some small re-design to make them more modular.
    What else?  Oh yeah, I submitted the keywords, App description, Help and Information/About Screen documents to the Marketing Dept.   I realize that I am lucky to have that option.  Rebecca is very good at polishing up my ramblings into a coherent description of the product.  I only hope there is enough time for her to give it a good look before the weekend.  
  So I still feel very much on schedule.  I will be doing mostly bug fixes tomorrow, along with an automated save of the last users Font size/color and current score screen.  In fact, I need to 'freeze dry' the app in any situation, so that the user returns to the exact place they were when the App exited.   Thanks to the latest update to Xcode 5 this is much easier to do, buy still requires some study time and experimenting.   (Somewhere in my brain a little voice is saying, "Soon time will be all gone…")
    I think the weekend will be spent bugging the family with the 'finished' version and getting feedback.  Some of the info will be used to fix last minute bugs or quirks, others will be stuffed into my issues database for a later version or update.

-- Side Geekier Note --

    I track all my projects using You Track, it works on any system with Java, can run local or remote, and has pretty good screens for managing not only bugs, but the project itself in a Scrum/Agile format.   The application available from Jet Brain, which makes one of the best Java IDEs available, IntelliJ IDEA.  I know a lot of developers are pretty religious about the IDE, or plain editor, that they use.  I am too.  In my Java days, I evolved through quite a few development environments from "vi" to IntelliJ.  It was hands down my favorite for the last few years.  Before that, it was Eclipse for a long time.  
    I can't lie, the best part of being a developer is all the shiny digital toys we get to play with in our careers.   Sometimes, we even build our own toys too.  There is a dark side to all this also.  We normally crave the latest toys and will struggle to use the 'old stuff' when that is the proper tool for a certain client.  Sometimes you can get around this by buying your own modern toys and making it work anyway, sometimes not.  With that in mind, it is nice that Apple updates Xcode every year.  It is a shame how hard it is to get into WWDC anymore, but there developer videos are excellent, if you have the time.  

Tuesday, October 22, 2013

Check out the size of my Font!

    I put together the new About/Info and Settings pages today for both device types.  Although I was leaning towards a paging type navigation, I ended up 'punting' and using Ye Old Table navigation.  It's expandable, easier to create in storyboards, and handles both Portrait and Landscape orientations.   I am a wimp, but this wimp is short on time.
    So far, the entire app handles either orientation very well.   The new Settings page allows the user to select font size or color scheme.  I have the font sizes working, but need to test it out more thoroughly to make sure the drawings are all still readable.  I will do most of this testing tonight and tomorrow.
Also on the schedule for tomorrow is new color schemes.  I need to cobble together at least 4 good readable color schemes with background images, build icons for selecting them, and implement the new functionality.   Should be fun.
    I also started the keyword listing and App description for later submittal.  Kind of light so far, but I will run it by the Sales Dept. for extra content.  I also need to submit the new Help and Info wording for review.  Hopefully, Rebecca has time for the review.  Otherwise, well... lets just say I can be a little to geeky in my descriptions.

Monday, October 21, 2013

Rebecca: Follow-up on commitments

Last week, I committed to answering some basic questions about Family Bank.  BTW, I apologize for the confusion on apps.  Ben is working on a scoring app while I think about the marketing of Family Bank (I really need to get beyond thinking and into the doing).

Regarding Family Bank, the price is really reasonable ($0.99), and the target audience is parents with children over the age of 5ish.  At the core, Family Bank is an app that allows the parent to be the bank.  It tries to teach some basic concepts about financial responsibility.  There are a lot of nuances to this, and I have decided that we need to update the description pages.  When I re-read them, I realized that Ben wrote them from a developer perspective.  For example, "user configuration allows banker..."  This is not a critique of Ben, but my learning that marketing is about "speaking the language of the customer." This is not a given.  I find it difficult to harness the power of words to describe the many uses of Family Bank and to communicate in the concise, compelling language demanded by our super overloaded lives.  I will probably write some future blogs about how I use this app.  Marketing suggestions and ideas are welcome.

In answer to "Does the app fulfill a need?"  Family Bank is the first app that Ben wrote, and he wrote it for me.  Being married to the Lead Developer does have some advantages.  For allowances, I had 3 envelopes for each child.  The envelopes were marked Savings, Fun, and Charity.  When my kids got allowance, they had to put a set amount into Savings and Charity.  The Fun envelope was their money to spend on do-dads.  There were many Saturdays (wee ones' payday) that I was scrambling for dollar bills to meet payroll.  When Ben started the Zenerdgy venture, I, acting as CEO, demanded an app to replace all the allowance envelopes and to free me from the endless quest for dollar bills.  So for me, this app does solve a problem.  How do I translate that into a CONCISE, compelling marketing message?

Day 21 of 31

First of all, thank goodness that there are 31 days in October.  I would have hated to try this on a short month like 28 days of February, non-leap year of course.  Since I committed to the App being finished in 30 days, technically the 31st day does not count.  In spite of this, I am happy for the perception of an extra day.

So, the App now has a tab system set up and I began to add in the new Info Tab, where the general application information, help, and contact data will display.  It will be a paging type navigation similar to how I implemented Help in Letter Rain.  In the future, this will also be the area where the possible upgrade packs will be accessed.   I will need to fill in the Info/About pages tomorrow along with the scrolling side to side navigation.  Fun stuff.

I am still hoping to submit the final version of the App on Friday.  In order to do this, I think the week will break down as follows:
Tuesday - Get the Info pages done.
Wednesday - add some extra feature design to support custom font and color options.  This will be needed in the future for upgrade packs.
Thursday - More testing and an additional scoring Type added.
Friday - Fill out the submittal form in iTunes Connect, and submit.

Since this is the 25th, I have 5 days of grace to deal with any additional issues I run across.  Given that this week is pretty aggressive, I figure I will eat into that buffer a bit...

Sunday, October 20, 2013

Weekend Warrior

Ok, I took a day off from the project.  Other than discussing the design of the 'Tab' navigation idea, nothing really got done yesterday, including the blog post.  As you can see from the picture, it was not much explanation.  Rebecca pretty much said, "That looks nice".

I wanted to implement this new navigation today, but have spent the time with the family or playing guitar instead.  I might tinker with the product tonight, but I am more inclined to tackle it tomorrow.  I figure that if I can get the App showing 4 different scoring styles along with Info/Help by Friday, it will be ready for submission to Apple.

Family Side Note

We played a little Magic the Gathering with the family today.  Rebecca suggested that we use the new App for scoring.  It worked like a charm.  I also noticed some good enhancements we could add, like larger fonts, coloring, and some more ability to re-use a game setup.  Good items for later enhancements.

Friday, October 18, 2013

I Go Out on a Branch

Now that the App is performing the basic functions correctly, I am moving on to adding on more features and the other necessary screens, like Info/Help/About.  There is also more bugs to work on and additional unit tests to verify the program keeps acting correctly.  Not the glamorous part of the application, but it can be satisfying to see all those green lights of a successful suite of test cases.
Since it was Friday, I also spent some time on research and education.   Talk to any software person, and they will usually be learning about a new technology at the same time they are lamenting how far behind they are on other technology.  Software and computers just continues to evolve.  So must the developers library of tools.  Hence, you have to set time aside for study.

Today, it was watching the the latest World Wide Developer Conference (WWDC) 2013 video on source control management.   The ability to freeze any file or set of files in a certain state is very useful.  When working with a team, it is the primary means of sharing and distributing code to others.   It also gives you the confidence to try something new out without jeopardizing the code that works.  Worse case is, you can go back to your previous version of the code.  Best case is, you added the new features and merge them back into your code successfully.

After my study session, I explored the new source control features of XCode 5, and 'branched' the stable version of the code.  I will be working on the branch for the new features and merge them back into the 'trunk' periodically.

-- Geek Side Note --

This entire post is too technical.  
It is funny that if you are a computer savvy person, you usually get asked questions about technology by your family and friends.  Kind of the default tech support person.  It is the same for other career fields, but I really don't know if the cable installer gets hit up at every party for advice.  Then again, maybe he does.  Lord knows, I could use some advice to work the system and bring down by cable bill.  I think the guys down the street works for the cable company.  Hmmm...

Thursday, October 17, 2013

Stage 3: Testing and Refinement

    Well, the app is performing pretty well now.  The problem I had last night really was a silly spacing issue.  Another case of using an absolute value as a place holder for me to view the design. Today I revamped the score drawing routines to be a little less judgmental about the size of the device.  Ok, I admit it, I am using percentages to handle height and width.   It also helps when you rotate the devices.

    I believe I am officially to the 3rd stage of development, Testing and Refinement.   (Stages 1 & 2 were the iPhone and iPad devices)  The app now works well with both devices, scores games like a champ in two different styles, and saves and retrieves old games.  I have started to deploy the app onto the family for testing and feedback.  Now I will concentrate on cleaning up the cosmetic stuff and possibly adding some new scoring styles.  With any luck I will have a production ready product next Friday.    There is still a lot of work to do, but I am optimistic.

Rebecca: I am the IT master

When writing my post on Tuesday, I had a few questions about hyperlinking.  While teaching me how to hyperlink, he also advised that I had forgotten to title my post.  I smartly replied that I had typed the title in the title box.  He was completely unaware of the the title box.  What???  I guess he had been highlighting and editing the first part of his blogs for titles.  I had noticed that his titles were just the first line of his blogs.  I assumed he wanted it that way.  No, he never saw the title box.   He admitted he wondered how I figured out on my own how to make such nice title for my post.  I didn't; it is a feature of the program.
 The title box is at the top of the blog page.  It is so obvious to me because I need it.  If it was not there, I would skip titling my post.  Since Ben had a way to hack a title, he did not look for something as convenient as a title box.

I guess my IT ineptness and Ben's IT expertise complement each other.  In app design and development, I provide the "everyday" user perspective.  He gets caught up in the programming and software language, and he forgets the end user just wants to push a button and have magic happen.  At times, I make recommendations that seem easy or basic, but the programming gets way more complicated for very little added functionality.  We have to balance each other out...user friendly apps that have robust programming.  Like all companies, however, we still blame each other for application failures:  IT blames sales, marketing, customer service, etc. for not knowing what they really want or asking a program to do too much.  Sales, marketing, customer service, etc. just want the program to work...right now, never break, and by the way, can you add...

Wednesday, October 16, 2013

I Broke It.

It was a productive day, for a programmer.  This means I was able to fine tune and add some new functionality to the App.  Unfortunately, this was also the reason it is currently broke.   I wanted to support different ways of showing a players recorded scores.  In this case, a "Tally" system and a "Cross-Out" version.  I changed some of the scoring display logic and now the scores for the game are not displaying correctly anymore.  Kind of the basic function of this App, so thats a problem.  Silly issue, but it was where I was at when dinner started.  I just never got back to the project until now.  Once I get this fixed, the App will support more ways of displaying and handling game scoring.

-- Geek Side Note --

I also started to fill out the pages for distribution of the App using the iTunes Connect web site.  It never hurts to start getting this information gathered, like keywords (only a 100 characters), description of your App that will make the whole world crave your App (try to keep it to a paragraph), and pictures that describe the App (5 of them will be fine.)  Every time I do this process, there seem to be a few more steps or lessons to learn.   That said, the development system for building and distributing App has really improved over the years.  Apple has put in a lot of work to create this ecosystem and it shows.  

Tuesday, October 15, 2013

I Learn about Titles (again)

You might have noticed the Blog overview looks a lot better with Titles for each post.  Chalk this up to my Geek nature.  This morning I happened to look over Rebecca's shoulder as she typed on her blog and I noticed the BIG OLD TITLE TEXT BOX AT THE TOP OF THE PAGE.  A shame it did not scream at me 15 days ago...  All this time, I thought She was changing the first line of the blog to Header font, Blue, etc...   No, she was just using her brain and eyes.  Lesson learned.  Ask for help if you see her doing something your blog entries do not.
 No wonder it was always such a pain to get to look right...

Today was the refinement of the back end and some code clean up.  The backend objects were intentionally duplicated in the App until today.  I sometimes need to create a layer between the 'database' backend and the actual functions the user cares about.  Now the App deals directly with the database and makes the code simpler.

Tomorrow is more work on the History screen to allow the user to delete past games.  The only question is will the future user say, "Cool!" or "WTF Are all these games auto-saved?"

- Geek Side Note - 

I flat out refactored my proxy data objects out of the project, replacing them with actual NSManagedObjects the represent.  Save data after each score entry or change, and voila!  Auto-saved feature.   I also managed to get hung up

Rebecca: McDonald's

Since you know I have children, you probably think this blog is about McDonald's great tasting burgers.  This international company has served over 1 billion burgers, and they continue to sell millions and millions of burgers every year.  Kids all over the U.S. may think it is the best food ever, but most of us will agree that McDonald's is the #1 fast food company because of marketing.

As the blog clearly shows, Ben is the technical guru. Less obvious, I handle the marketing.  Because our company is young and lacks a following of 3 years old demanding meals with toys, I need to figure out this marketing puzzle...if we want to realize a profit. I have few clues and no experience about where to start.  What is our product? Who is our target audience? What price will people pay?  Does it solve a need?  "An app, everyone, millions, sure" are the answers I like for the above questions.  If it were that easy, Ben and I would be drinking cocktails in the Caribbean.

Where to start?  At tonight's cheer practice, I commit to working on Zenerdgy marketing, instead of reading a "whodunit" novel (my favorite down-time activity).  I am going to answer product, audience, and need for Family Bank, an app available in the Apple store.  I am also going to find a babysitter so that both Ben and I may attend iFest.  Ben will attend to "geek out", and I will see how other people are presenting their companies and products.  I let you know if I am able to resist the "whodunit."

Monday, October 14, 2013

It works on an iPad!

Yay!  Pre-season NBA is on TV tonight!  It  reminds me of the other reason I need to complete this App by Halloween.  Once the NBA season begins, the evening coding sessions start to dry up.   I am sure it is just a coincidence...

Thanks to some re-use of the iPhone backend components, I was able to get a working version on the iPad.  I even added a custom number keyboard for input of numbers, to reduce the confusion to the user.  My friends have reminded me that it will have to compatible from everyone, from busy people    to your buddies in the the bar.  I hate overriding the standard SDK keyboards, but for now, it is looking and working very well.  

So, with the iPad version working, I am now closer to the original schedule.  I can do some more polishing on the interface and the History screen in the next two days.  I am hoping I can get both versions stable enough for family deployment/testing this week.  

 I am still debating whether I will use Test Flight for testing this time around.  It is handy to have your friends test it out, but not everyone has time to test within a 2 week time limit.   Lucky for me, this App is not that complicated with basically 6 pages.  Even if I had more scoring versions to the App, I should be able to keep the page number pretty low.  You know the saying, Less code, Less Bugs.  or something like that...

- Geek Side Note -

The iPad numeric keyboard is based on some nice work done by Stuart J. Moore on his blog.  It is always nice when other developers share tips and tricks.  It may not be exactly what you are looking for, but a lot can be learned regardless.   Of course, the ability to confidently show off your code should also be credited.  It doesn't hurt when they do good artwork also.  

Sunday, October 13, 2013

Core Data

Well the History is now using a 'FetchedResultsViewController', which is just a standard class that can auto populate your tables from the database. They are a pain to set up initially, but once they are wired up to the table, it makes your life a little easier.  I am also seeing my saved games and am able to continue the games from the history selections.   Glad that is out of the way.

Monday will be all about the iPad version and I am hoping it will be quick to wire up.   Once that version is done, I can start demoing it to the family and anyone else foolish enough to ask what I am working on.  I like it when their eyes roll back into their heads.  sigh.

The weekend is done.  I am going to catch some sleep and prepare for another busy week.  

Rebecca: What did I do before kids?

Ben nicely reminded me that I had not posted for several days.  Not so nicely, I responded when am I supposed to do this?  We had a typical week in the Bruhl house.  Between work and the kids' activities, there is not much down time.  To keep my remaining sanity and to trim a few lbs, I try to exercise a few days/week. I am also a believer that SLEEP is the foundation for good health, mental and physical.  The average human needs 8 hours of sleep, and American are chronically sleep deprived.  Ben says that I have the sleep deprivation problem kicked.  Trust me, I need my "beauty sleep."  My 24 hours are quickly gone.

When I think of how full our lives have become since having children, I cannot help but wonder what did we do with all our time before kids.  Ben and I have always worked hard, and we have careers that are not based on a conventional 40 hour work week.  But we certainly did not work the same number of hours as we spend dedicated to the kiddos.  When I talk to other parents, we all laugh about the time we "wasted" before kids.

Instead of wasting more time regretting time lost,  I am glad that Ben has committed to a new business venture and to this crazy 30 day experiment.  Opportunity and necessity intersected to compel Ben to build his own apps.  As I get older, I have a tendency to regret not doing more in my youth.  Ben is living reminder that NOW is the time for ...whatever you been wanting to do.  "The Sistine Chapel was not built in a day."  I do not need to revolutionize the world or even my community in a day.  I just need to lay the first the next blog, identify some websites with marketing advice, listen to app marketing podcasts, attend iFest, or just listen to Ben's next big idea.

Saturday, October 12, 2013

S-A-T-U-R-D-A-Y Night! S-A-T-U-R-D-A-Y Night!

Gratuitous Bay City Rollers reference, yet the chorus runs thru my head more than I thought it would when I first heard the song.  It is catchy, I have to confess.  So another Saturday and another day running with the family and sneaking off to code a bit.  When I thought of 30 days, I was excited about how cool a month's worth of work would look like.  I conveniently forgot that I also like weekends to break up my month of work.  There is another lesson to learn here, I am sure of it.

The iPhone side of things are looking good. The navigation system from menu, to scoring, to input, and history is working pretty well.  I have run a few practice scenarios thru the App and it works as I envisioned.  I will later add some scoring variations to the screens.  This might force some re-design, but you can't plan for everything with a limited time frame.  The games are not yet using Core Data to save a game, but it will have to wait until tomorrow.  
I started to design the iPad version on simple paper and pencil.  I like to use an engineering or graph style paper simply because my straight lines are not so straight.   First, you sketch out a few looks in both Portrait and Landscape modes.  Then you roughly put together each scene or screen as you expect the user would see.  This sounds weird, you have to picture how you would use the App. 

 I imagine a cartoonist would get the concept right away for some reason..  

You have to have some vision of what you would like to see in an App.  You use this vision or scenario to build the screen prototypes using code.  The vision is also kind of necessary in order to invest the time to build it.  Simply put, unless you are getting paid to implement someone else's vision, only you will take time to implement your own vision. This hopefully gives you the drive to complete it.   Sometimes your vision is just too much work.
I try to remember that in the end, even when you have the product ready, it could use some improvements.  Ask any of my customers or managers,  "Trust me, it needs improvement..."

Minor Music Side note

Tonights music was mostly 80's rock.  I love rocking out and coding, but within limits.   Let me explain.  If it is early in the morning, or really any time, Classical is my preferred programing music.   It is nice to hear in the background and there is no danger of singing along with the chorus.   That said, if you are are looking for some extra energy at night, some Ronnie James Dio might be just the ticket. Hey,  I like 80's rock.   A lot.  Of course, this era is right in my 'older programmer' wheelhouse.   So be it.   Everyone has their favorite.  

Friday, October 11, 2013

Tae Kwon Do and Another Test

    Tonight the family got to watch my son test for his Orange-Purple belt in TKD.  Pretty exciting stuff and I am a proud Papa.  He did great.  Now he has a friend over it is sounding like movie night.  Fun times and the kids earned it.  The whole family has been really working hard this week.   
    So what does this have to do with an App in 30 Days?  (AITD?  ATD?)  Not much, other than I don't think I will put in any more work tonight.  I did meet up with Jaime again and got some good feedback on the App.  Since I knew we were meeting, I had a pretty good prototype of the simple tabular scoring screen ready to show off.  I can honestly say you could play a game with 2-10 of your friends and keep track of everyone's score with this version.   It still has its warts and I need to add the ability to save and retrieve existing games.  The screens are working for all this, I just need to save the data.  
I am debating whether I will finish these items or move on to the iPad version tomorrow.  I think I will add the save function and then record the bugs for later.  I would like to think that the iPad version will be quicker to build.  The game functions like drawing the board, scoring, etc.. are already built and mostly in code.  Slap together some iPad screens of similar design and wire them up.  Sounds easy, huh?  We shall see...

- Geek Side Note -

I like XCode's Interface Builder, but sometimes you really seem to fight more with the tool than code.  It is the same with every Integrated Development Environment (IDE) I have ever coded with really.  The tools are great for putting together the right bits, but if you don't know how to tweak the bits using the IDE, it can be painful.  Sometimes the IDE even can restrict you due to some rules it needs to follow to build your program correctly.  Today I played with the relatively new Auto-Layout preview tools in Interface Builder.  It might just be me, but it seems that IB and UIScrollWindows could be friendlier.  So far, I have found it easier to use code to handle the scroll windows.  

Anyway, now the essential screens all work in both orientations on the iPhone.  I was feeling pretty good about it, until both Rebecca and Jaime managed to rearrange my screen elements in some weird way in a 4 hour time span.  Back to the drawing board.  Then Jaime had to make the comment about the smaller screen size of the iPhone 3.5 inch...   Ugh. 

Thursday, October 10, 2013

Working Prototype

    Well we have scoring!  The scoring page for tables is now working correctly, except for Scrolling behavior as the table grows.  I also need to try out some side scrolling (paging) to allow players to be viewed without squishing the columns too much.  The page could use a bit more TLC to smooth out the rough elements.  Rebecca managed to rotate the app at some point and the screen did not update itself correctly.  Of course, I couldn't duplicate it for a while.  Those edge conditions can be sharp, so watch yourself.
   I also would like to do some refactoring on the code to allow me to add other scoring screen types that use similar functionality.  Code re-use is your friend.  Unfortunately, I have to move on to the iPad version soon.  Is it already October the 10th?  I mean, I have some of the iPad design finished in my head, but there are sure to be quirks there too.  

-- Mental Side Note -- 

What possessed me to want to attempt this in 30 days?   Deadlines like this are one of the things I thought were in my past.  Figures that it was after a few beers,  it was 'Evening Guy' who came up with the idea.  As usual, 'Morning Guy' has to pick up the pieces later on.   

Wednesday, October 9, 2013

Missed Deadlines

It was another good day of coding this morning, but it also included some redesign and re-direction in building the first two Scoring screens.  I was originally drawing them with Sprite Kit, but using the regular old text boxes and labels is working fine too.  I think it will help me in the long run with the eventual scrolling behavior.  (Scroll down as score columns grow, scroll right for more players, etc..)  It cost me a morning, but I only have a rough prototype at this point.  Lucky for me, the app won't be that complicated.  
-- Geek Side Note -- Some other developers or students would probably knock out this program in a caffeine fueled weekend, but I find even the simple concepts take time to fully design and implement.  Then adjust due to feedback.  It is a given that the longer you use a language, the more proficient you are with it.  I am not speaking fluent Objective C yet, but I am trying real hard...  (Sorry Samual L. Jackson's voice sounded good there...)

Rough prototype.  After trying and then discarding a tab bar system, I have the app showing the default T-shaped scoring table with the player names above.  Adjust for extra players, scrolling both ways, and and easy score input.  I tried to keep the option open for using the Sprite Kit scene for other types of scoring systems, whatever that may be.  For now, the T-shaped scoring variations will have to do, I am running short on time.
I love showing off the early prototypes to family and friends.  Unfortunately, you usually find out that you could have used an extra pair of eyes on certain features.   C'est la vie.  Just run back to the storyboard and try out different version, but it will cost time.  In this case, I think I lost a day.  No worries the project is looking good overall, and I should have this first version looking decent by Friday.

-- Geek Side Note 2 -   I also sometimes try out ideas on another App called "App Cooker".  It really is kind of Visio on steroids on my iPad, but also knows iOS shapes, etc...  One of the nice features is that you can 'play' your design for another person to see how the navigation performs.  Looks like a mock up app.  It is really handy for me when I am away from the computer, but want to design.  You still pretty much have to create the entire app over again for real in XCode, but it can scratch that itch to show off an idea.

Rebecca: Meetings Redefined

After Ben geeked out with his friend Jaime over lunch, I wanted a de-brief.  Jaime is well-versed in social media, and he has a basic knowledge of app marketing.  Of course, Ben needed to walk the dog before we went our separate ways to transport kids to various activities.  Necessity led us to the great idea of de-briefing while we walked the dog.

Ben had many things to share about "geeky" stuff.  Jaime had recommendations on design. They also discussed pros/cons of Sprite (not the soda), the new iOS platform, and app development.  What I really wanted to know:  How does Jaime know about conferences and meetings?  How does he use Twitter? Where does he learn about marketing?  Ben gave me the same blank stare that I gave him when he explained why/why not Sprite may be better for a given task.  But Ben got an unexpected interruption in our impromptu meeting...

It started to rain, and it started to HAIL.   We were motivated to share the important information and adjourn this meeting.  Two minutes later, I was speed walking home.  Lovely...shelter.  Ben was left with meeting clean-up (the dog had done her thing).

Even though Ben and I share an office and more, we still need to take dedicated time to exchange information and ideas.  In the hustle and bustle of family life, we do not always communicate as well as we should for Zenerdgy.  We also need to reach out and tap into the wealth of knowledge and experience of our friends and colleagues.  I am anxious to tap into Jaime's brain.  He knows so much about social media and the related tools.  Next "geek" out, I am going...maybe, just dessert.  I am not sure I can handle 3+ hours of tech talk.  Actually, I know I can't.

Disclaimer:  I was planning to write this blog last night.  When I got home from cheer practice (almost 8pm), I decided to have a glass of wine.  My motivation to the write blog was negatively impacted by my delicious glass of wine...okay, I admit it was 2 glasses of wine.

Tuesday, October 8, 2013

Text Fields are Painful

Today I met my friend Jaime for lunch and a beer at World of Beer.  Jaime is the author of DevWithTheHair and currently has a week of free time before he starts his new job.  I always enjoy 'geeking out' with other developers and designers about code, technology and the world in general.  It is one of those environments that I can just ramble on and not have the listener roll their eyes up into the back of their head.  It was very productive as we discussed my latest project,  his upcoming job, and how we could run parts of the world so much better with a beer in hand.
By the way, if by chance you are reading this blog and not Jaime's you are missing out.  He discovers and comments on the technical industry in a much more coherent manner than my 'train of thought' drivel...

-- Minor Side Note  --

How is it possible for me to have a 2 hour conversation with my friend and still give my wife a blank stare as she asks the normal question that anyone else would ask?  Questions like, "What is the new products he will be working on?"  or "How is the family?"  You would think that we just sat silently at the bar for the whole time from the amount of information Rebecca wanted from the meeting.
Hey, I got my geek time.  What else is there?

Anyway, this morning I cranked out the first Simple Table style scoring screen using the the SKScene node for displaying the lines, text and various scoring elements.  Since I wanted to show how it worked, I also threw together a screen to show how a user could input a scoring change or a user name.  This is when I ran into another problem with using Sprite Kit for the navigation.

-- Warning, Technical Talk ahead --
 I had to get a little creative to allow me to navigate to the next ViewController in my storyboard by using the parent ViewController to allow the Segue to be called.  SKScene are really laid on top of the ViewController or replace it altogether.  Not sure yet, but either way, I had to query the Scene's  RootViewController to eventually get to the proper ViewController for the Segue call.  It was a hack, but it worked for now.  I will need to find a more elegant solution for this brittle piece of code. 
The target data input ViewController used a delegate to allow the navigation back to the Scoring screen after the user adds the new value.   It works, but seems a tad sluggish.   
All the Text Fields I will have to use for name, score, and other information input will need the keyboard and all those goodies.  The Sprite Kit seems like a good way to display text, but not so much for text entry.
Maybe Sprite Kit is not the right display choice, despite the node system and nifty effects.   I can always draw lines using Core Graphics or skinny UIViews.  The fade, zoom, and other effects can also be done with normal widgets.  I would have to use other ways to implement sound and special 'chalk dust' effects, but they are enhancements, not requirements.  
Much to think about.

Monday, October 7, 2013

Rebecca: No!

For my job that pays the bills, I have virtual training.  On the positive side, I attend live training virtually without leaving my home office.  Yes, I did wear slippers to the "office."  On the negative side, I am at home for the week.  For the family and the lead developer of Zenerdgy (my husband Ben), virtual training from home means that I have nothing to do.

As I stress about the fact that I am way behind on my reading and prep work for training, I am bombarded by requests about clean jeans, homework, and page design.  Should we do columns?  Should I name the template "simple" or "elimination"?   Where are my jeans with the special whatever?  Did you check my homework?  Hey mom, watch my new trick?  Urrrr!

There is only one of me, and that one is not Superwoman.  I struggle to support all the important endeavors or my wonderful children, my enterprising husband, and my demanding career.  Today, I lost the battle to the arch-enemy Perfection.  I am tired of "doing it all, all the time."  Since I know I can't do it all, all the time, I need to learn to let go and ask for a little help.  I am much better at battling for Perfection than I am at asking for help or saying "NO".  So for the rest of week, NO to any extra volunteer work, NO to working past 5:30, NO to the piles of dirty laundry.  YES to help with homework, YES to completing my training for work, YES to watching the cool new trick, YES to take-out for dinner, and YES to looking at the new design for the app in progress.  

Collection Views

    Well, I managed to get 2 of the 3 items on my list done.  
    The backend Core Data classes are now testable and even use a in-Memory database file to keep things clean.  It took longer than I thought to get this working, but I am glad to have the infrastructure firmed up.   Along the way I also added a shared Manager class to handle the different types of Scoring screens that can be used in the App.  The scoring screens themselves will be Sprite Kit 'Scenes' which present the data in different formats.  The new Manager allows me to add or alter the Scenes used by adding some code and updating my Scene detail property list.
    The second accomplishment was getting the first screen or Menu screen to show the Scoring type icons in a Collection View.  First time for me using these, but pretty similar to the Table View system.  It can use some tweaking, but I think I got this part of the application pretty modular.
The only thing I wish I can finished was one of the actual Scenes, specifically the Tabular screen.      Think of a blackboard and how you would write out simple arithmetic problems in 3rd grade.  That is my goal.  Yes, my goal is 3rd Grade...

- Geek Side Note - Although I have my Core Data backend running and unit testing, I elected to use the standard Property List (plist) file to hold the different Scoring Scene data.  I used this in a previous app to some success for things that don't really change a lot.  It also keeps the Core Data 'database' clear of objects used in game design.  I prefer to have the Core Data be used for the Players, Scores, Games, etc...

Tomorrow I have a lunch meeting with fellow developer, so the afternoon could be short.   Hopefully, I can get one of the scoring Scenes working so that I can demo it at lunch.  Sounds like an early morning.

Sunday, October 6, 2013

I Discover Subheadings and Take a Day

    Pretty skimpy on the work today.  As Rebecca has mentioned, we did more to enjoy the sun today than work on the App.  It was worth it.  Spending quality time with the family is one of the main perks of my career now, so I have to take advantage on a Sunny Seattle weekend in October.
    I am still tinkering with the main iPhone screen to navigate to the Score screens.  I am planning different styles of scoring depending on the game or user preference.   Tomorrow will be a busy day of catch up to my schedule.

- Geek Side Note - 

Tomorrow's tasks.  I am going to try and get the basic Core Data unit tests running, then work out the special effects for the tabular scoring screen.  I am hoping to add a chalk dust effect for new entries, but it will probably have to be a fade effect for now.  If I can get the Main page navigation working, the score screen showing basic functionality, and the Core Data unit tests, it will be a good day.

Thanks to Rebecca's post, I discovered that a subheading makes the post look nicer.

Rebecca - A Perfect Weekend

After a week long work trip, I awoke tired on Friday, but I still had a baby shower to host.  I spent Friday preparing the food and activities for the baby shower, and a friend and I hosted a fun event on Friday evening.  It really was nice to connect with some old friends, and I loved celebrating the new life still growing inside one of my dear friends.

Saturday was a sunny day in the Pacific Northwest.  The rain has started in Seattle, and I appreciated the reprieve from the rain.  Instead of watching Little League Football and my daughter cheering in a downpour, I enjoyed the warmth of a sun that will make few appearances during our grey Northwest winters.  What really made Saturday perfect - A NAP.

I was a little more productive today.  After church, the family went on a bike ride and run.  Ben and I ran while the kids rode bikes.  It was wonderful.  I got some of the laundry done, the children finished their homework, and we had a family meal of tacos - everyone's favorite.

There is always work to do.  I know Ben wanted to get more done on his app, and I know he wanted more input from me...but this was a rare sunny weekend.  Sometimes, you have to let go of the schedule.  It will still be there on Monday.  The Pacific Northwest sun becomes a rare sight in Fall and Winter.  You have to take advantage!

Saturday, October 5, 2013

iPhone Version Beta

- Initial Side Note - Today was a sunny Saturday so I worked in the yard a bit.  This is so as to not anger the Seattle Rain gods.  They are not forgiving and will drop a shower on a whim.

I did find time to work on the design of the iPhone version of the front end.  Since I cannot always be on the computer, I use a combination of tools on my iPad for design work or research.  Today I used App Cooker to work on the screen navigation design.  This is a nice product and has the ability to 'play' the scenes out, which is great for demoing an App idea to people.    I also use the popular Grafio product for some of the object design.  Grafio is like Visio but more in tune with a touch screen.

Anyway, I decided to host a Collection View for the main screen.  I will show sample images of the possible types of scoring systems the App supports.  This will allow some more options in the future and gives the screen a friendly access.   I started adding this concept to the project and hope to have a prototype working by Monday for an early demo.  We will see.

Friday, October 4, 2013


Well Rebecca and I managed to find some time to agree on a schedule.  This really is more for my benefit than hers, but she indulges me.  Like most coding or design, I try to break up the schedule into chunks and then fill in the details.  This gives me some specific deadlines and allows me the initial illusion of control.  I say illusion because sometimes the goals are too complex for the amount of time you have, other times, you finish early and can tinker with some new ideas.  Experience has given me a pretty good measure of what I can do in a certain amount of time, but I have also been burned too.  The deadline help keep the burns minor.

 So the rough schedule is:
Next Wednesday, 9 Oct, I will have a working 'prototype' of the App working on a device.  Most likely it will be the iPhone version.  This allows me to test it out on the family and get initial feedback.

The following Wednesday, 16 Oct, would be the iPad version prototype.  More family Guinea Pig time.

That leaves the last 2 weeks of the month for product refinement and submitting it.  Also finding a name.  Ugh.

- Side Note - My family is great about discussing and testing the Apps we build.  Shame about the low pay...

- Geek Side Note - I took another look at the UIKit Dynamics functionality added recently.  Very neat stuff, but I think I will continue to prototype with the Sprite Kit front end.    Also am still working on the Core Data backend started up and hopefully running in a unit test.  I really want this simple backend of data to well tested.

Thursday, October 3, 2013


  I found a useful icon generating program today.  In order to release an App, you need at least 4 good icons at different resolutions.  If you have a app that you want to work with all iPad and iPhone devices, you need about 10 icons.  This program allows you to take one good image and create all the appropriate sizes.  Useful and certainly worth the $1 price in terms of time.

Silly Side Note 

 I also got 3 dental fillings replaced today, so that took a bit out of the day.

I hope to finish the schedule for the month tomorrow, but I am pretty sure I need a working prototype by the end of this week ~ Wednesday.  Working on both devices would be a plus.  This would allow me to adjust to any feedback from my family and friends who review it.  

Wednesday, October 2, 2013

Testing the Code

Worked more on the project code today than the design.  Just tried to work out some unit tests and some underlying components in model or data layer.   I always pledge to start off with testing, then code, but it can be challenging sometimes.  I wanted to get the test harness working and some initial code tested before going any further with the code.  Its a good start.
I also played with the effects of using the Sprite Kit to draw the scores.  I like the effect of drawing the numbers on the screen with delayed fade in effect.  It seems to do the trick nicely and opens up the possibility of adding sound effects easily.  This will strictly be the visible layer of the application.  It will also be pretty modular thanks to the Node system using in Sprite Kit.  I can change around effects as I learn more.

Good stuff, but must admit I also pushed out the latest version of Family Bank.   It was a small fix related to the icon, but was bothering me.  

-- Geek Side Note -- This entire post was a Geek Side Note.

Kids and I has Little Caesars pizza.  "Don't tell Mom!"

Rebecca: Away in CA

While Ben is busy starting the GSA app and taking care of the kids in rainy Seattle, I am in sunny San Diego. It is beautiful.

When Ben asked me about this project, I said sure no problem.  My daughter's cheer coach asked if I could be the Cheer Team Mom.  I said I would love to help. Of course, my company scheduled a week long meeting for the 1st week of October. My dear friend is having a baby, and I wanted to host a baby shower.  It was originally scheduled for September. My work interfered, and it is now scheduled for Friday...when I get home from my CA business trip.  My cup overflows.

When starting something new or different or out of the comfort zone, there is always a million reasons to delay. Like most people, I have a lengthy to do list, and I am always adding to it.  Sometimes, you just have to jump in and know that everything will work out.  Everything that needs to be done will get finished.  Blog for Zenerdgy, check.  Finish Cheer basket for auction fundraiser, check.  Complete reports for meeting, check.  Order baby decorations and gift, check.  Now...what about that Zenerdgy marketing plan????

Tuesday, October 1, 2013

Designing the App

Well today I started designing the the Game Score App.  Until I can finalize on an App name, I will just refer to the project as GSA for short.  My method for creating the initial app usually involves my white board and writing down all the functions that the App should perform.  I also try to answer a few questions that can affect the design.    I usually go through a few versions of the white board scribblings.  I take a picture of the previous thoughts before erasing it and starting on another thread of thought.  This allows me to keep the picture as 'notes' that I can transcribe to my electronic notebook or to directly to code.  For example:

What is basic functionality and what is optional?  Should the product us the latest iOS features and goodies?  (Yes, Please!)  Should the product support earlier versions of iOS?   How often does the normal world upgrade the operating system on their devices?  These are some of the decisions I have to nail down this week along with a formal schedule of deliveries.  The schedule will allow Rebecca and I to see how well I am progressing on the project.

- Geek Side Note - For the previous week, I have been tinkering with the latest iOS Game building API, called Sprite Kit.  It allows you to build a game using scenes using a gathering of Nodes or building blocks strung together to perform animation, sound, and other neat effects.  Our next version of Letter Rain will be using this framework and I am considering it also for this project.  This would allow me to build screens to represent the data (players, scores, games) in different interesting ways.  TBD.

I have started a project in Xcode, the development environment used in building iOS Apps.  I also started a note/design section in my electronic notebook.  FYI, I have been using Circus Ponies excellent  Notebook software for a few years now and still find it very useful for organizing my thoughts or just capturing relevant data.

- Geek Side Note 2 - I noticed that "Words with Friends" is still having slight problems with my iPad when rotated in iOS 7.  It is nice to know that a popular App with a full development team and budget can also run into problems in their product.  For selfish reasons, it is nice to know it can happen to every developer/team.