Skip to content
View eliperkins's full-sized avatar
🍞
Let’s get this bread.
🍞
Let’s get this bread.

Sponsoring

@sindresorhus
@michaeleisel
@Alamofire
@gnachman

Block or report eliperkins

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
eliperkins/README.md

User Manual for Eli Perkins (@eliperkins) v1.2

Howdy, I'm Eli, polyglot engineering leader with a specialty in iOS and Apple platforms. 🍎

About Me

  • πŸ“± I've been an iOS engineer since 2010.
  • 🐈 I have a chatty Siamese cat named Atticus and a energy-filled Golden Retriever name Samson.
  • πŸ‘Ύ I'm a big fan of RTS and FPS video games (currently playing: StarCraft 2, League of Legends, Call of Duty, CFB25). I fell in love with esports like StarCraft 2 and Dota.
  • 🍻 I enjoy brewed beverages like β˜• and 🍺.

πŸ‘‹ Getting Started (aka Communicating With Me)

Guidelines

πŸ–₯ I always prefer async communication

πŸ—£ Use public communication channels

  • I prefer talking in open channels rather than DM, so that all involved parties can be informed about what's going on. This includes not only public Slack channels, but discussions in places like GitHub issues, pull requests, and discussions as well.
  • Default to the relevant public channel first. Only Slack DM if it's sensitive, personal or extremely off-topic.

πŸ“₯ Find a bug? Want a feature? Put it in a GitHub Issue and kick it over to me

  • This gets back to the public communication bit. I might not be the one to fix your bug or implement your feature! Write it down so we all know where to go.

πŸ’» Practice thoughtful code reviews

  • Follow the thoughtbot code review guidelines
  • Ask questions to clarify intent and/or grow understanding.
    • Not sure how something works in a PR? Great! Please ask me questions about the code and I'm happy to write up a few sentences to clarify.
  • Found a bug in existing code, and my name came up on the git blame? Sorry/you're welcome!
    • Submit a pull request to fix or address it, or
    • Grab some time on my calendar to pair on correcting it, or
    • Put some details together in an issue and let's improve it together.

Communication Channels

I default to async communication, especially with our distributed team (from Berlin to SF and many timezones in-between).

In order of preference, sans urgency:

  1. Slack Public Channel
  2. GitHub Issue/PR/Discussion
  3. Zoom
  4. Slack DM (to directly me, via a group DM, or via a private channel)
  5. Email

For urgent things:

  1. Slack DM
  2. Zoom

πŸƒβ€ Maintenance and Care

What Motivates Me

πŸ“ Clean Code, Clean UI, and Clean Products

I'm a stickler for nice abstractions, using the platform and delightful, lickable apps.

🚒 Shipping

Getting your app, feature, blog post or whatever in the hands of our customers is extremely gratifying to me. Seeing customers affected by the things we build and ship makes me want to build and ship more.

πŸ™‡β€ Constructive Feedback

I always want to improve, and I appreciate direct feedback in the moment. I might ask you for feedback after a meeting, presentation, pairing session or via Slack polls. If I don't, feel free to give me feedback about how I'm doing!

✨ Shiny New Things

I love using the latest iOS APIs, bleeding edge technologies, and new gadgets. Expect me to bury my nose in WWDC sessions every June.

🧹 Leaving Things Better Than I Found It

Sometimes, I enjoy a little boyscouting or KonMari in a codebase.

⚠️ Warnings

Meetings with no agendas

One of the most effective ways to run a meeting is to set an agenda. Joining a meeting with no agenda might leave me frustrated or unengaged.

Being late to a meeting, or rescheduling personal/1-on-1 meetings with no warning

If you scheduled time to be synchronous with me, we've both committed to putting aside whatever other async work we could be doing. Come on time, come prepared, or feel free to move the meeting to another day.

This changes a bit for 1-on-1s, as moving a 1-on-1 means that something else is more important than my time with you. If you need to move a 1-on-1 days in advance, that's great! If you need to move it 15 minutes before we meet, I'll feel frustrated by something else being more important than my time with you.

See also "Getting Started > Guidelines > Asynchronous Communication".

Lack of transparency

I have a low tolerance for hiding news or knowledge from teammates. Be transparent and don't sugarcoat things. If you can't find a great way to be transparent, reach out to me directly and I'm happy to work with you.

πŸ›  Troubleshooting

Do you have feedback for me? Something not working quite right? Let me know. Here's some tips on how to give me feedback.

Be honest and direct

I love direct feedback and continuous improvement. Tell me when I did something wrong, and I'll do my best to change my behavior the next time.

Praise in public, criticize in private

I quite enjoy and am motivated by public praise. I'm a sucker for a ❀️ reaction on a comment or pull request.

If there's something I can do better, shoot me a Slack DM to let me know what I can do to improve.

See also "Troubleshooting > Be honest and direct"

πŸ•° Working Hours

My usual working hours are 8am-6pm MST/MDT, Monday-Thursday. I'm working 4-day work weeks, but still working 40 hours a week. Mondays are my focus days, and Tuesdays and Wednesdays are my meeting days.

If I am out-of-office on a Monday, or if a Monday is a public holiday, I'll shift my working days to be Tuesday-Friday, with Friday being an 6-8 hour day, to make up for a lack of personal focus time.

I'm based in Denver, CO, USA (UTC-07:00). I'm not a morning person, but my most productive hours are 10am-1pm.

If I'm out-of-office, chances are I'm not going to see or reply to your message. I often use out-of-office time to step away from software (see also: my contribution graph on weekends) and spend time letting my brain think about other problems.

Pinned Loading

  1. Gatito Gatito Public

    Toying around with Bonjour, Network.framework and my Elgato Key Light Air

    Swift 7

  2. eliperkins-blog eliperkins-blog Public

    A place where I write words for others to read.

    TypeScript 4 1

  3. raycast-ios-hig raycast-ios-hig Public

    Raycast extension for showing iOS Human Interface Guidelines info

    TypeScript 17

  4. MocksPlayground.swift MocksPlayground.swift
    1
    //: Mocks Playground
    2
    
                  
    3
    import UIKit
    4
    
                  
    5
    struct User {
  5. staters-gonna-state staters-gonna-state Public

    Talk about state in applications given at UIKonf 2015

    4 1

  6. ArrayDiff ArrayDiff Public

    Swift 3