Hosing my WiFi set up

I have been wanting to put shelves up in my office above my desk for some time. The problem has been that the ones that are sold at Lowe’s or Home Depot are not really what I wanted (too short) and I’m not a super handy guy with building stuff (that’s more my dad and brother) so I’ve just been putting it off. For an embarrassingly long time.

Last a couple of weekends ago my dad had volunteered to help me out in putting up some shelves.

On Saturday at 8:30 we started. All in all the process went really, really well. Only one extra trip to the hardware store (it’s usually about 3) and the shelves were nice and level.

Since I wanted the shelves above my desk we needed to move it, and all of the electronics that were on it, and plugged into the outlet behind it. This included a UPS / Battery backup that all of my electronics were plugged into.

We moved everything away from the wall, and then I moved it back. No. Big. Deal.

Now, the timing may have just been coincidental, but the next morning I needed to do some work for my job-y job from home. I took my laptop into my office (with the brand new shelves) and plugged it into the UPS.

I noticed the lights flicker and discovered that the WiFi router (my trusty AirPort Extreme) seem to have reset itself.

No big deal. I just rebooted and we were all good.

Later that day I plugged in my iMac and then stuff got real. The lights went out. I figured that the breaker tripped, but the sprinklers next to the breaker were on so I waded out through to the box and turned the breaker back on. Or so I thought. I came back in and the lights were still off.

At this point I freaked out because, well, that’s kind of what I do. I went back out and turned the breaker off and then back on. Lights are back.

OK, lets try this again. I plug the iMac back in and ... crap. Lights are off again.

Back to the breaker (at this point the sprinklers are off) so off and on the breaker went.

OK, one last time and ... mother f!

Somehow I was able to go from being able to have my UPS plugged in and everything being fine, to not.

OK. Swap out the UPS and put back the Surge Protectors. Everything powers on and we’re good.

Except we’re not. The light on my AirPort Extreme is suddenly not a solid green, but instead a flashing amber. I consult the internet and get a very unhelpful message

These are some typical reasons for the status light to flash amber:

The base station hasn't been set up, or it was reset and needs to be set up again. Use AirPort Utility to set up your base station.

A firmware update is available for the base station.

The base station is set up to use Back to My Mac, but Back to My Mac isn't working or the password is incorrect. If you've upgraded to macOS Mojave, you should remove the base station from your Back to My Mac network, because Mojave doesn't support Back to My Mac.

The base station can't connect to the Internet, such as when Internet service is down at your location, the base station can't acquire an IP address from your primary router, or the WAN Ethernet connection to your router isn't working.

The base station is set up to wirelessly extend the range of your network, but is too far away from the primary Wi-Fi base station.

If your base station is an AirPort Time Capsule, its internal hard disk is experiencing an issue that requires repair.

And suddenly my entire WiFi is down. And I am sad.

I tried a ton of things to get the AirPort Extreme Back, but nothing is working. I finally throw in the towel and decide to to use the WiFi access point from my Fios router.

This means that I have to update the WiFi on:

  • 3 iPhones
  • 2 iPads
  • 1 MacBook
  • 2 MacBookPros
  • 1 iMac
  • 2 Wemo Switches
  • 2 Raspberry Pi
  • 3 Apple TVs (2 4th Gen and 1 3rd Gen)
  • 1 WiFi connected Scale
  • 1 Ring Doorbell
  • 1 Ring Chime (connected to Ring Doorbell)

It also means that I need to plug my Netgear switch into my Fios router instead of the AirPort Extreme. No big deal, right? Except that it was because I forget that the port that the Cat5 cable is plugged into on a router is important.

I spent an embarrassingly long time trying to figure out why my Sonos and Hue Lights weren’t on my network.

Emily kept telling me to take a break and relax and that was, in that moment, the last thing I wanted to do.

I was able to get all of the iOS and MacOS devices connected back to the internet (via WiFi) and decided that I needed to forget the network and watch game 5 of the World Series.

By the end of the 7th we had the game off and were catching up on CW Comic Book shows.

It was a rough day. But I learned a couple of things:

  1. LAN Port 1 on the Fios Router is the right port
  2. Sometimes, you just need to take a step back and think instead of just react
  3. I have a crap ton of WiFi devices

