Monday, September 14, 2015

Product Review: LoseIt! Health-o-meter

I should've seen this coming. When I decided to check out the Lose It!! app, I figured I'd be content with just weighing myself, tracking calories, and seeing what happened. I wouldn't be seduced by other offers, or other technology… especially not some tricked-out Bluetooth data sharing scale. Not me. Oh no. Oh, who am I kidding?!

Yes, I am now the proud owner of a LoseIt! Health-o-meter. Well, the proud part I might have to work on, but I most certainly now own one ;). The intrigue factor overcame the slightly creeped out factor. Yes, I admit it, the thought that my smart phone can get all sorts of information from a scale, store it, analyze it and give me advice about it just seems a bit... odd, but the "oh wow, how cool is that?!" aspect ultimately won out in the end.

So how exactly does this work? The scale uses Bluetooth to interface with a smart phone (iPhone in this case), and specifically with the LoseIt! app. Part of me considers that a little bit of a letdown, because it is a dedicated device for a dedicated app. Still, the ability to gather data, crunch it, and do something interesting with it always brings a smile to my face.

What doesn't bring a smile to my face, however, is the level of precision that I can now be provided. Prior to today, I was content to have a scale that rounded in half pounds. Now I have a scale that is accurate to a 10th of a pound. But wait, there's more! I can now also get a reading (through the electrical impedance pads) of my overall hydration levels, my body fat percentage, and my body mass index (BMI). I used to take comfort in the fact that these were nebulous numbers; they just existed in the ether someplace and, oh, they might be derived through some inconsistent formula on a web site some place or another. Now, I know what they are… in vivid, gory detail.

Yep, there it is… I can't pretend it's something else any longer (LOL!).

Now, to be frank, there's a lot of ambiguity to these numbers even as they're presented. How precise are these values, really? They may be accurate, they may be off. However, for what I am planning to do, they're a good enough heuristic (i.e. rule of thumb) to be useful. I'm not really doing anything (competitive sports, bodybuilding, etc.) where they have to be super precise. They just need to do one thing… trend downward over time

On a technical level, the set up is simple; go into the app, pair it with the health-o-meter, press a button on the underside of the scale to pair the devices, create a scale profile for yourself, step on (barefoot, of course), let it get your measurements, transfer data, and then it is there in the app, ready to be logged and sync'd with the app's other algorithms. Each day you weigh in, the pairing profile does the rest. The scale itself feels fairly sturdy. For a day-one comparison, it does the job well.

Bottom Line:

This product pairing fills me with equal parts dread and wonder. I'm weirded out by the level of detail it provides, and the fact that my phone can carry this and share it with a whole bunch of different apps. On the other hand, I'm super intrigued to see if this level of granularity and focus with the data will make me more efficient, or more aggressive, when it comes to weight loss, nutrition and exercise.

I guess you'll have to stay tuned for that latter part ;).

Friday, September 11, 2015

Book Review: Practical Web Development

Does it seem like I am starting off a lot of my posts lately with an apology? If so, it's because it feels like I've fallen off the wagon of things I should be doing (and stopped doing) because life interfered. One of those areas is the book reviews I pledged I would do more of this year. It's gotten so bad that I had to basically tell a number of publishers to hold off on titles they send to me until I can get through my back log. Don't get me started on the figurative stack of Python books I'm looking at right now (I can't say literal because they are PDF's, but trust me, there are a lot of them!). Also, as many of you well know, I do not do short reviews ;).

Still, the best way to get back on a horse is to just climb back on, so without any further ado...

At this point in time, programming for the web is a multi-faceted endeavor. There are so many choices and approaches that can be used, and technologies that can be called into action, that it is impossible to master them all. Gone are the days of basic HTML and some CGI scripts being all you’d need to deliver a web experience. Don’t get me wrong, there are still sites out there that are basically this simple, but they are outnumbered by sites that offer much greater interaction, customization and the ability to display on multiple platforms. To do that effectively, more is needed.

The challenge with most web development books (or programming books of any type, actually) is that it takes several hundred pages to cover everything needed, or the books end up being lean and abstract, with the reader having to do a lot of their own research and tinkering to create examples of their own or make the samples provided work.

"Practical Web Development" by Paul Wellins (Packt Publishing) takes a slice down the middle. It doesn’t pretend it will be able to show you everything in great detail, but it does looks to give some "practical" examples with the most common elements and some exercises to work and build on. Wellins progresses from basic HTML, CSS and JavaScript to using PHP, MySQL jQuery, AJAX, History API, XML & JSON, MongoDB, Responsive Design, Foundation framework and Node.JS. Make no mistake, that’s a lot of ground to cover in 276 pages.

So how well does Paul traverse this formidable mountain range of topics?

Part One of the book focuses on the central elements of a “stack” that allows a web site to exist in the first place, and gives an overview of the technologies that work with that web server.

Chapter 1 covers THE WORLD WIDE WEB, specifically where it’s been, where it is, and where it looks to be going. It’s a whirlwind history lesson that covers a lot of technologies that we take for granted today. For the purpose of the book, the emphasis is being placed on HTML, CSS, JavaScript and PHP, with a back end database using SQL. Therefore, up front, five “languages” need to be learned to be effective and use the book. Fortunately, the amount of each language that is needed to be learned will grow with each subsequent chapter, so you get a chance to use each of them as the book professes.

