Side Project: Presentation Clock for Fitbit

I recently was given a Fitbit Versa.  As a former Pebble user I was excited to see what Fitbit was up to with their new smart watch.  Almost immediately I went to the app store to see what was there, I found a few fun apps to help me track things, but one app was missing… a presentation clock.  This app might not be useful to everyone but it is an app I wanted.

A presentation clock is basically a timer that includes changes in colors at regular intervals to help you at a glance, or even out of the corner of your eye, know how you are doing on time.  I use one on my phone to help with practicing presentations, tracking time when running discussions, and when taking breaks from school work or other activities to get a sense of when I need to wrap up.

About this time I came across Fitbit Studio.  This is a newer tool by Fitbit to help people make apps for the Ionic and Versa smart watches.  They have template projects to help you understand how to APIs work and it integrates with a simulator and your phone app and watch to test your code.  So I dove in.

How Do you Start?

To start, head over to Fitbit Studio and you can get started with a new template project immediately.  Here are a few important resources:

Fitbit SDK Guide and Documentation: https://dev.fitbit.com/build/guides/

Fitbit SDK Message Board: https://community.fitbit.com/t5/SDK-Development/bd-p/sdk

Fitbit Icons: https://github.com/Fitbit/sdk-design-assets

Using these resources I went from not knowing much of anything about the Fitbit SDK or API and only knowing a tiny bit about JavaScript to making this app.  It really is impressive just how well this system works. I will warn you not all of the APIs have been fully documented, but it is ready to go if you want to experiment with your own app or watch face.

My App

2018-06-11 21.29.09-1.jpg

I finished the v0.1 of my app recently and while it is not a final product it works!  I you want to check out the code it is here. At this time it is not available on the app store, but I am looking into submitting the app soon.

https://github.com/AllenJFuller/WatchPresentationClock

This project appealed to me because it was both an app I wanted to use and something that had a limited scope.  To complete this project I did not have to deal with third party APIs or memory management (at least in the current version).  It was a great way to push myself just beyond my comfort zone. If the project had been much bigger it would have been easy to move on to something else.

How it works

Basically you just launch the app and you see this:

PresClock-screenshot.png

The default time is 10 minutes.  The gear in the upper left lets you change to one of the preset times as seen here.

PresClockTimerOptions.png

Once ready you hit the bottom right button (on the screen or the physical button) to start and stop the timer.  The upper right resets to the current starting timer value. As time counts down the background changes from green to yellow (peach technically) to red as seen in the screenshots below.

At this time the color changes to yellow at less than 50% time remaining and to red at less than 25% time remaining.  In the future I would like to make this a setting, but for the purposes of this project the preset percents was enough.

Once time is up the app displays “Finished!” and vibrates.  Using the timer start/stop button or the reset button will reset the timer and let you start again.

PresClockFinished.png

Next Steps

I started on this project with the goal of making an app that worked on my watch that I could share via GitHub to show my process and learning.  Moving forward, I am not sure how much time I will have to develop this further but here are the things I know I want to work on:

  1. Add tumblers to set the overall time and the yellow and red times (to replace the current settings screen).

  2. Reformat to work with Ionic (the settings screen does not fit currently).

  3. Make a real app icon.

  4. Add single vibrations at color changes.

  5. Implement the storage option to save the last selected timer length on relaunch (currently defaults to 10 minutes on each launch).

From there I do want to point out that this app has to be active to work, so the screen has to stay on while in use, making this app a battery hog.  So if you are timing pasta, use the built-in timer, but if you want the benefit of a color giving you a sense of the time left then this app might be the app for you. 

2018-06-11 16.37.59-1.jpg

A Primer on Logic for the Internet

It has been easy to be annoyed and angry in late 2014 on the Internet.  Between the crisis in Ukraine, Israel and Gaza at war again, the riots in Ferguson, #GamerGate, and many more issues big and small.  One issue I keep seeing in all of these discussions from politicians to tweets, there were well thought out and calm arguments and then there are threats and fallacies.

XKCD 386

XKCD 386

One thing to understand about fallacies before we begin is that they have no bearing on the validity or "truth" value of the claims.  For example, I could say that the sky appears blue because it is the color most preferred by stupid people.  This is not my belief, but had I said so my argument would be invalid because of an ad hominem fallacy.  But as you will note, the sky in fact does appear blue.  So when you use or encounter someone using a fallacy that argument is invalid, but the point could be correct.  Using a fallacy, in my opinion, means the person needs to stop and try again, not that they are immediately wrong.