I'm still working on trying to get the AirPort Extreme back to working so that I don't need to get a new WiFi router ( have I mentioned how awful the Fios one is? ).

New  Watch

New  Watch

The first week

I've been rocking a series 2 Apple Watch for about 18 months. I timed my purchase just right to not get a series 3 when it went on sale (🤦🏻‍♂️). When the series 4 was released I decided that I wanted to get one, but was a bit too slow (and tired) to stay up and order one at launch.

This meant that I didn't get my new Apple Watch until last Saturday (nearly5 weeks later). I wanted to write down my thoughts on the  Watch and what it's meant for me. I won't go into specs and details, just what I've found that I liked and didn't like.

The Good

Holy crap is it fast. I mean, like really fast. I've never had a watch that responded like this (before my series 2 I had a series 0).

It reacts when I want it to, so much so that I'm sometimes not prepared. It reminds me of the transition from Touch ID Gen 1 to Touch ID Gen 2. I really appreciate how fast everything comes up. When I start an activity, it’s there (no more waiting like on Series 2). When I want to pair with my AirPods … it’s there and ready to go.

I also really like how much thinner it is and the increase in size. At first I thought it was ‘monstrous’ but now I’m trying to figure out how I ever lived with 2 fewer millimeters.

I also decided to get the Cellular Version just in case. It was a bit more expensive, and I probably won’t end up using it past the free trial I got, but it’s nice to know that I can have it if I need it. I haven’t had a chance to use it (yet) but hopefully I’ll get a chance here soon.

The Bad

So far, nothing has stuck me as being ‘bad’. It’s the first Apple Watch I’ve had that’s really exceeded my expectations in terms of performance and sheer joy that I get out of using it.

Conclusion

Overall I love the Series 4  Watch. It doesn’t do anything different than the Series 2 that I had (except I can make phone calls without my phone if I need to) but oh my is it fast! If someone is on a Series 2 and is wondering if jumping to the Series 4 is worth it … it totally is.

Moving my Pycharm Directory or How I spent my Saturday after jacking up my PyCharm environment

Every once in a while I get a wild hair and decide that I need to ‘clean up’ my directories. This never ends well and I almost always mess up something, but I still do it.

Why? I’m not sure, except that I forget that I’ll screw it up. 🤦‍♂️

Anyway, on a Saturday morning when I had nothing but time I decided that I’d move my PyCharm directory from /Users/ryan/PyCharm to /Users/ryan/Documents/PyCharm for no other reason than because.

I proceeded to use the command line to move the folder

mv /Users/ryan/PyCharm/ /Users/ryan/Documents/PyCharm/

Nothing too big, right. Just a simple file movement.

Not so much. I then tried to open a project in PyCharm and it promptly freaked out. Since I use virtual environments for my Python Project AND they tend to have paths that reference where they exist, suddenly ALL of my virtual environments were kind of just gone.

Whoops!

OK. No big deal. I just undid my move

mv /Users/ryan/Documents/PyCharm/ /Users/ryan/PyCharm

That should fix me up, right?

Well, mostly. I had to re-register the virtual environments and reinstall all of the packages in my projects (mostly not a big deal with PyCharm) but holy crap it was scary. I thought I had hosed my entire set of projects (not that I have anything that’s critical … but still).

Anyway, this is mostly a note to myself.

The next time you get a wild hair to move stuff around, just keep it where it is. There’s no reason for it (unless there is).

But seriously, ask yourself first, “If I don’t move this what will happen?” If the answer is anything less than “Something awful” go watch a baseball game, or go to the pool, or write some code. Don’t mess with your environment unless you really want to spend a couple of hours unmasking it up!

Basketball Conference Finals OR How the actions of one person can fire up the other team and lead them to win

Last weekend I watched both games 7 of the NBA conference finals. I have no particular affinity for the NBA (I prefer the Madness in March associated with the NCAA) but I figured with 2 game 7s it might be interesting to watch. I was not wrong.

On Sunday night Cleveland was hosted by Boston in a rematch of a game 7 from 2010. One of only 2 game 7s that LeBron James had lost.