Chapter 2 focuses on the basics of HTML and the most common tags used for markup of pages. Rather than give an exhaustive run down of all the tag elements, Paul gives us the ones that are the most useful and likely to be used when developing a basic site (headings, paragraphs, links, form elements tables and divs, which are best described as self contains rectangles of HTML). Paul also makes the distinction between the structure of a document (which is done with HTML) and the styling touches, which are handled in the next chapter.

Chapter 3 covers what Paul feels are the most useful aspects of CSS, which is all about the syntax that affect the overall look and feel of your pages. The structure of the box model is central to CSS and being able to manipulate the data in a variety of boxes (often the aforementioned HTML div’s) helps to keep the style elements both contained and optimally configured. A recommendation for the use of Firebug or Development Tools in your respective browser is also recommended, as there are a lot of possibilities within CSS and ways to apply them.

Chapter 4 takes us on a tour of JAVASCRIPT with a dose of Programming 101, and builds on some of the basic building blocks of of all programming languages while focusing on the core elements that make JavaScript useful in web pages and applications, specifically as a client side programming language. Variables and variable declarations are covered, manipulation of strings and numbers, operators, control flow, functions, and objects all get a brief but focused examination. The final part of the chapter talks about using the Document Object Model (DOM) and ways to work with objects, properties methods and events. Again, it’s a high level view, but one in which you feel like you can relate to what’s being presented.

Chapter 5 introduces PHP, which is a language designed specifically for server side interactions. Again, like the previous chapters, this section focuses on what most users would need to make something work on the server using PHP, not a complete rundown of the syntax. This chapter also goes through the basics of what you need to do to check if your web host is set up to support PHP and what to do if it isn’t.

Chapter 6 adds more about PHP, specifically in conjunction to working with a MYSQL database. The chapter starts with a basic understanding of databases in general ,and then MySQL in particular. It introduces the way that databases work and how MySQL fits into the web stack. phpMyadmin is covered as well, which allows you to administer a SQL database via the php utility. It also walks the user through several commonly used database commands and fundamental queries.

Part II of Practical Web Development aims to help us break away from the model of multiple pages where a few will suffice, and to get away from static pages to those that are more interactive, dynamic and responsive to the platform it is being displayed on.

Chapter 7 covers JQUERY, which is a JavaScript library that emphasizes a small footprint. It uses CSS selector style syntax that specify DOM elements. Again, the coverage is not exhaustive, but it give enough to show the general approach to using jQuery as part of your page development and the most likely to be used aspects of the library.

Chapter 8 focuses on AJAX (Asynchronous JavaScript and XML) which is really a handful of different techniques that allow for data to be retrieved in small pieces without requiring the entire web page be reloaded. jQuery has several methods that allow for AJAX to be used. $.load and $post both allow for portions of the screen to be replaced with fresh HTML, dynamically generated or programmatically placed.

Chapter 9 covers THE HISTORY API, which becomes very important when you start creating a site that is based primarily around a single page. rather than direct a user to the previous site they were on before coming to ours, the History API allows the users to navigate back to states of the page, or to allow for a bookmark URL to represent the state of the page bookmarked.

Chapter 10 focuses on using XML (extensible Markup Language) and JSON (JavaScript Object Notation) as data formats to be used as an alternative to HTML.

XML files can be seen as small databases. XML Schema defines the structure XML files, while XSLT creates stylesheets for converting XML into different formats. SimpleXML allows for paged to be created and processed using PHP. JSON is a lean format that gets processed like JavaScript objects in the browser, and therefore requires much less overhead.

Chapter 11 introduces us to MONGODB, which is a type of NoSQL (not relational) database. It’s more readily known as a document database, and it stores JSON objects that are grouped into collections. Web applications are capable of communicating with the MongoDB using PHP.
Part Three of the book moves away from the underpinnings of the technology and deals with methods that help the loo and feel of the users experience, regardless of the platform being used.

Chapter 12 focuses on MOBILE FIRST, RESPONSIVE DESIGN WITH PROGRESSIVE ENHANCEMENT (go ahead, say that ten times fast ;) ). The key idea is that, based on the platform it is being displayed, the page will dynamically tailor itself to display optimally for that device. Desktops, tablets and phones have radically different screens and needs, and Responsive Design aims to help with that. One of the key aspects of this chapter is to encourage you to focus on mobile development and display first, and then work back. Additionally, another JavaScript library called EnhanceJS allows for different experiences to be displayed depending on the browser being used or the platform accessing the content.

Chapter 13 introduces FOUNDATION – A RESPONSIVE CSS/JAVASCRIPT FRAMEWORK. The idea behind Foundation is that it lets us focus on developing a site without having to reinvent the wheel on the responsive part. By using a grid system, you can determine how many areas can be used depending on the size of the screen, so that the site expands and reformats based on the grid. Foundation also includes a number of UI enhancements that make it easier to put together navigation, image display and other details that make interacting with a site easier based on the available real estate.

