The Dangling Pointer

Sh*t my brain says and forgets about

My Attention So Far

In the recent past I blogged about my trials and tribulations with my experiences with ADHD working at Automattic.  I figured it was time to give a follow up on how things are going!

Back in October last year I started on a medication called Vyvanse to help me cope with the problems that ADHD had been presenting.  My ultimate goal with the medication trial was to keep it just that – a trial.  I’ve lived with the spastic brain patterns all my life and I just wanted a few months of clarity so I knew what to work towards.  Late February, I decided to take myself off the medication.

The first thing I realized when I was on Vyvanse is that my eating patterns got all screwed up.  I started losing weight which I felt was a great side-effect since I was almost at my heaviest ever prior to starting the medication.  It gave me the jump start I needed to drop the weight.  I also stopped a different medication before starting Vyvanse that may have caused an interaction – one that helped alleviate Cluster Headaches (a whole other set of posts for this).  Turns out that medication in itself caused the weight to pile on and made it very difficult to lose it.

Immediately after stopping the medication for ADHD I discovered I was somewhat back where I was last summer.  Scatter-brained, overwhelmed with the communication from coworkers, and unable to focus on long-term goals.  I had to force myself to use the tools my counselor encouraged me to develop while I was on the medication:

  • Centering yourself
  • Exercise to reset your day (yoga, aerobics, a quick walk)
  • Elimination of distractions
  • Listening to your own mind

and one of the ones I recently rediscovered myself:

 

Exercise has been a big part of my success, I believe.  Three to four days a week I will do some aerobic exercise which usually ends up being step aerobics.  It’s simple enough to do at home and it is a great workout.  I set up a workout area in my basement so that I can leave the equipment up and it gives me the locale change I need.  I also track calories with MyFitnessPal, movement with the Nike+ FuelBand SE and RunKeeper for the social aspect.  I have a Withings Scale to help with tracking weight and it syncs across all of the apps to help with calorie burn calculations.  Good stuff.  I’m down 30lb from my heaviest last summer!

So how’s it going?  Well, actually.  After a month of the difficulty of readjusting myself to being off the medication I re-discovered one of the things about my personality I missed – my random thoughts and internal tangents.  I think that’s one of the reasons I didn’t feel just right – I missed seeing the weird things, the small things, the things people easily pass by.  I’m embracing my ADHD and I’m learning how to control it so I can use it as an advantage.

Software I Use Every Day

In the spirit of yesterday’s post, I’m going to list out what I use every day in terms of software.  This isn’t exhaustive but it’s pretty darn close.

General Utilities

  • 1Password – Probably the best password manager out there combined with mobile apps
  • Cloudup – quick way to share images, videos, text (ask me for a referral code)
  • Coffitivity – coffeehouse sounds to help boost productivity
  • Cyberduck – SFTP client
  • DaisyDisk – finding where all my space has gone
  • Dropbox
  • Evernote – where I keep my larger notes, graphics, PDF files
  • Parallels Desktop – for the occasional booting of old Mac OS & Windows VMs
  • Radium – menu bar radio streaming
  • Rdio – monthly subscription-based song streaming
  • RescueTime – track my app usage to determine if I’m distracted
  • Simplenote – for my quick note taking needs
  • Skype – sadly yes
  • Slack – communication for our team – web socket-based system like HipChat but better

Graphics

Development – General

  • Base – for digging around SQLite files; especially handy debugging Core Data
  • Charles – proxying application for testing remote calls
  • HockeyApp – binary distribution for testing
  • Kaleidoscope – arguably the most beautiful diff tool – ignore whitespace is still not a feature 🙁
  • PHPStorm – for when I have to get into WordPress and WordPress.com API coding
  • TextMate – Still my favorite text editor
  • Textual – Mac IRC client

Development – iOS

  • AppCode – alternative IDE for Objective-C – I switch between Xcode and here for specific reasons (future post?)
  • iExplorer – could not live without the ability to dig around device filesystems
  • PaintCode – easiest way to get Core Graphics code from images or hand-drawn UI elements
  • Reflector – transmit your iOS device screen to your computer for recording
  • Spark Inspector – interactively debug your UIView layers & NSNotificationCenter calls
  • Xcode
  • xScope – helpful UI tools for your Mac

Development – Android

  • Android Studio
  • Genymotion – Android VM manager – lurv

Installed Apps

I’ve moved my blog over to WordPress.com from my self-hosted server.  I had to change the domain name to http://astralbodi.es because my old WordPress site had a funky permalink structure to match how my post links were with Octopress.  So, for now, astralbodies.net will redirect to astralbodi.es and maintain any links over to the posts.  Please let me know if you see any weird glitches, missing text, etc.