This game had all the makings of what you would want a game 7 to be. A young upstart rookie (Tatum) with something to prove. A veteran (James), also with something to prove.

What really stuck our for me, for this game, was what happened at the 6:45 mark in the fourth quarter. Tatum dunked on LeBron (posterized is the term ESPN used) to put the score at 71-69 Cleveland. What happened next though, I think, is why the Cavs won the game.

Tatum proceeded to bump his chest up against the back of LeBron’s shoulder, like a small child might run up to a big kid when he did something amazing to be like, “Look at me ... I’m a big kid too!”

LeBron just stood there and looked at Tatum with incredulity. The announcers seemed to enjoy the specticle more than they should have. But LeBron just stood there, the Boston crowd cheering wildly at what their young rookie had just done. To dunk over LeBron, arguably one of the greatest, in a game 7? This is the thing that legends are made of.

But while the crowd and the announcers saw James look like he was a mere mortal ... what I saw was the game turning around. The look on James’ face wasn’t one of ‘damn ... that kid just dunked on me. It was, “Damn ... now I’m going to get mine and I have a punk to show how this game is really played.”

From that point on the Cavs outscored the Celtics 16-10 ... not a huge margin, but a margin enough to win. What the score doesn’t show is the look of determination on LeBron’s face as he carried his team to the NBA Finals. Not because he scored all 16 points (he only scored 7) but because he checked his ego at the door and worked to make his team better than the other team. In short, he was the better team mate than Tatum in those last minutes and that’s why the Cavs are in the Finals and the Celtics aren’t.

Tatum’s reaction to dunking on LeBron is understandable. Hell, if I had done something like that when I was his age, I would have pumped my chest up too.

But it the patience and reservedness (that perhaps come with age) that make you a great player or team member. You don’t really want to rile up a great player because that’s the only reason they need to whoop your butt.

Perhaps Tatum will learn this lesson. Perhaps he won’t.

Because you see, acting like a a little kid isn’t just the right of a rookie.

James Harden pulled some immature shenanigans too in his team’s loss to the Warriors. At one point, with the Rockets up 59-53 with 6:13 in the 3rd, Harden when for a layup and was knocked down ... accidentally in my opinion.

When a player from the Warriors tried to help him up he just sat there and then flailed his arms until one of his teammates can to help him up. Big man there Harden.

By the end of the 3rd quarter the Rockets were down 76-69. By the end of the game they’ve lost 101-92.

You see, when it comes down to it a great teammate will do what’s best for the team, and not do what’s best for their ego. It doesn’t seem to matter, old or young, rookie or veteran, not having the ability to control your emotions at key points in a game (or in life) can be more costly than you realize.

Sometimes it’s game 7 of the NBA Conference finals, sometimes it’s just a pick up game with some friends at the park, but in either case, being a good teammate requires checking your ego at the door and working to be the best team mate you can be, not being the best player on the court.

To put it another way, being the smartest person in the room doesn’t make you the most influential person in the room, and when it comes down to moving ahead, being influential trumps being smart.

Using Drafts 5 at Work

I have many meetings that I go to in any given day. One of the things that I’d been struggling with was being able to keep track of what I needed to do after a meeting and/or documenting certain types of meetings more effectively.

I have been using a Workflow I created a couple of years ago to get the pertinent details of a meeting into Drafts. I spoke about updating that workflow to incorporate drafts 5 here.

Once I was able to get the information into Drafts 5 a new opportunity arose. I was able to run a Workflow in Drafts!

I decided that getting the information into Drafts was great, but I needed a good way to get it out.

There were two sections in the Draft that I decided I could leverage to help:

  1. Actions
  2. Notes

Broadly speaking there are 3 types of meetings I go to:

  1. Daily Standup aka Scrum
  2. One-on-One with direct reports or my manager
  3. General Meetings

Categorizing the meetings helped me to create Draft Actions that run Workflows for each meeting type.

Scrum

This workflow runs through the Actions of the Draft and adds each one to OmniFocus in a Project called Scrum with a Tag of Work. The due date set for these tasks is noon of the same day. My goal is to have the items that come from Scrum totally processed by noon of that day and for 80% of them I can. Some actions are more involved, but having them in OmniFocus helps me to make sure that they get taken care of.