Chapter 14 closes out the book with an introduction to NODE.JS, which is, at its core a fundamental break with all of the rest of the web development options discussed in the previous chapters. Rather than require a whole host of technologies, everything can be written within Node, which then translates everything to native JavaScript (and by extension HTML, CSS, etc.). This can be done using the Express framework, which is described in basic detail, and the idea of templating (which is what PHP does), using handlebars.js.

An Appendix section describes BOOTSTRAP - AN ALTERNATIVE TO FOUNDATION. The same exercises Paul described in Chapter 13 he tackles here, but uses Bootstrap.JS. It meets a similar goal, i.e. making a mobile-first, responsive site without having to reinvent the wheel to provide the responsive part.

Bottom Line:

The title of the book is Practical Web Development, and a special emphasis needs to be placed on the “Practical” part of the title. Paul has strived to make a book that is accessible, easy to follow, and lean enough to be usable without getting the reader lost in the weeds. I’ve long been looking for a book that would be a soup to nuts title, one that could be the starting point for someone to start with developing for the web, and have a single source to get up and running. Is this that book? It’s pretty darn close! There’s lots of additional areas that could have been covered, but to his credit, Paul has made a title that hits the high points, and a few divergences that are interesting if not mandatory. For a lean and straightforward primer on modern web development approaches, this is a great place to start.

Wednesday, September 2, 2015

I'm Ready to LoseIt

I shall apologize to anyone who doesn't really want to read about my quest to modify my shape from what resembles an abstract pear to one that I vaguely remember from my younger days. If you fit the description of one who doesn't really care or have the slightest interest in this type of stuff, you are welcome to stop reading here.

Still with me? Awesome!

It's the start of a new month, and I've been mentally toying with a few ideas related to trying to get back into shape. I'm a firm believer in the idea that you should tackle one goal at a time, or at least get familiar and comfortable enough with a goal that adding another one will not be disillusioning. My first set of goals were around scheduling in 10,000 steps per day, then doing them all at once, then upping the ante to 15,000 steps as a daily goal. 15,000 steps is roughly eight miles, and about two and a half hours of time commitment per day. So far, my routine has been as follows:

- walking from home to train station (1.5 miles, about 30 minutes)
- train station to work (0.5 to 1.8 miles or 10 to 35 minutes, depending on if I get off in Palo Alto or Menlo Park)
- fifteen minute walk in the morning as a break (roughly 0.5 to 0.75 miles)
- an hour walk at lunch (average of 2.5 miles)
- another fifteen minute walk in the afternoon as a break (again roughly 0.5 to 0.75 miles)
- walk from work to train station and finally train station to home
- work to train station (again, 0.5 to 1.8 miles or 10 to 35 minutes, depending on station)
- train station to home (1.5 miles, with a significant hill at the very end)

Added to this is another habit I've started. I bought a large SmartWater bottle (no particular reason for that brand, just that it is a large and easy to carry bottle that can hold 1.5 liters). I fill this bottle three times a day, and add a flavor packet just for some variety (drinking that much water each day can get *very* boring). By talking a sip every few minutes while walking, the water just disappears, I don't feel forced, and I genuinely feel way less hungry during the day.

The third habit I started was a daily weigh in. I'll do my best to not get TMI here, but for those who have wondered, if you want to do this, I wholly recommend doing it after you first wak up and go to the bath room. That's been my baseline the past few weeks, and there is something borderline primal about the excitement of "making weight". For those who ever participated in high school or college wrestling programs, you may well have taken part in some of the insanity to make sure you could compete in your desired weight class. Doing lots of active running, taking sauna baths, sweating as much as possible (and yes, I've even gone as far as using over the counter diuretics... I know, bad TESTHEAD), but the joy at standing on that scale and seeing that you "made weight" was pretty hard to beat. so it is here as well.

I know that my weight can fluctuate as much as seven pounds in any given day, so a daily weighing may see drops, may see plateaus, and may even see upward ticks in weight on some days. I try not to let it get to me, but hey, there's a natural euphoria when you see the scale trend down, and a tough of disappointment when you either can't move the needle or it trends upward again. The benefit of daily weigh-in allows me to mentally focus on what I need to do. If I trend down. Awesome. If I don't move, give it a little time. If I trend up, examine what I may have eaten that could have caused that reversal (usually, the scene is eating at a restaurant or outdoor place, and the primary culprit is sodium). nevertheless, when I see a downward trend week over week, that's what really matters, and so far, that's what is happening.

A recent addition to my arsenal, and one I happen to like quite a bit, is an app called LoseIt. LoseIt has a number of tools that help you to figure out your weight and exercise goals, your food intake, and lots of tools to help manage al of that. A personal favorite feature is the "scan app". Place your camera over a bar code on the food item (if it has one) and you have the full macronutrient breakdown for that product. It's awesome because it's so fast. It's demoralizing because it's so fast (LOL!). LoseIt also allows users to set up details about themselves (weight, height, gender, target weight, etc.) and from that it determines a likely Basal Metabolic Rate. Based on your activity level and your set goals, the app configures a daily caloric "budget". That budget is measured daily, but it also projects weekly as well. By logging the food you eat, and comparing to the budget, you can determine how close you are to meeting the limit or if you have room to spare. adding exercise to the equation (the steps measured by the device are store in the Health app and shared with LoseIt if you choose to). By calculating the BMR and the estimated expended calories, it makes deductions and also adds small bonuses if you meet a particular step or activity goal. The net result is a nice graphic that shows how many calories you have left in your budget (the greater the deficit, the larger the remaining calories count, and very 3500 is equivalent to a pound of bodyfat!).

One additional option that is available is the Bluetooth body density scale that is made to work with LoseIt. I haven't decided yet if this option is awesome or creepy. It uses insulating and conductive plates to send a small current through your body. The resulting resistance gives a figure to your bodyfat percentage (I don't consider these tools to be all that accurate, but for ball park numbers and personal goals, I think they work fine). By having these measurements, you can get closer to a real figure of your lean body weight, your bodyfat percentage, and a rough approximation of how much bodyfat you have (and more importantly, how much to lose). The scale can be set to automatically sync with your mobile device, no entry needed (this is where I vacillate if I should be impressed or horrified ;) ). NO i haven't purchased one, but I will confess, I am intrigued.