So here I have listed a handful of logical fallacies and razors that everyone should have learned in high school or college.  Now my minor in philosophy and skills with Google pay off.

Ad Hominem

This is the "against the man (person)" argument and is by far one of the most common fallacies I see on the internet.  In this argument rather than address the debate or situation at hand the person attacks the other person.  The attempt is to discredit them and by extension their argument.  Any time the argument does not specifically use the other person's credibility or status as part of the justification taking the discussion from the argument to the person is a fallacy.  

A subset of this fallacy is, in regular terms, the hypocrite argument.  On the Internet and in out culture we tend to believe that any person that does not live in 100% alignment to their arguments is a hypocrite and therefore the argument is wrong by their own actions.  In almost every case whether or not the person is a hypocrite by this definition have no bearing on the validity of their arguments.

Straw-man Argument

A straw man argument is an argument where one party presents the argument they disagree with in a way that sounds accurate to others.  However they have purposely modified the argument to their benefit.  They have either left in a major flaw that a proponent would address or misrepresent part of the argument to allow the opening needed to dismantle the argument.

This is commonly seen in situations where there is an audience.  The goal is to convince the onlookers not those who have the opposing view.  The only exception to this is when the person stating the straw-man does not realize they misunderstood the argument.  This is where mutual respect and humility on the parts of the parties involved in an argument can go a long way to everyone learning something.

Slippery Slope

Have you ever heard "don't skip school or next thing you know you will be on the drugs" or something similar?  That is the slippery slope fallacy.  It states that one action or belief necessarily leads to the next and while the first idea is not bad the last one in the chain is so by extension the first idea is bad.  For a slippery slope to be a valid tool in an argument each step in the chain must be logically validated.  The slippery slope seeks to assume the connection is obvious.  Often this connection is backed up by anecdotes from people's actual lives rather than logical progression and defense.  Like many fallacies, it may be in fact the truth, but it does not make it a valid reason to reject and idea.

Appeal to Authority

This fallacy focuses on taking the anecdote or opinion of another person and stating that since they believe or state this thing it is true.  This fallacy focuses specifically on "authority" figures that may or may not be authorities on something but are not authorities in this case.  For example someone with an electrical engineering degree is not automatically an authority on power grids and a doctor is not automatically an authority on cancer.  If however either of these people are recognized by their peers as authorities their opinions do have weight.  So saying this doctor or my religion or anyone else holds this opinion therefore it is true must be followed with proof of their specific authority in order to be valid.  Anything else is a fallacy and is attempting to redirect from the discussion at hand to fear or reverence for someone/something outside the scope of the argument.

Confirmation Bias

Confirmation bias is as much a psychological condition as it is a fallacy.  In this case a person holds a view in advance of being exposed to evidence.  Once exposed to that evidence they only assimilate and spread the evidence that agrees with their beliefs and ignore or reject the evidence counter to their beliefs.  This is something we all need to keep an eye on because the line between being right and having confirmation bias is thin in many cases.

False Attribution

Another common fallacy on the Internet is false attribution.  This is the accidental or unintentional attribution of words to a person who never said them.  From the humorous example above to PhotoShopping a tweet or making an account that appears to be someone else and making inflammatory statements this happens all over the place.  This is usually used in conjunction with a ad hominem fallacy to discredit someone in an argument.

Occam's Razor

Likely the most well known razor, Occam's razor states that when faced with two or more hypotheses pursue the one with the least number of assumptions or requirements.  In more simple terms it makes more sense to pursue the theory that the only witness with the victims blood on their hands holding the murder weapon is likely to be the killer rather than pursue the theory that the Illunimati wanted the witness thrown in jail so they uses a series of hit-people to stage the scene then convinced the person to hold the bloody weapon.

Like all of these, the second option might be the correct one, but we should pursue and eliminate the first hypothesis first before investigating the more complex one. For example, we should suspect that people receiving threats online are telling the truth. Then if we cannot find evidence or that evidence points back to them, only then do we revise our hypothesis to be that they are doing it to themselves.

Hanlon's Razor

