Saturday, August 24, 2019

Hacked Together Like a Dream

Kids just trying to make a living are always the good guys. - Papergirls
On of my fun little side projects, Weather.Next, it sends a weather forecast email if the temperate in the next seven days meets a criteria you configure such as "raining" or "high above 100 degrees." I built it years ago and every once in a while do a security update to a library, but mostly it just runs fine - but then I decided it would be cool if the email told you why the message was triggered.
I thought it would be easy, but uhh, the way I designed the code is that the when the trigger happens the trigger thread makes a web request to pull down the email content from a JSP page. So like, it's in two totally separate execution threads without any good way to pass a large data block. I could theoretically post all the trigger reasons into the page to have it echo out... but that's kind of a gross hack. So instead, I did a different gross hack that I love to hate.
I stored all the trigger reasons into memcache and then pass a triggerId in the URL parameters so the separate page load can read from the memcache and populate. Guess what? It totally worked. Guess what? I can think of all the reasons it won't work (GAE doesn't have a distributed memcache, GAE makes no guarantee anything will even store into memcache). I could solve it, but actually writing into a persistent storage, but why?
Still, now I assume this problem is solved FOREVER. When I do these things, I always think about the many MANY enterprise web apps where engineers did similar work arounds and wonder how the internet even works at all.

Monday, August 12, 2019

Public Speaking Takes Practices, Lots

I’m dead to everyone unless I try to become what I may be. - Paul Atreides
When you ask Americans what is their top fear, the #1 answer is "Public Speaking," outpacing such other popular fears as death. If you're an extrovert you've got a small advantage on not being terrified of public speaking, but not a very big one. Almost everyone has an innate fear of doing a big prepared or impromptu presentation in front of an audience. There is only one surefire way to work past this fear: desensitization from repetition. You need to present as frequently as you can as often as you can. Let me suggest ways to make it easier.
If becoming better at public presentations is your goal, tell your manager and get some buy in they can help you. Next look for every opportunity you can do presentations to others. Start presenting in small meetings of three to five people. This should be your immediate team you're close with. When this type of audience becomes no big deal, ask those people to invite one of their friends/colleagues that you don't know, because strangers in your audience raises the anxiety and that's the next step to work through.
If you're at all nervous about a presentation, always do a dry-run practicing the whole thing by yourself - video yourself doing it and suffer through watching yourself and remember that you are your own worst critic. If you're presenting to a small subteam, you can do the dry run by yourself or with a single coach to make sure you understand the pacing and content of your presentation. Eventually you'll be comfortable and stop doing the dry run when presenting to a team of five coworkers. When I'm presenting to my whole company or an important client I still do a dry run by myself and follow it with a dry-run to a colleague. If I'm presenting at a conference or a webinar I'll do a personal dry-run and then present multiple times to colleagues to refine the presentation. Ask for feedback from your audience. "I'm working on improving my presentations. What did I do well and what can I improve on?"
You are probably presenting with a slide deck and you can look up a lot of material out there on how to create the most compelling supporting decks, but be warned, most of those articles focus on creating evocative TED-talk style supporting decks and you're probably presenting status at a weekly staff meeting or something much simpler that doesn't require you spend time browsing stock photography websites for the perfect stunning background image. You don't need every little presentation you give to be a mind-blowing work of art; you're just trying to get your point across. What is your objective? Persuade. Present Information. Know your goal.
For formatting grab your company's template (if there is one) and look at your CEO's and marketing department's presentations for guidance. My favorite rule of thumb is the 10/20/30. Each slide should have fewer than 10 words, in at least 20pt font, with no more than 30 slides. Assume each slide takes about a minute present, that's a 30m presentation. You want your audience listening to you, not reading the screen. Lots of words is a bad thing and you can follow up your presentation with a link to a wiki page or printout for in-depth review.
And honestly, that's it. I used to FEAR public speaking and now it doesn't phase me. I am *NOT* one of those people who looks forward to doing it, but presenting to a room full of people is just another task that I am willing to do and worked hard to get good at so I could get my job done.
There are also organizations that are designed to help you get better at public speaking and getting desensitized. So if presenting to a small group of people you know is too much, go check out Toastmasters and you can present to strangers! But be warned, Toastmasters is going to prepare you to present to a large room of people - not that basic staff meeting I was talking about.
In summary:
  • You need to present as often as possible to desensitize yourself through repetition
  • Practice your presentations before you make them. Continue to practice that same presentation until practicing doesn't make you less nervous (you can't practice all the anxiety away)
  • Not every presentation is a TED Talk - don't sweat making it amazing, just be competent (PS, this does not apply if you are actually giving TED talk or something similar, try and make those amazing)