In any case, the information informs me of how close I am to my target budget, or how far away I am. Most of all, it gives me a reality check as to both the amount of calories my body can burn (a good amount, but nowhere near what I'd like to achieve in the time I'd like to invest) and the calories I consume (wait, a serving size is how big?!!). The tools themselves do not do the work, each of us does it. The tools, however, can give us some control and visibility, and make us aware of our choices and what we need to trade one way or another. Don't get me wrong, I love chocolate, really good soda pop, and a variety of foods that would best be described as "calorie laden", but when I am aware of the fact that I spent three hours moving and doing stuff to "afford" those items, I'm less likely to partake in them. that awareness, coupled with deliberate action, does the work. It's not magic... but it sure can feel like it at times :).

For those curious, 243.5lbs as of this morning. That's down 16.5lbs. from my weight when I started. Expecting the progress to start slowing any day now, and the real work to pick up in earnest. Onward!!!

Sunday, August 30, 2015

The Value of the Self "Check-In"

We all go through them in certain ways. That one-on-one meeting with your supervisor, the daily stand-up, the family meeting, the heart to heart talks, they all have a purpose. The goal is to make sure that we are "on track", whatever on track might mean at that given moment. On track often means different things to different people. I'm having a bit of that now with my son. He's 19, going to college, working a job, and developing a sense of who he is and what he chooses to do. For me, the check-in's are important. For him, they may be less thrilling, because his idea of "on track", at the moment, differs a little from mine. I need to remind myself of this from time to time; I remember having the same conversations with my dad when I was 19. If I'm not mistaken, many of the topics were very familiar ;).

Checking in with others is fairly easy. With another person, I have accountability. The more difficult process is the personal check-in, the act of interviewing myself and regularly asking the following questions:

  • How are you doing? 
  • Is everything OK?
  • How's everything at home?
  • Are you working on what you need to? 
  • Do you need help with anything? 
  • Are there things you probably should stop doing? 
  • Are the things you are thinking about stopping doing actually the things you should stop doing, or are they the things you need to double down on?

I could greatly expand this list to talk about my family, friends, initiatives I'm involved with, etc., but for today, it's the Self Check-In I want to focus on.

I've been experiencing a rediscovery in regards to fitness and health. Today's technologies give us the ability to have these conversations. As I've said many times, RescueTime helps me know what I actually spend my time online doing. It's great when the feedback is positive. It's frustrating when I realize things I'm doing are, at best, a mild amusement or diversion. At worst, they are a total waste of time. Still, those insights are made with regular check-ins and asking myself "what could I be doing with this time?".

Sixteen days ago, I downloaded the "Pacer" app because I wanted to do something about my exercise (specifically, the lack thereof). Pacer gave me a very simple goal; "can I get 10,000 steps in every day?". At first, I started thinking about it spread out through the day. I determined the easiest way to do it was to park my car at home and walk to the train station (which is one and a half miles from my house). When I reach Palo Alto, I get off the train and walk to the office (another half mile), and then repeat the process backwards. This makes it part of my daily routine. If I were to just do that, I would be 80% of the way to my goal (and cover four miles each day). Just milling about at the office would takes care of the rest.