Ok, "the Internet" this is the one you REALLY need to follow.  In simple terms this razor says to never attribute to malice what can be explained by stupidity.  Let that sink in a little.  I personally expand this a little to include not only stupidity but to say do not attribute to malice or conspiracy what can be more easily explained by a a bad day, unknown factors that do not involve you in any way, or stupidity.

Do you assume that every server at a restaurant is trying to treat you poorly or do you think is is more likely a bad day or some other cause?

Do you assume the person at the DMV is trying to hurt you or do you think there is a bureaucracy issue that is keeping you stuck there for hours?

Closing

This video was posted before this post went live, but I found it after I wrote much of this.  However, this is WAY more entertaining than my rambling.  Enjoy.

Maybe, just maybe, most people online are that... just people.  So take a step back. Breath. And treat people like people.  They may not have earned your respect, but they deserve to be treated with decency.

If you want to look at other fallacies not covered in this post take a look at these:

---

Thank you to my philosophy professors as Virginia Tech, Google and Wikipedia for helping me with this post.

Humility

We all need to learn humility. Some more than others, but we all need it. I have provided below just a few places you can look to potentially step outside of yourself. Please keep in mind I am a straight white male, so I have selected these because they opened my eyes to some of my blind spots. I am not endorsing these as true, simply asking you to engage with them each assuming that people in them are speaking what they believe to be true and honest when they describe their experiences. Use this to gain some minor insight into their point of view. Your mileage may vary.

Note: Links in this post open to new tabs for those that want to read everything I have listed here.

This is Phil Fish (Internet Fame)

If you have heard of a game called Fez this will likely be familiar to you.  If not, I think this will still be interesting.  This was not done by Phil Fish, and even if you still think he is a jerk after seeing this, try to imagine what this experience was like for him and other internet ""celebrities.""

Dark Mode as Accessibility (Different Sight Constraints)

I never considered this an accessibility feature before.  I sometimes see floaters, but not nearly as bad as this writer seems to indicate.  Click the headline to visit the page.

The F-Word Panel (Women in the Games Industry)

This panel was held as PAX Prime in 2014.  I found this to be really interesting.  For a moment put aside any notions about #Gamergate or anything else.  Just consider for as long as you watch this video that these women are being truthful about their experiences and feelings.  Later you can decide if you agree or not.

Voice Over in iOS (Accessibility Features in iOS)

If you have an iOS device I recommend turning on voice over mode for a few minutes and see how it works.  There are people that need that to use their devices.  Some apps do it well, others really do not. Click the headline for iOS users and here is a link for those of you on Android.

Closing

I do not expect you to think that everyone else is right and you are wrong.  I do not know if you are wrong or not.  But I hope in a small way these help to open your eyes to what it might be like for people other than you and me.  Thanks!

Update (7 OCT 2014): I thought this talk by Anita Sarkeesian at XOXO in 2014 was in line with this as well.  Click here.

Job Hunting Tips

I have been blessed with a steady job the last 3 years.  In this job I have grown a lot in my consulting and general professional skills.  Recently I have been able to do peer level interviews on my company's behalf to add people to my team that come in near my pay grade.  This by far has been one of the most interesting parts of my job in terms of learning about people and realizing how little I knew in college.  So here are a few tips I have for people looking for work.  A few notes:

  1. I am a government contractor and work for a consulting company, if you are in a different industry please take my notes with a grain of salt
  2. I am not an expert, just a guy who wants to help.
  3. You can get a job doing none of these, but they each help increase your chances and you almost always need to improve your chances.

To start, during an interview process it is assumed that the resume, cover letter and your appearance and interactions are the best version of you.  This means that while there is room to make mistakes and be a human, if you look disheveled or have spelling errors it bring up questions about how you will be day to day.

Resume/Cover Letter and Preparation

Ok, to start if you have been in the industry less than 10 years keep your resume to 1 page.  Let me say that again, 1 page.  If it is longer than one page you either have lead an incredible life or have things you can cut and unless you have already cut half of your resume you are not the former.

Each job application should be catered to the job you are applying for.  So start by getting the job description from the website and reading it several times.  I recommend printing it out and marking the major bullet points the job description is looking for and then rewrite your resume to highlight how your past experience matches what the company is looking for.

