The Blog of a Math NerdSports, math, programminghttps://thedadams.com/blog.html© Donnie AdamsBasketball Season<p>I have had the pleasure of coaching basketball at St. Mary's High School in Phoenix, AZ for the past three years. Being a part of a successful program has been a tremendously rewarding experience. My first year, I was a volunteer coach and helped with the varsity team. In my second year, I was the head coach of the freshman team. Last year, my third, I was the head junior varsity coach. That progression has allowed me to grow as a coach, and, having mostly the same team two years in a row, allowed us to improve as a team. In fact, the team improved so much from freshman to JV that I am inspired to write this post.</p> <br> <p>My first year as a head coach was a bumpy one for everyone. I am the first to admit that I was not a good role model. As a player, I had the reputation of being passionate and aggressive. I believe that this gave me an edge as a player, but as a coach I came across as hot-headed and abusive to the refs. The young men on the team were understanding of my passion and I believe they saw most of my yelling as "having their back." However, I know that it was unprofessional and I am sure that it was part of the reason why we didn't have as many wins as we wanted.</p> <br> <p>Speaking of wins, we didn't have many. The freshman team as whole &#8212; including me &#8212; had a lot to learn. Many of the young men on the team had never played organized basketball before that season. It was a struggle, but we were able to scrape out a 3-13 record. Two of those wins were in overtime where our best player hit game winning shots. I am proud to say that, except for one player in one game, every one of the 17 players played in every game. The players did an excellent job learning the game and the fundamentals and I am very proud of the season that we had.</p> <br> <p>As I said, the following season I was "promoted" to head JV coach. This was positive because it was technically a promotion, but also because I would be coaching the same players from the previous year. I knew that we had a rough season the year before, but I was encouraged by the progress we made and the three new players that were added to the team. The team worked hard in practice and it was soon obvious that they were able to do things on the court that they couldn't begin to demonstrate the previous year. I should also add that one of the players that played games with us did not practice with us. In the AIA, players are allowed to play 6 total quarters at various levels per game night. There was one player on the varsity team that would not be getting much playing time at that level, so he played with the JV team to get more experience. It is a common practice, but it is difficult for teams because plays are not always the same at all three levels. We did the best we could to have as much overlap as possible, however, the JV team very rarely ran set plays on offense because of the differences.</p> <br> <p>I could not be prouder of the team for the progress they made and the things they were able to do on the court. We spent a lot of time practicing defense and defensive rotations. The young men were able to do things that I have never seen any other JV team do. For example when a defensive player gets beat off the dribble, it is the responsibility of the defenders on the opposite side of the court (called the help-side defenders) to get in front of the offensive player to slow down the player or to become the new defender. This is called rotating on defensive. It does happen that because of a quick offensive player or a pass, the defense must rotate several times in one possession. There were several instances where the JV team was able to rotate three times in succession and stop the offense from scoring. In fact, in one such game where the team was able to do this several times, they overcame a 9-point deficit in the fourth quarter to win the game. In another game, even the referees were impressed and made several comments to our bench during the game.</p> <br> <p>Wins and losses are not always a good measure of the progress of a team. For example, even though the freshman team the year before won just 3 games, they made great progress that obviously carried over to the next season. However, when comparing wins and losses across seasons with the same team and playing the same opponents (and even the same coach) can tell you a lot about how a team was able to improve. It is remarkable that after going 3-13 the JV team had a record of 15-3.</p> <br> <p>And I am proud to say that all 15 players played in all 18 games.</p> <br>https://thedadams.com/blog.html?post=2020-06Jun-24https://thedadams.com/blog.html?post=2020-06Jun-24Wed, 24 Jun 2020 12:00:00 GMTThe Worst Week<p>This year has not been good for a lot of people. We are going through a global coronavirus pandemic, the turbulent (but hopeful) breakdown of systemic racism, and record unemployment. However, before all of this hit the United States, I had a week that I would not wish on anyone. I feel very comfortable calling it the worst week of my life. I shared a tweet-storm of some of the details on Twitter, but I wanted to include more of the details here.</p> <br> <p>It started on Saturday, February 15th. My father needed some help at his place in Kingman, AZ so I drove up that morning to help him out. My grandmother called me during the three-and-a-half-hour drive to let me know that her companion, Gary, who had been battling colon cancer, was not doing well and would be going to hospice. She strongly suggested that I travel home to visit him before it was too late. Since Monday was a paid holiday for me (President's Day), I decided to make the drive from Kingman to Northern California, visit Gary on Monday morning, and return to Tempe in time to make it to work on Tuesday. In total it was going to be about 22 hours of driving, but it was important to me and my grandmother that I see Gary before he passed. I arrived at a friend's place around 9pm on Sunday night and made plans to meet my grandmother at the hospice facility on Monday at 9am.</p> <br> <p>It was great to see Gary. Although he was very sick, we were able to have a long conversation. I told him how much he meant to me and I felt that my decision to drive to see him was the correct one. At about noon, my grandmother and I decided to get lunch and afterward I would start my drive back to Tempe. We had sandwiches and an admittedly morbid conversation. The following day (Tuesday, February 18th) was her 77th birthday and I encouraged her to celebrate in some way. I told her I loved her, gave her a hug, and left for home around 1:30pm.</p> <br> <p>Here is where things get crazy. About one-third of my way home, just before Highway 99 and Interstate 5 merge before going over the Grapevine in Southern California, I received a phone call and my grandmother's name popped up on my caller ID. When I answered the phone, I heard a woman crying and saying something I couldn't really understand. I was a little confused because I wasn't expecting Gary to pass so quickly. I responded with something like "I'm so sorry." Immediately, the woman on the phone (who turned out to be my mother) yelled, "No!! It's grandma!!" I realized that my mom was calling from my grandmother's phone to tell me that my grandmother, with whom I had just had lunch, was dead.</p> <br> <p>My mom and grandmother made plans to go to the hospice facility to see Gary at around 5pm. My mom showed up to my grandmother's house at about 4:15pm. When she arrived, she had a problem finding her mother. She called through the house for her, went to the backyard, and then eventually to her bedroom where she found her mother on the floor with her legs in the bathroom and head and torso in the bedroom. She called 911 from her cellphone and, very soon after, me from my grandmother's cellphone.</p> <br> <p>I pulled off the highway and immediately started making the phone calls I needed to make in order for me to turn around and head back to my hometown. One of those phone calls was to Gary's daughters who were with him. After I explained what had happened to them, they decided that they had to tell their father what was going on. He was a little out of it because of the medication, but he remembered that my grandmother was supposed to return to see him that evening. Since she hadn't arrive, he was asking about her. I can't imagine what it must have felt like to tell their dying father that the woman he had grown to love was not coming back to see him. I wish I could have been there to make it easier for them.</p> <br> <p>I made it back safely to my grandmother's house at about 9:30pm where my mom, brother, aunt and uncle were waiting for me. We all knew that my grandmother had made arrangements for her passing, but there were some details that we didn't have. We made plans to visit Gary the next day to get information about different aspects of my grandmother's estate.</p> <br> <p>That next day, Tuesday, visiting Gary was the hardest day of the whole week. Not only was everyone on edge from the untimely passing of my grandmother, but we were going to talk to a man that was suffering through the end of his life to ask questions about his dead companion. He even delayed taking his morning pain medication so he was more alert and would have less trouble answering questions. I will never forget how his face changed when he saw us walk into his room: the hurt and anguish of someone who now felt that he had no reason to keep fighting the cancer that was killing him.</p> <br> <p>Skip ahead to Thursday: my mom and I were going to run some errands which included taking some items to the funeral home to be buried with my grandmother. On our way, in my car which I had to drive 600+ miles back to Tempe, we were rear-ended by someone eating their lunch in their work vehicle. Thankfully, my mom and I were OK and my car, although dented and smashed, was drivable. The young man was very apologetic and we exchanged information. I tried to explain that we weren't mad at him for his mistake, but there was a compounding of circumstances that upset us. He understood and we were on our way.</p> <br> <p>Finally, on Sunday, just 6 days after my grandmother's sudden passing, Gary died. He was surrounded by his daughters and their families and his final moments were peaceful.</p> <br> <p>The week started out very innocently: I was going to help my dad with some work at his place during a three-day weekend. I never would have guessed that it would have ended up as it did. Crazy things happen. I did questioned whether it was really necessary for me to make the 10 hour drive to Northern California to see Gary. Seeing him and talking to him made it worth it for me, but now I know that there were bigger reasons for me to make that trip. It turned out that I was the last person to see my grandmother alive, the last person to hug her, and the last person to tell her that I loved her. In addition, I got be with my family during the worst week imaginable.</p>https://thedadams.com/blog.html?post=2020-06Jun-21https://thedadams.com/blog.html?post=2020-06Jun-21Sun, 21 Jun 2020 12:00:00 GMTLeaving St. Mary's<p>I previously wrote about a <a href="https://thedadams.com/blog.html?post=2017-03Mar-30">full-time position</a> I accepted to teach math, physics, and computer programming at St. Mary's High School in Phoenix. The decision process to accept the position was a very long and difficult one, but, in the end, it turned out to be the right one. I learned more from the kids at St. Mary's than they learned from me. However, I ended up leaving my job at St. Mary's to pursue a new career in software development.</p> <br> <p>When I first started telling people that I was leaving St. Mary's, they're first response was to ask me about the school where I was going to teach next. I don't think I could teach at any other high school. I loved my time at St. Mary's and, while there were issues I had with the school, I wouldn't have left to teach somewhere else. The move I made was about pursuing a career in a field that I have wanted to work in for some time as well as doing what was in the best interest of my family. It was very difficult to leave St. Mary's. Some of the students and faculty members in my House (SM has a <a href="https://en.wikipedia.org/wiki/House_system" target="_blank">House System</a>) threw me a surprise going-away party during which I was a mess. I've never cried in front of that many people before, but I was truly sad to be leaving the faculty and students that impacted me greatly. In the end, however, I knew that I was making the right decision.</p> <br> <p>I had a few different interviews after I decided to leave, but one stood out. There were the typical coding questions, but, at the end of the interview, the interviewer sat down with me and just had a conversation. We talked about all sorts of things including what the job would be like if it worked out, but there was much more to it than that. I left feeling confident about my performance and the position. The recruiter contacted me a few days later to say the interviewer felt the same way. I was called back to interview with the VP of Engineering and was later offered the position. They made the decision very easy for me and I accepted without countering. They took a chance on hiring a high school math teacher who liked to write software during his free time. I couldn't be more grateful for the opportunity they gave me.</p> <br> <p>I've been a professional software developer for about 10 months now, building applications that people use all around the world (I know this because I get bugs from them all the time). I was introduced to a product that had given the company some issues in the recent past and was asked to make it better. I'm proud to say that I have done that, mostly independently. I've fixed bugs, implemented new features, transitioned the cloud component of the product to Docker and Kubernetes, and incorporated Prometheus metrics and Grafana visualization. It has been a tremendous learning experience and I am looking forward to the future of my new career.</p> <br>https://thedadams.com/blog.html?post=2020-03Mar-23https://thedadams.com/blog.html?post=2020-03Mar-23Mon, 23 Mar 2020 12:00:00 GMTIt's Been Awhile<p>Wow, I can't believe I haven't written anything for this blog in nearly three years. A lot has happened in those three years -- a lot I want to write about -- but first I would like to just write a quick catch up.</p> <br> <p>The last post was just after my <a href="https://thedadams.com/blog.html?post=2017-05May-13">step-father died</a>. Before that, I wrote about <a href="https://thedadams.com/blog.html?post=2017-03Mar-30">my new full-time job</a>. Life has certainly changed since then. We were still getting used to the fact that my step-father was gone when we had more unexpected death in the family (more on that in a later post), and I know longer teach high school math (again, another post later). I've also interviewed at Google again, but nothing came of that.</p> <br> <p>One thing I can update here without another post is our new living situation. My wife and I bought a house in 2016. Since then, interest rates continued to fall and we decided to take advantage of this and the equity we built up in our house. We found a bigger house in a nicer neighborhood. Selling a house while trying to buy another one is not a fun process, but it was well worth it. Although our commutes are harder, I like nearly everything else about the new house. We even had a house-warming where all of our neighbors came.</p> <br> <p>Now that I am working from home for the foreseeable future because of the coronavirus pandemic, I plan to make writing and creative activities a priority in hopes that it sticks when life gets back to (the new) normal. I look forward to writing about the things that matter most to me.</p> <br>https://thedadams.com/blog.html?post=2020-03Mar-22https://thedadams.com/blog.html?post=2020-03Mar-22Sun, 22 Mar 2020 12:00:00 GMTPassword Managers<p>Password managers are a great tool for remembering your passwords and making sure they are random, long, and secure. Some password managers remind you to change your passwords every so often or when there has been a reported breach of a service. However, there is another extremely important reason to use one: leave your important information for your loved ones if the unexpected happens.</p> <br> <p>As I wrote <a href="https://thedadams.com/blog.html?post=2017-05-13" title="Bobby Lee Roy Frazier">previously</a>, my step-father passed away unexpectedly. He wasn't the most tech-savvy person, but he did have a couple email accounts and a Twitter account. Most importantly, he had an iPhone with the "Find my iPhone" functionality enabled. In order to turn this functionality off, you need the AppleID and password for the owner of the phone. This is a great security feature that disallows a thief from erasing your phone and using it as their own. However, if you are the rightful owner (or someone has bequeathed a phone to you), you cannot disable "Find My iPhone" without the AppleID password or access to the person's email address to reset the password.</p> <br> <p>This is where a password manager comes in. You can have all your passwords in one place, and you don't have to remember any of them. They can be long and very random, but you only need to remember one password to access your entire password database. I currently use <a href="https://1password.com" target="_blank" title="1Password">1Password</a>, and it's great. Every month, I ask my wife to tell me what my 1 password is, and I deliberately make it something that she can remember any time I change it. That way, if something unexpected happens to me, she can access all my accounts and information. Additionally, I keep an encrypted USB drive in my desk drawer with other files and information I think she made need if something were to ever happen to me. I include a readme file that explains what everything is and why she might need it. It's just one less thing for her to worry about.</p> <br> <p>For the record, Apple and AT&amp;T deserve lots of credit for the way they handled things for my mom. After we explain the situation, Apple told us exactly what information we needed in order to prove that she owned the phone, AT&amp;T gave us that information quickly, and Apple removed the Activation Lock. It is comforting to know that companies will take care of their customers in times of hardship, but I would rather make it as easy as possible for them. Please use a password manager to make your life easier and safer, and help your loved ones in case of something tragic.</p> <br>https://thedadams.com/blog.html?post=2017-05May-21https://thedadams.com/blog.html?post=2017-05May-21Sun, 21 May 2017 12:00:00 GMTBobby Lee Roy Frazier<p>On April 24th, my step-father died unexpectedly from a heart attack. He had been dealing with a stomach bug and had gotten up in the middle of the night to use the bathroom (presumably to vomit). He collapsed on his way back to bed. My mother, who had been sleeping in a different room because she needed to sleep well before going to work, found him on the floor in the morning. This event was obviously very emotional, and I realized that we did not write a proper obituary or eulogy. Here is my attempt.</p> <br> <p>Bobby Lee Roy Frazier was born on July 7, 1962 and died on April 24, 2017. He is survived by his wife Joanie, sister Velda, brother David, daughter Tiffany, step-sons Josh, Donnie, and Christopher, and (step-)grandchildren Makyla, Justice, Reality, Blake, Lucas, and Elizabeth.</p> <br> <p>Bobby was very literally a simple man. He spent most of his life in an 18-wheeler, driving goods around the country. I believe he had been to all 48 continental states, most of his journeys behind the wheel of a semi-truck. He even drove some loads to Canada <del> and Mexico</del>. He loved being a truck driver and loved talking about all the places he'd been and things he'd seen. Even his final visit to me in Tempe was filled with stories about how he had delivered such-and-such item to such-and-such place back in such-and-such year. Whenever anyone would call him while he was working and asked what he was doing, his response was, "Drivin' this truck." The smile on his face was obvious from the tone of his voice.</p> <br> <p>When I first met Bobby he was skinny and had a huge afro. We met at church while he was trying to get his life on track. He struggled with substance abuse and wanted to be a better person and father. He turned to God. A few years later, after he had a new haircut and added a few more pounds, he asked my mom on a date. They were married on July 4, 2001 in a small ceremony with about ten people in attendance. This was not either of their first marriage, but everyone kind of new they would be together for the rest of their lives. We were all correct.</p> <br> <p>Bobby was a very generous and loving person. I think his personality could be summed up in the following two quotes, the first from my uncle and the second from my mom: "He always had a smile for everyone" and "He always had a hug for you, whether you wanted it or not." He truly wanted everyone to be nice to each other and get along. I often hear stories about fathers and step-fathers having tense relationships. This was certainly not the case for Bobby and my dad. They were close friends and had a great relationship. In fact, many people told me that they were uncomfortable with how well they got along. I could only be thankful.</p> <br> <p>I cannot reflect on Bobby's life without remembering that it had many ups and downs. I recall speaking with him during one of his lowest moments where he said, "There is a reason I'm here and I'm going to figure out what it is." That is, even when things weren't going right for him, he always looked for the good that was going to come out of it. He found the good in that low moment, and I couldn't be prouder of him.</p> <br> <p>It is in this light that I reflect on Bobby's life, rather the end of Bobby's life. It came to such an abrupt and shocking end that I cannot help but to search for the good that will come from it. So far I have seen estranged family members speaking again and people getting their health issues in check. I'm sure it will be some time before we know exactly what good will come of this sudden tragedy, but I know Bobby would want us to find it.</p> <br>https://thedadams.com/blog.html?post=2017-05May-13https://thedadams.com/blog.html?post=2017-05May-13Sat, 13 May 2017 12:00:00 GMTESPN Pre-Draft Rankings<p>Fantasy sports are a great way to be involved in the sports we love. They give us an excuse to root for players that aren't on our favorite team. They also give us the opportunity for competition and bragging rights.</p> <br> <p>I have been involved in an ESPN Fantasy Baseball league for about 13 years now. Unfortunately I won't be available for the draft this year and will need to auto-draft my players. I didn't want to manually rank every player on ESPN's list, but I couldn't find anyway to do it automatically. I think it would be nice if ESPN allowed a user to upload a .csv file to update the rankings all at once. Alas, they don't allow one to do that so I had to come up with something else.</p> <br> <p>I keep rankings of all the players for the fantasy leagues in which I participate. Therefore, it was easy for me to output a list of names I could use in a script. After poking around ESPN's page a little bit, I was able to hack the list and update the pre-draft rankings automatically. Since I spent some time with it, I would like to provide that for others to use, too. All you would have to do is replace "myList" with the order you would like to use in your rankings. I would also suggest updating your "Draft Strategy" to limit the number of players drafted for each position. Enjoy!</p> <br> <script src="https://gist.github.com/thedadams/f59ed6661178d18b24037a371b352ed2.js"></script>https://thedadams.com/blog.html?post=2017-03Mar-31https://thedadams.com/blog.html?post=2017-03Mar-31Fri, 31 Mar 2017 12:00:00 GMTFull-Time Job<p>I have been in school for 26 years continuously without more than a summer break. That has been my full-time job to this point. I have been interviewing at <a href="http://blog.thedadams.com/blog.html?post=2017-03Mar-03">places like Google</a>, but I recently accepted a job offer that I never thought I would entertain.</p> <br> <p>It is very common that one teaches while they are in graduate school. In math, everyone teaches while they are in graduate school. When I started teaching, I didn't enjoy it. I found it difficult to motivate myself when I felt that the students were not motivated. I complained about my students and put in minimal effort. When I told people I was studying math, they would often ask me if I wanted to be a teacher. My response was always, "Absolutely not!" However, I have had a mind-shift in the last couple years. I began to think that I might be teaching past my time in graduate school. If that was going to happen, then I needed to be more dedicated to teaching, to my students, and to understanding how people learn. Ultimately I found that a deep desire for student success and understanding goes a long way.</p> <br> <p>Beginning next school year I will be teaching math, physical sciences, computer programming, and possibly coaching basketball at a high school in Phoenix, Arizona. I will also be helping the school redesign its math and science curriculum to promote active and integrated learning. I never thought that my future would be in education, and I have never been more excited for something considered to be work.</p> <br> <p>It's interesting how life comes together. I do believe in God, and I do believe that there is something bigger at work here. Can it really just be a coincidence that this opportunity came to me one week after Google told me they weren't going to offer me a position? It might sound crazy, but I may have stumbled upon my calling.</p> <br>https://thedadams.com/blog.html?post=2017-03Mar-30https://thedadams.com/blog.html?post=2017-03Mar-30Thu, 30 Mar 2017 12:00:00 GMTBeing a Night Owl<p>I've heard that people who wake up early are happier, healthier, and more productive. I wanted to be more productive so I decided that I would get up early. I thought I would have more time to get things done, but I could never make it stick. I would get up at 6am for a while, but one morning I would silence my alarm, fall back asleep, and wake up two or three hours later. I was also spending 8-10 hours sleeping each night. I knew that I didn't need that much sleep, but I couldn't figure out why my body felt it needed it. Finally, after failing for years, I flipped it on its head. And it worked.</p> <br> <p>Some people just aren't morning people. It didn't matter how much I wanted to be one. I always found myself sleeping too much and feeling bad that I wasn't being as productive as I wanted. A few weeks ago, after returning from a trip to California, I had some catching up to do. I knew it would be a late night, but that was fine because I didn't have anything to do the next morning. I stayed up until 5am and got everything done. I woke up at 10:30am feeling rested and ready to go. It was incredible that I felt better after 5.5 hours of sleep than I did when I would get 9.5 hours. Not only that, but I got a lot done in the seven hours between when my wife went to bed and when I went to bed. It dawned on me: I am a night owl and I should embrace that.</p> <br> <p>For the past several weeks I have fully committed to the night owl lifestyle. I go to bed between 2am and 4am, get between 6.5 and 8 hours of sleep (waking up on my own), and I have several hours of uninterrupted work time at night. I also feel happier and healthier than I have in a long time. I have even lost 4 pounds without changing any other part of my lifestyle. It did take some time to get used to not having a lot done before lunchtime, but I would remind myself that my intense working time had shifted to the late-night hours.</p> <br> <p>Working late at night is not for everyone, but neither is waking up early in the morning. I think employees and employers can benefit from being flexible about working hours. Forcing someone to work outside of their natural rhythms now seems counterproductive. I believe that a person can be an early-riser or a night-owl just as much as they can be analytical or creative (I'm definitely analytical). Figuring out which category you fall in can literally be the difference between happy and miserable or success and failure. I wouldn't replace Jony Ive with a mathematician and expect great results.</p> <br>https://thedadams.com/blog.html?post=2017-03Mar-05https://thedadams.com/blog.html?post=2017-03Mar-05Sun, 05 Mar 2017 12:00:00 GMTMy First Interview<p>In November I was contacted by a Google recruiter. She wanted to know if I was interested in working for the company. Of course I said, "Yes!" I made it through the entire interview process. Although I was recently told that I would not get an offer, having my first "real" interview with such a large company was an amazing experience.</p> <br> <p>I guess the process started about a year ago when I applied for a graduate internship with the search giant. I had a relative who worked there (they no longer do), and my application was given to someone who does recruiting for full-time positions. I was asked if I was interested in a full-time position instead of the internship position for which I had applied. I told them I was, but never heard back from them.</p> <br> <p>Fast-forward to this past November: a different recruiter messaged me to see if I was once again interested in working at Google. I was told that Google does reach out to people they have considered in the past if they see that the candidate has improved their skill set. The recruiter did reference something that indicated that I had been improving my skills. It wasn't a project I worked on or my Github account. They referenced my <a href="https://www.hackerrank.com" title="Hacker Rank" target="_blank">Hacker Rank</a> account. It is true that I had been practicing and competing on the coding site, but I didn't actually think someone was paying attention. I was doing it for myself. The strangest thing was the email address I use on Hacker Rank is not the same one the recruiter used to contact me. I guess if any company can figure out if two identities are the same, it would be Google.</p> <br> <p>The entire experience was great. I learned a lot about programming, interviewing, Google, and myself. There was a 99.9% chance that I would have accepted a position if one were offered to me, but, at this point in my life, I am glad that I don't have to move to the San Francisco Bay Area (it would have been nice to be closer to my family, however). I was told that Google might reach out to me again in a year or so. If they do, I'll be ready.</p> <br>https://thedadams.com/blog.html?post=2017-03Mar-03https://thedadams.com/blog.html?post=2017-03Mar-03Fri, 03 Mar 2017 12:00:00 GMTApple Watch<p>I am the 2016 champion of my fantasy baseball league. This league is very competitive and I am glad that I have bragging rights for the next year. Bragging rights were not my only honor, however. A monetary award that covered the price of a 42mm Space Grey Aluminum Apple Watch accompanied my victory. I've been wearing it every day for the past 3 weeks and I am not impressed.</p> <br> <p>First, I want to say that I think smart watches are great. I wore a Kickstarter Edition Pebble for years before the screen went crazy. I loved that watch and was very disappointed when I put it in the drawer in my desk for good. Apple is very good at taking what others do and making it better so when it looked like I was going to win $500, I knew that I was going to use that money to purchase an Apple Watch. The Apple Watch is a huge upgrade over my original Pebble, but it is difficult for me to justify the price difference over the newest Pebbles.</p> <br> <p>The Pebble Time 2 (which is set to ship January 2017) has many of the features that the Apple Watch has including fitness tracking, heart rate monitor, voice reply, notifications, and water resistance (only 30 meters). The Pebble Time 2 also has better battery life, stainless steel body, and is much more customizable. The biggest difference is the price: the Pebble Time 2 is $170 cheaper than the least expensive Apple Watch and $200 cheaper than the one I purchased. I do get a few things for that extra money like touch screen, "Scribble" replies, Apple Pay, and a better looking product. At this time, I am not convinced that this is all worth it.</p> <br> <p>After coming to the realization that I wasn't 100% satisfied with my purchase, I decided to get the most out of my new Apple Watch. I installed a bunch of new apps. I use Apple Pay everywhere. I reply to text messages on my watch. I have even started running for exercise. Only one of these I could not do on a Pebble Time 2, but at least I feel like I am getting my money's worth out of my Apple Watch. Here's hoping that Apple improves the functionality with software updates.</p> <br>https://thedadams.com/blog.html?post=2016-10Oct-28https://thedadams.com/blog.html?post=2016-10Oct-28Fri, 28 Oct 2016 12:00:00 GMTLegacy Macs<p>Today it was announced that I will own my first legacy Apple computer (an early 2008 iMac) when Apple releases macOS Sierra. I have owned older Apple devices which are no long supported, like an iPhone 3GS and a first generation Intel MacBook, but never when they were no longer on the latest operating system. Even when Apple was charging consumers for the newest version of OSX, I was happily handing over the money to ensure that my machine, which houses some very important and very private data, was receiving regular updates. Now that Apple has deemed my main machine as not worthy of their newest operating system, I am hoping that I won't be left out to dry.</p> <br> <p>I should be clear that I am not expecting Apple to support and update older machines forever; I understand that is not possible. I also understand that as technology advances and developers release new features, the older hardware is not capable of keeping up. For example, my iMac has has had the maximum amount of RAM (6GB) since the day I purchased it. The people at Apple pride themselves on making quality software that runs on advanced hardware and they charge consumers a significant amount of money. It's not that I don't want to upgrade my hardware, but it is not reasonable for me to upgrade my home machine if it is currently fulfilling my requirements.</p> <br> <p>The problem, as I see it, is that Apple has taken the approach of controlling every aspect of how users interact with their products. I gladly buy their products with the knowledge that they make the best products for me. However, I hope that I am not forced to buy a new iMac to regain the ability to backup and restore my iPhone 6S when I update it to iOS 10. I hope that I am not forced to by a new computer if someone finds a <a href="http://www.macworld.com/article/2099987/what-you-need-to-know-about-apples-ssl-bug.html" target="_blank" title="Apple SSL Bug">bug in Safari</a>. I willing to live on with the fact that my current iMac will not have Siri, universal clipboard, and Apple Pay, but I am not willing to pay $1000+ to continue my life as it is now (unless, of course, my logic board catches on fire).</p> <br> <p>I'm sure Apple with handle this gracefully; they haven't given me any reason to doubt them. However, if Apple's decisions force my technological life to change significantly then the employees at the <a href="http://maps.apple.com/?address=Chandler+Fashion+Center,+Apple+Store" title="Chandler Fashion Center Apple Store">Chandler Fashion Center Apple Store</a> will be getting a visit for me.</p> <br>https://thedadams.com/blog.html?post=2016-06Jun-13https://thedadams.com/blog.html?post=2016-06Jun-13Mon, 13 Jun 2016 12:00:00 GMTSleep Well<p>I've struggled with my sleep for years. I have gone through periods of great sleep, horrible sleep, or no sleep. I use the <a href="http://www.sleepcycle.com" target="_blank" title="Sleep Cycle">Sleep Cycle</a> app to help me track my sleep and have been frustrated at being unable to break 60% sleep quality on a regular basis. I've always heard that blue light from my computer and phone could be a reason why I wasn't sleeping well, but sometimes I need to work and getting away from my computer is not possible. I recently came across <a href="http://lifehacker.com/get-better-sleep-and-start-mornings-strong-with-the-10-1762499118" target="_blank" title="10-3-2-1-0 Rule">this</a> article on Lifehacker and I learned that I needed to change when I wake up as well as what I do to wind down the day.</p> <br> <p>The aforementioned Lifehacker article outlines the "10-3-2-1-0" rules for getting better sleep. The rules are as follows:</p> <br> <ul style="list-style-type:disc;"> <li>No caffeine within <strong>10</strong> hours of bedtime.</li> <li>No food or alcohol within <strong>3</strong> hours of bedtime.</li> <li>No more work within <strong>2</strong> hours of bedtime.</li> <li>Turn off all screens within <strong>1</strong> hour of bedtime.</li> <li>Hit the snooze button <strong>0</strong> times in the morning.</li> </ul> <p>One should notice that the frame of reference here is the time that you want to be in bed. Something about adjusting my frame of reference helped me realize that I don't get a lot of work done between 18:00 and 21:00 each day because that is the time I walk the dog, have dinner, and spend time with my wife. After this time, I have trouble getting back to work. The remedy I came up with was to go to bed earlier and wake up earlier. This had the affect of improving my sleep as well as maximizing my working hours.</p> <br> <p>My new daily routine is as follows: I set my Sleep Cycle alarm for 05:15 with a 30 minute window. This allows me to shift my potentially unproductive working time after 21:00 to the morning when I am more focused and have fewer distractions. With a bedtime of 22:00 in mind, the above rules dictate that I stop my caffeine intake at 12:00, abstain from food and alcohol after 19:00, stop working by 20:00, and turn off all screens at 21:00. At this point, I get ready for bed so I can fall asleep quickly. With the remaining time I have before my bedtime, I read a book (right now I am reading <u>Steve Jobs</u>). I have no problem falling asleep, and Sleep Cycle reports that my sleep quality has improved. Here are a before (left) and after (right) screenshot from Sleep Cycle as evidence of the improvement.</p> <br> <center><a href="files/2016-03-21Before.png"><img src="files/2016-03-21Before.png" width="40%" alt="Before Screenshot" border="0"/></a> <a href="files/2016-03-21After.png"><img src="files/2016-03-21After.png" width="40%" alt="After Screenshot" border="0" style="margin-left:5%;"/></a></center> <p>There are a couple things to note here. First, in the after screenshot, you can see that I missed my goal bedtime. I used this particular day's data because the bedtime, wake time, and sleep notes are similar in the two, however, the sleep qualities are not. This is also reflected in how I feel when I wake up and my energy throughout the day.</p> <br> <p>The bottom line is that it is possible to help yourself sleep better and wake up more rested each day. Doing so is difficult and takes discipline; I have already had to tell friends that I couldn't grab a beer with them because it was later than 19:00. In my opinion, the productivity and energy I enjoy throughout my waking hours is worth the sacrifices I have made. There is plenty of time for beer between 05:00 and 19:00.</p> <br>https://thedadams.com/blog.html?post=2016-03Mar-21https://thedadams.com/blog.html?post=2016-03Mar-21Mon, 21 Mar 2016 12:00:00 GMTCreate Your Own Dynamic DNS Updater<p>When DynDNS shutdown their free tiers, I, like many people, was left looking for an alternative. I tried <a href="https://noip.com" target="_blank" title="No-IP">No-IP</a>, but their automatic updater never worked for me. Therefore, I was left to manually update my dynamic IP every 30 days like some type of animal. I was already using <a href="https://cloudflare.com" target="_blank" title="CloudFlare">CloudFlare</a> for caching, simple threat identification, and basic analytics (I don't want to use Google), so I decided to make my own dynamic DNS updater using CloudFlare, Python, and launchd. Before I layout the steps, I will say that <a href="https://dyn.com/remote-access/" target="_blank" title="dynDNS Remote Access">dynDNS Remote Access</a> is $40 per year at the time of this writing. This is definitely affordable, but a domain name is cheaper and more versatile. Feel free to follow these steps to setup your own solution. In order to complete this setup, you need a domain name, a CloudFlare account, and a Mac with python3 installed.</p> <br> <p>First we will setup CloudFlare. You will need to point your domain to CloudFlare's name servers. If you haven't done this yet, you can follow <a href="https://support.cloudflare.com/hc/en-us/articles/205195708-Step-3-Change-your-domain-name-servers-to-CloudFlare" target="_blank" title="CloudFlare Name servers">these steps</a>. It might take a couple hours for the DNS to propagate, but CloudFlare will email you when the name servers are updated. Once your domain is pointing to CloudFlare, you need to setup a new <a href="https://support.cloudflare.com/hc/en-us/articles/200169096-How-do-I-add-A-records-" target="_blank" title="CloudFlare A record">subdomain A record</a>. You can call the new A record whatever you like, but it should be easy to remember. For example, I use the subdomain "office." Simply enter 1.2.3.4 in the IP field; this will be updated by your computer.</p> <br> <p>The last thing you need from CloudFlare is your API key. You can find it by following <a href="https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-my-CloudFlare-API-key-" target="_blank" title="CloudFlare API key">these steps</a>. You should protect this key like a password.</p> <br> <p>Now we go to the computer. The first thing we need to do here is create the Python script used to automatically update your IP address. You can copy and paste the script <a href="files/CFDNSUpdater.py" target="_blank" title="Python script">here</a>. Please make sure to replace the pieces in all caps with your information: <code>EMAIL-ADDRESS</code>, <code>YOUR-API-KEY</code>, <code>YOURDOMAIN.COM</code>, and <code>SUBDOMAIN</code>. Next, download <a href="files/com.USERNAME.cfdns.plist" target="_blank" title="Launchd file">this file</a>, open it in a text editor and replace the pieces in all caps: <code>USERNAME</code> and <code>/COMPLETE/PATH/TO/PYTHON/SCRIPT/</code>. Once this file is edited, save it as <code>com.USERNAME.cfdns.plist</code> in your Downloads folder, again replacing <code>USERNAME</code> with your username on your computer.</p> <br> <p>Next, open a Terminal window and type the following commands:</p> <br> <pre>chmod +x /COMPLETE/PATH/TO/PYTHON/SCRIPT mv ~/Downloads/com.USERNAME.cfdns.plist ~/Library/LaunchAgents/com.USERNAME.cfdns.plist launchctl load ~/Library/LaunchAgents/com.USERNAME.cfdns.plist</pre> <br> <p>That's it! Every hour, your computer will run the Python script, check to see if your IP address has been changed, and update CloudFlare's settings, if necessary. If you have any issues or questions, please do not hesitate to contact me via <a href="" target="_blank">Twitter</a> or <a href="" target="_blank">ADN</a>.</p> <br>https://thedadams.com/blog.html?post=2016-01Jan-15https://thedadams.com/blog.html?post=2016-01Jan-15Fri, 15 Jan 2016 12:00:00 GMTMy New Dog Howard<p>First, if you haven't read my first post on <a href="https://thedadams.com/blog.html?post=2015-03Mar-16">animal testing</a>, I ask that you read that before reading this post. You'll learn a little bit about animal testing, what it means to me, and what <a href="http://www.beaglefreedomproject.org" target="_blank">Beagle Freedom Project</a> (BFP) is doing to combat the unnecessary cruelty that animals go through. One of the newest programs that BFP started is called the <a href="http://www.identitycampaign.org" target="_blank">Identity Campaign</a>. For small donation, you can "adopt" an animal in a lab, give it a name, have the option to obtain the records of the animal, and help BFP acquire it if it is released from the lab.</p> <br> <p>My wife decided that both of us should be involved in this campaign. She adopted a dog for herself and surprised me with one as well. I have always wanted a hound named Howard (we didn't choose Diego's name), and Domenica appropriately chose this as the name for my adopted dog. She named her dog Lucky. About a week later we each received a package from BFP that included an adoption certificate, a tag with our dog's identification number, and a records request form letter. We were very excited and sent the letters right away.</p> <br> <p>Our dogs are both being held at the University of Missouri. Missouri has a law called the Sunshine Law that allows people to request the records of animals in government funded lab testing facilities. Of course, it takes time and money to prepare and ship these records. In the letter, we stated that we would be willing to pay up to $50 preparation and shipping costs. I anticipated the lab to take all the money I was willing to give them. When I received the email response from the university, I was surprised that they wanted <strong>$531.90</strong> for preparation and shipping. They also requested $410.25 from Domenica for Lucky's records. This is an obvious attempt to derail our efforts to potentially help these two dogs, or uncover exactly what has been done to them.</p> <br> <p>The people at University of Missouri should be ashamed of themselves. I know there is a graduate student that would gladly accept minimum wage to collect, copy, and ship these records. Even if this person makes $10 per hour (I never made that much in college in San Diego), it would take over 94 hours of work to make those fees legitimate. Domenica even joked that we could fly to Missouri and get the records ourselves for less than the $942.15 they are asking from us. Thankfully, the wonderful people at Beagle Freedom Project are helping us deal with the university and get these fees to a more reasonable level. I look forward to sharing the results of our inquiry.</p> <br>https://thedadams.com/blog.html?post=2015-07Jul-16https://thedadams.com/blog.html?post=2015-07Jul-16Thu, 16 Jul 2015 12:00:00 GMTHammerin' Hank<p>Baseball is my favorite sport, both to play (when I did) and to watch. Baseball and statistics go hand-in-hand. I have even created a baseball statistic myself called the <a href="Archive.html?tag=consistency+index">Consistency Index</a>. People use these statistics to try to compare players across generations and identify a GOAT (Greatest of All Time). This is an impossible task, but it is a truly interesting debate. It is easy to make cases for guys like Ty Cobb, Babe Ruth, Lou Gehrig, Willie Mays, Barry Bonds, Cy Young, Sandy Coufax, or Nolan Ryan, and these cases are very persuasive. However, it is my opinion that one person doesn't get enough support in this conversation.</p> <br> <p>Henry "Hank" Louis Aaron, nicknamed Hammerin' Hank, made his MLB debut with the Boston Braves in 1954 at the age of 20. In that game, he had no hits in 5 at-bats. This was not at all indicative of how his 22 year career would unfold. Hank Aaron is best known for breaking Babe Ruth's record of 714 for the most homeruns in a career. Aaron hit his record-breaking 715th homerun on April 8, 1974. Not only is the record impressive, but he did so in the midst of unbelievable death threats from racists in the South (by this time the Braves had moved to Atlanta). Aaron would finish his career with 755 homeruns, a record that would stand for 31 years.</p> <br> <p>The homerun record is just part of the story. As of the date of this writing, 28 major leaguers have 3,000 hits in their career. Aaron collected 3,771 hits in his career, second most in a career at the time of his retirement (now third). One thing of note with this number: if you took away all of Aaron's homeruns, he would still be a member of the 3,000-hit club. This is absolutely incredible for someone that was primarily known for hitting homeruns. In comparison, Frank Thomas, who is considered to be one of the great homerun hitters of the 1990's, had 521 career homeruns and 2,468 career hits. Aaron also holds the record for the most runs batted in (RBI) in a career with 2,297; he is one of three people with more than 2,000 RBI in their career.</p> <br> <p>In total, Aaron is in the top five in homeruns, hits, extra base hits, total bases, runs batted in, runs score, at-bats, plate appearances, games played, and intentional walks in a career. Most of this was accomplished in the midst of hate mail and innumerable death threats. His ability to hit a baseball is out matched only by his ability to maintain focus on the field despite immense distractions. Taking the circumstances of his career and what he was able to accomplish, Hank Aaron deserves to be in the debate for the title of GOAT.</p> <br>https://thedadams.com/blog.html?post=2015-05May-13https://thedadams.com/blog.html?post=2015-05May-13Wed, 13 May 2015 12:00:00 GMTAnimal Testing<p>About two years ago I learned exactly what animal testing is. I'm not referring to medical testing (more on that in a later entry), but rather the testing of household products many of us use every day. I thought that testing shampoo on a dog meant that the dog was getting a nice bath. This is far from the truth. The animals are severely mistreated and are never given the chance to have normal pet lives. If you have never heard exactly what happens inside a testing facility, please continue reading. I will warn you that some of the things you will read and see are disturbing and extremely saddening.</p> <br> <p>You may know that I have a beagle; his name is Diego. My wife, Domenica, and I adopted him from the Arizona Humane Society on July 12th, 2011. It didn't take long for Domenica to fall in love with Diego and all beagles. While she was searching for beagle-related things on the web, she stumbled upon <a href="http://beaglefreedomproject.org" target="_blank" title="Beagle Freedom Project">Beagle Freedom Project</a> and our lives changed forever. If you have the the time and the stomach, please watch the video of their <a href="http://www.beaglefreedomproject.org/rescue_1" target="_blank" title="First Rescue">first rescue</a>. Unfortunately, this is one of the more uplifting videos. Watching those dogs run around on that small patch of grass for the first time gets to me every time. I can't watch some of the other videos that show how the animals are treated in the labs; they make me sick to my stomach. It's not hard to find such videos on YouTube.</p> <br> <p>The dogs used in animal testing of household products are not given baths with shampoo or a weird hairdo with a hair spray. They have makeup smeared in their eyes until they go blind or forced to inhale a hairspray through a mask until they die. <a href="http://www.humanesociety.org/issues/cosmetic_testing/tips/common_cosmetics_tests_animals.html" target="_blank" title="Animal Testing">This stuff</a> happens all the time, and the products that are being tested are products that have been around forever (like bleach) or products that we all know are harmful (like cigarettes).</p> <br> <p>Regardless of your feelings on the actual testing that goes on, I think we can all agree that these animals deserve a life after testing. Many, or most, of the animals used in testing are simply euthanized when they are no longer needed. I have even heard stories about animals being euthanized in the middle of a test because a big holiday is approaching and it is less expensive to dispose of the dogs than pay someone to watch them. The laboratories buy new animals after the holiday and pick up the experiments from the beginning. This is extraordinarily wasteful and disrespectful.</p> <br> <p>I am writing this to make anyone who reads this aware that these things happen. A few years ago, I was completely ignorant of this. It may seem like one person cannot make a significant dent in such a large problem, but there are tangible things one can do. You can start by supporting the <a href="http://www.beaglefreedomproject.org/right_to_release" target="_blank" title="Support Beagle Freedom Bill">Beagle Freedom Bill</a>. You can also make a more dramatic change by going "cruelty-free" and only using products that have not been tested on animals. There is an <a href="http://cruelty-cutter.org" target="_blank" title="Cruelty Cutter">app</a> to help you find products that aren't tested on animals. If you would like information regarding the efforts you can make to help these animals, please do not hesitate to reach out to me on <a href="http://twitter.com/thedadams" target="_blank" title="thedadams on Twitter">Twitter</a> or <a href="http://alpha.app.net/thedadams" target="_blank" title="thedadams on App.net">App.net</a>.</p> <br>https://thedadams.com/blog.html?post=2015-03Mar-09https://thedadams.com/blog.html?post=2015-03Mar-09Mon, 09 Mar 2015 12:00:00 GMTBlog 2.0<p>About a year and half ago I decided to create a blog. The idea was as much about coding the back-end of the blog as it was about writing. Inspired by <a href="http://donmelton.com" target="_blank">Don Melton</a>, who self-taught the majority of his programming skills and went on to do <a href="http://donmelton.com/2012/12/19/when-i-first-heard-the-name-safari/" target="_blank">great things</a>, I set out to learn as much HTML, CSS, PHP, and JavaScript as necessary to make this happen. The first version wasn't anything special; it had a welcome page with a list of recent posts and another page that displayed a blog entry given by a <code>GET</code> string. The biggest feature was a dated archive that would expand and collapse as the reader clicked on it. Today, I've updated it with a few more bells and whistles.</p> <p>The goal with this blog, at least from the development perspective, has always been simplicity. You can read <a href="https://thedadams.com/blog.html?post=2013-05May-31">this</a> to see how simple the first version was. After <a href="https://thedadams.com/blog.html?post=2014-12Dec-26">renewing my commitment</a> to publishing here, I realized that it is not very easy to find old posts or past topics. For example, the welcome page showed the 5 most recent posts with a one paragraph preview of each. If you wanted to read any older entries, you would have had to click through the archive on the right. Now there is navigation at the bottom of the welcome page that allows the reader to see previews of posts from further in the past. Links labeled "Newer" and "Older" appear as needed as one navigates through these pages. In addition, there is now a "full" archive where the reader can view all the posts from any year or all the post tagged with a specific topic. This enables one to find or discover posts much more easily. All of this is done in about 200 lines of PHP.</p> <p>This has increased the complexity a bit, but I am very happy with it. There are 4 total HTML files: the welcome page, the post page, the archive page, and the credits page. The content displayed on the post and archive pages are controlled via a <code>GET</code> string. It's hard to think of ways someone might break your code, but I've tried to make this as robust as possible. That is, if the reader changes the <code>GET</code> string to something crazy, the code is smart enough to make an adjustment and display something meaningful. Most importantly, as the blog grows building this content will not be hindered - it will remain as quick as it is now.</p> <p>The biggest change was incorporating tags for each post. It wasn't difficult to tag each existing entry because there aren't very many of them. The difficult part was making sure that each new post (which is tagged during composition) is added to the tag list. I refused to do this manually. I recently constructed a workflow using <a href="http://omz-software.com/editorial/" target="_blank">Editorial</a>, <a href="https://workflow.is" target="_blank">Workflow</a>, and <a href="http://contrast.co/launch-center-pro/" target="_blank">Launch Center Pro</a> which takes a blog post ready for the public, uploads it to Dropbox (read: saves it to my iMac), uploads it to my web host, generates the new RSS feed, and uploads the new RSS feed to my web host. It was fairly easy to extend this workflow to automatically add or update the tags as necessary. I am planning to write about these apps and this workflow soon.</p> <p>I have added quite a bit of complexity to the back-end, but things are now more functional and intuitive. I would be very happy if you would use these new features and let me know what you think. All of these new things have allowed me to focus more on the writing process. Uploading and viewing are streamlined now - two things I don't have to worry about anymore. I just hope I can figure out this whole "proof-reading" thing.</p>https://thedadams.com/blog.html?post=2014-12Dec-30https://thedadams.com/blog.html?post=2014-12Dec-30Tue, 30 Dec 2014 12:00:00 GMTNew Year Resolutions<p>I've never done any New Year Resolutions. I think the reason is I hear people talk a lot about how they don't keep them; I didn't want to be a failure. However, this is the year I will make (and keep) a few New Year Resolutions.</p> <br> <p>First, I want to make use of this blog. I have quite a few half-written blog posts in Editorial, many of which will never be posted here. I want this to change. I feel like I have a few unique perspectives that people may find interesting. At the very least putting things down in writing may help to solidify my thoughts and ideas on the topics. I also put quite a bit of effort into creating this blog from scratch as well as automating the posting process on my iPad and iPhone using Editorial, Workflow, and Launch Center Pro. That shouldn't go to waste.</p> <br> <p>Next, I want to get in better shape. This is the standard New Year Resolution, but I really mean it. I put a lot of effort into losing weight over the past year. I've also <b>thought</b> a lot about working out, cycling more, and improving my overall health. I've tried using Lift and MyFitnessPal, which have helped a little, but I want to be more disciplined in this area of my life. Getting in shape will help my knees, shoulders, back, and heart - all of the things with which I have been having problems. It's time to turn these thoughts into actions and take my health more seriously.</p> <br> <p>Lastly, I want to rediscover my passion for math. I've been doing research in math for nearly half my life now and I am in a rut. It is taking much longer for me to finish my PhD than I hoped and I keep making excuses. Finding the passion I once had for math will hopefully give me the final push I need to buckle down and prove something significant. If I can't rediscover that passion, I need to buckle down and finish this anyway.</p> <br> <p>Next year can be one of the most exciting years of my life: my wife and I could begin the conversation of starting a family, I could finish my PhD, I could find a job, and I could enjoy the last calendar year before I turn 30. Discipline and motivation, specifically the kind detailed above, will hopefully turn those "coulds" into "dids".</p> <br>https://thedadams.com/blog.html?post=2014-12Dec-26https://thedadams.com/blog.html?post=2014-12Dec-26Fri, 26 Dec 2014 12:00:00 GMTMinimal Watchface for Pebble<p>A few months ago I was inspired to make a watchface for the <a href="http://getpebble.com" target="_blank">Pebble Smartwatch</a>. I wanted to combine an analog design with a digital one to create a very simple, uncluttered watchface. I have very little design experience and limited programming experience, but I thought that the task could be obtained with a little effort. After looking over the <a href="https://developer.getpebble.com/2/api-reference/modules.html" target="_blank">Pebble API documentation</a>, I decided to tackle the project. I have released a few upgrades since originally publishing the face on the Pebble app store; I am particularly proud of the most recent version.</p> <br> <p>In an effort to make the design simple, I chose not to adopt the usual marking of the numbers around an analog watch. I also wanted the watch to be easily readable. Therefore, a minute hand was immediately out of the question, which left just an hour hand. The hour hand doesn't move throughout a given hour. Instead, it jumps to the next position when the hour changes. This makes reading the hour quick and easy.</p> <br> <p>The digital portion of the watch comes in the minutes display. The minutes are given as large numbers in the center of the watchface. The hour hand rotates around the minutes. I believe this design creates a very compact and fashionable watch display. Once I had both of these laid out, I noticed there was a bit of room at the bottom of the screen that created a little asymmetry. I decided to fill this space with the month, day, and day of the week. Here is the outcome: <br/><br/><center><img style="text-align:center;" src="images/pebble-screenshot_2014-03-25_23-14-47.png" alt="Pebble Screenshot 1"/><br/> <span style="font-size:.75em;">Hopefully you can tell that the watch is displaying the time 9:15.</span></center> <br/> <p>This did not satisfy me completely; I wanted to use more of the capabilities of the Pebble API. The first thing that came to mind was bluetooth connection vibrations. As it turns out, this was very simple to implement. The watch emits two short vibrations when a bluetooth connection is established and one long vibration when it disconnects. Next, I decided to implement a single short vibration every hour, on the hour. I don't particularly like this feature, but I know some people will enjoy it.</p> <br> <p> Since these features weren't difficult to deploy, I turned to the battery of the Pebble. My goal was to find a way to display the battery percentage unobtrusively and give the user an easy way to tell when the watch is done charging. This led me to use the hour hand as a battery meter. The hour hand will be completely white when the watch's battery has 95% to 100% charge. As the battery level decreases in increments of 5%, the white will retreat towards the center of the watch. The hour hand is outlined in white to maintain readability. The hour hand also blinks while the watch is charging and stops when it is fully charged. In order to give the user control over these features, I used the Javascript and persistent data capabilities of the Pebble API to allow turning these features, and the vibration features mentioned above, on and off as desired. Here is an example of the new version: <br/><br/><center><img style="text-align:center;" src="images/pebble-screenshot_2014-06-15_22-17-23.png" alt="Pebble Screenshot 1"/><br/> <span style="font-size:.75em;">Notice the battery meter in the hour hand.</span></center> <br/> <p>Although the watchface is complete and published to the Pebble app store, it is not available just yet. Since the watchface uses Javascript, this code must be bundled with the official Pebble app for it to be available to iOS users. From what I understand, Android does not have this hurdle, and, thus, the watchface is available to Android users now. If you would like to download Minimal, please click <a href="https://apps.getpebble.com/applications/5331eb4d18cd87063e00033d" target="_blank">here</a>. Also, I would greatly appreciate that you "love" the watchface on the Pebble app store. If you have have comments, suggestions, or questions, please do not hesitate to leave a comment below or contact me via <a href="https://alpha.app.net/thedadams">App.net</a> or <a href="https://twitter.com/thedadams">Twitter</a>. I hope you enjoy Minimal as much as I have.</p> <br>https://thedadams.com/blog.html?post=2014-06Jun-19https://thedadams.com/blog.html?post=2014-06Jun-19Thu, 19 Jun 2014 12:00:00 GMTConsistency Indicies Updated for 2013<p>Another MLB year came to a close and I now have the data I need to update the <a href="http://blog.thedadams.com/Post.htm?post=2013-06-22">Consistency Indices</a>. Last year was especially interesting because there is a great hitter in his prime and another young hitter that has the opportunity to be the best player in baseball, if he is not already. I would like to give some perspective on the consistency of the current players and how this 2013 ranks in history.</p> <br> <p>As you may recall, there are two Consistency Indices: one for hits and one for on-base. For the Hit Consistency Index (HCI), there is no surprise who is number one: Miguel Cabrera with an HCI of 3.928758. Cabrera had an excellent season, leading the MLB in batting average (.348) and on-base percentage (.442), despite battling a couple different injuries toward the end. The number two spot belongs to Michael Cuddyer with an HCI of 3.92468. Cuddyer was second in the league in batting average (.331). These aren't surprising because they are number one and two in batting average. The HCI tends to following batting average for single seasons. Here are the top ten HCI's for 2013:<br/><br/> <table border="1" style="margin-left:auto;margin-right:auto;"> <tr><th>Name</th><th>On Base CI</th><th>Hit CI</th></tr> <tr><td>Miguel Cabrera</td><td>13.211715106261849</td><td>3.9287575767906127</td></tr> <tr><td>Michael Cuddyer</td><td>10.49811384375744</td><td>3.924683886175119</td></tr> <tr><td>Joe Mauer</td><td>6.114297359134208</td><td>3.7284120533153278</td></tr> <tr><td>Howie Kendrick</td><td>5.5529685848718415</td><td>3.6210898798394533</td></tr> <tr><td>Allen Craig</td><td>4.394019995842432</td><td>3.4784185018451392</td></tr> <tr><td>Mike Trout</td><td>17.553146108557545</td><td>3.406338180121031</td></tr> <tr><td>Austin Jackson</td><td>5.250809423065276</td><td>3.205842481941779</td></tr> <tr><td>Jose Reyes</td><td>4.9337557489694985</td><td>3.0998241587528943</td></tr> <tr><td>Jhonny Peralta</td><td>5.406546509606704</td><td>2.938341567152542</td></tr> <tr><td>Adam Jones</td><td>5.081003798670468</td><td>2.929320978879294</td></tr> </table></p> <p>The On-Base Consistency Index (OBCI) has a lot of the same players at the top. Number one is Mike Trout with an OBCI of 17.5531. You'll notice in the top ten list for OBCI, the numbers decline much faster than in the HCI list. This is caused by teams "pitching around" the top hitters in the game. That is, Mike Trout and David Wright are more likely to walk in a high-leverage at-bat because teams would rather pitch to someone else. Here is the top ten:<br/><br/> <table border="1" style="margin-left:auto;margin-right:auto;"> <tr><th>Name</th><th>On Base CI</th><th>Hit CI</th></tr> <tr><td>Mike Trout</td><td>17.553146108557545</td><td>3.406338180121031</td></tr> <tr><td>Miguel Cabrera</td><td>13.211715106261849</td><td>3.9287575767906127</td></tr> <tr><td>David Wright</td><td>11.49911709259646</td><td>2.0440454546442774</td></tr> <tr><td>Michael Cuddyer</td><td>10.49811384375744</td><td>3.924683886175119</td></tr> <tr><td>Joey Votto</td><td>9.786384461848145</td><td>1.9374288758148415</td></tr> <tr><td>David Ortiz</td><td>8.31008626237298</td><td>1.8782460162637997</td></tr> <tr><td>Shin-Soo Choo</td><td>8.304866990857803</td><td>1.234302436122293</td></tr> <tr><td>Prince Fielder</td><td>7.912164591848597</td><td>2.1282685942999158</td></tr> <tr><td>Matt Holliday</td><td>6.878361178494023</td><td>2.455811881037437</td></tr> <tr><td>Freddie Freeman</td><td>6.809164596596346</td><td>2.7969661521294946</td></tr> </table><br/><br/> Historically, 2013 was a mediocre year for consistency. Mike Trout was the only player to crack the top 50 for either Index and Joey Votto was the only person to enter the top 50 three-year OBCI (2011-2013). No player had a top 50 five-year Consistency Index that included 2013. This goes with the idea that we are in an era dominated by pitching with a few elite hitters.</p> <br> <p>I would like to make a small prediction for the 2014 season. Let me preface this prediction by stating that I am a HUGE Mike Trout fan. I admire his combination of hitting, speed, and defense. After looking at the numbers, my guess is that he will have a down year. Now, a down year for Trout is still an above average year, but I don't think he will be in the top 3 (maybe even 5) for either Index in 2014. I would like to be wrong because I really like the guy, but the trend is that in a three year span a player generally has a down year. Let's hope everyone else does, too.</p> <br>https://thedadams.com/blog.html?post=2014-06Jun-15https://thedadams.com/blog.html?post=2014-06Jun-15Sun, 15 Jun 2014 12:00:00 GMTGiving Up Sports Betting For Now<p>The time has come; I have to stop pursuing sports betting, but only temporarily. I did have success. I actually found a strategy that allowed me to win over 70% of the spread bets I made. However, due to the lack of freely available statistics, it took me too long to compile the information each week. If the information was programmatically easy to come by, I could continue this endeavor.</p> <p>The information I need for basketball over/unders is "freely" available. That is, I can get the statistics I need everyday without having to sit down and do it myself. I wrote a few scripts and added a couple <code>launchd plists</code> to get the information I need. The relevant statistics are then sent to my phone via <a href="http://pushover.com" target="_blank">PushOver</a>. I can look at the match-ups at my leisure wherever I am. I won't be publishing my results until I have more time to devote to the decision making process.</p> <p>This was fun, and by no means am I done with sports betting. If you do not know, I am a graduate student studying mathematics. That is where I need to put my undivided attention at this time. Once my dissertation is finished and I figure out what I want to do with my life (Hint: it won't be sports betting), I will pick it back up recreationally.</p> <p>If you have been reading these entries, I thank you. If you would like to know more about what I tired, what didn't work, and what did work, please do not hesitate to contact me.</p>https://thedadams.com/blog.html?post=2013-12Dec-19https://thedadams.com/blog.html?post=2013-12Dec-19Thu, 19 Dec 2013 12:00:00 GMTThings Keep Changing<p>It seems that each week I find a betting strategy that might work going forward, and that week is a bad for that idea. This week is no different. I thought I found a way to narrow down which games to bet on, but I was wrong. I decided to do what I think was inevitable all along: mold trends and statistics.</p> <br> <p>I will ignore the tables I have been giving in the past and jump straight the the ideas I have. For spread betting, I noticed that my strategies worked very well when the home team was the underdog. I contribute this to the fact that bad teams play better at home, and teams that travel long distances (west coast team traveling to the east) tends to perform below their average. I don't always bet on the home team when they are an underdog, but it seems that my strategy balances well with Vegas' (and the public's) perception of these teams.</p> <br> <p>Over the past four weeks, when the home team is not favored (so the game is either a pick 'em or the home team is the strict underdog) one of my strategies has won 16 out of 22 bets (72.72%), including 4 out of 5 this week. I will continue to monitor this idea this week.</p> <br> <p>The over/under bets have proven to be very puzzling. I thought that I had a strong strategy, but it has recently been deemed insufficient for betting purposes. I mentioned this strategy last week, but the past two weeks have gone very badly. Overall, it has won 19 out of 37 bets (51.35%). It still has a chance to turn things around. In an effort to mold trends and statistics together, I will be keeping a close eye on a teams over/under streaks. That is, if a team has had a streak of at least 2 games where they were under the total, I will take that into consideration instead of blindly following the numbers. I will also do the same for teams that have had a streak of 3 games or more going over the total. Obviously there are certain things that don't fit this mold (a team that has gone over the total 3 weeks in a row playing a team that has gone under the total 3 weeks in a row), but I anticipate that these trends will allow me to be more successful with these bets.</p> <br> <p>Things are getting very complicated and I am keeping things closed for many reasons. However, I will be glad to share all of the things I have been tracking over the past several weeks at the end of the season. Hopefully I will have some successful and interesting results to share.</p> <br>https://thedadams.com/blog.html?post=2013-11Nov-12https://thedadams.com/blog.html?post=2013-11Nov-12Tue, 12 Nov 2013 12:00:00 GMTGood News and Bad News<p>As I computed numbers for this weeks' games, I knew it was going to be an interesting week. To start, there was only one game between teams that entered with winning records. In that game, one of the best quarterbacks in the NFL left that game with a potential <a href="http://espn.go.com/nfl/story/_/id/9929515/aaron-rodgers-green-bay-packers-miss-three-weeks" target="_blank">broken clavicle</a>. There were also coaches <a href="" target="_blank">collapsing</a> and two 21-point comebacks. There is some good news that came out of the week and I can't wait to share.</p> <br> <p>Even just looking at the numbers, I wasn't happy. I remember sending a text to someone saying, "If these numbers stay above 56%, I will start betting them next week." Let's just say I'm not making any bets this week. One positive thing is (this isn't the foreshadowed good news) I saw it coming. This means my eye can see when things are questionable which is a huge step forward for me personally. That's not why you're reading this; you care about the strategies and the numbers: <br> <div class="genclear"></div> <table border="1" style="float:left;margin-left:25%;margin-top:1em;margin-bottom:1em;"> <caption>Spread Strategies</caption> <tr><th>Strategy 1</th><td>5/13</td></tr> <tr><th>Strategy 2</th><td>6/12</td></tr> <tr><th>Strategy 3</th><td>8/13</td></tr> <tr><th>Strategy 4</th><td>5/11</td></tr> </table> <table border="1" style="float:left;margin-left:25%;margin-top:1em;margin-bottom:1em;"> <caption>O/U Strategies</caption> <tr><th>Strategy 1</th><td>2/13</td></tr> <tr><th>Strategy 2</th><td>9/13</td></tr> <tr><th>Strategy 3</th><td>4/13</td></tr> <tr><th>Strategy 4</th><td>9/13</td></tr> <tr><th>Strategy 5</th><td>5/12</td></tr> </table> <div class="genclear"></div> <br/> Strategy 1 went a combined 7 for 26; a winning percentage of 26.92%. This definitely counterbalances the great week Strategy 1 had <a href="http://blog.thedadams.com/blog.html?post=2013-10Oct-29">last week</a>. The good news is that this horrible week caused me to look more closely at the trends, and I found a couple things that I would like to share.</p> <br> <p>We start with the spread bets. Taking an average of Strategies 1 and 2, then only betting on games where the home team is the underdog seems to produce good results. Following this would have produced a winning percentage of 70.59% (12 out of 17) over the past 3 weeks. This past week when the general strategies did very poorly, this strategy still produced a respectable winning percentage of 57.14% (4 out of 7).</p> <br> <p>Now we move on to over/under bets. This strategy is slightly more complex, but such strategies are common in sports betting. If Strategy 1 and 3 agree and Strategy 2 is the opposite, then you place a bet using Strategy 1. In addition, if all three of these strategies imply that you should take the over, then bet the over. One should ignore all other bets. Betting this way would have produced a winning percentage of 61.53% (16 out of 26) over the past three weeks. Last week, this would have have won 2 out of 8 bets. Not good, but I will take the overall record.</p> <br> <p>I have also come up with a <a href="http://www.thesportsgeek.com/sports-betting/what-is-a-unit/" target="_blank">unit based betting strategy</a> that has proved to be successful. It is based on the difference between the Vegas and my line. For example, even though the above over/under strategy won only 2 out of 8 bets, this betting strategy would have produced a loss of only $90. Consistently betting $110 on every over/under would have produced a loss of $540. This has saved us from losing too much in a bad week, but it will also help us win more during a good week. Another strategy has produced a winning percentage of only 46.67%, but this betting strategy has actually produced a profit of $1,150 using a unit of $110. This comes from betting more on games that are "more likely" to win and less on the games that are more questionable.</p> <br> <p>I understand that this can get complicated as trends reveal themselves and strategies evolve. If you have any questions, or think something is unclear, please feel free to leave a comment or contact me on a social network of your choice - see the icons in the welcome pane.</p> <br>https://thedadams.com/blog.html?post=2013-11Nov-06https://thedadams.com/blog.html?post=2013-11Nov-06Wed, 06 Nov 2013 12:00:00 GMTWeek Two Trials Went Really Well<p>The second week of testing my strategies has made me a little worried. It went well - really well. Call me a pessimist, but the overwhelming success this week has make me question the validity of my strategies. The success may continue, however it is more likely that the strategies have an epic flaw that got lucky this week. This is why we test these things.</p> <br> <p>I won't waste any time; here are the winning percentages for each strategy: <div class="genclear"></div> <table border="1" style="float:left;margin-left:25%;margin-top:1em;margin-bottom:1em;"> <caption>Spread Strategies</caption> <tr><th>Strategy 1</th><td>9/12</td></tr> <tr><th>Strategy 2</th><td>4/13</td></tr> <tr><th>Strategy 3</th><td>5/13</td></tr> <tr><th>Strategy 4</th><td>4/12</td></tr> </table> <table border="1" style="float:left;margin-left:25%;margin-top:1em;margin-bottom:1em;"> <caption>O/U Strategies</caption> <tr><th>Strategy 1</th><td>8/12</td></tr> <tr><th>Strategy 2</th><td>5/12</td></tr> <tr><th>Strategy 3</th><td>9/13</td></tr> <tr><th>Strategy 4</th><td>6/13</td></tr> <tr><th>Strategy 5</th><td>6/10</td></tr> </table> <div class="genclear"></div> As you can see, Strategy 1, which is the strategy of interest, did very well in predicting the against-the-spread and over/under outcomes this week. A winning percentage of 70.8% in a week looks good now, but history shows such percentages are unsustainable. Combining this with the first weeks' results, Strategy 1 has won 34 out of 53 bets for a winning percentage of 64.15% - extremely good! Note that if a strategy gives the same exact number as Vegas, that line is not bet at all. That is the reason for the varying bets in each strategy.</p> <br> <p>I will continue to point out the flaw in the system; it requires one to bet on essentially every game. This is not ideal and I had an idea to fix this last week. However, that idea has proven extremely ineffective this week. Theoretically, a high winning percentage is great, but I am still uncomfortable with betting every game. I will continue to look for strategies to eliminate games and maintain high winning percentages. For this reason, I will track the "bad" strategies in hopes that they will provide valuable insight to which games to bet and/or which to leave out.</p> <br> <p>In closing I would like to mention that I am going to start experimenting with NBA handicapping. I have started transporting the strategies, but have had little success with the spread bets. It seems that there is too much variance for my strategy to work with the NBA. Therefore, I am restricting my experiments with the NBA to over/under bets only. Specializing will hopefully allow me to be more successful.</p> <br>https://thedadams.com/blog.html?post=2013-10Oct-29https://thedadams.com/blog.html?post=2013-10Oct-29Tue, 29 Oct 2013 12:00:00 GMT