As I started making that 10,000 step goal each day, I shifting my thinking to "What about doing it at one shot?" Yeah, that is doable. I need to cover five miles, and take me about an hour and forty minutes (that's just walking at a regular pace, no jogging or running, or deliberately lengthening my stride artificially). Soon, I started considering the goal met when I could do it at one shot, or as early as possible. As I was doing this, I started noticing that there was a daily estimation to the calories I was burning (I don't consider this to be scientifically precise, but as a general rule of thumb, sure, I'll take it). As I was looking at the calories, I started asking myself "Hmmm, what if I were to limit my food intake to what I'd burned?" In other words, if I did a walk and I burned 700 calories (which for sake of reference takes me about two hours of walking or about 7 miles), then I am allowed to eat that amount of food. In other words, can I match the calories I eat to the calories I burn?

This approach works for immediate meals. I would not recommend doing this too aggressively, because it does not take into account my basal metabolic rate (which is imprecisely about 2,200 calories for my height and weight at zero activity level. If I were really to just eat what I had "burned", I'd have a daily deficit of 2,200 calories, which comes out to 15,400 calories a week. I'd lose 4.4 pounds each week at that rate, and at least half of that would be lean muscle mass, which would ultimately make my MBR lower. This is why I do not let myself go that low. Generally speaking, I become so irritable at that level of deficit that I have to eat, so at this point, it's not been something I can maintain in any meaningful way. Still, by doing this process, just by tracking the calories I "burn" with keeping track of the calories I consume, and being aware of how much of each I am doing, the net results after 15 full days is that I have dropped 12.5 pounds! Some of that is water weight, some of it is redistribution, some of it is lean muscle addition (and perhaps a little bit of muscle subtraction), but a fair chunk of it is also body fat, and that is something I'm happy to see go "bye bye").

My point with a lot of this is not to say that pacer is cool, or that calorie counting helps, or that evaluating my BMR on a regular basis is helpful (though all of those are). The act of a self check-in, to see what exactly I am doing, and being mindful of that check-in, helps me keep my motivation. It helps me to recognize if I am on track, or if I need to modify my plan. Additionally, it lets me consider if the time I am spending is the best use of my time, or if I can somehow modify what I am doing. Ultimately, what I choose to do with that time, (especially with walking) is important, because it is now literally time I cannot do something else. Actually, that's not entirely true, I'm using that time to listen to CodeNewbie podcasts (currently up to Episode #33), so there is a very limited level of multi-tasking I can do ;).

How about you? Are you giving yourself a regular check in?

Thursday, August 27, 2015

How Many Words Do You Have Left In You?

This may seem like a borderline macabre post, but it was prompted by my recent deep dive into the CodeNewbie podcast. Episode #17 featured Scott Hanselman (a great episode about engaging with new programmers or anyone in tech) and one of the comments that he made was the idea that we all have a limited amount of keystrokes left in each of us.

Scott breaks it down like this. Think of how old you are now. Now consider a conservative life span. For me, to date, the direct line of males in my family have lived to 82 at the latest, though my Dad is looking great at 75 and shows no signs of slowing down yet, so that's a plus :). I'll take a mid figure and say 78. that means I have about thirty years of words left in me. Divide that by the number of hours I work in a given day, and then divide that by the minutes in those hours, and then divide that by the number of words I type, and there you have it.

The point to this is that we have a lot of things we can do, but often we end up doing things that are repetitive and can possibly be of benefit to others if we do them the right way. In other words, instead of answering emails with the same questions, writing blog posts and pointing people to them might prove to be of more benefit.

I was reminded of this a week or so ago as I realized that on any given week, a big portion of my traffic comes from the series of posts I wrote four years ago when I embarked on "Learn Ruby the Hard Way". My rationale was that I was already looking at this stuff, and experimenting with it. I wanted to take notes and see if I could explain what worked and what didn't. If it didn't, was it a problem with the material, or was it a problem with me? More times than not, I'd discover it was a problem with me, or my understanding of the material. By talking out the ideas in the blog posts, and rereading them back to myself, often I was able to uncover problems just by talking out the problem, as though someone else was there to listen. Four years later, those experiments, frustrations and discoveries are still bearing fruit.

To me this highlights the importance of us documenting our journeys. It's tempting to say that a blog post is just a blog post, and that in the grand scheme of things, doesn't amount to very much. I think the opposite. To borrow again from Scott, by putting a URL to our words, we have the potential of seeing our words outlive us. Granted, the specifics of our posts may ultimately prove to be outdated, but the general process of learning, discovery, and our individual journeys along the way have timeless truths that may well prove to be valuable to other travelers. In the ideals of Will Allen Dromgoole, "I'm building a bridge for them" or at least I hope to.

The tl;dr version of this is "find ways of sharing your discoveries, and do what you can to limit the repetition of what you say". If you truly say it once, say it in a chat or an email. If you find yourself referencing it more that that, blog it. You never know what piece of advice you may have hidden in a chat transcript or an email thread that may help hundreds or thousands of others.

Friday, August 21, 2015

Product Review: #FluidStance #Level

As a blogger, one of the nice perks that happens from time to time is that people send you items to review. Most of the time, my reviews have centered around books in PDF form or software as downloads. In other words, the item I'm reviewing is not a tangible "thing" but an electronic file(s). Today, I received my first "real thing" to review, and intriguing doesn't even begin to describe this.

I have a setup that I use that converts a regular table into a standing desk, using two Ikea Lack end tables. When I want to sit down, I just take the tables and set them to the side, but when the standing desk configuration is in place, well, I typically stand up and do my thing. Often that also involves shifting around, putting my foot up on an upturned wastebasket, and changing positions. With my desk in the seated setup, I sometimes break out a yoga ball to use as a chair, the consistent shifting back and forth giving my core some movement and some variation. I've often lamented that I didn't have something similar for a standing desk configuration.

Enter the FluidStance Level.

"What, dare say, is the FluidStance Level?" you might ask. To put it simply, it's a balance board that you stand on while you are at your standing desk.

This is the top sheet, made of bamboo. It's sturdy and smooth, plus it looks like a nice piece of furniture. 

The underside of the board looks like this. The base is made from aluminum with a powder coat finish. It's very smooth and the curve of the base creates a moderate imbalance while you stand, but doesn't feel dangerously so. 

First impressions while standing on it is that the balance point feels natural. At shoulder width stance, it feels a little like standing on a small boat out on the water. With a narrower stance, you work a bit harder to keep the balance, but it doesn't feel at all clumsy or unpredictable. Instead, it gives a gentle swaying motion with consistent feedback to help you right your stance and keep balanced.

All well and good, I hear you saying, but what is the point to this thing? Put simply, while you are at your standing desk, you stand on the board. The consistent shifting of balance and readjusting gives your body something to do while you are working. I decided to see what thirty minutes of working would be like with The Level, and I found it to be surprisingly fluid and, dare I say it, natural. 

As you stand on the Level, you are definitely "active", which means that you are going to probably need to step away from the desk a little more often, but what I did not feel was fatigued or sore. In fact, it felt the opposite. I found myself feeling very relaxed, even with the shifting weight. Of course, the standing desk to balance myself against also helps.

So what's my verdict on the FluidStance Level? I personally enjoy the sense of shifting movement. I liken it very much to sitting on yoga ball if you have a sitting arrangement set up. It's surprisingly comfortable, and it's easy to get the hang of the sweet spot to balance with little effort. There's something nice about having a product that you did not even know existed come into your reality and have you say "wow, I've waited years for this!" but of course you didn't because you had no idea such a device even existed. I'm looking forward to using this balance board in the years to come.

Call For Interest: BASTUC

Today's post has a local flavor, and it's something I've been mulling over since I got back from the CAST conference in Grand Rapids. Conferences are often expensive, they require travel, time commitment off work and away from family, and a need to negotiate flights, hotels, transportation, etc. These are indeed headaches, but the return on that hassle is often great interactions, learning new things and getting answers to questions I have from sources I might not have initially considered. Plus, I managed to make a new set of great friends each time I go.

For the past few years, we have also had a Saturday event happen before CAST, which has gone by a couple of different names (Test Retreat, Test Coach Camp, etc.) and this has been a much smaller affair. The costs are nominal, usually just enough to cover rental of a space and some snack foods during the day (attendees are encouraged to get breakfast before arriving and go as small groups for lunch). What I find great about the process is the model used for facilitation. Test Retreat/Test Coach Camp is run as an "un-conference"or an Open Space Conference. The topics are voted for democratically, and those people who want to be part of a particular topic participate, and those who don't, don't. Some sessions may have nearly all of the attendees, and some sessions may have two or three people. In both cases that is perfect, because the person speaking is sharing their experience and the people in need of hearing that message get to do so.

One of the challenges I have faced with being one of the leaders of the Bay Area Software Testers meetup is that we want to encourage more people to speak, but there are often limits to opportunities for those potential speakers to get in that space. We have done lightning talks and we are embarking on quarterly Lean Coffee events, but my personal goal is to do something that will help encourage more software testers, and in particular those in the Bay Area to come together, develop talks, practice speaking, conduct workshops, and engage with the broader testing community that's right here.

This is why I'm proposing that we do our own Open Space Conference, the Bay Area Software Testers Un-Conference (BASTUC) . One day, one place, and as many software testers as want to participate. Agenda? You set it! Topics? You decide! Speakers? In this case, I encourage everyone who would attend to come with at least one topic they would like to talk about, even if it's formative or just to say "I have so many thoughts going on in my head about THIS THING, and if I don't get together with some other people and discuss it, my head's going to explode!" Well, OK, we hope not literally, but we want to encourage testers to feel comfortable coming out and discussing the things that matter to them. Chances are, they matter to other people too.

For the record, I have not told Josh and Curtis about this. This is a blind side, and frankly, it's just an idea. I want to see if there would be support for it, and who would participate. If you want to play along, please leave a reply, and we'll take the next steps if this is something that appeals to enough people (and seriously, in my mind, if we get ten people interested, that's enough to move forward on this).

Also, the name is open to discussion, but I had to call it something ;).

Thursday, August 20, 2015

Podcast Review: CodeNewbie

Yes, I am late to the game on this, but this really deserves to be a destination for people learning to code, who want to learn how to code, or may even just have an itch in their brain that they might want to code in the future. On any given day, I match all three of those ;). That's why my discovery of CodeNewbie has been fun and informative.

First, some background. CodeNewbie describes themselves as "the most supportive community of programmers and people learning to code". There is a lot of great content on their site, such as Ruby Monday where each week they get together to work on a project, and yes, all are welcome to participate if they want to. Each Wednesday at 9 p.m. EST they host a Twitter chat, using the #CodeNewbie hash tag. I've followed along with a few of these, and they are quite informative and, while primarily focused on the new programmer, don't be surprised if you don't learn a thing or two even if you are experienced in programming.

All this is great, but it's the podcast that I want to focus on. The CodeNewbie Podcast has been around since September of 2014, and it is hosted by Saron Yitbarek. I first heard Saron on the Ruby Rogues podcast, and some time back I made a note to check out the CodeNewbies project she had announced at the time. Like many things, it fell to the back of my list, but as I kept seeing CodeNewbies pop up in my listings, I decided I had to give it another look, and specifically, yes, the podcast. Since they now have 49 episodes, I'm approaching them in alternating order, meaning I am listening to the earliest episodes, followed by the latest episodes, and simultaneously working my way forwards and backwards. What that has done is let me see just how dramatically the show has improved in delivery (this is to be expected with any regular podcast) but also how consistent it has been in staying on message and in a format that is both accessible and readily relatable. Saron gets a lot of credit for that, in that each show is structured in a similar manner (yes, comparisons to Ruby Rogues abound, but since that is one of my all time favorite technical podcasts, that's meant to serve as praise). Saron also has a voice designed for radio, and considering she spent some time at NPR interviewing people, that should surprise no one. It adds a polish and an ease to the episodes that makes each interview feel smooth and well presented. That's not a requirement for podcasts, since I generally prefer practitioners over over-coached pros, but when you can get both, hey, run with it!

If you were to listen to any one episode, I would encourage starting at the beginning, with Saron's interview with Carlos Lazo titled "Bootcamps, Water Coolers, and Hiring Devs". Carlos talks about his time in the "Flatiron School", which is a programming bootcamp. The interview covers a lot of ground, such as the difference between studying computer science and actually being an engineer, why he chose to attend a three-month bootcamp to become a web developer, and several interview related questions and strategies for would be developers to consider. One piece of advice I really liked was to "own your ignorance". Don't be intimidated by the fact that you don't know something. In fact, embrace the idea that, if you are asked about something you don't know, you will not fake your way through an answer. Instead, reply with "I'm not familiar with that particular area. Could you tell me a bit more about it? How do you use it?" Seriously, this interaction alone is worth the time to listen to this episode, but there is so much more to glean from it, so I encourage you to do so.

If you are new to code, have dabbled in code, or have made a decision to get more involved with code, then CodeNewbies is a great destination site. Saron's podcast is a great way to plug in, get inspired, and learn about many aspects of the world of coding you might not think relate to it, but are as essential as the syntax you learn.

TESTHEAD gives the CodeNewbie podcast two thumbs way up :).

Wednesday, August 19, 2015

The Hidden Side to 10,000 Steps

This is an odd post, but then again, if you've been around my blog long enough, odd posts are probably more normal than not. In any event, this is a personal examination of motivation, behavior and the hidden side of metrics.

Like many people, I have become a touch enamored with my iPhone. For years, I had mobile devices to test with, and to that level, I typically had wifi access to do most of the functional testing, plus borrowing a friends device if needed to actually test on a carrier. Still, at the end of the day, I was content to put down the mobile device and get on with my life. That dynamic changed when I got my first Android phone a few years ago, and the change really accelerated when I bought an iPhone. I made the shift away from the idea of a mobile phone that can do a few things to a pocket computer that "has plenty to keep me interested, engaged and thoroughly distracted if I choose to be".

The apps that I have been interested of late have been "personal motivators", or those things that track goals in the way of using time, getting exercise and health in general. A neat little discovery on my part was the fact that even before I had installed a fitness app to track walking, running and bicycling, I had data for an entire week ready to display. How? The motion tracking feature is already on the iPhone and it's active, so all this data was ready to be picked up once I installed the app. Cool... and a little creepy at the same time.

One of the things that I notice about myself is that I personally love messing with gameification systems in devices or apps. I like trying to figure out ways I can leverage the apps to generate numbers and see how I can tweak them or apply them, and once I get my teeth sunk into a number, I tend to obsess over it. The number I'm currently obsessing over at the moment is "10,000", which is to say, the goal of getting in 10,000 steps a day. This is the number that is currently touted as being part of an Active Lifestyle. The app I use, Pacer, considers 10,000 steps and more as being "Highly Active". At this point, it's easy to conclude that getting in 10,000 steps will be the ticket to getting me in shape, getting that weight off, and putting me on a path to health and wellness... or is it?

Taken by itself, 10,000 steps has lots of supporting variables to consider. I'm 6'2" tall. My 10,000 steps will cover more ground that someone who is 5'2". Additionally, how are these 10,000 steps performed? In the area where I work, were I to get those 10,000 steps in at one time, it would be on flat ground. Were I to do it where I live, I'd have the option of choosing paths that are relatively flat or with some steep hills thrown in. I live at the top of a hill in my town. The street leading from the main cross road up to my house is steep enough for half a mile that I'm definitely huffing and puffing by the time it flattens out. The calorie counter reads the same amount regardless of which path I take. There are also paths I can take that will have me under tree cover and in the shade, and others will have me exposed to the sun and heat with little to no cover. The point to all this is, by throwing a bit of variety in, those 10,000 steps will vary in the level of effort, the level of sunlight and heat (which affects the amount of sweating I do), and the speed in which I can complete those steps.

For a few days, I experimented to see what it would take to get those 10,000 steps in all at once. The answer is, for me, that it requires five miles of walking, and usually is accomplished in an hour and forty minutes. By comparison, just walking around my neighborhood, walking from my car to the train, pacing on the platform, walking from the train station to work, wandering around the office, and reversing the trek gets me pretty close to 10,000 steps without even realizing it. The difference in effort and how I feel on days where I front load those 10,000 steps, versus days where I reach them literally at the end of the day, is phenomenal.

I've gotten interested in tracking weight loss with this app, and I've set up a few goals. I'll say that at the start of this experiment, I weighed 260 lbs. For the record, that's my all time heaviest. When I was more athletically involved (at my peak in around 1995 when I was training to become a competitive snowboarder), my leanest was about 190 lbs. and my bulkiest was around 225 lbs., both with aggressive training, eating like a horse, and being super active. When I broke my leg back in 2011, I chose to slow down some of the aggressive sports stuff to let the bones heal and get back to their former density. After four years, it's safe to say that my bones are as dense as they will get at this stage of my life, but my habits went significantly downhill, resulting in the weight gain I'm trying to reverse now. Over the days I've been doing this (i.e. less than ten) I've managed to pull five pounds from my frame. I'm currently at 255 lbs. I hope to lose more going forward. Did 10,000 steps have something to do with it? Yes, but perhaps not in the way you might think.

As I embarked on this approach, I wanted to see how I dealt with other things I did. Would getting in 10,000 steps make me more lazy? In truth, I'm finding it makes me motivated to move even more, and on certain days, I get well over the 10,000 steps threshold. Another thing I've noticed is how I eat and what I eat. Prior to doing this, I'd typically just eat whatever was available. Now, I find that I am being much more deliberate in the choice of food I eat, and when I eat it. Part of me thinks this might hearken back to what I've called "The Craddick Effect". When you are scared to do something, force yourself to walk back and attempt it again. Repeat this until you tire yourself out to get your mind and body ready to conquer that fear (and yes, it works :) ). I think my slightly fatigued body starts to shout down my lizard brain trying to find comfort in junk food. It's yelling "hey, I just walked five miles to burn off 600 calories, do NOT sabotage my efforts!" I'd figured it would be the other way around, where I'd say "hey, I've worked hard, I deserve this" but the opposite is proving to be true.