Wednesday, July 24, 2019

Tracking the UV Exposure

It’s very freeing to have low standards. - Caroline Haskins
In my quest for the quantified self I go the La Roche-Posay UV Tracker and my basic summary is, don't get it. I'm sad to say that this product is a dud for a reasons. Many years ago I had this great app on my phone (made by a sunscreen company) that would ask for your skin type and then you start a "sun session" and it would get the UV index for your location and remind you periodically to reapply sunscreen. Simple. Awesome. Haven't found one since. I am sort of wondering if I could recreate it as a Siri Shortcut... but for now.
This itty bitty tracker can be worn anywhere with sun exposure and I wear mine on my Apple Watch wrist band. Everywhere I have tried to wear it (shirt color, watch band, hand brim) has had it slip off at one time or another. I'm certain I'm going to lose it one of these days. I have lost it for days at a time only to find it in a kid's bed or the floor of the car.
The device syncs data over NFC (not Bluetooth LE) so that means the phone doesn't get any updates unless you launch the app hold the phone up to the device and wait a few seconds. The App sends a push notification every couple of hours, "you should probably sync data again." It's incredibly inconvenient and really needs to be like all my other smart trackers that just magically send data to my phone so my phone can hit me with useful alerts.
The app itself just tracks exposure and doesn't have any smarts to remind you to reapply sunscreen or do anything fancy. So I just get to see that I've been exposed to "242%" of my daily allowance, but there is nothing to let me know if that is okay because I was wearing SPF15 most of the day or not.
Anyway, it's silly and I don't really see any market for this thing other than silly people like me.

Friday, July 12, 2019

Do You Have a Brag Folder?

The notion of a pure meritocracy is easy to believe in, to the point of delusion, when you're on the winning side. - Nancy Updike
You’ve probably accomplished lots over the past year and received praise from clients, coworkers, and management. You are also probably on an annual (or twice a year) review and bonus cycle. You and your manager are unlikely to remember everything you did since your last performance review, especially if your manager has changed. It’s worth keep a folder tracking all these things so you’re prepared for your self-evaluation and ready to help out your manager do their review. Keeping track of your accomplishments in a Brag Folder is good for everyone.
I first encountered a brag file when I had employees who came from one of the giant consultant companies. Their managers would have 50+ reports and so the culture made it the employee’s responsibility to demonstrate her performance and achievements to the manager and there was no expectation the manager paid any attention to employee performance throughout the year. When performance reviews came up for me and those few of employees sent an email saying, “I know performance reviews are coming up and I think this will be helpful in evaluating me” including a zip file of their brag folder, as a manager, it was amazingly helpful. What was in their files?
The Summary: Your career is a narrative. Each 6-12 months is a chapter. What was the plot of this chapter? What one thing did you improve on the most that you can tie into your activities and accomplishments? Did you up your game in client management, project management, software development, company contribution? That’s great for the summary to say it: Over the past six months I choose to focus on understand privacy and security. By taking online courses and making updates to our modules, I expanded my security expertise and am ready to help guide others.
Projects: This is pretty straight forward, but what projects did you work on? How did you personally contributed to those projects? Did your work make any impacts on Key Business Indicators (KPIs) or other measurable metrics?
Fuzzy Stuff: Companies like to see you invest in your team and your company. Did you help plan or attend social activities? Did you provide extra coverage so teammates could take time to do training, attend to personal obligations, or go on vacation? Did you refer an employee or help with interviews? List it, that’s great to show you’re a team player who benefits the company outside your day-to-day responsibilities.
Outside of Work: Did you go to networking events, have a blog, or do personal software work? If you can tie that into being a better employee, make sure to list it.
Recognition: Did you receive an email, phone call, slack from a client, coworker, or management recognizing a job well done or above and beyond performance? Save that exact document and include it.
As a manager (and employee) I’ve found receiving (and sending) these documents great. I’ve never been annoyed by an employee who sent it or had a manager tell me not to. Even if you feel your manager won’t be receptive to it you can still keep it to remind yourself at review time and if your manager changes on you the new one is going to be very receptive to getting it.