It also creates a calendar meeting for the next business day with my Scrum template and lets me know which team member will start that next day.

One-on-One

This workflow runs similarly to the Scrum workflow. It adds the Action items to OmniFocus with a due date of noon the same day, tagged with Work and in the One-on-One Project.

Instead of creating a calendar meeting for the next business day at 8:30 it appends items from the Notes section to a Dropbox file. The Dropbox path is predefined, but the name of the file matches the name of the person I met with (luckily I don’t have 2 Tom’s reporting to me).

General Meetings

This is the simplest workflow. It adds all of the items under actions to OmniFocus with a due date of noon, project of Meeting Follow Up and Tag of Work.

After the Actions are run from Drafts the notes are archived in Drafts.

I’m toying with the idea of archiving the notes from these meetings into Dropbox, but I’m not sure that it gets me anything ... so I haven’t really looked at it too deeply.

Workflow links

The links for each of the workflows can be found here:

Parse Scrum Notes

Parse One-on-One Notes

Parse Meeting Notes

Setting up Jupyter Notebook on my Linode

A Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.

Uses include:

  1. data cleaning and transformation
  2. numerical simulation
  3. statistical modeling
  4. data visualization
  5. machine learning
  6. and other stuff

I’ve been interested in how to set up a Jupyter Notebook on my Linode server for a while, but kept running into a roadblock (either mental or technical I’m not really sure).

Then I came across this ‘sweet’ solution to get them set up athttp://blog.lerner.co.il/five-minute-guide-setting-jupyter-notebook-server/

My main issue was what I needed to to do keep the Jupyter Notebook running once I disconnected from command line. The solution above gave me what I needed to solve that problem

nohup jupyter notebook

nohup allows you to disconnect from the terminal but keeps the command running in the background (which is exactly what I wanted).

The next thing I wanted to do was to have the jupyter notebook server run from a directory that wasn’t my home directory.

To do this was way easier than I thought. You just run nohup jupyter notebook from the directory you want to run it from.

The last thing to do was to make sure that the notebook would start up with a server reboot. For that I wrote a shell script

# change to correct directory
cd /home/ryan/jupyter

nohup jupyter notebook &> /home/ryan/output.log

The last command is a slight modification of the line from above. I really wanted the output to get directed to a file that wasn’t in the directory that the Jupyter notebook would be running from. Not any reason (that I know of anyway) … I just didn’t like the nohup.out file in the working directory.

Anyway, I now have a running Jupyter Notebook at http://python.ryancheley.com:88881

  1. I’d like to update this to be running from a port other than 8888 AND I’d like to have it on SSL, but one thing at a time! ↩︎

A Summary of Dale Carnegie’s “How to Win Friends and Influence People”

This is mostly for me to write down my notes and thoughts about the book “How to Win Friends and Influence People.”

I’ve noted below the summary from the end of each section below (so I don’t forget what they were).

The first three sections seemed to speak to my modern sensibilities the most (keep in mind this book was published in 1936 ... the version I read was revised in 1981).

I have the summaries below, for reference, but I wanted to have my own take on each.

Fundamental Techniques in Handling People

This seems to be a long way of saying the “Use the Golden Rule” over and over again. The three points are:

  1. Don’t criticize, condemn or complain
  2. Give honest and sincere appreciation
  3. Arouse in the other person an eager want

Six ways to make people like you

The ‘rules’ presented here are also useful for making small talk at parties (or other gatherings). I find that talking about myself with a total stranger is about the hardest thing I can do. I try to engage with people at parties and have what I hope are interesting questions to ask should I need to. Stuff I tend to avoid:

  • What do you do for a living?
  • Where do you work?
  • Sports
  • Politics