My Desk Setup

IMG_2608

 

I always like seeing people’s desk setups so I figured I would post mine.  I didn’t pretty everything up for the photo.

  • UpDesk v1
  • Retina MacBook Pro 15″ + Thunderbolt Display
  • iPad Air, iPod touch 5th gen, iPhone 4 + personal iPhone 5s taking the photo
  • Wired Apple keyboard (I like the number keypad)
  • Magic Mouse
  • Creative GigaWorks T20 speakers
  • Vornado “Zippi” Fan
  • Griffin Elevator stand
  • Some crappy corner monitor stand from Amazon
  • The trippy light fixture is to help me with my attention span – it does help! – Homedics Mood Wave

 

[Edit] A few additional items from conversations on Twitter and alike:

  • Sun Drop soda – a swell caffeine supplement much akin to Mountain Dew
  • M2 & P2 iDevice stands by Elago
  • Pencil by 53 – stylus for Paper app

Xcode Presentation Mode

Giving a presentation with Xcode on screen? Don’t forget about Presentation mode in Fonts & Colors!

2014-04-02_20-51-43

2014-04-02_20-52-00

It doesn’t help with the text size in the navigator but at least everyone will see your code nice and clear!

Checking in CocoaPods files

I’ve gone back and forth on the debate with whether or not we should be checking in the dependencies for a project supplied by CocoaPods.  In the past I felt it was best to only check in the Podfile and maybe the lock file.  I believe I’ve finally made a decision with recent experiences and my development practices with Git.

I’m checking in the whole effing workspace.

Why?

  • Every branch, especially master, should be compilable and archivable up to a point.
    • Caveat 1: Xcode is a piece of shit sometimes and will break things because it can between versions.
    • Caveat 2: Provisioning Profiles.
  • CocoaPods is a well-maintained tool, however, Specs are a crap-shoot.
    • Specs can disappear.
    • Specs can be unofficially maintained.
    • Specs can be wrong.
  • Checking in your Pods directory ensures the best possible snapshot of the pre-binary code.
    • Forcing a pod install every time someone checks out code doesn’t ensure the same state of code is maintained for testing bugs in previous versions.
    • You may decide to drop Pods support and forget how to use it.
    • Wouldn’t it be nice to do diffs on your dependency classes?
  • Xcode Bots doesn’t work well enough yet with CocoaPods for me to want to install Pods every build
    • I’m also not sold on Xcode Bots itself – it’s quite unreliable and likes to smoke my server’s CPU.
    • CocoaPods needs to not be a hinderance – its pretty innocuous when the risky work (installing Pods) is done and checked in.

That sums up my thoughts.  I primarily work on WordPress for iOS which is a heavily forked and contributed to repository.  I don’t think the project could be a success with the amount of branching and pull requests performed if we didn’t check in the Pods directory.

iOS Background Refresh & Force Killing

If you’ve done any work with background refresh (application:didReceiveRemoteNotification:fetchCompletionHandler:) on iOS 7 you know that it can be a pain to debug your code with.  Some things I’ve discovered:

  1. Background refresh will start your app if it’s not running.
  2. If you force-quit an application, it’s not eligible to be started by a push notification.  Restarting the app or rebooting is the only way to again receive background push wakes.
  3. You can’t really debug wake by push other than with logging.
  4. Touching UI code in application:willFinishLaunchingWithOptions: is risky with background push since it fires but didFinishLaunchingWithOptions won’t if it’s immediately backgrounded.  If you’re using UIStateRestoration, make sure you’re limiting UI code in willFinishLaunchingWithOptions to setting up the root view controller.
  5. Don’t arbitrarily reset the badge count when your app is presented – you should really reset the badge count when the notification is viewed/considered no longer relevant.
  6. Update your push service to send “all clear” or zero count badges when things are read via other instances of your app (web, other iOS device, Android too).  Your users will thank you that they’re cleared everywhere.

Take a look at Apple’s documentation on app lifecycle – there is an excellent set of graphics to demonstrate where things hook in.

Nerdy Fitness

Nerds are notorious for being the most disinterested in staying fit – well at least our stereotype.  I’ve definitely yo-yoed in weight over the years, being at my best weight about three years ago.  Job and other life changes got me distracted and I ended up 40lb heavier in a relatively short amount of time.

When I started working at home, I decided change was in order to make me a bit more aware of myself.  I ended up getting a standing desk and a really great Herman Miller chair as part of my office setup when I started at Automattic.  Standing throughout the day, and sitting at strategic points of fatigue and after exercise, has made a significant difference in my attention levels and I believe my overall health.