A TED Radio Hour Talk that I enjoyed greatly, titled "Amateur Hour" (of which I expect to talk about in later posts more in depth) had an interview with A.J Jacobs, the editor at large at Esquire who takes on some pretty extreme challenges and writes about them. In the process of talking about his "Year of Living Biblically", he took on the idea that "if we change our mind, we will change our behavior" but in reality, it's the other way around, i.e. "by changing our behavior, we change our minds". We can understand something, we can believe it, we can internalize it intellectually, but if we don't DO anything with that knowledge, we won't actually cause any change. Though early in the process, I can say, at least for now, that putting in 10,000 steps each day, especially if I aim to front load those steps, that my subsequent behaviors around food, activity, and rest change. When I hear of people saying they drop anywhere from twenty to fifty pounds in a year following this approach, the 10,000 steps is merely a catalyst. Sure it's a measurable number, but it's the underlying "infrastructure and behavioral changes" that go on, many of which are imperceptible, that really do the hard work of transformation. I'm looking forward to seeing if this holds three weeks from now, when I next report in on this (and yes, I give you permission to call me on it if you don't hear back from me :) ).

Friday, August 14, 2015

Our Python "Esperanto Project"

Much of the time, my work environment is not pretty. It's not the elegant situations that are spelled out in books or in "best practices" guides. Often, there are things that would look convoluted to outsiders, that seem like strange and quirky paths to get to places and to accomplish tasks that seem, well, not at all ideal. Why do we use them? Because it works. More to the point it has worked for years, and the thought of ripping out everything and starting anew would be a tremendous loss.

I have been discussing with my daughter ways that we could get more involved in and create an environment that we can both use, both agree on, and both work in and understand what each other is doing. In other words, we both decided we would put together our own "Esperanto Project" to help each other learn interesting tools, try out various frameworks and have an excuse to apply the ideas we are soaking up here and there and put them into an environment we can both work with.

Currently, our project resides on a Trusty Tahr build of Ubuntu Linux. The agreed to language for what we are going to do is Python, mainly because my daughter and I are both roughly skilled at an equal level (somewhere between novices and advanced beginners). As a web framework, we are using Django, because, well, Python. Selenium WebDriver is installed, with the idea that test scripts will be written in, you guessed it, Python. For my own fun, I am adding JMeter, Kali Linux and a few other tools to practice testing scenarios and particularly to exercise APIs, utilizing Python as the scripting engine. Finally, we are using PyDev as a plug-in to the Eclipse IDE because, hey, why not ;)?

One of the reasons I want to do this is that I want to be able to not just play with tools, but also have a way to keep the things I learn and find in an environment that can follow me from place to place. Each company uses their own set of tools and languages, and it's likely that I will not be using Python at different jobs. That's OK, since the goal is to not necessarily do a direct port of what I do from one company to the next, but instead, get to a point where I am able to develop and test an environment with a broad range of tools and become more familiar with all the possibilities, while also teaching my daughter how these tools are used. In turn, I'm hoping she will be able to teach me a thing or two later on down the road.

I joked with Kristoffer Nord yesterday via Twitter that his "Python for Testers" course would perhaps be an ideal jump start to this goal of ours. I'm looking at how I can make this into something interesting going forward, and I'd like to make regular updates to it and say where we are in the process. More to the point, I'd like to use it as a chance to ask for help here and there from the broader community, specifically the Pythonistas out there, because our goal is to use Python as the unifier of all the tools we pick, wherever we can.

It may work well, it may work terribly, but we won't know until we try :).