Stuff I try to focus on:

  • How do you know the host / acquaintance we may have in common
  • What’s the most interesting problem you’ve solved or are working to solve in the last week
  • Have you been on a vacation recently? What was your favorite part about it? (With this one I don’t let people off the hook with, ‘being away from work’ ... I try to find something that they really found enjoyable and interesting

These talking points are usually a pretty good starting point. Sometimes when I’m introduced to a person and the person introduces them as their job, i.e. This is Sally Jones, she’s a Doctor at the local Hospital, I’ll use that to parlay away from something work focused (what kind of doctor are you) to something more person focused, why did you want to become a doctor? Where did you go to Medical School? Did you know you always wanted to be a doctor? I try to focus on getting to know them better and have them talk about themselves.

The tips from the book support my intuition when meeting new people. They are:

  1. Become genuinely interested in other people
  2. Smile
  3. Remember that a person’s name is to that person the sweetest and most important sound in any language
  4. Be a good listener. Encourage to talk about themselves
  5. Talk in terms of the other person’s interest
  6. Make the other person feel important - and do it sincerely

How to Win People to your way of thinking

This section provided the most useful and helpful information (for me anyway!). It really leads to how to have better influence (than winning friends).

One of the problems I’ve suffered from throughout my life is the need to be right about a thing. This section has concrete tips and examples of how to not be the smartest person in the room, but working on being the most influential person in the room.

My favorite is the first one, which I’ll paraphrase to be “The only way to win an argument is to avoid it!” I’d never thought about trying to avoid arguments, only how to win them once I was in them. The idea reminds me a bit of War Games. At the end, Joshua, the super computer that is trying to figure out how to win a Nuclear War with the USSR, concedes that the only way to win is to not play at all. Just like an argument.

The other piece that really struck me was get the other person to say ‘Yes’. This is kind of sales-y and could be smarmy if used with a subtext of insincerity, but I think that the examples given in the book, and using it in the context of trying to win friends AND influence people it can go a long way.

The tips from this section of the book are:

  1. The only way to get the best of an argument is to avoid it
  2. Show respect for the other person’s opinions. Never say “You’re wrong”
  3. If you are wrong, admit it quickly and emphatically
  4. Begin in a friendly way
  5. Get the other person saying “yes, yes” immediately
  6. Let the other person do a great deal of the talking
  7. Let the other person feel that the idea is his or hers
  8. Try honestly to see things from the other persons perspective
  9. BE sympathetic with the other persons ideas and desires
  10. Appeal to the nobler motives
  11. Dramatize your ideas
  12. throw down a challenge

Be a Leader: How to change people without giving offense or arousing resentment

This section has the best points, but the stories were very contrived. Again, this goes to how to win influence more than winning friends. Some of the items are a bit too 1930s for my taste (numbers 2, 3, and 6 in particular seem overly outdated). But overall, they are good ideas to work towards.

The tips are:

  1. Begin with praise and honest appreciation
  2. Call attention to the person’s mistake indirectly
  3. Talk about your own mistakes before criticizing the other person
  4. Ask questions instead of giving direct orders
  5. Let the other person save face
  6. Praise the slightest improvement and praise every improvement. Be “hearty in your approbation and lavish in your praise”
  7. Give the other person a fine reputation to live up to
  8. Use encouragement. make the fault seem easy to correct
  9. Make the other person gabby about doing the thing you suggest

Overall I’m really glad that I read this book and glad that my CHIME mentor Tim Gibbs recommended it to me.

I’ve been actively working to include these ideas into my work and home life and have found some surprising benefits. It’s also helping to make me a little less stressed out.

If you’re looking for a bit of help in trying to be a better influencer in your organization, or your personal life, this book is well worth the read.

Updating my meeting Workflow for Drafts 5

Drafts is a productivity app created by Greg Pierce (\@AgileTortoise).

I’ve loved and used Drafts 4 every day for the last several years. I loved it so much I even contributed to the Tip Jar Greg had in the app. Seriously, it’s an amazing app. If you haven’t downloaded it already you totally should.

Recently, Greg released Drafts 5. With this new version comes a new Business Model as well. Instead of a single pay (and hope people ‘tip’ you) he’s converted to a subscription model.

I signed up for the free week and didn’t have a real opportunity to use it before my free week was converted into a pay week but I’ve no regrets. I like what Greg does and want him to keep updating his app so that I can get the benefits of it once I have a real chance to dive in.

Part of the reason I wasn’t able to really use the new version is the way that I primarily use Drafts. I have a WorkFlow that takes a meeting on my work calendar and allows me to take notes about that meetings.

It’s one of the most useful productivity tools I have during my morning standup meetings with my team, and it’s useful for the other (sometimes endless) meetings that I go to.

With the release of Drafts 5 I was not longer able to use both Drafts 5 AND my workflow, so I needed to update my workflow.

With Drafts 4 it was just one of the built in Apps. Because Drafts 5 limits some of the functionality unless you have the PRO version I don’t think that Workflow will be updated to include Drafts 5 like it did Drafts 4.

Once I realized that AND since I’m paying for the app I figured I’d need to update my Workflow instead of waiting and hoping that Workflow would be updated to include Drafts 5.

In order to make the update I had to look for URL Scheme for Drafts 5 ... but I couldn’t really find one. I assumed that Drafts 5 URL Scheme would be the same as Drafts 4 (I was right) and made various attempts at getting a copy of the Workflow to work with Drafts 5.

This is the section of the workflow that needs to be updated:

workflow to update

Since Drafts 5 isn’t included in the Built in Apps I was going to need to pass a URL and open the app.

This would require 3 separate steps in Workflow

  1. Convert Text into URL Encoded string
  2. Prepend the URL Scheme for creating a new draft to the URL Encoded String
  3. Open the URL

updated workflow

This basically means that 1 step is now replaced with 3 ... but hey, that’s the price of progress must be paid!

Both the Drafts 4 and Drafts 5 versions of these workflows are available.

If you enjoy them, hit me up in the comments or let me know on Twitter \@ryancheley!

OmniFocus 3!

The OmniGroup posted on their blog the other day that they have a ship date for OmniFocus 3 … May 30.

To say that I’m excited is a bit of an understatement. I’ve been a loyal OmniFocus user for about 5 years now, and though I have declared OmniFocus bankruptcy once, I still believe it’s a super useful App and I could not imagine life without it.

OmniFocus3 will bring with it tags which is something I’ve really wanted and struggled without in using OmniFocus2. Sometimes things don’t just fall into pure GTD contexts and tags appear to be a recognition of that.

The initial release on May 30 is iOS only. The Mac Version is set to be released in 2018 but no firm date has been announced.

Only 25 days until upgrade day 😊

Making it easy to ssh into a remote server

Logging into a remote server is a drag. Needing to remember the password (or get it from 1Password); needing to remember the IP address of the remote server. Ugh.

It’d be so much easier if I could just

ssh username@servername

and get into the server.

And it turns out, you can. You just need to do two simple things.

Simple thing the first: Update the hosts file on your local computer to map the IP address to a memorable name.

The hosts file is located at /etc/hosts (at least on *nix based systems).

Go to the hosts file in your favorite editor … my current favorite editor for simple stuff like this is vim.

Once there, add the IP address you don’t want to have to remember, and then a name that you will remember. For example:

67.176.220.115    easytoremembername

One thing to keep in mind, you’ll already have some entries in this file. Don’t mess with them. Leave them there. Seriously … it’ll be better for everyone if you do.

Simple thing the second: Generate a public-private key and share the public key with the remote server

From the terminal run the command ssh-keygen -t rsa. This will generate a public and private key. You will be asked for a location to save the keys to. The default (on MacOS) is /Users/username/.ssh/id_rsa. I tend to accept the default (no reason not to) and leave the passphrase blank (this means you won’t have to enter a password which is what we’re looking for in the first place!)

Next, we copy the public key to the host(s) you want to access using the command

ssh-copy-id <username>@<hostname>

for example:

ssh-copy-id pi@rpicamera

The first time you do this you will get a message asking you if you’re sure you want to do this. Type in yes and you’re good to go.

One thing to note, doing this updates the file known_hosts. If, for some reason, the server you are ssh-ing to needs to be rebuilt (i.e. you have to keep destroying your Digital Ocean Ubuntu server because you can’t get the static files to be served properly for your Django project) then you need to go to the known_hosts file and remove the entry for that known host.

When you do that you’ll be asked about the identity of the server (again). Just say yes and you’re good to go.

If you forget that step then when you try to ssh into the server you get a nasty looking error message saying that the server identities don’t match and you can’t proceed.


Page 17 / 24