Tuesday, June 18, 2019

Time Tracking is Terrible: Do It Anyway

The best advice you get in life hurts like hell at the time. - Merlin Mann
I've been tracking my work time for the past 20 years. Here is the deal: time tracking is terrible, there is no good time tracking product or system that can make it not terrible, and you just need to bite the bullet and track your time because it's valuable to do it.
Are you resistant to time tracking? Yeah, me too. I worked at a big consulting company when the company implemented time tracking and we had the standard employee complaint that it was terrible. We used a custom-built in-house solution and it was awful. You know what? I tracked my time. I read the reports at the end of the week and month and I enjoyed what I got out of it. I have tracked my time ever since then, even when my company hasn't asked me to. I have run large scale professional services groups at two companies and At both I implemented time tracking on the team and people tracked their time. Did my employees hate tracking their time? Yes, but not as much as they might have. Did they do it? Yes.
I learned to love time tracking so much, I wrote my own time tracking program that scratched my exact itch. I've tracked time in MS Project Central, Journyx, Salesforce, and Harvest and I haven't enjoyed tracking time in any of them. Yet, I knew as an employee my manager needed the data and as a manager it was extremely useful to review the data.
Here are my basic time tracking principals:
  • All time tracking software is terrible. Don't seek a better piece of software, because you won't like any of them. Swallow the pill and figure out the best workflow for what you have. Create tips and tricks on tour wiki and encourage employees to share.
  • People can't remember what they did. Ideally, every 15m, track what you worked on. If you can automate, make your time tracking program pop open every 15m and annoy you into tracking your time. If you must, track at the end of the day by looking at your calendar, emails, and code checkins but don't wait more than that. You have no hope of remembering at the end of the week what you did.
  • People can't track more than 5 things, maybe 10? Managers LOVE granular data and have a desire to ask employees to track dozens of tasks with a grid of client & activity (please say how much time you spent on these 50 tasks for each of your 20 clients). It's not possible and only provides flawed data and wastes employee time. Is you manager asking you to do this? Share this article and let them know they are going to get flawed data and employees are going waste time tracking time. Make the time tracking data as chunky as possible. What client? Is it pre-sale, launch, maintenance. DONE. Don’t track All Hands meeting, versus staff meeting, versus department meeting—they are all just internal meetings.
  • Track what you want to change. Maybe this quarter you have a Key Performance Indicator (KPI) to reduce time spent on a task like "Client Upgrades." That's great! Time track that specific activity for a quarter or two to baseline and show improvement, but the moment you're done, eliminate it as a separate item. Why? Because people can't track more than 5 things, maybe 10.
So get going. Track what you're doing. Make graphs. Make things more efficient. Time tracking is terrible, but if you do it right, you should get value out of it without it needing to destroy you.

Sunday, June 2, 2019

WWDC and Work Carry

I'm not attending WWDC as an attendee this year, but I am heading down for a couple of events and put together my travel bag. This is the same bag I take on vacation, to the office, etc, and pretty much my daily work carry for getting things done. It is light and awesome.

MOSISO Laptop Shoulder Bag

I struggled a long time to find this bag and it's just barely what I want. I wanted the smallest possible bag capable for carrying my iPad Pro 12.9" along with the Apple Magic Keyboard with a Studio Neat Canopy Case. This bag is just the right size to fit the iPad Pro, but is a little too small to care the keyboard fully within one of the zippered pockets. I haven't had an issue yet where the keyboard falls out or is snatched out by a ne'er-do-well, but it seems like it will happen. I also wish the clips attached to the side so it hung the long way rather than horizontal, but overall, it meets my needs and I am happy.