I also exercise at home fairly often.  I bought a stepper platform from Amazon – the ones used in gyms/clubs – and I do mostly step aerobics over my “lunch” time.  I shoot for 3 times a week and four if I’m feeling frisky.  Since coming off my ADD meds I find that exercise realigns my focus for the day.  I also put yoga into my routine although my goal at the moment is to drop weight so that yoga is easier.  😀

I’m definitely into metrics being a geek.  I wear a Nike Fuelband SE to track general movements, use a Withings WiFi scale to record weight daily, and record calories using MyFitnessPal.  I’m not looking for a highly accurate measure out of any of these devices but they do provide the barometer reading of my activity levels, general level of success, and help with planning the next step.  Since Fall 2013 I’ve been able to drop 30lb!

I’m seriously looking forward to spring/summer so that my partner and I can get out with our bicycles!

CocoaConf Chicago – Advanced Core Data

Aaron Douglas - Advanced Core Data

I was lucky enough to be able to speak at CocoaConf Chicago 2014 about some more advanced Core Data topics.  The bulk of the talk surrounded concurrency and data model migrations but I did touch on a number of other things.  Sadly the session wasn’t recorded, but I am considering recording a screencast if there is enough interest.

[slideshare id=32054049&doc=advancedcoredata-140307170729-phpapp01]

Working at Automattic

Some people have asked me what it’s like working for Automattic.  Every employee of Automattic has a different perspective on what it means to work here.  Here are a few things I feel are important to me.

Work Wherever, Whenever

Automattic is a completely distributed company.  We have a headquarters in San Francisco, CA USA but only a small percentage of us work out that office.  Most of us work from home, some of us work on the road, others work from a coworking space.  Sometimes it’s nice being able to change your location once in a while – I pretty much like working from my home office.  I like working a regular day, usually 7am – 4pm my local time and I fit some sort of exercise routine in there half way through.  We have flexibility to make our own hours and take the time off we need to.  We’re adults and we’re treated as such.

Equipment for your Job

First thing asked of any employee starting is to order their computer.  You’re allowed to order the equipment you need for your job – usually a Mac laptop and a large display.  You’re also given a budget amount for your home office furniture – desk, chair, lighting, monitor arms, etc.  I got a really nice standing desk from UpDesk and a Herman Miller Aeron chair.  I love standing during the day!

Your Team

Everyone at Automattic is on a primary team, sometimes on a secondary one as well.  We work virtually using IRC, Skype, and private blogs to communicate.  Sometimes we even do a Google Hangout when we want to see face to face:

Group Hangout

The Automattic Mobile team Hangout this past week

 

One every 3-4 months you meet up with your team in real life.  In January our team met up in Tokyo, Japan.  We spent seven days coworking and having fun at night.  It’s a team-building exercise as well as a chance to get some high-velocity work accomplished.  It’s a great way to recharge your team dynamic and to meet the new people!  Once a year Automattic hosts a Grand Meetup when we all converge in a single place.  We like to create special teams for the GM and either ship new real features within that week or do code training teams.  It’s a great way to meet people outside of your normal team and fun to boot!

Culture

It takes the right person to work at Automattic.  You have to be a self-starter and have the ability to stay focused on your work.  I’ve discovered more about myself than I thought I would almost immediately and working here has made me a better person.  Every position, regardless of it being technical or not, goes through a multistep process for hiring.  Matt Mullenweg, the founder and CEO, reviews every application submitted to Automattic.  If an application passes his muster, it’s forwarded onto the team or teams responsible for hiring.  The hiring lead reviews the application and scheduled a text-based Skype chat to see if they’d be a good fit for the position and company.  One or more people from the destination team may be involved, too.  If that goes well, the applicant is directed to complete a pre-trial project.  This small unit of work will show the applicant’s domain knowledge and ability to communicate.  After the pretrial work, if the team agrees to move forward, the applicant enters into a trial period.  You are paid to work on a part time basis with your team on a real piece of work.  This is your chance to integrate with Automattic and immerse yourself in the culture.  Take it all in – the process is a trial for Automattic to hire you and also a trial to see if you’re going to like working here.  If the trial is a success for both sides, then Matt makes the final call on hiring.

It’s not the fastest hiring process, but it’s definitely the most straightforward and transparent hiring process I’ve ever been involved in.  It takes about a year, so I’m told, to get a real grasp on all of the moving parts at Automattic.  I’m still learning every day and continue to work on how I want to accomplish my work every day.  It’s a lot of fun and rewarding!

 

We’re Hiring!

We’re always looking for more people to join Automattic.  Take a look at the open positions and apply if you see something you’re interested in!

Page 24 of 30

Powered by WordPress & Theme by Anders Norén