When you are crafting your custom resume for this job use active voice.  If you do not know what that is Google it.  Googling (or DuckDuckGoing if you prefer) is always an important part of any knowledge worker (if you mostly work in an office and on a computer you are likely a knowledge worker) job these days so practice.  And while you need to be honest if you were on a team convince them you did something.  Often I have seen resumes where someone said they "learned" things or "were on a team."  While not a resume killer to use once or twice they want to see that you were an active role in the project.  They likely do not know you and this is your chance to convince them to talk to you.

Your cover letter is a place to do three things.

  1. Show you researched the company
  2. Highlight 1 or 2 things about yourself that should attract the company to you
  3. Share 1 or 2 things that you are excited to learn or grow in through working at the company further showing your understanding of the first two items.

Seriously, keep it short and on point.  This is not a time to show how good of a novelist you are.  Think Twitter but with good grammar than Facebook or Medium.  

Come to the interview ready to interview the company as much as they are interviewing you.  Think about questions you want to ask and stories you can use to illustrate any kind of question that might get thrown your way.

Interview Etiquette

This will be easier in a bulleted list

  1. Arrive 5 minutes early, no more, no less.  Practice the route to the company if you have to.
  2. Wear a suit or equivalent. It is better to be the best dressed person in the room than to be under-dressed.
  3. Have extra copies of your resume handy.
  4. Bring a notebook to take notes and bring prepared bullets for things you want to ensure you say and ask during the interview.
  5. Watch body language, look engaged, you can slump and dazed at the coffee shop after the interview is over.
  6. Say Mister and Miss, Sir and Ma'am until the interviewers invite you to use their first names.
  7. Always ask questions.
  8. Ask for a card at the end of the interview and send a thank you note. My rule is an email for phone interviews and a physical card for in-person and video interviews.

Questions to Ask

I recommend asking questions about the job, the company and the process.  So be sure to ask what the management structure is like, how a normal day looks and similar questions. It is also important to ask questions about how the company is doing, is it growing or shrinking for example, to see if it is the kind of place you want to work.  Finally you can always ask what the next steps will be.

These all show the interviewers that you care and have researched the company.

Pitfalls to Avoid

If you learn something in a previous interview or via the job description be ready to discuss it.  What I mean is if the company talks about what they do know a little about it, if they say you need to know a piece of software and you do not research it so you can speak to it and show your engagement.  Several times I have recommended one person over another because neither knew a critical piece of software, but one convinced me that they have already started learning it and know the underlying principles and the other barely knew what the software was. I think this shows more about the person than many people think when they are on the interviewee side of the table.

Do not be late. Ever.

Do not come 20 minutes early.  This makes us feel rushed at best and annoyed at worst and it does not set the stage well for the interview.  This is especially true in a small office like the one I work in.

Please spell check and grammar check your resume and cover letter and have at least one other person read them before you submit.  Spelling and grammar mistakes do not reflect well.

Finally, know what protected classes are and do your best to answer carefully to avoid giving out this information to employers.

Finally

All of this matters, but my number one recommendation is to prepare your stories.  You will always be asked what your strengths and weaknesses are and you will always be asked to give examples from your work.  I recommend writing out a list of stories from your work and what they illustrate.  If you need a few ideas, please use this list.

  • A time when you had conflicting demands
  • A time you had to deal with a difficult coworker or client/customer
  • A time you disagreed with a supervisor and how did you handle that situation
  • A time you had to repair a relationship
  • A time you made a mistake and how you rectified it
  • A time where you took a project from start to finish, what went well, what did not
  • A time where you had to delegate work to others

This is just a start, there are more, but I think this will get you on the right track.  I hope this helps. Please feel free to contact me on Twitter or via the contact form if you would like to discuss.

Good luck!

Update 2/26:

If you survived reading my ramblings, enjoy this video of puppets giving interview tips.


Cool Thing: LootCrate

EDIT: Since originally writing this post LootCrate has filed for bankruptcy and I no longer recommend joining. I am leaving this post because it really was a cool thing in their time.

I joined LootCrate in January and have loved it.  The basics are that for $13.37 + shipping (haha, 1337 get it?) you get a box shipped to you with a bunch of random things selected to meet a geeky theme.  Since I joined the themes have ranged from Heroes to Villains to "Attack on Titanfall" and everything in between just about. 

My first crate in January 2014

If you would like more information check out their website here.  If you want to help me get more crates for free please use my referral code and I will get $5 store credit.

They currently ship to the US, Canada, and several EU countries but prices vary.

Enjoy!