iPad Pro 12.9"

This is my main computer these days and I love the screen size, power, the apps, the pencil, and the cellular connection. I don't pay for cellular since I'm around WiFi the majority of time, but it's neat to be able to buy a day or a month pass from Verizon or Sprint if I need one (which is rare). I use the Ztotop Case which is inexpensive, but feels nice and uses the magnets to attach to the iPad Pro. I really don't like cases that have the keyboard built in, because I use my iPad a lot to just be hanging out and reading and there is no need to feel the bulk of a keyboard in that situation. The Apple Pencil attaches magnetically to the iPad and hangs out just fine with the case on. When I put the iPad my MOSISO bag, I do take the pencil off and put it in the side pouch. While the Apple Pencil can fit in the case still attached, I usually find the pencil has detached so I figure there is no point.
For those time I do want a keyboard, I want to have a full size keyboard no slightly smaller portable version. So I use the Apple Magic Keyboard contained in a Studio Neat Canopy case. When I'm using the iPad Pro on the go the Canopy Case works perfectly to hold it up and when I'm at home working on my more ergonomic environment, I have the keyboard on my keyboard tray and the iPad sitting on my desk. Works well in both scenarios.

iPhone XS Max

Part of the reason I rarely pay for a cellular connection for my iPad Pro is that this monster phone can do everything the iPad can do - but just a little less conveniently. So there has to be a pretty big reason for me to feel like if I'm doing something that requires internet and I don't have WiFi, I really need to pay for the big guy. I am forever grandfathered into AT&T's Unlimited Plan that I got with my iPhone 2G. AT&T keeps trying to tell me that newer unlimited plans are a better value, and sometimes I review the latest plans, but they are not.
I keep my iPhone inside a Mujjo leather wallet case and it's amazing. My wife convinced me many years ago to move to a wallet-less lifestyle and I have never looked back. I carry a credit card and my driver's license in the case (and a $20 bill tucked inside), but that it is. Restricting myself to this has felt liberating.
I have AirPods with me always, and after one of my kids hid them from me for a week, I also put them into an AhaStyle case with a Trackr on it. I'm excited by the rumors that Apple's "Find My" program might start supporting Trackr's as well!

The Cables and Stuff

These all fit neatly into the MOSISO laptop bag and head with me everywhere.
I carry the Belkin Valet Charger for my external battery because it does the job, but more importantly, it has an Apple Watch charger built into it. That means I don't need to care an extra Apple Watch cable for charging purposes.
The Anker 2-port charger is good to charge two items typically that is battery + iPad with the Apple Watch on the battery and the iPhone plugged into the battery. It's not enough juice to keep the iPad powered while I'm actually using it, but it works fine to charge it overnight and since the iPad lasts all day that is more than enough for me.
I have an Anker Powerline II which can connect to Lightening, USB Type-C, or Micro-USB. Mostly there to charger the iPad. I then use a random Micro USB cable to charge my battery with the Anker lightning charging cable the iPhone from the battery.
I also have a Nomad Carabiner clipped onto the bag because having an extra USB-A to lightning can be handy.

Friday, May 24, 2019

Downloading Video on the iPad

So my eldest son really, REALLY, wanted me to get the Transformers Combiner Wars Trilogy onto the Apple TV so he could watch it at home. I knew that it was available for streaming on Rooster Teeth. So here was the challenge, would I be able to get a copy of the video using only my iPad? Answer: Ahhhhh yeah.
First things first, after going to the page I needed to get the URL of the video stream. Safari for iOS won't do that for me, but I was able to use MIHTool as a developer browser for iOS to pull down the rendered HTML source.
I pulled the HTML source over to Writemator so I could full text search through for the stream to find the m3u8 URL in the source. I fired up iSH and installed youtube-dl. Sure enough, I got pull down the source from youtube-dl.
After it downloaded, I was able to use the Files app with FileBrowser to toss it over onto the Drobo via SMB and finally using Screens back to my macOS server I added the file into iTunes.
BAM!