[{"content":"Grief is a strange emotion. For most of my childhood, I was lucky — I didn’t experience much personal loss. Death was something that happened on television or in stories my parents told about distant relatives I barely knew, people I didn’t have memories of or context to care about. My ADHD probably played a role too — even when something did matter in the moment, it didn’t always\u0026nbsp;stick\u0026nbsp;long enough to feel real later.\nThat changed after I turned 19, when my grandmother from Texas died. It was my first real loss. Then, at 23, it all hit at once: in the span of a few months, I lost a close friend with muscular dystrophy, my other grandmother, and my husband’s grandmother. It was a season of loss so compact, so relentless, that I didn’t fully process what had happened. I didn’t know it then, but that was when the auditorium of grief quietly came into existence.\nIt sat there, dimly lit — not on any map I could identify, but undeniably real. Some seats were already occupied by those losses, each one settled in with its own particular weight. And there were many more seats, still empty, quietly waiting.\nThe Click of the LockBurkley was our first dog — my husband and I got him early in our relationship, and he became a constant in our lives for nearly 18 years. He wasn’t just a pet; he was a fixture in the background of everyday life. For the last five years of his life, I worked from home, so we were together nearly 24 hours a day. He was always there: curled up nearby while I worked, trotting behind me from room to room, waiting at the door when I came back from errands. A significant portion of my thoughts were dedicated to his presence.\nLosing him was staggering, although not entirely unexpected. We made the decision to end his life because he was suffering, and even though it was the right choice, it didn’t soften the blow. In the days and weeks that followed, I found myself crying during completely ordinary moments, like while out on a run, watching TV, or taking a shower. Evenings were worse. The grief would hit suddenly, overwhelming me without warning.\nBut what I noticed was that I wasn’t only grieving Burkley. His death had clicked something open — that hidden door — and through it came the sorrow of every other loss I’d ever carried. It wasn’t just one goodbye anymore. It was all of them.\nThe Door OpensThere’s a strange thing that happens when deep grief takes hold — it rarely stays contained. You think you’re mourning one thing, one being, one loss, one moment. But then the weight of it shifts, and suddenly you’re feeling everything you never fully processed. Every sorrow seems to wake up at once.\nThat’s what it felt like after Burkley died. It started with\u0026nbsp;his\u0026nbsp;absence — his empty bed, the hollow sound of the fluorescent light buzzing in the quiet kitchen in the morning without sounds of Burkley — but what came next was harder to name. I wasn’t missing only him. I was missing my friend who died years prior. I was missing my grandmothers. I was missing people I hadn’t consciously grieved in years. The door to the auditorium had swung open again, and the crowd inside stirred.\nGrief is recursive like that. It loops. It layers. One loss hands off the microphone to another. Sometimes you’re not even sure who’s speaking through your tears — you just know you’ve been pulled in.\nInside the AuditoriumWhen the door opens, you don’t so much walk in as\u0026nbsp;fall\u0026nbsp;in.\nThe space is quiet like a held breath, heavy with expectation, like in a theater waiting for something to begin. The lighting is low, but soft enough to make out rows of seats stretching far beyond what you thought your heart could contain.\nSome seats are clearly occupied. You recognize them immediately — the big griefs, the ones you’ve sat with before. They hold your gaze without apology, making you feel uncomfortable. Other seats are hazier with the losses you forgot you knew. Things like an old friend you drifted from before they passed, someone you didn’t know well but still feel the absence of, the pets, the relationships with the living that ended because you moved, or changed jobs, or quietly outgrew each other. Then there are the empty seats. Those are the ones that stop you cold. You know they’re not empty forever and what will occupy them could be harder than what's with you right now.\nYou sit among them all. You don’t really have a choice. The room\u0026nbsp;holds\u0026nbsp;you — in that strange tension of being surrounded by grief and yet somehow not alone. You realize you’re not there with the people and pets you’ve lost — you’re there with every past version of\u0026nbsp;yourself\u0026nbsp;who’s grieved before. The nineteen-year-old who didn’t know what to do with his sadness, the twenty-three-year-old who was overwhelmed by too much loss too quickly, the you from just last week who didn’t expect to cry so hard on the hiking trail.\nEach grief has a voice. Sometimes they speak at once. Sometimes they’re quiet, just sitting there with you. And for a while, you just let them.\nExiting the AuditoriumYou don’t know when or how it happens, exactly. The grief doesn’t end — it just quiets. The room doesn’t empty — it just recedes. And eventually, you realize you’ve stood up. You’re back at the door.\nYou might have only been in there for a short while, or maybe it’s been a few days. Either way, while you’re relieved to be out, there’s a strange part of you that misses it — the consistency of emotional experience, the clarity of feeling. Brains are weird like that.\nIntermissionGrief has had a way of reshaping me — not all at once, but over time, visit by visit. It’s rarely just about what I’ve lost most recently. Each new grief brushes up against the old ones, stirring memories, emotions, and versions of myself I thought I’d outgrown or left behind.\nThe auditorium never really closes. It’s part of me — a quiet, heavy space that fills slowly over time. Sometimes I stumble into it unexpectedly. Sometimes I choose to walk through the door. And sometimes I just stand outside, hand on the knob, not quite ready. It wasn’t until my dad died in 2020 that I finally saw the auditorium clearly — and gave it a name. It had always been there. I just hadn’t noticed it completely.\nBut if you find yourself inside your own auditorium, know this: you’re not alone. Not in that room, not in this life, not in your grief. They may feel overwhelming but remember it is made up of love. Every seat is proof that you’ve lived, connected, and cared. Intermission will come and you will get through this.\n“The deeper that sorrow carves into your being, the more joy you can contain.”\n— From On Joy and Sorrow by Kahlil Gibran","permalink":"https://aaron.blog/the-auditorium-of-grief/","summary":"\u003cp\u003eGrief is a strange emotion. For most of my childhood, I was lucky — I didn’t experience much personal loss. Death was something that happened on television or in stories my parents told about distant relatives I barely knew, people I didn’t have memories of or context to care about. My ADHD probably played a role too — even when something did matter in the moment, it didn’t always\u0026nbsp;stick\u0026nbsp;long enough to feel real later.\u003c/p\u003e","title":"The Auditorium of Grief"},{"content":"One of the hardest-to-name feelings I live with is the sense that I’m always\u0026nbsp;almost\u0026nbsp;there — on the cusp of a thought, a breakthrough, a deeper understanding. I can feel the shape of an idea forming, but it slips just out of reach before I can hold onto it. It’s like trying to tune into a radio station (if you even know what a radio station is, lol) that’s just barely out of range — you catch the melody, but not the lyrics. I don't know if its the ADHD brain, but it's something I've struggled with all my life.\nThat feeling leaves me hovering in shallow work mode more often than I’d like. I\u0026nbsp;want\u0026nbsp;to go deep — into strategy, into clarity, into momentum — but my brain skims, skips, gets stuck. Sometimes I fight back with structure: I block off time, I write things down, I coax the ideas into form. And when it works, it\u0026nbsp;really\u0026nbsp;works — the flow comes, the spark hits, people feel the energy. But when it doesn’t, I know how it looks from the outside: like I’m avoiding the work, dropping balls, falling short.\nThat gap — between the magic I\u0026nbsp;know\u0026nbsp;I can reach and the reality of how often it escapes me — is one of the most frustrating parts of living in my mind.\n","permalink":"https://aaron.blog/always-on-the-cusp-of-something/","summary":"\u003cp\u003eOne of the hardest-to-name feelings I live with is the sense that I’m always\u0026nbsp;\u003cem\u003ealmost\u003c/em\u003e\u0026nbsp;there — on the cusp of a thought, a breakthrough, a deeper understanding. I can feel the shape of an idea forming, but it slips just out of reach before I can hold onto it. It’s like trying to tune into a radio station (if you even know what a radio station is, lol) that’s just barely out of range — you catch the melody, but not the lyrics. I don't know if its the ADHD brain, but it's something I've struggled with all my life.\u003c/p\u003e","title":"Always on the cusp of something"},{"content":"I've been meaning to write up what's been going on since I left Shopify last year. ADHD brain makes me want to come up with a long well-written post with a storyline and quippy section titles. Well, then ADHD brain aborts the process because I get decision paralysis and never write anything.\nI got laid off on May 4th, 2023. I was very upset by the whole situation, rage sold my SHOP equity, and then got rid of everything with the Shopify logo on it. Shopify was such a good fit for me and I was learning a lot. Losing that HURT. That catharsis helped me focus on how I wanted to spend my time being unemployed. I decided to start looking for a new job right away instead of taking a few weeks to decompress. I'm not entirely sure I'd do that again, but I wouldn't have found Figma if I had done that.\nI stopped keeping count of the number of applications that I filed - easily in the 150 range for ones that weren't just clicking an apply button on LinkedIn. I also grasped onto the extra time in the day to go for longer runs, poke around the yard, and hang out with my doggos. I had a couple of great companies in the pipeline after a few months, one of them being Figma and the other 1Password.\nI ended up moving forward with Figma because it was a combo of things I really enjoyed doing - leading a smaller but mighty team, and being the engineering lead of an entire product, the Figma Desktop app. I also loved using Figma on a regular basis at Shopify and Automattic, with FigJam being the culmination of the love for how it brought people together. There's something magical about working for a company that uses the product it makes to in fact make their product. 🤩\nThat's the update for now!\n","permalink":"https://aaron.blog/figma-is-freaking-great/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2024/05/figma-1698087967030-2x.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cp\u003eI've been meaning to write up what's been going on since I left Shopify last year. ADHD brain makes me want to come up with a long well-written post with a storyline and quippy section titles. Well, then ADHD brain aborts the process because I get decision paralysis and never write anything.\u003c/p\u003e\u003cp\u003eI got laid off on May 4th, 2023. I was very upset by the whole situation, rage sold my SHOP equity, and then got rid of everything with the Shopify logo on it. Shopify was such a good fit for me and I was learning a lot. Losing that HURT. That catharsis helped me focus on how I wanted to spend my time being unemployed. I decided to start looking for a new job right away instead of taking a few weeks to decompress. I'm not entirely sure I'd do that again, but I wouldn't have found Figma if I had done that.\u003c/p\u003e","title":"Figma is freaking great"},{"content":"Finding a new job takes a lot of effort. I've been recently laid off from Shopify (along with 20% of my friends) and have been spending the past three weeks applying for jobs, connecting with friends, and searching for that next thing. It's exhausting work. This is my first layoff (and probably not my last) and the approaches I've used in the past to find a new job don't really apply right now.\nI've made a few observations that I felt were worth sharing, especially for the folks in the same predicament as me:\nCold applications tend to go unanswered - try to get referrals from friends or previous coworkers.Silence, rejection e-mails, and bad recruiter experiences all contribute to making yourself feel like a fraud. Don't base your self-worth on this job search. Recruiters are overwhelmed (and also getting laid off), companies are cutting costs and implementing crap AI for job-matching.Spend time to rewrite your resume listing accomplishments and any outcomes you contributed to. Put them in order of most impactful first, least being last.Cover letters. I have no idea if they're worth the effort or not.You'll dream about having a terrible job, or being back at a previous terrible job.Don't be ashamed of getting laid off. You did nothing wrong.There are way more, but those are the top of mind for me.\n","permalink":"https://aaron.blog/life-after-a-layoff/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2023/05/img_5045.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cp\u003eFinding a new job takes a lot of effort. I've been recently laid off from Shopify (\u003ca href=\"https://news.shopify.com/important-team-and-business-changes\"\u003ealong with 20% of my friends\u003c/a\u003e) and have been spending the past three weeks applying for jobs, connecting with friends, and searching for that next thing. It's exhausting work. This is my first layoff (and probably not my last) and the approaches I've used in the past to find a new job don't really apply right now.\u003c/p\u003e","title":"Life after a Layoff"},{"content":"Happy Holidays! We weren’t motivated to send cards out this year, but I did get a letter written and put some photos together from our year here to share. If you’re on your mobile phone, the PDF won’t be viewable inline, you’ll need to download it to view.\nChristmas-Letter-2023Download\n","permalink":"https://aaron.blog/happy-holidays-2022-letter/","summary":"\u003cp\u003eHappy Holidays! We weren’t motivated to send cards out this year, but I did get a letter written and put some photos together from our year here to share. If you’re on your mobile phone, the PDF won’t be viewable inline, you’ll need to download it to view.\u003c/p\u003e\u003cp\u003e\u003ca href=\"/content/files/wp-content/uploads/2022/12/christmas-letter-2023.pdf\"\u003eChristmas-Letter-2023\u003c/a\u003e\u003ca href=\"/content/files/wp-content/uploads/2022/12/christmas-letter-2023.pdf\"\u003eDownload\u003c/a\u003e\u003c/p\u003e","title":"Happy Holidays 2022 Letter"},{"content":"I heavily rely upon Siri (and Google Home sometimes) to set reminders for myself. I have ADHD. I have hundreds of thoughts flying through my brain throughout the day, all at the same priority and speed. Once in a while, I catch onto something that I need to remember. ADHD brain says “oh hey, it’s important, there’s no way you’ll forget it!” - where my mindful brain says “lol, you’ve already forgotten it, jerkface!”.\nHomePods with Siri have improved my life greatly. Any time I think of something that I must recall - even if it is something I’ll need to do or write down in ten minutes - I can yell into the air to have Siri remind me.\nSiri, however, needs to listen better.\nYesterday I remember setting a reminder for something in the morning. This morning, I get the notification … and I have no freaking idea what it is for.\nThe first one is legible! What are filters filter?It looks like Siri understood me about the delivery box needing to go out. But, what the hell are filters filter? The best part is, I think I remember Siri reading it back to me and I lied to myself saying “Oh, I’ll remember what that means!”.\nNope. Fail.\n","permalink":"https://aaron.blog/reminders-adhd-and-siri/","summary":"\u003cp\u003eI heavily rely upon Siri (and Google Home sometimes) to set reminders for myself. I have ADHD. I have hundreds of thoughts flying through my brain throughout the day, all at the same priority and speed. Once in a while, I catch onto something that I need to remember. ADHD brain says “oh hey, it’s important, there’s no way you’ll forget it!” - where my mindful brain says “lol, you’ve already forgotten it, jerkface!”.\u003c/p\u003e","title":"Reminders, ADHD, and Siri"},{"content":"Courtesy of https://www.flickr.com/photos/internetarchivebookimages/14781362334/I was having a semi-philosophical discussion with a friend about hobbies, which inspired this post.\nIn my mind, I have a long list of things I want to learn. Technical things for work, technical things for personal projects, fun stuff, hobbies, etc. The ADHD brain in me makes it difficult to prioritize what I spend my time on. My friend mentioned that they've been spending so much more personal time lately on doing things unrelated to programming. That resonated with me as well!\nWe started riffing on hobbies. My dad filled his house with woodworking tools, metalworking equipment, cameras and studio lighting, electrical components, and beyond. I grew up witnessing how my dad experienced hobbies and find myself as an adult somewhat mirroring that. When I get into a hobby, I have to fight the urge to buy all the accessories. How can you possibly do hobby X without all of the tools possible?\nHere's the thing - the absolute truth about most hobbies is you never really need much to start. Woodworking? A hand saw and a chisel is all you really need to create neat things. Photography? A disposable film camera is all you need. Cycling? A used bike is all you need. Running? Shoes and maybe non-chaffing underwear is all you need.\nI hate having caches of tools for hobbies that sit there idle, unused, unrealized of their potential. It's the same feeling I get having a bookshelf full of books I haven't read yet. If I feel I need more accessories to want to do the hobby, it's an indicator I'm more into collecting those accessories than doing the hobby. Otherwise, I'll get overwhelmed with where to start with that hobby.\nHow do you like to manage your hobbies?\n","permalink":"https://aaron.blog/hobbies-accessories-and-unrealized-potential/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2022/09/14781362334_9a785a3c19_o.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003cfigcaption\u003eCourtesy of \u003ca href=\"https://www.flickr.com/photos/internetarchivebookimages/14781362334/\"\u003ehttps://www.flickr.com/photos/internetarchivebookimages/14781362334/\u003c/a\u003e\u003c/figcaption\u003e\u003c/figure\u003e\u003cp\u003eI was having a semi-philosophical discussion with a friend about hobbies, which inspired this post.\u003c/p\u003e\u003cp\u003eIn my mind, I have a long list of things I want to learn. Technical things for work, technical things for personal projects, fun stuff, hobbies, etc. The ADHD brain in me makes it difficult to prioritize what I spend my time on. My friend mentioned that they've been spending so much more personal time lately on doing things unrelated to programming. That resonated with me as well!\u003c/p\u003e","title":"Hobbies, Accessories, and Unrealized Potential"},{"content":"Well, I took some time to figure things out, but it didn't take too long to make the final decision. I'm now working at Shopify (and we're Shopifolk, lol) as a senior development manager for the Point of Sale retail channel and apps.\nI'm still in my onboarding time here, but my role and responsibilities will become clearer over the next few weeks. Shopify has a seriously well-organized program to onboard all new employees. I am super impressed. You can read about some of the recently released cool things from the team I will be working on.\nShopify uses React Native for most of their mobile apps which is one huge departure for my previous experience! I can't wait to learn more about it and put that knowledge into practice leading teams. The tech stack is rather impressive and I can't wait to learn all the things. 😁\nShopify is hiring and we're 100% remote!\n","permalink":"https://aaron.blog/hello-shopify/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2022/06/2560px-shopify_logo_2018-svg.png\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cp\u003eWell, I took some time to figure things out, but it didn't take too long to make the final decision. I'm now working at Shopify (and we're Shopifolk, lol) as a senior development manager for the Point of Sale retail channel and apps.\u003c/p\u003e\u003c!--kg-card-begin: html--\u003e\u003cfigure class=\"wp-block-video\"\u003e\u003cvideo autoplay=\"\" controls=\"\" loop=\"\" src=\"https://aaron.blog/wp-content/uploads/2022/06/pos-full.03fab8df.mov\" style=\"width: 100%;\"\u003e\u003c/video\u003e\u003c/figure\u003e\u003c!--kg-card-end: html--\u003e\u003cp\u003eI'm still in my onboarding time here, but my role and responsibilities will become clearer over the next few weeks. Shopify has a seriously well-organized program to onboard all new employees. I am super impressed. You can \u003ca href=\"https://www.shopify.com/retail/editions\"\u003eread about some of the recently released cool things\u003c/a\u003e from the team I will be working on.\u003c/p\u003e","title":"Hello, Shopify!"},{"content":"On April 3, 2013, I was sitting in the #devmke Freenode IRC channel talking to other developers in the Milwaukee (Wisconsin, USA) area. I saw a conversation about one of the people working from home and thought, what an incredible place this must be to work! For some reason, I had heard the name Automattic before – and after landing on the homepage, I realized why! It was because of WordPress and specifically signing up for WordPress.com to get an Akismet API key to prevent comment spam. When I saw a Mobile Wrangler job posting, I immediately applied. I got the offer in May and started near the end of July 2013.\nWithout really exaggerating, working remotely at Automattic has literally saved my life. I’ve learned more about how my mind works, how I approach work, what relationships mean to me, and what value I can bring to an interaction. I’ve learned how to lead like Aaron, embracing my own unique style of seeing the universe and helping inspire others to connect and create outcomes.\nEvery year (pre-pandemic), every Automattician would get together in one location for a week - called the Grand Meetup. My heart is sad that I won’t be at the next Grand Meetup. That annual event has created some of the fondest memories of my entire life. I’ve become friends with people that I still have yet to actually work with directly. That’s the power of the system there – we value our connections over the work. With those connections, we overlay the work after. I can’t tell you how many times I’ve turned those lunchtime conversations at the GM into conduits to get things done later. Meetups are critical to Automattic’s success.\nDJing @ the 2016 GM - photo by clickysteveSome of the highlights of my time at Automattic was with helping organize several of the Automattic Grand Meetup closing parties. In 2015 it was with the first Automattic band performance and the Jane Doze DJing, 2016 with a coworker and me DJing, and 2017 with MICK DJing. This all came from me plugging my phone into the PA system of the dinner tent in 2014, playing some of my favorite songs. Our favorite Chief of Staff, Rose, noticed everyone enjoying themselves and pinged me to help out in the following years. Little did I know that I would be negotiating performance contracts and coordinating an audio and lighting production crew in the next months. What a rush. Seeing the look on Matt's (the CEO) face walking into the ballroom before we opened the doors in 2015 was the best payoff ever.\nTrying out the photo booth before the 2015 GMFor the last four and a half years I've been leading the Woo Mobile product teams, and it has been a joy. I started the team with just one other person and grew it into the group of 30+ people it is today. Mentoring \u0026amp; coaching four leads made me see how I could be a better engineering lead. I also got a chance to develop product management skills, wearing multiple hats. I’m so proud of everyone on the team (and everyone else we’ve worked with!) for getting the product to where it is today. I feel like I am leaving at a high point in my career there. Nine years will have been the longest I’ve ever been at a place before.\nAutomattic has been a great home for me and has helped me through a lot of bad times and given me a lot of good times. It wasn’t my intention to find a different place to work. I started looking at other companies for inspiration on defining my role better and for seeing where I should aim my career at. The side effect of that research was a little spark of excitement forming to try something different. Life is too short to not take some risks once in a while.\nMy last day at Automattic was Friday, June 3. I spent the last couple of weeks passing the baton off to a teammate and getting as much as I could out of my head for others. I had 1:1s with my boss, my team leads, and other Automattic employees wanting to say goodbye.\nThose two weeks were tremendous in helping me process my exit. I posted my farewell notice, told the team, turned in my hardware, filled out the exit survey, had a final 1:1 with my HR rep, DJed one final Friday jam session, and then attended a farewell Zoom I planned. My team put together a very thoughtful farewell video and organized a couple gifts for me which were amazing. I definitely felt the warm fuzzies and the sense of loss we all were feeling. What a great group of humans! 🥰\nI didn't stick around for my access to get cut in Slack - it was already an emotional day and waiting for that felt unnecessary. I walked away from my last day feeling a bit lonely which is certainly an artifact of not being in an office with other humans.\nThe departure process at Automattic felt anticlimactic. I'm not sure what else I had expected to happen, honestly. They celebrate new hires, new houses, new partners, and new babies, but don't really celebrate someone leaving at a company level. My farewell post had a LOT of heartfelt goodbyes and the process of reading and replying to them was cathartic. It helped me recognize my true impact on the company by hearing the stories of how I've helped shape the culture there and affected so many lives. That was priceless.\nOn the exit survey, Automattic asks \"would you consider ever coming back to work at Automattic?\". I answered truthfully:\nYes.\nWhat's next? More details to come. 🤫\n","permalink":"https://aaron.blog/farewell-automattic/","summary":"\u003cp\u003eOn April 3, 2013, I was sitting in the #devmke Freenode IRC channel talking to other developers in the Milwaukee (Wisconsin, USA) area. I saw a conversation about one of the people working from home and thought, what an incredible place this must be to work! For some reason, I had heard the name Automattic before – and after landing on the homepage, I realized why! It was because of WordPress and specifically signing up for WordPress.com to get an Akismet API key to prevent comment spam. When I saw a Mobile Wrangler job posting, I immediately applied. I got the offer in May and started near the end of July 2013.\u003c/p\u003e","title":"Farewell, Automattic!"},{"content":"I saw this quote on a friend's wall as I was leaving their house. I found the original and decided to share it here.\nI will love the light for it shows me the way, yet I will endure the darkness because it shows me the stars.\nOg Mandino","permalink":"https://aaron.blog/love-the-light-and-endure-the-darkness/","summary":"\u003cp\u003eI saw this quote on a friend's wall as I was leaving their house. I found the original and decided to share it here.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2022/01/img_1627402x-scaled.jpg\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2022/01/img_1627402x.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cblockquote\u003eI will love the light for it shows me the way, yet I will endure the darkness because it shows me the stars.\u003cbr\u003e\u003cbr\u003eOg Mandino\u003c/blockquote\u003e","title":"Love the light and endure the darkness"},{"content":"I listen to a lot of electronic and trance music to keep a part of my mind occupied while I focus on my work. What I've noticed over the years is using a playlist or a service like Pandora doesn't quite do it for me. I could never put my finger on it until it clicked one day. Having the ability to skip a song makes the experience of listening more in the foreground where I have yet another choice to occupy my mind. Do I like this song? Should I go to the next one?\nI grew up listening to broadcast radio. The DJ was the one making all the choices for me. I merely had to pick a station, turn up the volume, and go about my day. I'd hear songs that were interesting, some terrible, others meh. Commercials were also a mindful break for me to step away. Taking away the decisions about what song to play next was freeing. It also felt like the DJ was in my room with me - you even developed weird relationships based solely on their voice and style of DJing. You knew others were listening to the same exact thing you were at that moment in time. It was a way of building a community.\nYou knew others were listening to the same exact thing you were at that moment in time.That's why to this day I will still subscribe to services like Digitally Imported and SiriusXM. It's also why I love DJing music for other people. I like being part of that subconcious community enjoying that music at the same time, on the same planet.\nIt reminds me I'm not alone.\n","permalink":"https://aaron.blog/the-radio-effect/","summary":"\u003cp\u003eI listen to a lot of electronic and trance music to keep a part of my mind occupied while I focus on my work. What I've noticed over the years is using a playlist or a service like Pandora doesn't quite do it for me. I could never put my finger on it until it clicked one day. Having the ability to skip a song makes the experience of listening more in the foreground where I have yet another choice to occupy my mind. Do I like this song? Should I go to the next one?\u003c/p\u003e","title":"The Radio Effect"},{"content":"I haven't seen a majority of my coworkers off-camera for 559 days as of today. The mobile teams at Automattic got together in Chicago at the beginning of March 2020, right before the pandemic hit the USA. We continue to do things to help connect people together to accommodate that lack of in-person meetups. It's not the same, but it helps.\nThen yesterday, I got this in the mail.\nIt's funny how sometimes the small gestures can have the biggest impact. I know I'm not alone. Getting this small physical item does help ground my mind a bit to realize I work with other humans, not just Zoom participants. 🙃\n","permalink":"https://aaron.blog/sometimes-its-the-little-things/","summary":"\u003cp\u003eI haven't seen a majority of my coworkers off-camera for 559 days as of today. The mobile teams at Automattic got together in Chicago at the beginning of March 2020, right before the pandemic hit the USA. We continue to do things to help connect people together to accommodate that lack of in-person meetups. It's not the same, but it helps.\u003c/p\u003e\u003cp\u003eThen yesterday, I got this in the mail.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2021/09/img_1895.jpg\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2021/09/img_1895.jpg?w=1024\" class=\"kg-image\" alt=\"Photograph of a card and envelope I got with a canceled stamp. The card reads \u0026quot;We're thinking of you. Thanks for being a part of Automattic!\u0026quot;. There's a smiley face on it as well.\" loading=\"lazy\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eIt's funny how sometimes the small gestures can have the biggest impact. I \u003cstrong\u003eknow\u003c/strong\u003e I'm not alone. Getting this small physical item does help ground my mind a bit to realize I work with other humans, not just Zoom participants. 🙃\u003c/p\u003e","title":"Sometimes it's the little things..."},{"content":"Unit tests are something that engineers write to test the work they've done in smaller pieces. Code that is tested tends to perform closer to expectations. Future changes to old code protect the way things work by causing unit tests to fail if something is changed unexpectedly. Passing tests are green checks ✅. Failing unit tests are red Xs ❌.\nDefault behavior is to write your unit tests after you're done writing the solution. When an engineer sees all ✅, they call it a day and ship it. The funny thing with unit tests are ... they are also subject to being full of problematic logic or buggy code. How does the engineer know their tests are correct or cover all the scenarios if you've never seen a failure?\nThere is a concept from test-driven design (TDD) that helps mitigate this. Write your tests first before writing the actual solution. Your tests will all start with ❌ and you'll slowly turn those to ✅ as you write the solution.\nFeedbackI was chatting with a coworker today and gave this analogy of unit tests being like feedback. How so?\nIf you receive feedback from a lead and always get positive remarks ( ✅ ), how do you know if the lead is actually seeing your work enough to find any areas of improvement ( ❌ )? I've found that feedback feels less impactful unless once in a while you get something constructive or critical to work on.\nI figured the analogy was kind of neat and figured it might illustrate the importance of feedback being a system of trust. You can't trust your unit tests until you've seen other than just successes. And likewise, receiving only praise can make someone feel uneasy and possibly not trust they're getting the whole picture.\n","permalink":"https://aaron.blog/a-short-analogy-on-feedback-unit-tests/","summary":"\u003cp\u003eUnit tests are something that engineers write to test the work they've done in smaller pieces. Code that is tested tends to perform closer to expectations. Future changes to old code protect the way things work by causing unit tests to fail if something is changed unexpectedly. Passing tests are green checks ✅. Failing unit tests are red Xs ❌.\u003c/p\u003e\u003cp\u003eDefault behavior is to write your unit tests after you're done writing the solution. When an engineer sees all ✅, they call it a day and ship it. The funny thing with unit tests are ... \u003cstrong\u003ethey are also subject to being full of problematic logic or buggy code.\u003c/strong\u003e How does the engineer know their tests are correct or cover all the scenarios if you've never seen a failure?\u003c/p\u003e","title":"A short analogy on Feedback \u0026 Unit Tests"},{"content":"It me.\nWhat a funny (and accurate) way of describing the mental float during conversations when my ADHD is ramped up. This cracks me up! I feel like there should be some background sound effects with this. A nice animated parallax effect would finish it off. 🤪\n","permalink":"https://aaron.blog/when-my-brain-goes-on-a-little-adventure/","summary":"\u003cp\u003e\u003cstrong\u003eIt me.\u003c/strong\u003e\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2020/12/img_8828.jpg\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2020/12/img_8828.jpg?w=793\" class=\"kg-image\" alt=\"Picture of a cartoon penguin wide-eyed with the caption: When my brain goes on a little adventure instead of attending the conversation I'm having.\" loading=\"lazy\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eWhat a funny (and accurate) way of describing the mental float during conversations when my ADHD is ramped up. This cracks me up! I feel like there should be some background sound effects with this. A nice animated parallax effect would finish it off. 🤪\u003c/p\u003e","title":"When my brain goes on a little adventure"},{"content":"I worry a lot. Let me rephrase that - I worry often. Additively I think my worry amount is low, as if there were any way to measure worry definitively. Having Attention Deficit Hyperactivity Disorder, to me, shatters my day into so many small moments of time. When I worry about something, it doesn't last long because my brain is moving onto some other concern or input. What do I worry most about? People and relationships.\nI worry about friends, family, coworkers, and how all of those relationships mean something to me and to them. I dug deep into this feeling of worry a while back and came to the realization that I don't often do much about it. Sometimes I'll reach out to the person and resolve that worry. Other times I go down a small rabbit hole of permutations of a a possible conversation, of the history between us, and even of the future. I suppose it's a form of analysis paralysis. By the time I come up out of the rabbit hole, I forget to engage and I'm off to the next thought.\nI presumed that from the outside, being friends with someone with ADHD can be difficult. I started to write a letter to all of my friends and family to tell them more about me, how I think, and not to take it personally if I forgot to say something about a birthday or remarkable achievement. It was then I realized that maybe people I don't even know could benefit from reading this letter.\nYou might have a friend, coworker, or family member with ADHD. See if this letter gives you any coloring around your relationship that can help it down the road. If you are reading this and you have ADHD, feel free to send the letter to people you know.\nDear Friends, Family Members, and Coworkers:\nI have Attention Deficit Hyperactivity Disorder (sometimes the H part doesn't apply). It's hard to explain what my universe is like although I suspect you generally have an understanding as we all go through problems with attention and focus. Like other forms of neurodivergence you can't see what's different about me, you can only see how I act differently than yourself. If you don't understand those differences enough, you can't apply context to them and you may think my intentions are different.\nThrough thoughtfulness, therapy, medication, and meditation I've ruminated enough on what makes me different and have come to understand it. I feel like ADHD can be a super power as well as a super burden.\nMaybe you see me as:\nImpulsive.Unreliable.Disorganized.Restless.Procrastinating.Hot-tempered.Easily frustrated.Anxious.Moody.I see myself as someone who sees a lot of things. Imagine a room filled with screens - televisions, tablets, phones, beeping signals, dogs barking. A normal person can see the thing that's important and let the others become background noise. I have trouble picking the signal out of the noise. I have less noise because it's all signal in my brain.\nI see the random things on walks in people's yards. I notice the painting behind you when you're talking to me. I feel the seam of my jeans on my right knee when I'm driving. I hear the washing machine clicking in the basement when I'm on a call upstairs.\nI have good days and bad days. I know that anxiety goes hand-in-hand with ADHD. There are times I get overwhelmed with stimuli and need to exit a situation. I know that can be hard to take when I might have to leave your birthday party at a Mexican restaurant when the table next to us gets fajitas delivered. Sometimes sounds, smells, and lights can send my brain off into an adventure.\nThere are other times when ADHD lets me see many sides to a discussion. When I can focus and listen to a story and connect, I can ask deep questions about things you may not have thought of. Maybe you think I'm insightful or thoughtful.\nThen there are those things I miss. I forget to wish you a happy birthday or call you when you finish a race you told me about twenty times. Maybe you wonder how someone so insightful can be so forgetful. At times I bet you think I might not care about you as much as you do me.\nThe reality is I think about you probably 100 times a day in microsecond bursts. I remember those things you told me - I can see you at last year's birthday party and remember it's your birthday soon. But when I recall this fact, the next thing pops in my head and I don't transmit that recognition of the day to you.\nI leave cupboard doors and drawers open. You'll find tools I've used in places you wouldn't expect them. Then other days I'm criticizing your organizational skills because I see 15 different things out of place within moments. I'm also a creature of habit, and I have a habit of needing to change those habits for the sake of doing something different. I crave stability but I also crave change. I move furniture around a lot.\nI want to be normal but I also want to be me. Maybe I take medication to help things out but I recognize that the medication changes my personality in subtle ways. Medication isn't always the answer for everyone. Not everyone feels the need that they need to be fixed. I feel that if I'm honest with the people I live with, work with, and spend time around that we can learn how each other sees the world and we can help each other out. At times I may need a helping hand which can come in the form of therapy and/or medication. Don't judge me if I'm doing either of these things. I'm not a pill-popper or weak-minded.\nEven though I appear to be this self-aware, I need help from my family and friends. Remind me of things that are important to you. Make sure I'm putting important things into my calendar. If you notice me staring through you when you're talking, connect with me on the subject and tell me why its important to hear your story. I need to feel accountable for things to be a better signal in the noise of my brain.\nThanks for listening, and I'm always here to answer questions. I'm glad we know each other.\nMe\n","permalink":"https://aaron.blog/a-letter-from-your-adhd-friend-or-family-member/","summary":"\u003cp\u003eI worry a lot. Let me rephrase that - I worry \u003cstrong\u003eoften\u003c/strong\u003e. Additively I think my worry amount is low, as if there were any way to measure worry definitively. Having Attention Deficit Hyperactivity Disorder, to me, shatters my day into so many small moments of time. When I worry about something, it doesn't last long because my brain is moving onto some other concern or input. What do I worry most about? People and relationships.\u003c/p\u003e","title":"A letter from your ADHD friend or family member"},{"content":"That feeling when you have so many ideas for blog posts but never have enough time to put them into words for others. I do have one idea in-flight, and a coworker helped me copy edit. This is my accountability mechanism to get that post out there by the end of June.\n","permalink":"https://aaron.blog/adhd-that-feeling-when/","summary":"\u003cp\u003eThat feeling when you have so many ideas for blog posts but never have enough time to put them into words for others. I do have one idea in-flight, and a coworker helped me copy edit. This is my accountability mechanism to get that post out there by the end of June.\u003c/p\u003e","title":"ADHD \u0026 that feeling when"},{"content":"I have memories from my childhood but most of them are fragmented with how my ADHD brain works. There have been plenty of times talking with family about things that happened when I was young and I have no memory of it. I suppose my crappy attention \u0026amp; focus made it hard to store contiguous memories.\nThere are some things that are very clear in my head, though. One of those clear memories is of my dad and it lasted exactly 60 seconds.\nSome days before I would get ready for school I would watch the kids' game show called Double Dare. It was a 30 minute program that was a combination trivia and obstacle course. The unique thing about this show was the slime and gook used in the obstacle course - stuff that kids love to see people get covered in when they fall. The obstacle course lasted 60 seconds and was at the very end of the show.\nOne morning my dad was rushing to get ready for work. I remember him dressed in his work clothes and had his briefcase in hand. I was engrossed in the episode of Double Dare and my dad barely acknowledged me being there. I was excited to watch the obstacle course and I wanted my dad to watch too - I think because I wanted him to think it was super cool too. I told him to stay and watch - and then he said no.\nI was persistent, though. \"Dad, it's only 60 seconds long! You can wait one more minute to leave!\"\nHe looked at me and then the TV and he did something that was very atypical for him. He said okay and sat down to watch the obstacle course with me. I was so excited that he actually wanted to stay and watch!\nIt's funny how 30+ years later I remember this small moment because it had a really big impact on my relationship with my dad. He's often caught in his own head and doesn't have a strong sense of empathy with how his actions affect other people. His universe orbits around him in a lot of ways but he doesn't intentionally mean to isolate himself. He does care about the people around him but it doesn't always show.\nThis one day I reached that bit of his mind that recognized the empathy I really needed. In that 60 seconds I connected with my dad in a meaningful way. I've reflected back on that moment so many times when I get frustrated with him especially now that he's affected by Parkinson's Disease. My dad's disappearing little by little with what feels like dementia related to the Parkinson's.\nWhen you have that 60 second moment to have an impact on your kids, take it. You'll never know how long it'll stick with them.\n","permalink":"https://aaron.blog/the-impact-of-sixty-seconds-as-a-kid/","summary":"\u003cp\u003eI have memories from my childhood but most of them are fragmented with how my ADHD brain works. There have been plenty of times talking with family about things that happened when I was young and I have no memory of it. I suppose my crappy attention \u0026amp; focus made it hard to store contiguous memories.\u003c/p\u003e\u003cp\u003eThere are some things that are very clear in my head, though. One of those clear memories is of my dad and it lasted exactly 60 seconds.\u003c/p\u003e","title":"The Impact of Sixty Seconds as a Kid"},{"content":"The TL;DR is that Garmin's pace alerts seem to trigger on average pace but the alert on the screen shows current pace. It can be confusing especially early on in a run where the average is much more volatile.\nGarmin CoachI own a Garmin Forerunner 245 GPS watch and use it track my runs, bike rides, and any indoor activities. I also have an Apple Watch Series 4 with Cellular but don't use it for tracking any longer because of weird GPS behaviors. The Forerunner 245 has definitely been a superior GPS unit and their biometrics (especially with their heart rate strap and sensor package) blow the Apple Watch out of the water.\nIn 2019 I ran way more than I biked and discovered I was also getting faster and had higher endurance. I like to close the red activity ring on my Apple Watch every day and it's really my only fitness goal beyond using exercise to help combat my ADHD. I was discovering after several months of running every day (3-5mi on average) that my body was getting fatigued sometimes, lasting a week or more before recovery. I really noticed this when I started running more on trails in a nearby park influenced by glaciers.\nI got the Forerunner watch in late 2019 and discovered the Garmin Coach plans really soon after installing their app. I don't run in races nor do I really have any speed or distance goal. I ran a half marathon distance without specifically training and I recovered from it just fine. What I did want to start learning to do was how to vary my workouts with intention and include specific rest days. So, the Garmin Coach plan seemed like a great thing to follow.\nI never ran with a specific pace in mind, only ever looked at the results after a run. I wanted to run smarter, and maybe a bit faster on longer distance runs. I may some day decide to enter a race, but again, not a factor for me.\nDifferent Types of RunsGarmin coach has several different run types that I've encountered so far in the plan with the \"coach\" I'm using:\nTime trial - short distance runs near your threshold speed to gauge progress to your goal.Easy run - slower runs in a 2-6 mile range.Long run - 6-11mi runs (they keep getting longer towards my half marathon distance goal).Speed intervals - oscillate between hard/threshold runs for 30-90 seconds, then recovery slow run for the same time.Tired legs - an open-ended run once a week that lets you decide your pace.Pace AlertsI was really happy to see that the Forerunner gave me audible and visual alerts when my pace was outside of the target zone in the plan. I was not \"good\" at keeping a consistent pace so this was a great tool to learn control over pace.\nDuring the run on the watch one of the data screens shows the pace range and where you're at.\nIf you go outside the threshold, you get a pace alert.\nThe frustrating thing is the pace alerts never really make sense because there are times the alert shows a pace that's well within the range you're supposed to be at. In this example my pace should be 9:17-9:47 min/mile. After I took the picture of being at 9:20 I ran much faster (I was actually at closer to 7:30 min/mile) for nearly a quarter mile before the alert came up. I had started to slow down going up a hill before the alert triggered.\nWhat I've Figured OutGarmin's documentation is super sparse and most people online blame \"GPS inaccuracies\" any time someone questions behaviors like this. I think I've gotten it figured out with what's going on.\nPace alerts are based on the average pace for the segment you're in. When you set up a workout plan (or get them from a Garmin Coach plan) the pace is set for a particular segment as shown in the screenshot above. I also don't think it's just a regular average, it feels like it's weighted or a rolling timeframe.Earlier on in a segment, pace alerts are more sensitive because your average speed is volatile with less distance. The alerts come up more often even if you're trying to stay really close to the edge of the acceptable range.Stopping or walking to take a breather can lower your average speed, letting you unintentionally run faster for a short period of time after. This seems like a \"no duh\" thing but if you stop for any reason - waiting for a traffic light or whatever - it's easy to exceed your pace range and not get alerted about it for some time. Then you're surprised that you're running faster than you should be.Instant pace is not super accurate and it's rounded to five second marks. Pace alerts are to the second so they don't match the instance pace you see on the first data screen.Even with knowing all this, I still feel like there's some software programming glitches making the alerts not logical to us users. It's really hard to capture what's happening because, well, you're running and you can't reproduce it easily for a technical support case with them.\nSo use the pace alerts to help guide you and if they end up annoying you, turn them off.\n","permalink":"https://aaron.blog/garmin-forerunner-pace-alerts-dont-make-sense/","summary":"\u003cp\u003eThe TL;DR is that Garmin's pace alerts seem to trigger on average pace but the alert on the screen shows current pace. It can be confusing especially early on in a run where the average is much more volatile.\u003c/p\u003e\u003ch2 id=\"garmin-coach\"\u003eGarmin Coach\u003c/h2\u003e\u003cp\u003eI own a Garmin Forerunner 245 GPS watch and use it track my runs, bike rides, and any indoor activities. I also have an Apple Watch Series 4 with Cellular but don't use it for tracking any longer because of weird GPS behaviors. The Forerunner 245 has definitely been a superior GPS unit and their biometrics (especially with their heart rate strap and sensor package) blow the Apple Watch out of the water.\u003c/p\u003e","title":"Garmin Forerunner Pace Alerts Don't Make Sense"},{"content":"I attended The Lead Developer which is a single day conference for people leading engineering teams / teams of developers in Austin, Texas. I took notes on about ¾ of the talks on my iPad using Goodnotes. I'm getting closer to sketchnotes the more I practice this and I figured why not share what I took.\nVideos should be published soon by the organizers.\nDownload the PDFDownload\n","permalink":"https://aaron.blog/the-lead-developer-austin-notes/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2019/11/2019-11-15_11-33-22.png\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cp\u003eI attended \u003ca href=\"https://austin2019.theleaddeveloper.com\"\u003eThe Lead Developer\u003c/a\u003e which is a single day conference for people leading engineering teams / teams of developers in Austin, Texas. I took notes on about ¾ of the talks on my iPad using Goodnotes. I'm getting closer to sketchnotes the more I practice this and I figured why not share what I took.\u003c/p\u003e\u003cp\u003eVideos should be published soon by the organizers.\u003c/p\u003e\u003cp\u003e\u003ca href=\"/content/files/wp-content/uploads/2019/11/the-lead-developer-austin.pdf\"\u003eDownload the PDF\u003c/a\u003e\u003ca href=\"/content/files/wp-content/uploads/2019/11/the-lead-developer-austin.pdf\"\u003eDownload\u003c/a\u003e\u003c/p\u003e","title":"The Lead Developer Austin Notes"},{"content":"I attended Swift by Midwest in Chicago (Elk Grove Village) IL this past week. The Klein family did another great job hosting an iOS conference and I enjoyed every minute of it.\nI recently bought an iPad Pro 11\" and have been really loving using Goodnotes 5 to take handwritten notes. I thought I'd share my notes with you all in case you wanted to see some of the take-aways from the conference.\n","permalink":"https://aaron.blog/swift-by-midwest-2019-notes/","summary":"\u003cp\u003eI attended \u003ca href=\"https://swiftbymidwest.com\"\u003eSwift by Midwest\u003c/a\u003e in Chicago (Elk Grove Village) IL this past week. The Klein family did another great job hosting an iOS conference and I enjoyed every minute of it.\u003c/p\u003e\u003cp\u003eI recently bought an iPad Pro 11\" and have been really loving using Goodnotes 5 to take handwritten notes. I thought I'd share my notes with you all in case you wanted to see some of the take-aways from the conference.\u003c/p\u003e","title":"Swift by Midwest 2019 Notes"},{"content":"Working remote means I'm on a lot of video calls. I've come up with a bunch of little tweaks to help with attentiveness and mindfulness during the call. It is important to show you're listening.\nLook at the camera oftenWhen you're in person you look at people's eyes to show them you're listening. Doing that on a video call requires a bit of counter-intuitive body language by looking at the camera. You won't be looking at the person but they'll see you looking directly at them. It's a subtle difference but I've found it highly effective.\nAlso try to place the video call window up the screen towards the camera. Also decrease the size of the window so the person's eyes are naturally closer to the top of the window (closer to the camera). When you're not looking at the camera while the person is speaking it'll still look like you're generally looking at them. If you see someone's eyes darting around during a call it's easy to assume they're distracted.\nActually listenDon't get on a video call unless the other people have your attention. There's nothing more dismissive than seeing people on the call absorbed in something else. Give the speaker visual cues you're listening including the occasional nod. Mark yourself as do not disturb and turn off distractions.\nShow your handsOnce in a while I'll lean back or do something to have my hands show up on camera. Why? It shows I'm not typing. If I'm not typing then I'm not doing something else like chatting on Slack or coding. This is just another subtle way to show you're paying attention.\nTake written notesHand-written notes force you to not use the keyboard and further pay attention. I generally let people know I like taking hand-written notes so they know why I look down once in a while. Sometimes looking down can be disruptive particularly in 1:1 meetings - conversations will naturally pause. If you need to be less obvious when taking notes then stick with typing notes.\nLighting, sound, cameraMake sure you're properly lit and don't have a light behind you that's washing out your image. Use a headset or headphones to prevent feedback. Try using a higher quality microphone as well instead of the built-in one. If your camera is lower resolution consider getting a decent USB one. Looking and sounding good helps eliminate distractions from any message you're trying to convey.\nTurn off your own video previewIf you can, turn off the little window showing your own live view once you're sure your lighting is good. You'll find that once that preview is gone you'll look more at the person on the other end of the call.\n","permalink":"https://aaron.blog/being-mindful-during-video-calls/","summary":"\u003cp\u003eWorking remote means I'm on a lot of video calls. I've come up with a bunch of little tweaks to help with attentiveness and mindfulness during the call. It is important to show you're listening.\u003c/p\u003e\u003ch2 id=\"look-at-the-camera-often\"\u003eLook at the camera often\u003c/h2\u003e\u003cp\u003eWhen you're in person you look at people's eyes to show them you're listening. Doing that on a video call requires a bit of counter-intuitive body language by looking at the camera. You won't be looking at the person but they'll see you looking directly at them. It's a subtle difference but I've found it highly effective.\u003c/p\u003e","title":"Being mindful during video calls"},{"content":"I've been on sabbatical from work since mid-August. Today was my first day back. What did I learn in that time?\nNo single moment of truth achievedI did not have that quintessential \"aha\" moment of clarity that I thought might come during this unique time off. This experience was a huge shift for me living a life of priorities only set by myself. I had the ability to do whatever I wanted every day (somewhat) and it took some time to embrace that.\nThe stars aligned for the timeframe I choseI had severe angst when I chose the timeframe I did to take my sabbatical. I knew I'd miss our annual all-staff onsite meetup (the Grand Meetup) but I wanted to take the time off during mostly warmer weather this year. Even though I had a list of things I wanted to try to do during my sabbatical, I was giving it room to be whatever it was going to be. It turned out this room was needed.\nOur older dog, Burkley, stopped eating regularly and over the course of a month stopped eating entirely. At the end it was clear he was ready to go but his body was holding on even without drinking water. The hardest thing I've ever had to do in my life was putting Burkley down. I've had pets die in my arms before but I've never had to help them move along. My soul was crushed. It still aches.\nBurkley died the day before the Grand Meetup started. Had I not taken the sabbatical I would haven't been in a place to travel. I was meant to not be at the GM this year. I was meant to spend the weeks with him before his death knowing what was coming. I got to hang out with B on the floor in the living room for hours at a time just being there for him. I got to go for long runs, cry, feel sad, and recover. That little guy meant more to me than I really understood.\nI missed the social aspect of workMy husband got to take a couple weeks off at the beginning of my sabbatical. When he went back to work most of the time I spent alone working projects and playing outside. It wasn't until the last month or so that I realized I really missed the social interactions of work. The time I spend with coworkers, even with being remote, is meaningful.\nMost of what I enjoyed doing doesn't have to stopWork at Automattic is extremely flexible and mostly asynchronous depending on what you work on. The things I really did enjoy doing - baking, biking, running, visiting family, home improvements - I can keep doing them. If I need the time during the day I can shift my work schedule. Baking bread can be done during the workday since there's a lot of time waiting for dough to rise. I can visit my parents too and work from their house if I want to just hang out with them.\nIt's okay to not do anythingMindful meditation teaches you to be okay with doing nothing. Focusing on something singular like breathing is the basis of the practice. It's okay to be bored. I had to pull from this experience during my sabbatical to tell myself it's okay to not have to be doing something all the time. I did have lists of things I could do around the house and kept myself busy most days. When I started to notice myself being stressed out with picking the next thing to work on, I stepped back and did something simple like reading or playing with a dog. I feel like I was successful with letting the sabbatical be what is was rather than forcing it to be what I thought it should be like.\nSummed UpI am grateful for the time off of work. I have a better understanding of how my mind works. I value the small moments in life and see them with a more mindful eye.\nI also realize I really like what I do and the people I work with. I can't wait for the next sabbatical!\n","permalink":"https://aaron.blog/about-getting-paid-to-not-work-for-90-days/","summary":"\u003cp\u003eI've \u003ca href=\"/ninety-days-of-getting-paid-to-not-work/\" rel=\"noopener\"\u003ebeen on sabbatical from work\u003c/a\u003e since mid-August. Today was my first day back. What did I learn in that time?\u003c/p\u003e\u003ch3 id=\"no-single-moment-of-truth-achieved\"\u003eNo single moment of truth achieved\u003c/h3\u003e\u003cp\u003eI did not have that quintessential \"aha\" moment of clarity that I thought might come during this unique time off. This experience was a huge shift for me living a life of priorities only set by myself. I had the ability to do whatever I wanted every day (somewhat) and it took some time to embrace that.\u003c/p\u003e","title":"About getting paid to not work for 90 days"},{"content":"The last few weeks have been hard for me getting over the loss of Burkley. Every day is a little bit easier. Things like this poem have been helpful. Grab a tissue, it's a good one.\nThe Last BattleIf it should be that I grow frail and weak And pain should keep me from my sleep, Then will you do what must be done, For this — the last battle — can't be won. You will be sad I understand, But don't let grief then stay your hand, For on this day, more than the rest, Your love and friendship must stand the test.\nWe have had so many happy years,\nYou wouldn't want me to suffer so.\nWhen the time comes, please, let me go.\nTake me to where to my needs they'll tend,\nOnly, stay with me till the end\nAnd hold me firm and speak to me\nUntil my eyes no longer see.\nI know in time you will agree\nIt is a kindness you do to me.\nAlthough my tail its last has waved,\nFrom pain and suffering I have been saved.\nDon't grieve that it must be you\nWho has to decide this thing to do;\nWe've been so close — we two — these years,\nDon't let your heart hold any tears.\n— Unknown\n","permalink":"https://aaron.blog/the-last-battle/","summary":"\u003cp\u003eThe last few weeks have been hard for me getting over the loss of Burkley. Every day is a little bit easier. Things like this poem have been helpful. Grab a tissue, it's a good one.\u003c/p\u003e\u003ch1 id=\"the-last-battle\"\u003eThe Last Battle\u003c/h1\u003e\u003cp\u003eIf it should be that I grow frail and weak And pain should keep me from my sleep, Then will you do what must be done, For this — the last battle — can't be won. You will be sad I understand, But don't let grief then stay your hand, For on this day, more than the rest, Your love and friendship must stand the test.\u003c/p\u003e","title":"The Last Battle"},{"content":"I just reached an arbitrary goal of 567 days of closing my red ring on my Apple Watch. I do have rest days once in a while and I'll set my move goal down about 40% for those days. I've forgotten my charger on a trip and ran to an Apple Store to buy another one just to keep it going.\nEven if I lost the streak, I'd know I'm still sticking to the daily fitness goal.\n","permalink":"https://aaron.blog/longest-move-streak-567-days/","summary":"\u003cp\u003eI just reached an arbitrary goal of 567 days of closing my red ring on my Apple Watch. I do have rest days once in a while and I'll set my move goal down about 40% for those days. I've forgotten my charger on a trip and ran to an Apple Store to buy another one just to keep it going.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2018/10/img_5758.png\" class=\"kg-image\" alt=\"IMG_5758.png\" loading=\"lazy\" width=\"312\" height=\"390\"\u003e\u003c/figure\u003e\u003cp\u003eEven if I lost the streak, I'd know I'm still sticking to the daily fitness goal.\u003c/p\u003e","title":"Longest Move Streak: 567 Days"},{"content":"On May 10, 2001 Burkley was born. On August 4, 2001 we found Burkley at a pet store, brought him home and named him. We knew he was going to be a huge part of our lives and we would become caring pet parents quickly. Burkley was a very trustworthy dog after he grew out of being a puppy. We could leave him at home without any worry that things would be okay when we got back. He loved being part of our family.\nIn 2008 he developed signs of Cushing's Disease. The kind he had was treatable by medication but he had to be on it the rest of his life. It was also not cheap. Surprisingly he tolerated it well and he continued to live a full life.\nIn 2016 Burkley became a diabetic dog. Diabetes is an endocrine disorder like Cushing's and frequently are presented together. It isn't very often that a dog develops diabetes at 15, though. He took the twice daily insulin shots like a champ. He even let us take three glucose readings every day. We had to feed him at 12 hour increments reliably and couldn't be away from him for more than four to five hours. It was a huge lifestyle change but again worth it.\nIn August of this year, 2018, Burkley suddenly started bleeding from his mouth. We believe it was due to complications from a bad tooth being infected. That infection also spread to his nasal cavity which then also affected his eyes. He started to show signs of not wanting to eat but would still eat delicious things like cooked chicken and bread. Eventually a couple weeks ago he really gave up eating altogether. He still drank water and used the bathroom until last week. We knew the end was coming so we had family over to say goodbye.\nOn Friday last week we made the choice to help him move on. Putting him to sleep was the hardest thing I and my husband have ever had to do in life. The experience was traumatic even though Burkley was mostly out of it that last day. I keep replaying events over in my head of his final moments. Seeing his lifeless body emptied my soul of happiness.\nWe're slowly getting better every day. We realize and accept the choice we made to help him - it was inevitable that he would die soon anyway and likely in a lot of pain. Burkley hasn't been himself for a while now but he never complained. Never. It was rare that he ever expressed pain and always managed to still express his love no matter how he felt.\nHis brother, Wunjo, was able to be there with us that day and got to say goodbye as well.\nEveryone who met Burkley says he was a great dog full of personality. Here are some photographs of him so you may be able to glean just how much he meant to us over the years.\nWe'll miss you, B. See you some day near the Rainbow Bridge, my pal. ❤️\n","permalink":"https://aaron.blog/goodbye-burkley/","summary":"\u003cp\u003eOn May 10, 2001 Burkley was born. On August 4, 2001 we found Burkley at a pet store, brought him home and named him. We knew he was going to be a huge part of our lives and we would become caring pet parents quickly. Burkley was a very trustworthy dog after he grew out of being a puppy. We could leave him at home without any worry that things would be okay when we got back. He loved being part of our family.\u003c/p\u003e","title":"Goodbye, Burkley ❤️🐶❤️"},{"content":"My grandmother died in 2003. I miss her dearly. She used to make the best bread and always would freeze a loaf for me to take home and enjoy. I've wanted to learn how to make her bread myself to keep the tradition going. Sadly it took me until now being on sabbatical to motivate myself to work with my mom on recreating the recipe.\nThis past week I drove up to my parents' house and spent half of the day working through making two loafs of white bread. My grandmother's recipe was never really written down so my mom tried to remember some of the special steps she followed.\nWe used the Classic White Bread recipe from Gold Medal Flour's site as the foundation. Instead of milk we used water with potato flakes added - something my grandmother did.\nHere are some pictures from the experience:\nSince last week my mom has recalled several more things my grandmother used to do in her process. We're also reading up on the science behind making bread to really understand how to do things right. I can't wait to make my next loaf!\n","permalink":"https://aaron.blog/making-bread-with-my-mom/","summary":"\u003cp\u003eMy grandmother died in 2003. I miss her dearly. She used to make the best bread and always would freeze a loaf for me to take home and enjoy. I've wanted to learn how to make her bread myself to keep the tradition going. Sadly it took me until now \u003ca href=\"/ninety-days-of-getting-paid-to-not-work/\"\u003ebeing on sabbatical\u003c/a\u003e to motivate myself to work with my mom on recreating the recipe.\u003c/p\u003e\u003cp\u003eThis past week I drove up to my parents' house and spent half of the day working through making two loafs of white bread. My grandmother's recipe was never really written down so my mom tried to remember some of the special steps she followed.\u003c/p\u003e","title":"Making bread with my mom"},{"content":"At the opening remarks of That Conference 2018, Clark Sell asked every attendee to post a short video of what community means to them. Here's my contribution!\n[wpvideo 34LbZJva]\n","permalink":"https://aaron.blog/what-does-community-mean-to-me/","summary":"\u003cp\u003eAt the opening remarks of \u003ca href=\"https://www.thatconference.com\" rel=\"noopener\"\u003eThat Conference 2018\u003c/a\u003e, Clark Sell asked every attendee to post a short video of what community means to them. Here's my contribution!\u003c/p\u003e\u003cp\u003e[wpvideo 34LbZJva]\u003c/p\u003e","title":"What does community mean to me?"},{"content":"Yesterday began day one of 90 that I'll be taking as a sabbatical from work.\nEvery five years at Automattic we're given an awesome gift of a paid sabbatical - something I've never dreamt possible in our current age. The word \"sabbatical\" is heavily laden with teaching references. Even dictionaries reference education in its definition:\nsabbatical | səˈbadək(ə)l | noun a period of paid leave granted to a university teacher or other worker for study or travel, traditionally one year for every seven years worked: she's away on sabbatical | he requested permission to take a sabbatical in Istanbul | he took a three-month sabbatical from his job as CEO of a family business.\nWhat am I planning on doing with this time I have? A whole lot of nothing. Well, not really, but I'm keeping my plans simple.\nSpend time with the parental units. Learn a bunch of recipes from my mom that I want to know how to make.Get close to riding 100mi in one day on my bicycle.Build something with wood or metal like a chair, shed, etc.Read a bunch.Ninety days will go by super quick. Here's to making each day last.\n","permalink":"https://aaron.blog/ninety-days-of-getting-paid-to-not-work/","summary":"\u003cp\u003eYesterday began day one of 90 that I'll be taking as a sabbatical from work.\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://automattic.com/work-with-us/\" rel=\"noopener\"\u003eEvery five years at Automattic\u003c/a\u003e we're given an awesome gift of a paid sabbatical - something I've never dreamt possible in our current age. The word \"sabbatical\" is heavily laden with teaching references. Even dictionaries reference education in its definition:\u003c/p\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"padding-left:30px;\"\u003e\u003cspan class=\"hg x_xh0\"\u003e\u003cspan class=\"hw\" role=\"text\"\u003esabbatical \u003c/span\u003e\u003cspan class=\"prx\"\u003e| \u003cspan id=\"m_en_gbus0890920.018\" class=\"ph t_respell\"\u003esəˈbadək(ə)l\u003c/span\u003e |\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"sg\"\u003e\u003cspan id=\"m_en_gbus0890920.004\" class=\"se1 x_xd0\"\u003e\u003cspan class=\"posg x_xdh\" role=\"text\"\u003e\u003cspan class=\"pos\"\u003e\u003cspan class=\"gp tg_pos\"\u003enoun\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan id=\"m_en_gbus0890920.005\" class=\"msDict x_xd1 t_core\"\u003e\u003cspan class=\"df\" role=\"text\"\u003ea period of paid leave granted to a university teacher or other worker for study or travel, traditionally one year for every seven years worked\u003c/span\u003e\u003cspan class=\"gp tg_df\" role=\"text\"\u003e: \u003c/span\u003e\u003cspan class=\"eg\" role=\"text\"\u003e\u003cspan class=\"ex\"\u003eshe's away \u003cstrong\u003e\u003cspan class=\"bold\"\u003eon sabbatical\u003c/span\u003e\u003c/strong\u003e\u003c/span\u003e\u003cspan class=\"gp tg_eg\"\u003e | \u003c/span\u003e\u003c/span\u003e\u003cspan class=\"eg\" role=\"text\"\u003e\u003cspan class=\"ex\"\u003ehe requested permission to \u003cstrong\u003e\u003cspan class=\"bold\"\u003etake a sabbatical\u003c/span\u003e\u003c/strong\u003e in Istanbul\u003c/span\u003e\u003cspan class=\"gp tg_eg\"\u003e | \u003c/span\u003e\u003c/span\u003e\u003cspan class=\"eg\" role=\"text\"\u003e\u003cspan class=\"ex\"\u003ehe \u003cstrong\u003e\u003cspan class=\"bold\"\u003etook\u003c/span\u003e\u003c/strong\u003e a three-month \u003cstrong\u003e\u003cspan class=\"bold\"\u003esabbatical from\u003c/span\u003e\u003c/strong\u003e his job as CEO of a family business\u003c/span\u003e\u003cspan class=\"gp tg_eg\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/p\u003e","title":"Ninety days of getting paid to not work"},{"content":"Since November of last year (roughly) I've noticed that the Plex Media Server app doesn't ever show that there are updates available. I've manually reinstalled the latest server copy several times and it still hasn't updated automatically. I found a solution that resolves this.\nOn macOS you have to delete a preference key for the last time the server was updated. A borked version got released which had a higher numerical value causing the server to never find an update.\nQuit the Plex Media Server app by clicking on the icon in the menu bar and clicking Quit.Open Terminal.app in Applications, Utilities.Optionally first check to see if you have a value stored for that key by typing:defaults read ~/Library/Preferences/com.plexapp.plexmediaserver ButlerTaskUpdateVersionSkippedand hit enter. 4. Next delete the key by typing:\ndefaults delete ~/Library/Preferences/com.plexapp.plexmediaserver ButlerTaskUpdateVersionSkippedand hit enter. 5. Re-launch Plex Media Server.\nYour Plex Media Server should now properly indicate when an update is available.\n","permalink":"https://aaron.blog/plex-media-server-not-showing-updates/","summary":"\u003cp\u003eSince November of last year (roughly) I've noticed that the \u003ca href=\"https://www.plex.tv\" rel=\"noopener\"\u003ePlex\u003c/a\u003e Media Server app doesn't ever show that there are updates available. I've manually reinstalled the latest server copy several times and it still hasn't updated automatically. I found a solution that resolves this.\u003c/p\u003e\u003cp\u003eOn macOS you have to delete a preference key for the last time the server was updated. A borked version got released which had a higher numerical value causing the server to never find an update.\u003c/p\u003e","title":"Plex Media Server not showing updates"},{"content":"A coworker referred me to this recent TED talk about how China is changing how commerce happens. Not only does it involve the ecommerce sales experience but all the way through the supply chain to how products are designed. This definitely has opened my mind to how mobile devices can be involved in a consumer's shopping experience.\nhttps://www.ted.com/talks/angela_wang_how_china_is_changing_the_future_of_shopping\n","permalink":"https://aaron.blog/china-is-changing-the-future-of-shopping/","summary":"\u003cp\u003eA coworker referred me to this recent TED talk about how China is changing how commerce happens. Not only does it involve the ecommerce sales experience but all the way through the supply chain to how products are designed. This definitely has opened my mind to how mobile devices can be involved in a consumer's shopping experience.\u003c/p\u003e\u003cp\u003ehttps://www.ted.com/talks/angela_wang_how_china_is_changing_the_future_of_shopping\u003c/p\u003e","title":"China is changing the future of shopping"},{"content":"I bought my brother an Instant Pot for Christmas. If you've never heard of them before they're a fancy electronically-controlled pressure cooker. You can cook many different things in it and they even have a Bluetooth model. I've wanted one for a while but never could justify getting it - so my brother got to be the guinea pig. He absolutely loves it so I was motivated to finally get one myself.\nI picked one of the easiest things to make in the pot for our first meal - beef stew. I followed this recipe from the Instant Pot site:\n2 pounds beef stew meatStew Seasoning of your choice, amount adjusted for 2 pounds of meat, McCormick Stew seasoning was used as seasoning by original creator of this recipe, two packets were used.4 cups Water5 potatoes chopped1 cup carrot chopped1 onion chopped4 stalks celery chopped1 cup green beans rawI took the easy route for the seasonings and picked up a packet of the McCormick Beef Stew Seasoning Mix. The instructions call for putting the beef, seasoning, and water into the cooker for 45 minutes. Then you're supposed to release the pressure quickly, add the veggies in, and cook for another 10 minutes.\nThis is where things went a little wrong.\nThere are two ways to release the pressure in an Instant Pot. Quick release and natural method. Natural method means you let the pot cool down with time and the lock will open - naturally. For recipes requiring several steps or a more rapid stop in the cooking process, quick release is your solution. Quick release is a special valve on top of the lid that blows the steam out super quickly (and loudly). I read the instructions for the Instant Pot and understood cooking things with a lot of starch, like rice, can cause foaming inside. Using the quick release with starchy foods isn't recommended because it'll turn into a hot mess. Literally, a hot mess.\nI didn't realize that the first ingredient in the McCormick's packets was corn starch. Refer back to my comment about starchy foods. Yup, you've guessed it - I had a hot mess. Imagine hot steam then beef fat and water spraying everywhere over the kitchen. I threw a towel over the spout to contain it.\nLesson learned: be aware of all ingredients of your meal before cooking it!\n","permalink":"https://aaron.blog/dont-do-this-with-your-instant-pot/","summary":"\u003cp\u003eI bought my brother an \u003ca href=\"https://instantpot.com\"\u003eInstant Pot\u003c/a\u003e for Christmas. If you've never heard of them before they're a fancy electronically-controlled pressure cooker. You can cook many different things in it and they even have a Bluetooth model. I've wanted one for a while but never could justify getting it - so my brother got to be the guinea pig. He absolutely loves it so I was motivated to finally get one myself.\u003c/p\u003e","title":"Don't do this with your Instant Pot"},{"content":"At the end of October I bought a pair of Merrell Bare Access Flex. Absolutely loved the shoes from the first run. I instantly became a fan of the zero drop shoe style which is closer to running barefoot.\nAfter only about 80mi / 130km of running, I started to notice some tearing forming on the outside of both shoes near that darker rubberized swoosh.\nTurns out I'm not the only one experiencing these problems. I saw the reviews before I bought the shoe but I didn't want to believe them. I still didn't want to believe it. How could a shoe that felt so great start to fall apart so quickly? I had already put 300mi / 500km on my last pair of Nike running shoes so this seemed awful.\nI did what the Merrell customer service team suggested to do on many of those reviews - contact them. I sent them a picture of the damage, details of the purchase, and an explanation as to what was happening. They got back to me shortly after and asked for me to select three alternatives to this shoe from their site and another picture of the damage. After about a week I got a notice back saying they would be replacing the shoes with my first choice but I'd need to cut the tongues out of the shoes and send them a picture to prove their destruction.\nI replied back asking if it were possible to destroy them after receiving the new pair - my old running shoes really were in a bad shape and I didn't want to use them. After another week of no reply I sucked it up, cut the tongues out, and sent them the picture.\nThese shoes had plenty of life left in them and it felt awful having to make them useless. But in the end they replied back shortly after and said my replacement shoes were on their way.\nI just got the replacements today and already took them for a spin. The Merrell Trail Runner 4 shoes are very similar in design (zero drop, lightweight, flexible) but are a bit tougher since they're made for trail running. They also seem to be a little more appropriate for colder weather.\nHere's to getting more than 80mi out of them!\n","permalink":"https://aaron.blog/why-my-shoes-cant-talk-any-more/","summary":"\u003cp\u003eAt the end of October I bought a pair of Merrell Bare Access Flex. Absolutely loved the shoes from the first run. I instantly became a fan of the \u003ca href=\"https://www.runnersworld.com/running-shoes/whats-the-deal-with-zero-drop-shoes\" rel=\"noopener\"\u003ezero drop shoe style\u003c/a\u003e which is closer to running barefoot.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/12/img_3620.jpg\" class=\"kg-image\" alt=\"IMG_3620\" loading=\"lazy\" width=\"1024\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/12/img_3620.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/12/img_3620.jpg 1000w, /content/images/wp-content/uploads/2017/12/img_3620.jpg 1024w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eAfter only about 80mi / 130km of running, I started to notice some tearing forming on the outside of both shoes near that darker rubberized swoosh.\u003c/p\u003e","title":"Why My Shoes Can't Talk Any More"},{"content":"This past weekend I attended WordCamp US 2017 in Nashville TN with over 1,000 other attendees. I don't know the actual number, but it was a lot. This was the first WordCamp US I ever attended - so I didn't know what to expect. I was given the honor to be able to speak to everyone in a session called \"How Working Remote Saved My Life\" based loosely on topics related to my favorite blog post.\nIn case you don't know what WordCamp is, here's the official definition from their site:\nWordCamp is a conference that focuses on everything WordPress. WordCamps are informal, community-organized events that are put together by WordPress users like you. Everyone from casual users to core developers participate, share ideas, and get to know each other.I arrived in Nashville on Thursday, registered early, and attended the volunteer \u0026amp; speaker appreciation social event. I'm a relatively new person to the community despite me having worked with Automattic \u0026amp; WordPress for nearly five years now. I took this opportunity not only to connect with the speakers but to meet people in the WordPress world.\nWordCamp officially began on Friday. Most of the day I spent rehearsing my talk which was right after lunch. The organizers of the conference gave me the royal treatment, in my opinion. There was a dedicated quiet green room for speakers which allowed me to concentrate and de-stress about talking. They also provided both a handler and an emcee to make sure I got everything I needed and had a proper introduction to the crowd. Every session was also recorded and live streamed which made it easy to have friends and family watch me live. No pressure, of course. Lunch Friday was fantastic - the fried chicken was delicious. I attended a couple sessions in the afternoon but frankly my mind was spinning so much from finishing my talk that I don't remember many details beyond the people I met.\nFriday night I checked out the LGTBQ+Allies party at Suzy Wong's House of Yum. We all got fancy pink hats with the rainbow Wapuu embroidered on them. The turn-out was great and because of the gracious sponsors the event was free.\nSaturday's day was a mix of attending sessions and volunteering at the swag store. I recommend volunteering to anyone wanting to get a chance to meet a lot of great people. The swag booth is a center of activity and in the afternoon we had enough traffic that warranted opening a second booth downstairs. The day ended with watching the State of the Word where Matt Mullenweg gave his thoughts on WordPress in 2017 and the roadmap to 2018. I somehow managed to score a front row seat. Later that evening the closing party started at the Adventure Science Center a little ways away. We were treated to an evening of nerdy fun including a tour of the night sky in the planetarium, zero-gravity rides, and many other exhibits. We had the run of the entire facility.\nSunday I participated in Contributor Day which is probably the most impactful piece of the entire weekend. On that day a large group of us co-worked and onboarded new contributors, knocked out high-value mini projects, and set the goals for the upcoming year. It was great working with so many smart and energetic people in the same room.\nSome of my take-aways from the event:\nThe organizers are legit professional people. The undertaking of such a large event is overwhelming and it looked flawless from my perspective.The venue, Music City Center, is breathtaking. We're back there next year and I can't wait to return.The $40 ticket included two days of the conference, contributor day, three lunches and plenty of snacks. I've never had so much value in one low ticket cost.Speaking was a joy. I felt very accommodated and that I was very much valued to offer my time as a speaker and contributor to the event.Nashville is a super awesome city.And of course, here are some of my favorite pictures from my time in Nashville.\n","permalink":"https://aaron.blog/my-first-wordcamp-us/","summary":"\u003cp\u003eThis past weekend I attended WordCamp US 2017 in Nashville TN with over 1,000 other attendees. I don't know the actual number, but it was a lot. This was the first WordCamp US I ever attended - so I didn't know what to expect. I was given the honor to be able to speak to everyone in a session called \"How Working Remote Saved My Life\" based loosely on topics related to my \u003ca href=\"/how-working-remote-probably-saved-my-life/\"\u003efavorite blog post\u003c/a\u003e.\u003c/p\u003e","title":"My First WordCamp US"},{"content":"Here is a photo of my two favorite logos - the Jetpack logo and the That Conference logo.\nJetpack is a plugin you can install on your WordPress site to give it super powers that WordPress.com sites have but still self-hosted on your own servers.\nThat Conference is an awesome community tech conference that I've blogged about before. I've spoken there a number of years and really enjoy the mix of people and personalities it brings. Plus it's at a waterpark and families are not only welcome but integrated into the conference itself. I've seen some pretty smart children giving awesome talks!\nThe MacBook Pro with the custom Jetpack logo is part of my four year anniversary gift for working at Automattic. We get to pick any one of our product logos or the Automattic logo. Here's to another four! Thanks, Automattic. ;)\n","permalink":"https://aaron.blog/my-two-favorite-logos/","summary":"\u003cp\u003eHere is a photo of my two favorite logos - the \u003ca href=\"https://jetpack.com\" rel=\"noopener\"\u003eJetpack\u003c/a\u003e logo and the \u003ca href=\"https://www.thatconference.com\" rel=\"noopener\"\u003eThat Conference\u003c/a\u003e logo.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/11/photo.jpg\" class=\"kg-image\" alt=\"photo.jpg\" loading=\"lazy\" width=\"2000\" height=\"1503\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/11/photo.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/11/photo.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2017/11/photo.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2017/11/photo.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eJetpack is a plugin you can install on your WordPress site to give it super powers that WordPress.com sites have but still self-hosted on your own servers.\u003c/p\u003e\u003cp\u003eThat Conference is an awesome community tech conference that I've blogged about before. I've spoken there a number of years and really enjoy the mix of people and personalities it brings. Plus it's at a waterpark and families are not only welcome but integrated into the conference itself. I've seen some pretty smart children giving awesome talks!\u003c/p\u003e","title":"My Two Favorite Logos"},{"content":"Having an all-you-can-eat music service like Apple Music is fairly incompatible with how music is traditionally released. Releasing singles and then eventually full albums and then sometimes deluxe albums and then even remix albums causing a lot of confusion. I end up with tons of duplicates in my library which then skews the \"randomness\" of shuffle. Here's the scenario:\nHear a new song that you like and add it to you library. This song comes from the single.Listen to \"radio\" streams or curated playlists and hear the same song. That song is being sourced from album. You add it to your library again because you don't really know if it's in your library yet or not.Listen to your library in shuffle and keep hearing the same songs over and over again.Realize you've added five versions of the same song - several are identical versions.The multiple versions of songs also creates confusion when individual albums are pulled from the service by the studio for whatever reason. I'm assuming most reasons relate to contract negotiations. I also hate when songs are pulled and then are no longer playable then we they do get added back they're not always associated with what's in your library.\nI'm not sure what the answer is to solve this. Maybe a machine learning algorithm to help reduce the duplicates by predicting matches better (\"this song is already in your library\")?\n","permalink":"https://aaron.blog/we-need-to-re-think-how-music-is-released/","summary":"\u003cp\u003eHaving an all-you-can-eat music service like Apple Music is fairly incompatible with how music is traditionally released. Releasing singles and then eventually full albums and then sometimes deluxe albums and then even remix albums causing a lot of confusion. I end up with tons of duplicates in my library which then skews the \"randomness\" of shuffle. Here's the scenario:\u003c/p\u003e\u003col\u003e\u003cli\u003eHear a new song that you like and add it to you library. This song comes from the single.\u003c/li\u003e\u003cli\u003eListen to \"radio\" streams or curated playlists and hear the same song. That song is being sourced from album. You add it to your library again because you don't really know if it's in your library yet or not.\u003c/li\u003e\u003cli\u003eListen to your library in shuffle and keep hearing the same songs over and over again.\u003c/li\u003e\u003cli\u003eRealize you've added five versions of the same song - several are identical versions.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eThe multiple versions of songs also creates confusion when individual albums are pulled from the service by the studio for whatever reason. I'm assuming most reasons relate to contract negotiations. I also hate when songs are pulled and then are no longer playable then we they do get added back they're not always associated with what's in your library.\u003c/p\u003e","title":"We Need to Re-Think How Music is Released"},{"content":"My leadership coach shared a quote with me today that I'm using to help develop a talk I'm doing about how working remote saved my life.\nIn general, people are not drawn to perfection in others. People are drawn to shared interests, shared problems, and an individual’s life energy. Humans connect with humans. Hiding one’s humanity and trying to project an image of perfection makes a person vague, slippery, lifeless, and uninteresting.Quote taken from Robert Glover in No More Mr. Nice Guy: A Proven Plan for Getting What You Want in Love, Sex, and Life\n","permalink":"https://aaron.blog/people-are-not-drawn-to-perfection-in-others/","summary":"\u003cp\u003eMy leadership coach shared a quote with me today that I'm using to help develop a talk I'm doing about \u003ca href=\"/how-working-remote-probably-saved-my-life/\"\u003ehow working remote saved my life\u003c/a\u003e.\u003c/p\u003e\u003cblockquote\u003eIn general, people are not drawn to perfection in others. People are drawn to shared interests, shared problems, and an individual’s life energy. Humans connect with humans. Hiding one’s humanity and trying to project an image of perfection makes a person vague, slippery, lifeless, and uninteresting.\u003c/blockquote\u003e\u003cp\u003eQuote taken from Robert Glover in \u003ca href=\"https://www.drglover.com/no-more-mr-nice-guy/the-book.html\" rel=\"noopener\"\u003eNo More Mr. Nice Guy: A Proven Plan for Getting What You Want in Love, Sex, and Life\u003c/a\u003e\u003c/p\u003e","title":"People Are Not Drawn to Perfection in Others"},{"content":"","permalink":"https://aaron.blog/ill-never-misplace-this-bag/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/10/img_3563.jpg\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"2000\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/10/img_3563.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/10/img_3563.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2017/10/img_3563.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2017/10/img_3563.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e","title":"I’ll never misplace this bag"},{"content":"My employer recently changed our insurance plans around because we're big enough now to manage our own insurance rather than use a third party co-employer. We actually have nearly identical plans with the same provider, Blue Shield of California. A limitation with their website requires me to register a new account to use with the new insurance plan. The stabby part of that is usernames are based on e-mail addresses. I have to use a different e-mail address which is annoying but at least they support the Gmail plus sign trick.\nI've been getting e-mails that claims are ready for me to view on the site. When I log in, there are no claims. I finally sent a quick support request to the BSCA website technical team mentioning the creation of a second account and that I haven't seen any claims come through yet.\nSeveral days pass.\nI was about to call the customer service team and then I see this come into my e-mail box. At first glance it looks like a shitty spam.\nI decide to click on it.\nA fax over e-mail? I understand I can have a fax number tied to an e-mail account but in this case it looks like it was \"faxed\" directly to my e-mail address.\nIt gets better.\nSomehow my insurance company doesn't even have my phone number. I get how that could happen - maybe the data export from my employer missed it. But then how about e-mailing me back?\nInstead of e-mailing me someone took the time to print out a letter, scan it, and then send it to me via a fax system. Notice how the letter states \"Please do not reply to this email\" since the responses aren't monitored. 🤔\nLooking at the second page it gets even more hilarious.\nThere's my original request as an e-mail.\nYou really have to wonder what sort of screwed up business processes had to misfire in order for this to be the most efficient way to get in touch with me.\n","permalink":"https://aaron.blog/filed-under-crazy-shit-my-insurance-provider-does/","summary":"\u003cp\u003eMy employer recently changed our insurance plans around because we're big enough now to manage our own insurance rather than use a third party co-employer. We actually have nearly identical plans with the same provider, Blue Shield of California. A limitation with their website requires me to register a new account to use with the new insurance plan. The stabby part of that is usernames are based on e-mail addresses. I have to use a different e-mail address which is annoying but at least they support the \u003ca href=\"https://gmail.googleblog.com/2008/03/2-hidden-ways-to-get-more-from-your.html\" rel=\"noopener\"\u003eGmail plus sign trick\u003c/a\u003e.\u003c/p\u003e","title":"Filed Under: Crazy Shit My Insurance Provider Does"},{"content":"kern | kərn\nverb [with object]\n(usually as noun kerning) adjust the spacing between (letters or characters) in a piece of text to be printed. • make (letters) overlap.design (metal type) with a projecting part beyond the body or shank.When I saw this poorly kerned sign in a doctor's office I suddenly became less trustworthy of their ability to perform as medical professionals.\n","permalink":"https://aaron.blog/professionalism-kerning/","summary":"\u003cp\u003e\u003cstrong\u003ekern\u003c/strong\u003e | kərn\u003cbr\u003everb \u003cem\u003e[with object]\u003c/em\u003e\u003c/p\u003e\u003col\u003e\u003cli\u003e(usually as noun \u003cstrong\u003ekerning\u003c/strong\u003e) adjust the spacing between (letters or characters) in a piece of text to be printed. • make (letters) overlap.\u003c/li\u003e\u003cli\u003edesign (metal type) with a projecting part beyond the body or shank.\u003c/li\u003e\u003c/ol\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/10/photo.jpg\" class=\"kg-image\" alt=\"photo\" loading=\"lazy\" width=\"1024\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/10/photo.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/10/photo.jpg 1000w, /content/images/wp-content/uploads/2017/10/photo.jpg 1024w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eWhen I saw this poorly kerned sign in a doctor's office I suddenly became less trustworthy of their ability to perform as medical professionals.\u003c/p\u003e","title":"Professionalism \u0026 Kerning"},{"content":"I did something amazing today. I climbed a freaking mountain.\nI'm at the Automattic annual Grand Meetup in Whistler, British Columbia, Canada. I went on a hike with several of my coworkers up Blackcomb Ascent Trail. This was probably the hardest thing I've ever done in my life. I made it.\nTime: 3 hours 15 minutes\nDistance: 8mi\nElevation Hiked: 3,900ft (1,200m)\n","permalink":"https://aaron.blog/today-i-climbed-a-mountain/","summary":"\u003cp\u003eI did something amazing today. I climbed a freaking mountain.\u003c/p\u003e\u003cp\u003eI'm at the Automattic annual Grand Meetup in Whistler, British Columbia, Canada. I went on a hike with several of my coworkers up Blackcomb Ascent Trail. This was probably the hardest thing I've ever done in my life. I made it.\u003c/p\u003e\u003cp\u003eTime: 3 hours 15 minutes\u003c/p\u003e\u003cp\u003eDistance: 8mi\u003c/p\u003e\u003cp\u003eElevation Hiked: 3,900ft (1,200m)\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/09/img_3338.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/09/img_3339.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/09/img_3353.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/09/img_3350.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/09/img_3373.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/09/img_3357.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e","title":"Today I Climbed a Mountain"},{"content":"I'm off to Whistler British Columbia for another yearly Grand Meetup at Automattic. Eight days of face to face work and play with 600 of my closest coworkers. I expect to come back with a full heart, head, and notebook. I also expect to be emotionally drained from being \"on\" for that many days.\nCannot. Wait.\n","permalink":"https://aaron.blog/heading-to-whistler/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/09/img_3282.jpg\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1500\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/09/img_3282.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/09/img_3282.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2017/09/img_3282.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2017/09/img_3282.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eI'm off to Whistler British Columbia for another yearly Grand Meetup at Automattic. Eight days of face to face work and play with 600 of my closest coworkers. I expect to come back with a full heart, head, and notebook. I also expect to be emotionally drained from being \"on\" for that many days.\u003c/p\u003e\u003cp\u003eCannot. Wait.\u003c/p\u003e","title":"Heading to Whistler"},{"content":"successfulHow do you define success or if you're successful in life? To some success is defined by their monetary reward or compensation. To others success is defined by the number of children they've raised. Success could also be defined simply as living a life you enjoy.\nMost likely once you've defined what success is, you're in a state of non-success. Success is something you still want to achieve. The problem with labeling yourself as not yet successful has the connotation though that you are the opposite of success - which is failure. This boolean expression is a logical falsehood. Humans are always striving to be successful at life or individual tasks. If you don't reach your definition of success I'd rather re-evaluate the definition than give up and declare failure.\nSo if success is arbitrary or loosely defined, why bother defining it? Going through life without a goal or something to aim at can be hard to handle. I'm not suggesting we all develop a 20-year plan but at least consider what big things you want to accomplish in the next few months. When you're sitting around the house bored or aimless your goals can provide some clarity.\nWho cares about goals if you're accountable only to yourself, right? Well, there's the rub. Make yourself accountable. Tell someone your goals. Feel an obligation to follow through by getting someone else energized about these goals. While they're not going to beat you over the head to reach the goals it'll provide a sense of urgency or priority. This is one reason I used to love being in college - accountability.\nStart off small if you haven't ever considered what success means to you or if you've never set a goal before. Maybe that goal is to walk a mile over lunch or to volunteer for a social function. Whatever it is make the first goal something you know you can achieve with a reasonable amount of effort and time. Once you get in the groove of goal-setting, start setting longer-term goals and wider definitions of success.\n","permalink":"https://aaron.blog/what-is-your-definition-of-success-in-life/","summary":"\u003cblockquote\u003e\u003cstrong\u003esuccessful\u003c/strong\u003e\u003c/blockquote\u003e\u003cp\u003eHow do you define success or if you're successful in life? To some success is defined by their monetary reward or compensation. To others success is defined by the number of children they've raised. Success could also be defined simply as living a life you enjoy.\u003c/p\u003e\u003cp\u003eMost likely once you've defined what success is, you're in a state of non-success. Success is something you still want to achieve. The problem with labeling yourself as not yet successful has the connotation though that you are the opposite of success - which is failure. This boolean expression is a logical falsehood. Humans are always striving to be successful at life or individual tasks. If you don't reach your definition of success I'd rather re-evaluate the definition than give up and declare failure.\u003c/p\u003e","title":"What is Your Definition of Success in Life?"},{"content":"My brother recently sent me this video and reminded me how much we thought it was funny as kids. Turns out that film got me interested (for a while) in stop animation. I created a couple hours of stop animation shorts with my friends and brother. Too bad I don't have that footage any more.\nVicious Cycles was created in 1967 by Chuck Menville. Its production value is simple by today's standard but it still is hilarious.\n[wpvideo BRXRKcmM]\n","permalink":"https://aaron.blog/vicious-cycles-a-stop-animation-film/","summary":"\u003cp\u003eMy brother recently sent me this video and reminded me how much we thought it was funny as kids. Turns out that film got me interested (for a while) in stop animation. I created a couple hours of stop animation shorts with my friends and brother. Too bad I don't have that footage any more.\u003c/p\u003e\u003cp\u003eVicious Cycles was created in 1967 by \u003ca href=\"https://en.wikipedia.org/wiki/Chuck_Menville\"\u003eChuck Menville\u003c/a\u003e. Its production value is simple by today's standard but it still is hilarious.\u003c/p\u003e","title":"Vicious Cycles - A Stop Animation Film"},{"content":"","permalink":"https://aaron.blog/mondays-through-the-eyes-of-adhd/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/howidancetodubstep-facialexpressionsincluded_c69426_3336690.gif\" class=\"kg-image\" alt=\"A british-looking man flailing his arms and legs in front of a brick wall\" loading=\"lazy\" width=\"310\" height=\"330\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/flailing-3.gif\" class=\"kg-image\" alt=\"A man flailing his arms\" loading=\"lazy\" width=\"500\" height=\"261\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/bf3.gif\" class=\"kg-image\" alt=\"A cartoon character flailing his arms\" loading=\"lazy\" width=\"500\" height=\"375\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/eb3.gif\" class=\"kg-image\" alt=\"Skeleton cartoon character flailing its arms\" loading=\"lazy\" width=\"480\" height=\"266\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/mpais.gif\" class=\"kg-image\" alt loading=\"lazy\" width=\"640\" height=\"360\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/08/mpais.gif 600w, /content/images/wp-content/uploads/2017/08/mpais.gif 640w\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/flailing-4.gif\" class=\"kg-image\" alt loading=\"lazy\" width=\"493\" height=\"272\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/flailing_noodle_arms_by_dplover25-d4t7d15.gif\" class=\"kg-image\" alt loading=\"lazy\" width=\"400\" height=\"400\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"https://aaron.blog/wp-content/uploads/2017/08/6gaqa_s.gif\" class=\"kg-image\" alt=\"Kermit the Frog flailing his arms\" loading=\"lazy\" width=\"200\" height=\"150\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/giphy.gif\" class=\"kg-image\" alt loading=\"lazy\" width=\"512\" height=\"384\"\u003e\u003c/figure\u003e","title":"Mondays through the Eyes of ADHD"},{"content":"I renamed an article title and changed the URL. Follow this link to the updated post.\n","permalink":"https://aaron.blog/stop-being-a-bitch-about-what-tech-you-hate/","summary":"\u003cp\u003eI renamed an article title and changed the URL. Follow \u003ca href=\"/stop-being-a-butthole-about-what-tech-you-hate/\"\u003ethis link\u003c/a\u003e to the updated post.\u003c/p\u003e","title":"Stop being a butthole about what tech you hate"},{"content":"I’m attending an awesome conference this week and I’ve been seeing a trend that I want to address.\nOn more than one occasion I’ve noticed people bad-mouthing a particular technology they’ve deemed as being inferior. Specifically I’m addressing the number of speakers and panelists bad-mouthing WordPress. On more than one occasion WordPress has been called (and I’m paraphrasing) crap and useless.\nAs a full-time mobile developer I do not develop on the PHP side of WordPress. I barely know how to create a plugin even after working four years at Automattic. I personally do not have a drive to learn WP dev beyond what I need to accomplish my job. Just because I don’t use WP directly and only the APIs doesn’t mean I don’t have respect for it and the entire community of developers and volunteers behind it.\nMarginalizing an entire development community, especially at a polyglot tech conference, is a shitty move. Given that I work for Automattic and WordPress pays the bills it really hurts hearing someone call what you’re working on useless and irrelevant. I guess 28% of the web on WordPress isn’t really great (/sarcasm).\nThe reality is you’re not perfect. Your code is crap, just like mine, and everything we did in the past is never as good as what we’re working on now. We live in an ecosystem of technologies - learn to love everything that is tech. You wouldn’t be here if it weren’t for the foundation of what’s considered legacy. Your perspective is ultimately skewed to what your personal experiences have been - understanding others have valid experiences as well makes our world more diverse and inclusive.\n","permalink":"https://aaron.blog/stop-being-a-butthole-about-what-tech-you-hate/","summary":"\u003cp\u003eI’m attending an awesome conference this week and I’ve been seeing a trend that I want to address.\u003c/p\u003e\u003cp\u003eOn more than one occasion I’ve noticed people bad-mouthing a particular technology they’ve deemed as being inferior. Specifically I’m addressing the number of speakers and panelists bad-mouthing WordPress. On more than one occasion WordPress has been called (and I’m paraphrasing) crap and useless.\u003c/p\u003e\u003cp\u003eAs a full-time mobile developer I do not develop on the PHP side of WordPress. I barely know how to create a plugin even after working four years at Automattic. I personally do not have a drive to learn WP dev beyond what I need to accomplish my job. Just because I don’t use WP directly and only the APIs doesn’t mean I don’t have respect for it and the entire community of developers and volunteers behind it.\u003c/p\u003e","title":"Stop being a butthole about what tech you hate"},{"content":"The United States Postal Service started a new service in April called \"Informed Delivery\" which promises to e-mail you images of the envelopes of today's mail being delivered. You'll know what important mail is waiting for you in your mailbox even if you're not at home. You'll also know if mail isn't getting delivered to you properly and you can report it to the Post Office with a couple clicks.\nI normally work at home. During the summer my husband and I also tend to work 2-3 days a week at our seasonal campground site a couple hours away. We put our mail on hold during those days to prevent a mailbox full of potential goodies to steal. Informed Delivery allows us to see the outside of any incoming mail, even during a mail hold. If something concerning comes in we may be able to respond by contacting the sender and finding out what's in that envelope.\nOur mail carrier is fantastic. She works five days a week and on the sixth day when someone fills in for her, our mail service is questionable. On more than one occasion our mail has been mis-delivered to a similarly numbered house a quarter mile away. The only times we had proof of this mis-delivery was when the item had a tracking number associated with it and we sort of knew the item was coming. I ended up friending the person at that address on Facebook so we could communicate when we received each other's mail. With Informed Delivery I'll know when I should be expecting a piece of mail and if it's not in the mailbox, it could be in his.\nInformed Delivery isn't available in every area and I believe it's considered a beta-testing program. See if it's available in your area!\nhttps://informeddelivery.usps.com\n","permalink":"https://aaron.blog/us-postal-service-scans-e-mails-your-incoming-mail-pieces/","summary":"\u003cp\u003eThe United States Postal Service started a new service in April called \"\u003ca href=\"https://informeddelivery.usps.com\" rel=\"noopener\"\u003eInformed Delivery\u003c/a\u003e\" which promises to e-mail you images of the envelopes of today's mail being delivered. You'll know what important mail is waiting for you in your mailbox even if you're not at home. You'll also know if mail isn't getting delivered to you properly and you can report it to the Post Office with a couple clicks.\u003c/p\u003e","title":"US Postal Service Scans \u0026 E-mails Your Incoming Mail Pieces"},{"content":"Some words I use when I think of a true leaderI've been engaged with leadership coaches for several months as part of Automattic's internal leadership training program. Having a coach has been mind-opening and an excellent option for leadership training in a completely remote work culture. One of the recent questions asked of me was in regards to what I felt a true leader is and what qualities they embody.\nMy Answer:\nA true leader is someone that people look up to for direction, answers, and guidance when it comes to doing their jobs. They also know when to listen and ask for answers from the people they lead. Leaders are also visionaries in the sense they can find paths unfollowed to lead people to so they can exceed the potential they think they’re only capable of.What's your definition of a true leader?\n","permalink":"https://aaron.blog/how-would-you-define-a-true-leader/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/08/word-art.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"640\" height=\"319\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/08/word-art.png 600w, /content/images/wp-content/uploads/2017/08/word-art.png 640w\"\u003e\u003cfigcaption\u003eSome words I use when I think of a true leader\u003c/figcaption\u003e\u003c/figure\u003e\u003cp\u003eI've been engaged with leadership coaches for several months as part of Automattic's internal leadership training program. Having a coach has been mind-opening and an excellent option for leadership training in a completely remote work culture. One of the recent questions asked of me was in regards to what I felt a true leader is and what qualities they embody.\u003c/p\u003e","title":"How Would You Define a True Leader?"},{"content":"Plenty of Roadies out there (road bike enthusiasts) are anti a lot of things - bells, kickstands, racks, etc. When I bought a Crossrip 2 cyclocross bike from Trek I decided I'd accept no kickstand. It annoys the hell out of me and I'm looking for other options like a Click-Stand to prop the bike up when I'm parking it. The one safety item I really needed but hated the look of was a bell.\nWhy are bells important? On trails when you're passing someone yelling \"on your left!\" mostly works. It doesn't help when a runner has loud headphones on (something I think it incredibly unsafe) and you need to announce your passing. On my hybrid bike I had a mini Incredibell which worked well. On my Crossrip that sized bell just looked really weird. I found a bell that's functionally awesome and visually hidden. Can you find it?\nBuy it here: https://www.amazon.com/gp/product/B0728LPBFB\n","permalink":"https://aaron.blog/bells-on-road-bikes/","summary":"\u003cp\u003ePlenty of Roadies out there (road bike enthusiasts) are anti a lot of things - bells, kickstands, racks, etc. When I bought a Crossrip 2 cyclocross bike from Trek I decided I'd accept no kickstand. It annoys the hell out of me and I'm looking for other options like a \u003ca href=\"http://www.click-stand.com\"\u003eClick-Stand\u003c/a\u003e to prop the bike up when I'm parking it. The one safety item I really needed but hated the look of was a bell.\u003c/p\u003e","title":"Bells on Road Bikes"},{"content":"I've blogged a lot about my struggles with attention and focus over the years since I started working remote. I continue to find tools and adjust my behaviors tiny bits at a time to help align me with the world I work in. I've been doing mindful meditation daily, usually in the morning, to help calm the brain and prepare for the day.\nJust yesterday I was introduced to a fun practice called Morning Pages to help organize my thoughts in the morning to start the day. Julia Cameron, author of The Artist's Way, uses morning pages to spill out thoughts and ideas from her head onto three pages of paper. The daily practice involves stream-of-consciousness writing (or commonly called free writing) three full pages of handwritten text. Topic is unimportant - it's whatever comes to mind. Julia says some of her students call it \"mourning pages\" as it usually turns into a bitch session.\nThe things you write during morning pages help clear out the brain for you to start the day. You're not writing for anyone except yourself and even then the pages aren't written to be read. Imagine the stuck ideas flowing out of your head onto the paper and then throwing the paper out at the end. The things that end up written may or may not be really true thoughts and feelings - they're just what's occupying the recesses of your mind. Don't judge yourself during the process - just do it.\nI've modified the technique slightly to fit into my daily habit. I'm starting this week with five minutes of morning pages and then my normal 5-10 minute mindful meditation. This all happens before I start work but after I get the dogs fed \u0026amp; insulin injected for the old guy, and the coffee put on. As of right now I'm physically writing the morning pages but I could see moving to an iPad. I do enjoy the physical sensation of writing with a pencil, however.\nLearn more about Julia's techniques at http://juliacameronlive.com/basic-tools/morning-pages/\n","permalink":"https://aaron.blog/vacuum-the-brain-with-morning-pages/","summary":"\u003cp\u003eI've blogged a lot about my struggles with attention and focus over the years since I started working remote. I continue to find tools and adjust my behaviors tiny bits at a time to help align me with the world I work in. I've been doing mindful meditation daily, usually in the morning, to help calm the brain and prepare for the day.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/07/pencil-and-paper.jpg\" class=\"kg-image\" alt=\"Pencil and Paper\" loading=\"lazy\" width=\"1024\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/07/pencil-and-paper.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/07/pencil-and-paper.jpg 1000w, /content/images/wp-content/uploads/2017/07/pencil-and-paper.jpg 1024w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eJust yesterday I was introduced to a fun practice called \u003cem\u003eMorning Pages\u003c/em\u003e to help organize my thoughts in the morning to start the day. Julia Cameron, author of \u003cem\u003eThe Artist's Way\u003c/em\u003e, uses morning pages to spill out thoughts and ideas from her head onto three pages of paper. The daily practice involves stream-of-consciousness writing (or commonly called \u003ca href=\"https://en.wikipedia.org/wiki/Free_writing\" rel=\"noopener\"\u003efree writing\u003c/a\u003e) three full pages of handwritten text. Topic is unimportant - it's whatever comes to mind. Julia says some of her students call it \"mourning pages\" as it usually turns into a bitch session.\u003c/p\u003e","title":"Vacuum the Brain with Morning Pages"},{"content":"Since December I've been working with a physical therapist to help with some shoulder and neck pain that keeps recurring. After many hours of therapy including dry needling we've determined there's nothing wrong with my back or neck and it must be posture-related. I've been constantly tweaking my standing desk setup to make sure I'm maintaining decent posture.\nPart of the research took me into proper keyboard setup. I have a keyboard riser to put it at the proper height when standing at my desk. I discovered that the wrist rest is a complete lie and I was using the keyboard improperly. Resting your wrists while typing can compress the nerves in the wrist leading to carpal tunnel syndrome. Some experts say you can rest your palms instead to keep the angle of your wrists more neutral. I've found an even better approach - let your hands float over the keys \u0026amp; rest your hands when you're not typing.\nI place my keyboard at the edge of the riser so that there is no space available to rest my hands. When using the treadmill under the desk I found I was putting way too much weight on the rest to maintain balance. By forcing my hands to float above the keyboard I reduced the fatigue greatly and it made me more mindful of my overall posture.\nThe Wirecutter had a great article in March about ergonomic keyboards and typing ergonomics. While they don't specifically mention the hand floating technique there are a lot of great tips on keyboards.\n","permalink":"https://aaron.blog/keyboard-wrist-rests-are-a-lie/","summary":"\u003cp\u003eSince December I've been working with a physical therapist to help with some shoulder and neck pain that keeps recurring. After many hours of therapy including dry needling we've determined there's nothing wrong with my back or neck and it must be posture-related. I've been constantly tweaking my standing desk setup to make sure I'm maintaining decent posture.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/06/floating-wrists.jpg\" class=\"kg-image\" alt=\"Floating Wrists\" loading=\"lazy\" width=\"774\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/06/floating-wrists.jpg 600w, /content/images/wp-content/uploads/2017/06/floating-wrists.jpg 774w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003ePart of the research took me into proper keyboard setup. I have a keyboard riser to put it at the proper height when standing at my desk. I discovered that the wrist rest is a complete lie and I was using the keyboard improperly. Resting your wrists while typing can compress the nerves in the wrist leading to carpal tunnel syndrome. Some experts say you can rest your palms instead to keep the angle of your wrists more neutral. I've found an even better approach - let your hands float over the keys \u0026amp; rest your hands when you're not typing.\u003c/p\u003e","title":"Keyboard Wrist Rests are a Lie"},{"content":"It's been nearly four years since I started the journey of understanding how my attention \u0026amp; focus work. Along the way I've learned several things that have been key factors in developing tools to modify my behaviors to perform better.\nMost importantly any tools/habits you use or create are ephemeral. The tool may or may not work for you. Maybe the tool works for you for a couple months but then it becomes a hinderance. Possibly even the tool feels like it has always worked but something lets you understand it never really did help. The key thing to realize is your toolbox will and should continually change with you over time. No matter what people say you're a continually changing person - even old dogs learn new tricks. It's okay to throw things out and to try new things.\nDon't try to change too much too quickly. This is probably just as important as the first key but it's not very obvious until you start trying new things. If you try to change too many things or switch a habit drastically it's much easier to abandon when you don't feel immediate successes. Instead try to incrementally change towards something longer term. I've always wanted to have a meditation practice and make it part of my daily regimen. I felt it was the one missing piece to my daily routine with exercise that could help curb some of the ADHD symptoms. The problem was I didn't know where to get started and was really afraid of being a failure. I've always had a very open heart and mind when it comes to spirituality - if I couldn't \"get\" meditation then that would make me question a lot of things. I realized that my biggest fear was based upon my perception of how meditation can work and look.\nMindfulness meditation is one of the many ways you can practice meditation. Specifically it focuses your mind on being present in the moment - to be aware of what you're doing but not getting overwhelmed or misdirected by emotions, memories, and other inputs. My husband started meditating with the Calm iOS app to help with his challenges with anxiety. I learned that meditation doesn't require hours of effort every day and having an app on my phone made the barrier to entry super low. It also helped that he broke the ice by starting the practice and the two of us support each other with motivation to try to get a session in every day.\nToday marks the 122nd day that I've done a mindfulness meditation - either with the Calm app or on my own. I usually find streak analysis to be demotivating when life gets in the way and you miss a single day. I found after about 30 days of use of the app I started incorporating small moments of mindfulness meditation when I felt my attention slip. On the few days where I forgot to do a formal session with the app I logged a few minutes of time where I knew I was being mindful. Mindfulness will slip into parts of your day where you don't expect it. When giving one-on-one reviews with my team I frequently find myself popping into a moment of reflection before the video chat starts. Being mindful upfront brings the memories and feelings of that specific teammate into focus so our conversations are relevant and scoped to the purpose of a one-on-one. In the past those calls frequently were disconnected from the past because I got caught up in the actions of the operational nature of the call rather than the true nature of what they should accomplish.\nIt only takes a couple of minutes out of your day. Pick a time that is quiet and consistent throughout the week including the weekends. For me lately that's been in the morning after the dogs get fed and before I have a cup of coffee. On average I'll do a 10-minute session but try starting with a shorter amount. Calm uses a subscription model but they do offer a seven day cycle for free as well as several other options. There are plenty of other apps out there as well but I would suggest to start with one that provided some guidance narration.\nBeing mindful isn't just about listening to yourself. Developing a mindfulness practice will help you realize when your own emotions and memories are preventing you from seeing things external. Think of it like wearing a pair of sunglasses that have been cloudy from smeared sunscreen for years. Laziness stopped you from cleaning the lenses and over time you stopped even noticing the reduced clarity. Mindfulness lets you recognize the cloudiness, without judgement, and lets you understand what you're seeing differently because of the smudges. You can then choose to clean the lenses and see how the world looks with more clarity.\n","permalink":"https://aaron.blog/being-mindful-for-122-days/","summary":"\u003cp\u003eIt's been nearly four years since I started the journey of understanding how my attention \u0026amp; focus work. Along the way I've learned several things that have been key factors in developing tools to modify my behaviors to perform better.\u003cbr\u003e\u003cbr\u003eMost importantly any tools/habits you use or create are ephemeral. The tool may or may not work for you. Maybe the tool works for you for a couple months but then it becomes a hinderance. Possibly even the tool feels like it has always worked but something lets you understand it never really did help. The key thing to realize is your toolbox will and should continually change with you over time. No matter what people say you're a continually changing person - even old dogs learn new tricks. It's okay to throw things out and to try new things.\u003cbr\u003e\u003cbr\u003eDon't try to change too much too quickly. This is probably just as important as the first key but it's not very obvious until you start trying new things. If you try to change too many things or switch a habit drastically it's much easier to abandon when you don't feel immediate successes. Instead try to incrementally change towards something longer term. \u003cbr\u003e\u003cbr\u003eI've always wanted to have a meditation practice and make it part of my daily regimen. I felt it was the one missing piece to my daily routine with exercise that could help curb some of the ADHD symptoms. The problem was I didn't know where to get started and was really afraid of being a failure. I've always had a very open heart and mind when it comes to spirituality - if I couldn't \"get\" meditation then that would make me question a lot of things. I realized that my biggest fear was based upon my perception of how meditation can work and look.\u003cbr\u003e\u003cbr\u003eMindfulness meditation is one of the many ways you can practice meditation. Specifically it focuses your mind on being present in the moment - to be aware of what you're doing but not getting overwhelmed or misdirected by emotions, memories, and other inputs. My husband started meditating with the \u003ca href=\"https://calm.com\"\u003eCalm iOS app\u003c/a\u003e to help with his challenges with anxiety. I learned that meditation doesn't require hours of effort every day and having an app on my phone made the barrier to entry super low. It also helped that he broke the ice by starting the practice and the two of us support each other with motivation to try to get a session in every day.\u003cbr\u003e\u003cbr\u003e\u003c/p\u003e","title":"Being Mindful for 122 Days"},{"content":"A coworker posted about how one of her children caught her in the act of being the Tooth Fairy. I gave her a great response to share:\nThe Toothy Fairy™ is a 100% remote/distributed workforce dedicated to the childhood dental successes around the world. In some cases TF may subcontract work to a local resource when constraints arise from any number of influencers. Please explain to your children that this outlier instance does not prove the non-existence of TF employees or their founder, The Fairy Herself.Of course it's a remote job!\n","permalink":"https://aaron.blog/the-tooth-fairy/","summary":"\u003cp\u003eA coworker posted about how one of her children caught her in the act of being the Tooth Fairy. I gave her a great response to share:\u003c/p\u003e\u003cblockquote\u003eThe Toothy Fairy™ is a 100% remote/distributed workforce dedicated to the childhood dental successes around the world. In some cases TF may subcontract work to a local resource when constraints arise from any number of influencers. Please explain to your children that this outlier instance does not prove the non-existence of TF employees or their founder, The Fairy Herself.\u003c/blockquote\u003e\u003cp\u003eOf course it's a remote job!\u003c/p\u003e","title":"The Tooth Fairy™"},{"content":"Every year at Automattic's Grand Meetup we're required to give a flash talk of up to four minutes on any topic. This past year I gave mine on a subject related to my post \"How Working Remote (Probably) Saved My Life\". I'm actually developing a much longer talk to dive deeper into what's been involved with my successes and failures. Until then, here's my flash talk for your enjoyment.\n[wpvideo M5HpGRy1]\n","permalink":"https://aaron.blog/flash-talk-working-remote-saved-my-life/","summary":"\u003cp\u003eEvery year at Automattic's Grand Meetup we're required to give a flash talk of up to four minutes on any topic. This past year I gave mine on a subject related to my post \"\u003ca href=\"/how-working-remote-probably-saved-my-life/\"\u003eHow Working Remote (Probably) Saved My Life\u003c/a\u003e\". I'm actually developing a much longer talk to dive deeper into what's been involved with my successes and failures. Until then, here's my flash talk for your enjoyment.\u003c/p\u003e\u003cp\u003e[wpvideo M5HpGRy1]\u003c/p\u003e","title":"Flash Talk: Working Remote Saved my Life"},{"content":"Well, it's possible you're doing it properly ... but likely not. At CocoaConf Chicago Rob Napier gave a presentation on iOS security and highlighted his cross-platform AES encrypt/decrypt library, RNCryptor. You'll find implementations for Swift, Objective-C, Java, PHP, C, JavaScript, Haskell, Go, and many more.\nDo you know what password stretching, CBC, PBKDF2, and IVs are? If you've said no to any of these, you should probably look at RNCryptor.\nCheck it out!\nFeatured image courtesy of Flickr user cyberhades\u0026nbsp;https://www.flickr.com/photos/cyberhades/20711405390","permalink":"https://aaron.blog/youre-doing-aes-encryption-wrong/","summary":"\u003cp\u003eWell, it's possible you're doing it properly ... but likely not. At CocoaConf Chicago \u003ca href=\"http://cocoaconf.com/chicago-2017/sessions/practical-security\"\u003eRob Napier gave a presentation\u003c/a\u003e on iOS security and highlighted his cross-platform AES encrypt/decrypt library, \u003ca href=\"https://github.com/RNCryptor/RNCryptor\"\u003eRNCryptor\u003c/a\u003e. You'll find implementations for Swift, Objective-C, Java, PHP, C, JavaScript, Haskell, Go, and many more.\u003c/p\u003e\u003cp\u003eDo you know what password stretching, CBC, PBKDF2, and IVs are? If you've said no to any of these, you should probably look at RNCryptor.\u003c/p\u003e\u003cp\u003eCheck it out!\u003c/p\u003e","title":"You're Doing AES Encryption Wrong"},{"content":"Open windows. ☀️🎐🎏\n","permalink":"https://aaron.blog/one-important-reason-i-work-from-home/","summary":"\u003cp\u003eOpen windows. ☀️🎐🎏\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/03/img_1819.jpg\" class=\"kg-image\" alt=\"A photo of my open office window with a sunny yard\" loading=\"lazy\" width=\"360\" height=\"480\"\u003e\u003c/figure\u003e","title":"One Important Reason I Work From Home"},{"content":"I recently went down the rabbit hole of figuring out if I am using the right solution for offsite storage of my photo library. I've been using iCloud Photos for over a year and am not totally happy with the solution. I decided to try out both Amazon Prime Photos and Google Photos.\nMy home Internet connection has a 5Mb/s upload speed which feels pathetically slow. I wanted to test each solution with a good chunk of my photo library uploaded which made this a time-consuming experience. Here's what I came up with after about two weeks of futzing.\nMy Scenario \u0026amp; Options Using macOS \u0026amp; iOS primarily.\u0026nbsp;Support for Android would be nice but isn't 100% required. 20k photos \u0026amp; videos 120GB of disk space Sources of images: Canon Digital Rebel (including CRW RAW) Canon 40D DSLR (including CR2 RAW) iPhone 1st gen through iPhone 7 Plus iPod nano videos Other shitty digital cameras over the years Handful of scanned photos \u0026amp; negatives iCloud PhotosThis solution sort of just works for me. I can take pictures on my phone and they're automatically backed up into iCloud when I'm back onto a WiFi network. My iMac at home downloads all originals so I have a copy of every photo and video on disk without an Internet connection. iCloud sync is built into the Photos Mac app and into iOS.\nThe downside is every time I take an HD video or a ton of photos it swamps my WiFi connection. During the summer we're at our camper/cottage and have a very slow 2Mbps down/1Mbps up connection. I have to frequently shut off WiFi on my phone so our connection is usable. There is no way to be explicit about when sync happens.\niCloud Photos can also intelligently cache items on your devices with less storage than your library size. While this seems magical it also means it uses WiFi or cellular data when you want to view a photo or video that isn't cached on the device yet. Spending an evening reminiscing with friends going through images and videos from years back can easily chew through gigabytes of cellular data. There is also no way to mark an album or set of items as more important so they're always cached.\nFaces also do not sync across iCloud. Every machine/device that is connected has to process faces independently - or so it seems. If I take time to train/teach/curate faces on my iMac they don't show up on my laptop or iPhone.\nStorage is pretty cheap - 200GB is $2.99/month. I'm getting pretty close to that limit which means my only option is to move to 1TB at $9.99/month. When that limit is breached I'd probably end up using iCloud for more file storage (instead of DropBox) since I'll be paying for it.\nAmazon Prime PhotosI have Amazon Prime for our house which means I get their Prime Photos option included. This service provides for unlimited image storage and 5GB of video storage. You can upgrade to unlimited storage of any files for $60/year.\nAmazon has a sync tool that you can drag your Apple Photos library file onto and it'll sync all of your master images. The uploader gives you options for the number of concurrent uploads as well as how much bandwidth each upload can take. If you leave it with the default settings you'll most likely swamp your connection if you're at 5Mbps or less so some tweaking is required. Sync can be automatic as well but I don't have a ton of confidence that it'll be able to sync changes \"magically\".\nUploading took forever and I never let it finish as I wanted to try out the service before investing in a week of uploading. The web interface has face detection, subject detection (find me photos with dogs, etc), and places if you recorded GPS coordinates in the metadata. Randomly some of my RAW images shot with either Canon camera would be mirrored for no real reason. This was a hard stop for me.\nGoogle PhotosGoogle Photos gives you unlimited photo and video storage for free if you choose their compressed option. With this option they'll shrink the items down without any real visible difference. You can also buy more storage if you want to store the originals without compression.\nThe uploader tool seems to understand how an Apple Photos library is structured and handled initial sync really well except for my RAW images. All of the raw images I shot with my Canon Digital Rebel from roughly 2004 - 2008 couldn't be imported. I should take the time to convert to Adobe Digital Negative format as this is better supported by software since it's not hardware-specific.\nGoogle's photo interface is a bit weird especially if you're not familiar with Android and the material design paradigms. After a while I did get used to it and preferred it over Amazon. I ended up uploading my entire library and purchased 100GB of storage for $1.99. That and the extra storage I earned was just enough to store all of my originals which means iCloud has 20GB or more of bloat.\nI ended up not going with Google Photos because of the failed import of all of my older RAW images. Every time I restarted my computer the sync tool would try to re-upload all 2,500 failed images taking time and bandwidth up. If I end up converting those old images into DNG format I may try again.\nThe ComparisonStorageiCloud Photos - 5GB free, 50GB $1/month, 200GB $3/month, 1TB $10/month, 2TB $20/month.Amazon Prime Photos - Unlimited Photo Storage (included with Prime $99/year), 5GB free for videos \u0026amp; everything else, unlimited everything $60/year (plus annual Prime membership).Google Photos - Unlimited Photo \u0026amp; Video Storage (if you're okay with compression/reduction in quality), original quality uses Drive storage plans: 15GB free, 100GB $2/month, 1TB $10/month, 2TB $20/month.Winner? Depends. If you have Amazon Prime already their $60/year unlimited beats them all. If you're okay with compressed images \u0026amp; videos, Google is the winner. If you want original images \u0026amp; videos stored then iCloud has the best price breaks under 1TB.\nSynciCloud Photos - Relies upon your library being in Apple Photos or iPhoto and on a Mac or solely stored on an iOS 9+ device. Sync is automatic on WiFi on iOS, automatic all the time on any Internet connection on macOS. All metadata except detected faces is synced. Client is integrated with the operating system - nothing else to install. Sync includes new photos, changed metadata, edited photos, and deletion. Devices can also choose to not sync all images and only download on demand.Amazon Prime Photos - Amazon has an app for syncing your Drive folders and also functionality for uploading items without syncing. If you upload your Apple Photos library it knows how to pick out the originals only. Further changes to your library aren't synced automatically so I'm not sure how well deduping will work later on. Amazon Prime Photos does not then keep your photo library in \"sync\".Google Photos - Google has an app for syncing your Drive folders and a Desktop Uploader app. The uploader app knows how to access an Apple Photos library to upload originals and it'll keep track of changes so Google Photos gets all new items and possibly edited items. It will not remove deleted photos.Winner? iCloud Photos. Being able to keep a library synced on multiple devices and changes pushed across all of them makes it the clear choice on my end. If you want to make Amazon or Google the \"system of record\" for your images then real synchronization isn't as important.\nBells \u0026amp; WhistlesiCloud Photos: macOS Photos app, iOS Photos app, and iCloud.com Photos browser. Apps have Face detection, geolocation, shared photo streams, automatically generated albums like \"best of last two weeks\", etc. Supports a ton of RAW camera image types going back 13+ years of models.Amazon Prime Photos: iOS \u0026amp; Android apps, Amazon.com Photos browser. Face detection and tagging server-side, geolocation, family albums. RAW image support is advertised to be fairly limited to newer models but does support older cameras albeit buggy.Google Photos: iOS \u0026amp; Android apps, Google.com Photos browser. Face detection, tagging, geolocation, and automatically generated albums are all server-side. Supports a much more limited RAW image format range \u0026amp; uploader app does not gracefully handle failed image uploads.Winner? Google Photos. The discovery mechanism for finding memories is the best experience by far. Their photos assistant will suggest fun animations, photo treatments, album groupings, and mosaics. iCloud Photos feels like it's emphasis is on flawless sync rather than server-side experience consistency with the discovery features like faces and locations.\nVerdict? Sticking with iCloud PhotosFor now I'm sticking with iCloud Photos. I didn't want to lose any fidelity in my library and I wanted a sync solution that just worked that included deletes and edits. It's not the cheapest solution after 200GB or the most flexible with the software options for syncing and bandwidth throttling. Amazon's flakey RAW image support \u0026amp; Google's graceless unsupported RAW images in their uploader stopped me from picking either of those options.\n","permalink":"https://aaron.blog/choosing-between-google-amazon-icloud-photos/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/03/photooptions.png\" class=\"kg-image\" alt=\"PhotoOptions\" loading=\"lazy\" width=\"402\" height=\"350\"\u003e\u003c/figure\u003e\u003cp\u003eI recently went down the rabbit hole of figuring out if I am using the right solution for offsite storage of my photo library. I've been using iCloud Photos for over a year and am not totally happy with the solution. I decided to try out both Amazon Prime Photos and Google Photos.\u003c/p\u003e\u003cp\u003eMy home Internet connection has a 5Mb/s upload speed which feels pathetically slow. I wanted to test each solution with a good chunk of my photo library uploaded which made this a time-consuming experience. Here's what I came up with after about two weeks of futzing.\u003c/p\u003e","title":"Choosing Between Google, Amazon, \u0026 iCloud Photos"},{"content":"My friends Tammy Coron and Tim Mitra invited me onto their podcast, Roundabout: Creative Chaos, to talk about my work, life, and Star Trek. Check it out!\nhttp://roundaboutfm.com/episode-80-aaron-douglas/\nAlso hosted on: Stitcher | iTunes\n","permalink":"https://aaron.blog/podcast-interview-roundabout-creative-chaos/","summary":"\u003cp\u003eMy friends Tammy Coron and Tim Mitra invited me onto their podcast, Roundabout: Creative Chaos, to talk about my work, life, and Star Trek. Check it out!\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://roundaboutfm.com/episode-80-aaron-douglas/\" rel=\"noopener\"\u003ehttp://roundaboutfm.com/episode-80-aaron-douglas/\u003c/a\u003e\u003c/p\u003e\u003cp\u003eAlso hosted on: \u003ca href=\"http://www.stitcher.com/podcast/just-write-code-llc/roundabout-creative-chaos/e/episode-80-aaron-douglas-49457687\" rel=\"noopener\"\u003eStitcher\u003c/a\u003e | \u003ca href=\"https://itunes.apple.com/us/podcast/episode-80-aaron-douglas/id918306329?i=1000382708612\u0026amp;mt=2\" rel=\"noopener\"\u003eiTunes\u003c/a\u003e\u003c/p\u003e","title":"Podcast Interview - Roundabout: Creative Chaos"},{"content":"Weather Underground Radio StreamsWeather Underground provided a free service to host all of these streams so you could listen into important weather bulletins over the Internet. Weather Underground was purchased by the Weather.com parent company The Weather Company in 2012 and then IBM purchased The Weather Company in 2016. Weather Underground moved all of their services over to Amazon Web Services and canned a few legacy products including the NOAA Weather Radio streams.\nFor years I've been streaming our local NOAA Weather Radio station, KEC60, over the Internet to Weather Underground. I was extremely disappointed when the weather radio service was cut off with no notice to the listeners or the people graciously providing the audio source stream to share. Uploading the audio stream from my home doesn't use a ton of bandwidth but letting 50-100 people listen during peak times wouldn't be practical. I have a web server running in DreamHost's VPS cloud so why not use that and host my own streams?\nDreamHost VPSDreamHost VPS (virtual private server) is an inexpensive high-performance web hosting solution that lets you dial up and down the resources you need to run your sites. I moved over to their VPS service after having hosted a Mac mini in a local data center for years. I couldn't beat the cost difference and DreamHost VPS is managed meaning they install security updates and mitigate any attacks on the server.\nIn the recent past DreamHost has removed one feature I specifically moved over to them for: having root access on your server instance. The rationale behind that change is their team needs the ability to maintain the server, install patches, inspect traffic, and do whatever other voodoo is necessary that falls under a \"managed\" server. The upside is I don't have to worry about much with the server. The downside is I can't install software on the server for all users using Aptitude, the Ubuntu system software package manager.\nI need to install the streaming audio/video server Icecast 2 to be able to host my own weather radio stream for Milwaukee. Not being able to use Aptitude on my VPS instance makes this more difficult, but not impossible. The process isn't straightforward and can be very daunting if you've never compiled software before on a Linux machine via the command line. I've documented my experience here in case you're interested in doing something similar.\nInstallationYou don't have root access on DreamHost VPS so you can't install Icecast using apt-get. There are ways to download the apt-get packages and manually install but that has its own drawbacks and breakages. I opted to download the source code for Icecast, compile it, and install in the user directory of the site I'm hosting the stream on. By installing in the user directory I require no system-level permissions whatsoever to run Icecast.\nThe basic steps are:\nDownload the source code for Icecast and a few related dependencies (libxslt, libogg, and libvorbis).Configure, compile, and install the three dependencies.Configure, compile and install Icecast.Set up the Icecast configuration.Launch Icecast.Configure Icecast to launch on startup.PreconditionsI'm making the assumption you have a basic understanding of Linux command line operations, SSH, and how to use DreamHost's control panel. You'll need the following things completed before starting the process I've detailed:\nPurchase a DreamHost VPS instance and have it running. (sometimes you need to be explicit with a tutorial 😝)Create a shell user for your Icecast install. I suggest a separate account with DreamHost's \"Enhanced Security\" turned on. This is just in case Icecast introduces any security vulnerabilities to your server and limits the access the process has to your system.My VPS is using Ubuntu 12.04.5 LTS at the time of this post. At one time I did have root access on my machine and may have installed other dependencies that your instance may not have. Feel free to comment on this post if you need help installing those as well.The tutorial starts with the assumption you're logged into your account via SSH and sitting at the ~/ (home) folder location.I use Bash for my shell. Other shells like Zsh should be fine but you'll need to adjust where you edit your path.The source file URLs may change and will probably be outdated shortly after I write this post. I suggest you visit the project home pages for the most recent versions when doing this yourself. You'll also want to occasionally update Icecast as time passes to make sure you patch any security issues. This is the downfall of not being able to use Aptitude or a similar package manager.Please note:Download SourcesCreate a temporary folder: mkdir tmp cd tmpDownload the source files for Icecast and the dependencies. wget http://downloads.xiph.org/releases/icecast/icecast-2.4.3.tar.gz wget https://git.gnome.org/browse/libxslt/snapshot/libxslt-1.1.29.zip wget http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.zipUnpack each of those downloads. tar xvfz *.tar.gz unzip *.zipCompile All the ThingsFirst create the usr (pronounced user) folder and add it to your path. cd ~/ mkdir -p usr/bin mkdir -p usr/var/log/icecast echo 'PATH=$PATH:~/usr/bin' \u0026gt;\u0026gt; ~/.bash_profile . ~/.bash_profileThe last command re-executes the login script so your path is updated right away.\nIn the following commands replace \"/home/username\" with the actual path of the folder you want to install everything into. In most cases you'll just replace username with the username of the account you created.\ncd ~/tmp/libxslt-1.1.29/ ./autogen.sh --prefix=/home/username/usr make install cd ../libogg-1.3.2/ ./configure --prefix=/home/username/usr make install cd ../libvorbis-1.3.5/ ./configure --prefix=/home/username/usr make install cd ../icecast-2.4.3/ ./configure --prefix=/home/username/usr make install\nThe Autogen \u0026amp; Configure scripts will scan your system for dependencies and set up the configuration file that Make uses to do the actual compilation. Configure will bark if your system is missing anything important that you'll need to additionally compile.\nConfigure IcecastIf everything went well you should have a fresh new Icecast installed as ~/usr/bin/icecast and a default configuration file at ~/usr/etc/icecast.xml.\nI'm not going to go into too much depth on how to configure Icecast. There is a good amount of documentation on the Icecast website detailing how to get the service up and running.\nAt a minimum you want to replace all of the default passwords in the configuration file with something other than \"hackme\".\nLaunch IcecastGo ahead and launch Icecast. cd ~/ icecast -c usr/etc/icecast.xmlThis launches Icecast in interactive mode. If you exit your SSH session, Icecast shuts down. Verify that you can connect to Icecast by visiting: http://yourserver.dreamhostps.com:8000Change the hostname to match yours and the port number if you changed the default one in the configuration file. If everything went right you should see an Icecast status page. If you get any errors double check you launched the service properly and that you specified the server hostname correctly.\nWhen you're done, hit Control+C to kill Icecast. When you're ready to keep Icecast running long-term, re-launch with -b at the end to background the process:\nicecast -c usr/etc/icecast.xml -b\nLaunch on StartupThe last step to setting up Icecast on a DreamHost VPS is to configure it to launch when your server is rebooted. The easiest option is to use the Cron Jobs control panel provided by DreamHost.\nOpen the Cron Jobs page in your DreamHost control panel.Click the Add New Cron Job button.Select the user you created and installed Icecast into.Enter a Title that is helpful like Icecast.Enter an e-mail address if you want log files sent to you. I left this blank.Enter the following in Command to Run (updating the path with your actual install path for Icecast): /home/username/usr/bin/icecast -c /home/username/usr/etc/icecast.xml -bThe full paths are required so Cron knows exactly where Icecast is. The -b switch puts Icecast into the background.Make sure Use locking is turned on.Set When to run to Server Reboot.Click Add.Questions?Let me know if you have any questions in the comments on this post! I'll probably do a follow-up post with the actual setup I'm using for streaming Weather Radio.\nCheck out the Milwaukee NOAA Weather Radio stream for KEC60 here:\nhttp://milwaukeeweather.audio\nFeatured image courtesy of cogdog on Flickr.\n","permalink":"https://aaron.blog/installing-icecast-2-on-dreamhost-vps/","summary":"\u003ch1 id=\"weather-underground-radio-streams\"\u003eWeather Underground Radio Streams\u003c/h1\u003e\u003cp\u003eWeather Underground provided a free service to host all of these streams so you could listen into important weather bulletins over the Internet. Weather Underground was purchased by the Weather.com parent company The Weather Company in 2012 and then IBM purchased The Weather Company in 2016. Weather Underground moved all of their services over to Amazon Web Services and \u003ca href=\"http://help.wunderground.com/knowledgebase/articles/1143574-wu-says-goodbye-to-noaa-weather-radio-and-sms-aler\" rel=\"noopener\"\u003ecanned a few legacy products\u003c/a\u003e including the NOAA Weather Radio streams.\u003c/p\u003e","title":"Installing Icecast 2 on DreamHost VPS"},{"content":"Today is one of those days.\nWhat kind of day is that? It's one where I feel like I completely failed today despite all my best efforts to control my focus and attention. I look back at my notes and I see I ticked off some things but left some completely untouched and forgot about. I know I'm certainly more critical on myself about these things than most. Feeling like a failure ultimately leads me failing so I try to not even get in this mood or direction.\nYou know what doesn't help either? Looking out your office window (an unconscious act of sabotage on my focus) and seeing two fine examples of your scatter-brain.\nThere sits a solar light, gifted to me eighteen months ago, with the tag still affixed to it and a rake used to clean up the yard four months ago. Each task wouldn't take too much time out of my day to complete. There they all sit for me to stare at and punish myself for not doing.\nInstead of spending more time derailing myself I decided to go put the rake away and tag that stupid tag off and publish this post. :)\n","permalink":"https://aaron.blog/my-failures-are-my-distractions/","summary":"\u003cp\u003eToday is one of \u003cstrong\u003ethose\u003c/strong\u003e days.\u003c/p\u003e\u003cp\u003eWhat kind of day is that? It's one where I feel like I completely failed today despite all my best efforts to control my focus and attention. I look back at my notes and I see I ticked off some things but left some completely untouched and forgot about. I know I'm certainly more critical on myself about these things than most. Feeling like a failure ultimately leads me failing so I try to not even get in this mood or direction.\u003c/p\u003e","title":"My Failures are my Distractions"},{"content":"~ Aaron Douglas, sometime this week\nI've been a team lead for a couple years now at Automattic - a little over a year of that with the larger team (Go Slytherin!!). I've made several discoveries of what being a lead (team, project, technical) means. I've realized one thing I have to do is to put myself into a higher state of awareness and embrace fears.\nAwarenessLeads have to see the business landscape with different eyes. My main goal as a team and project lead is to unblock the pathways for my teammates to succeed. I'm required to involve myself in conversations that are out-of-band from what the team is connected to. These conversations get summarized in my head and become part of discussions with project leads and individual 1:1 meetings. I have to pick out the important things that relate to the team and bring that into conversations to establish insight amongst everyone.\nThis makes me sound like a guru. I'm not. The process isn't glamorous nor difficult. It's a super shallow task at times but it allows my team to focus on the work. Understanding more about our users, the rest of the company, and other big projects will only add depth to the things they are working on. Letting them go deep and work well on the things they're doing is key to succeeding.\nFearFear can be healthy. Fear keeps us from doing bad things. Fear can also paralyze us so it's important to understand how to interpret our fears. Team leads/managers have to learn to sense their own fears and translate those into actionable items or at least a watchlist. Typical fears for me include (and oddly most of them come in the form of questions):\nDid I forget to do something I said I would do?Are we on track with the project I'm leading?I hope our users are happy with our work.Is everyone happy with me and the work they do?What am I missing?Are our priorities right?Where are these voices coming from? (kidding, maybe)I'm not saying leads are the only one with fears. We all have things like this we keep in our minds. Every one of these fears (except maybe the last one) can have some actionable item to keep the fear in check. Fear is a motivator. Use your fear to keep your team humming along.\nWhat I'm not suggesting is using fear to intimidate your team into motivating them to work faster, harder, longer hours. You need to show your team empathy and compassion to turn their fears into motivation to do a great job. Make sure they know you have their backs and that a level of trust exists. When you get status updates make sure to restate that progress back at some point in some fashion so they know they heard you. You wouldn't be a lead without them and they wouldn't have a direction and focus without you. They have their own fears - don't make one of them you.\n","permalink":"https://aaron.blog/leadership-awareness-and-fear/","summary":"\u003cblockquote\u003e~ Aaron Douglas, sometime this week\u003c/blockquote\u003e\u003cp\u003e\u003cbr\u003eI've been a team lead for a couple years now at Automattic - a little over a year of that with the larger team (Go Slytherin!!). I've made several discoveries of what being a lead (team, project, technical) means. I've realized one thing I have to do is to put myself into a higher state of awareness and embrace fears.\u003c/p\u003e\u003ch1 id=\"awareness\"\u003eAwareness\u003c/h1\u003e\u003cp\u003eLeads have to see the business landscape with different eyes. My main goal as a team and project lead is to unblock the pathways for my teammates to succeed. I'm required to involve myself in conversations that are out-of-band from what the team is connected to. These conversations get summarized in my head and become part of discussions with project leads and individual 1:1 meetings. I have to pick out the important things that relate to the team and bring that into conversations to establish insight amongst everyone.\u003c/p\u003e","title":"Leadership, Awareness, and Fear"},{"content":"\nI've been trying to brainstorm ideas on paper lately before committing to an approach on how to solve a problem. For some reason I wasn't getting a ton of satisfaction switching back to pen \u0026amp; paper - it wasn't helping my focus. Then I realized something from my days in school. I used to prefer pencil over pen because of the feel of the graphite on the paper and the non-permanence it implies.\nThe biggest obstacle I have to starting something is my brain trying to understand an entire solution before I've started it. Brainstorming like this should be helping me with incrementally breaking down a problem into pieces and finding out what I don't know. For some reason the permanence of ink makes me feel like I need to put more thought into things before writing them down. That defeats the point of brainstorming!\nSo for me, I'm back to a pencil.\n","permalink":"https://aaron.blog/focus-the-non-permanance-of-pencils/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/02/fullsizerender.jpg\" class=\"kg-image\" alt=\"fullsizerender\" loading=\"lazy\" width=\"2000\" height=\"2593\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/02/fullsizerender.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/02/fullsizerender.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2017/02/fullsizerender.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2017/02/fullsizerender.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003e\u003cbr\u003eI've been trying to brainstorm ideas on paper lately before committing to an approach on how to solve a problem. For some reason I wasn't getting a ton of satisfaction switching back to pen \u0026amp; paper - it wasn't helping my focus. Then I realized something from my days in school. I used to prefer pencil over pen because of the feel of the graphite on the paper and the non-permanence it implies.\u003c/p\u003e","title":"Focus \u0026 The Non-Permanence of Pencils"},{"content":"I'm nearly four years into my challenge of hacking my brain to be successful at working remote with Attention Deficit Disorder. I've struggled with trying to understand my behaviors and challenge myself to change incrementely over time. There's one repeated concept that always comes up in my practice - my past experiences both help and hinder my progress. The key is being able to experience life as a beginner.\nBeginners have a great platform to learn knew things. First off they realize they have a set of things they need and want to learn. There is motivation to better yourself and usually a fairly well defined place to gain the knowledge from. Beginners have (or will quickly) admit they don't have all the answers. Those of us with experience trying to learn new things may think we understand things well enough. We're not open to seeing things as a whole.\nSo my challenge to myself is to start seeing things as a beginner. Challenging assumptions I have will make me more open to learn new things and become more effective at working and living.\nHere's to starting off with a less full cup! :)\n","permalink":"https://aaron.blog/experience-life-as-a-beginner/","summary":"\u003cp\u003eI'm nearly four years into my challenge of hacking my brain to be successful at working remote with Attention Deficit Disorder. I've struggled with trying to understand my behaviors and challenge myself to change incrementely over time. There's one repeated concept that always comes up in my practice - my past experiences both help and hinder my progress. The key is being able to experience life as a beginner.\u003c/p\u003e\u003cp\u003eBeginners have a great platform to learn knew things. First off they realize they have a set of things they need and want to learn. There is motivation to better yourself and usually a fairly well defined place to gain the knowledge from. Beginners have (or will quickly) admit they don't have all the answers. Those of us with experience trying to learn new things may think we understand things well enough. We're not open to seeing things as a whole.\u003c/p\u003e","title":"Experience Life as a Beginner"},{"content":"Back in the mid 1980s there was a kids' TV Game Show called \"Double Dare\" on the Nickelodeon channel. We didn't have cable TV but at some point it started to air on regular television. Our local TV station even aired an episode early in the morning before school at 6:30am.\nThe show format was fairly simple. One part were standard panel-type questions with answers gaining you points. Sometimes your team would have to perform \"physical challenges\" which usually involved something messy - like digging through a small pool of pizza sauce looking for a flag. The team with the most points at the end got to go through an obstacle course for sixty seconds. Collecting flags throughout the course got you more money and prizes to take home.\nEveryone who watched the show did it for that sixty glorious seconds of slime, goo, and gunk.\nThere's one specific morning I remember watching Double Dare. My dad would usually leave work right around when the episode would finish up. He was always hurried, barely time to say goodbye before his most times lengthy commute to a job site for his systems technician job with Honeywell. I knew the challenge was only a minute long and I really loved the show. I asked my dad that morning to sit and watch the obstacle course since it was so much fun and it would be a good start for him. He initially said no and I remember being incredibly disappointed.\nBeing the smart kid I was I reinforced my plea with the fact it was only sixty seconds and it would be worth it. Something clicked in his head and he agreed and sat down to watch. I was so excited to share this awesome experience with him. I don't remember his reaction to the show but I do clearly remember him taking the time to sit down and watch it. It meant a lot to me even if, at the time, it wasn't something he really wanted to do.\nActions, especially with kids, have a lasting impression and who knows what the triggers are for those actions to stick in their heads. Moments like this have happened for me well beyond childhood. So this is just a reminder to myself to look for those small moments that could have a big impact on someone's life.\nAnd now here's one of the show's ending obstacle courses. It takes less than sixty seconds to watch. :)\n","permalink":"https://aaron.blog/its-funny-what-kids-will-remember/","summary":"\u003cp\u003eBack in the mid 1980s there was a kids' TV Game Show called \"Double Dare\" on the Nickelodeon channel. We didn't have cable TV but at some point it started to air on regular television. Our local TV station even aired an episode early in the morning before school at 6:30am.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/01/doubledare-logo.png\" class=\"kg-image\" alt=\"doubledare-logo\" loading=\"lazy\" width=\"450\" height=\"300\"\u003e\u003c/figure\u003e\u003cp\u003eThe show format was fairly simple. One part were standard panel-type questions with answers gaining you points. Sometimes your team would have to perform \"physical challenges\" which usually involved something messy - like digging through a small pool of pizza sauce looking for a flag. The team with the most points at the end got to go through an obstacle course for sixty seconds. Collecting flags throughout the course got you more money and prizes to take home.\u003c/p\u003e","title":"It's Funny What Kids Will Remember"},{"content":"My friend Tim Mitra hosts the weekly \"The More Than Just Code\" podcast which is all about mobile software development. This past week he put out a call for people to tell the listeners what the iPhone has meant to them. This coincides roughly with the 10 year anniversary of the first iPhone launch.\nhttps://twitter.com/mtjc_podcast/status/819412969754939394\nI decided to submit a clip of my own and made it onto the show! You can listen to the whole podcast to find it (around the 19 minute mark) or via this handy dandy link to that exact spot.\nhttps://overcast.fm/+CMCStcUfY/19:00\n","permalink":"https://aaron.blog/cameo-on-the-more-than-just-code-podcast/","summary":"\u003cp\u003eMy friend Tim Mitra hosts the weekly \u003ca href=\"https://overcast.fm/+CMCStcUfY/19:00\" rel=\"noopener\"\u003e\"The More Than Just Code\" podcast\u003c/a\u003e which is all about mobile software development. This past week he put out a call for people to tell the listeners what the iPhone has meant to them. This coincides roughly with the 10 year anniversary of the first iPhone launch.\u003c/p\u003e\u003cp\u003ehttps://twitter.com/mtjc_podcast/status/819412969754939394\u003c/p\u003e\u003cp\u003eI decided to submit a clip of my own and made it onto the show! You can listen to the whole podcast to find it (around the 19 minute mark) or via this handy dandy link to that exact spot.\u003c/p\u003e","title":"Cameo on The More Than Just Code Podcast"},{"content":"","permalink":"https://aaron.blog/apparently-i--e2-9d-a4-swag/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/01/img_1513.jpg\" class=\"kg-image\" alt=\"Me wearing a ton of Automattic and WordPress swag\" loading=\"lazy\" title=\"My Swagger\" width=\"2000\" height=\"2667\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/01/img_1513.jpg 600w, /content/images/size/w1000/wp-content/uploads/2017/01/img_1513.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2017/01/img_1513.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2017/01/img_1513.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e","title":"Apparently I ❤ Swag"},{"content":"We all do it - look back at the previous year somewhere around January 1st. We total up what we've accomplished in that one year and determine if it was a success or it sucked. Variables like births, deaths, accidents, career changes, friendships, personal health, and travel all seem to be popular indicators of success or suck. The reality is you should really stop looking at your past as increments of one year advances.\nWhen you end up looking back at the previous year you tend to forget the things that lead you to where you are now. The reality is the older you get the less important one year of time becomes. When you're 12 years old one year is one twelfth of your life (shocking math, right?). When you're 30+ it's now 1/30th of your life. It's the reason why we tend to always say that \"you can't believe how fast this year went.\" Perception is reality.\nLooking at one year of time is short-sighted. When I look at how much I've accomplished throughout my life I can't help but feel success. I've had plenty of ups and downs but I've managed to keep moving on and up in my mind. Life is a constant stream of change, conflict, and resolution. The perception of what's gone right is easier when you only remember what's happened recently. Take the time to step back and look at more than just the year and you'll see a bigger perception of your life.\n","permalink":"https://aaron.blog/stop-looking-at-the-past-in-one-year-chunks/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/01/looking-back.jpg\" class=\"kg-image\" alt=\"looking-back\" loading=\"lazy\" width=\"300\" height=\"300\"\u003e\u003c/figure\u003e\u003cp\u003eWe all do it - look back at the previous year somewhere around January 1st. We total up what we've accomplished in that one year and determine if it was a success or it sucked. Variables like births, deaths, accidents, career changes, friendships, personal health, and travel all seem to be popular indicators of success or suck. The reality is you should really stop looking at your past as increments of one year advances.\u003c/p\u003e","title":"Stop Looking at the Past in One Year Chunks"},{"content":"This week Michael Lopp (VP Engineering @ Slack) posted a summary of Tweets responding to the question \"Regardless of seniority every good manager will...\".\nI took that list and tried to correlate the responses into several buckets. I used Trello to visualize this.\nhttps://trello.com/b/Wr78Mx6k/good-managers\nI came up with five buckets:\nCompassion/Empathy - Feel like a human and realize others feel too.Give/Take Feedback - Listen to others, tell them what's going right \u0026amp; wrong, and do the same for yourself.Filter/Map/Reduce - Take in the world above and turn it into smaller things that are important for your people to know.Unblock - Don't be an obstacle for your people to succeed - and help remove obstacles from their paths.Trust - Everyone is an adult and was hired for a reason - trust them in their decisions and make sure to gain your people's trust.","permalink":"https://aaron.blog/every-good-manager-will/","summary":"\u003cp\u003eThis week Michael Lopp (VP Engineering @ Slack) \u003ca href=\"http://randsinrepose.com/links/2017/01/05/regardless-of-seniority-every-good-manager-will/\" rel=\"noopener\"\u003eposted a summary of Tweets\u003c/a\u003e responding to the question \"Regardless of seniority every good manager will...\".\u003c/p\u003e\u003cp\u003eI took that list and tried to correlate the responses into several buckets. I used Trello to visualize this.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/01/2017-01-10_10-44-41.png\" class=\"kg-image\" alt=\"2017-01-10_10-44-41.png\" loading=\"lazy\" width=\"1403\" height=\"723\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/01/2017-01-10_10-44-41.png 600w, /content/images/size/w1000/wp-content/uploads/2017/01/2017-01-10_10-44-41.png 1000w, /content/images/wp-content/uploads/2017/01/2017-01-10_10-44-41.png 1403w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003e\u003ca href=\"https://trello.com/b/Wr78Mx6k/good-managers\" rel=\"noopener\"\u003ehttps://trello.com/b/Wr78Mx6k/good-managers\u003c/a\u003e\u003c/p\u003e\u003cp\u003eI came up with five buckets:\u003c/p\u003e\u003col\u003e\u003cli\u003e\u003cstrong\u003eCompassion/Empathy\u003c/strong\u003e - Feel like a human and realize others feel too.\u003c/li\u003e\u003cli\u003e\u003cstrong\u003eGive/Take Feedback\u003c/strong\u003e - Listen to others, tell them what's going right \u0026amp; wrong, and do the same for yourself.\u003c/li\u003e\u003cli\u003e\u003cstrong\u003eFilter/Map/Reduce\u003c/strong\u003e - Take in the world above and turn it into smaller things that are important for your people to know.\u003c/li\u003e\u003cli\u003e\u003cstrong\u003eUnblock\u003c/strong\u003e - Don't be an obstacle for your people to succeed - and help remove obstacles from their paths.\u003c/li\u003e\u003cli\u003e\u003cstrong\u003eTrust\u003c/strong\u003e - Everyone is an adult and was hired for a reason - trust them in their decisions and make sure to gain your people's trust.\u003c/li\u003e\u003c/ol\u003e","title":"Every Good Manager Will..."},{"content":"\nI spend all day tapping on glass trying to make it do stuff. I tap harder when stuff doesn't work. Then I clean fingerprints off of the glass. Finally I swear at the glass.\n","permalink":"https://aaron.blog/badly-explain-your-profession/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2017/01/img_1453.jpg\" class=\"kg-image\" alt=\"Badly Explain Your Profession\" loading=\"lazy\" title=\"Badly Explain Your Profession\" width=\"960\" height=\"960\" srcset=\"/content/images/size/w600/wp-content/uploads/2017/01/img_1453.jpg 600w, /content/images/wp-content/uploads/2017/01/img_1453.jpg 960w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003e\u003cbr\u003eI spend all day tapping on glass trying to make it do stuff. I tap harder when stuff doesn't work. Then I clean fingerprints off of the glass. Finally I swear at the glass.\u003c/p\u003e","title":"Badly Explain Your Profession"},{"content":"A lot of my friends on Instagram are also my friends on Facebook. They, like myself, tend to cross-post photos from Instagram onto Facebook and Twitter. I noticed a funny effect from that cross-posting - you end up missing a lot of posts from your friends.\nMindless scrolling. We all do it. Facebook was made for it as well as Instagram. Your brain is bored so you grab your phone and start scrolling through posts. I think we're sort of zombies when this mode clicks in. I usually end up snapping out of that zombie scrolling mode when I see posts I've already remember seeing. Semi-conciously I feel I've reached the end of any content that I may want to read or view.\nCross-posting images from Instagram to Facebook sort of breaks this zombie mechanism of knowing when you've reached \"the end\" of new content. I've found myself scrolling through Facebook and seeing a photo I recognize and stopping. Chances are I didn't actually see that photo on Facebook first, but rather on Instagram. The reverse applies as well. My brain stops me when content starts repeating but in essence that's new content in that specific app.\nI've also noticed this effect happen with publicizing new blog posts onto Twitter and Facebook but not to the same effect. I use the WordPress.com Reader to track blogs I like reading. Sometimes I do see friends' posts on Facebook that I've already seen in the WordPress.com Reader. The content looks different enough that it doesn't trigger the same effect all the time.\nThe thing I wonder about is if the effect causes some sort of mental fatigue in your followers causing them to potentially classifying your posts as noise rather than signal. I know how my brain tends to work and I can see that happening already with some accounts I follow in multiple apps/sites.\n","permalink":"https://aaron.blog/the-cross-posting-effect/","summary":"\u003cp\u003eA lot of my friends on Instagram are also my friends on Facebook. They, like myself, tend to cross-post photos from Instagram onto Facebook and Twitter. I noticed a funny effect from that cross-posting - you end up missing a lot of posts from your friends.\u003c/p\u003e\u003cp\u003eMindless scrolling. We all do it. Facebook was made for it as well as Instagram. Your brain is bored so you grab your phone and start scrolling through posts. I think we're sort of zombies when this mode clicks in. I usually end up snapping out of that zombie scrolling mode when I see posts I've already remember seeing. Semi-conciously I feel I've reached the end of any content that I may want to read or view.\u003c/p\u003e","title":"The Cross-Posting Effect"},{"content":"I'm an awful singer but decided to help out the RayWenderlich.com team with the annual Christmas video. Check out our excellent work.\nOriginal Post at RayWenderlich.com\n","permalink":"https://aaron.blog/raywenderlich-com-christmas-video/","summary":"\u003cp\u003eI'm an awful singer but decided to help out the RayWenderlich.com team with the annual Christmas video. Check out our excellent work.\u003c/p\u003e\u003cfigure class=\"kg-card kg-embed-card\"\u003e\u003ciframe loading=\"lazy\" title=\"\" width=\"160\" height=\"9\" src=\"https://www.youtube.com/embed/5FMR-JwUq2M?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\"\u003e\u003c/iframe\u003e\u003c/figure\u003e\u003cp\u003e\u003ca href=\"https://www.raywenderlich.com/151430/merry-christmas-2016\" rel=\"noopener\"\u003eOriginal Post\u003c/a\u003e at RayWenderlich.com\u003c/p\u003e","title":"RayWenderlich.com Christmas Video"},{"content":"The Dangling Pointer has a new address - https://aaron.blog! The old domain name(s) will still continue to work but you'll be redirected to this new address. Exciting, right??\nNot too long ago Automattic launched the .blog Top-Level Domain and started offering domains through https://get.blog. I decided to jump on the bandwagon and get my own!\n","permalink":"https://aaron.blog/im-now-aaron-blog/","summary":"\u003cp\u003eThe Dangling Pointer has a new address - https://aaron.blog! The old domain name(s) will still continue to work but you'll be redirected to this new address. Exciting, right??\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/12/aarondotblog.jpg\" class=\"kg-image\" alt=\"aarondotblog\" loading=\"lazy\" width=\"948\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/12/aarondotblog.jpg 600w, /content/images/wp-content/uploads/2016/12/aarondotblog.jpg 948w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eNot too long ago Automattic launched the .blog Top-Level Domain and started offering domains through https://get.blog. I decided to jump on the bandwagon and get my own!\u003c/p\u003e","title":"I'm now aaron.blog"},{"content":"http://radio.garden\nBy bringing distant voices close, radio connects people and places. Radio Garden allows listeners to explore processes of broadcasting and hearing identities across the entire globe. From its very beginning, radio signals have crossed borders. Radio makers and listeners have imagined both connecting with distant cultures, as well as re-connecting with people from ‘home’ from thousands of miles away – or using local community radio to make and enrich new homes.","permalink":"https://aaron.blog/radio-garden/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/12/2016-12-13_14-54-29.png\" class=\"kg-image\" alt=\"2016-12-13_14-54-29.png\" loading=\"lazy\" width=\"622\" height=\"531\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/12/2016-12-13_14-54-29.png 600w, /content/images/wp-content/uploads/2016/12/2016-12-13_14-54-29.png 622w\"\u003e\u003c/figure\u003e\u003cp\u003e\u003ca href=\"http://radio.garden\" rel=\"noopener\"\u003ehttp://radio.garden\u003c/a\u003e\u003c/p\u003e\u003cblockquote\u003eBy bringing distant voices close, radio connects people and places. Radio Garden allows listeners to explore processes of broadcasting and hearing identities across the entire globe. From its very beginning, radio signals have crossed borders. Radio makers and listeners have imagined both connecting with distant cultures, as well as re-connecting with people from ‘home’ from thousands of miles away – or using local community radio to make and enrich new homes.\u003c/blockquote\u003e","title":"Radio Garden"},{"content":"Instead of talking in a big group we split off into separate channels which is somewhat anti-collaboration.\nI realized the other day that channels in Slack (or any other group messaging platform) are both good and bad. When there are a small number of rooms it's easier to find a conversation or to be involved in the majority of discussions. As the number of people in the rooms grows, chats become more noisy. The solution is to create another channel - ideally something subject-specific to filter out the noise. There's a counter-effect which is somewhat unexpected - it can reduce interaction between members.\nTurns out the more channels there are, the less conversations you have exposure to. This sounds stupidly obvious - but it's not really when you're so close to the effect. As your channel list grows it'll reach a critical mass when information overwhelms you. Your only way to fight back is to start leaving channels.\nA large room with a lot of activity is easier to mute either by shutting down the chat client or by using a muting feature. Rooms let you segment conversations by topic but then you have less interaction with teammates and less visibility of what is going on overall. The reality is neither method is sustainable. I haven't quite figured out the solution for a balance between the two.\n","permalink":"https://aaron.blog/the-slack-channel-effect/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/12/2016-12-07_20-17-57.png\" class=\"kg-image\" alt=\"2016-12-07_20-17-57.png\" loading=\"lazy\" width=\"664\" height=\"199\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/12/2016-12-07_20-17-57.png 600w, /content/images/wp-content/uploads/2016/12/2016-12-07_20-17-57.png 664w\"\u003e\u003c/figure\u003e\u003cp\u003eInstead of talking in a big group we split off into separate channels which is somewhat anti-collaboration.\u003c/p\u003e\u003cp\u003eI realized the other day that channels in Slack (or any other group messaging platform) are both good and bad. When there are a small number of rooms it's easier to find a conversation or to be involved in the majority of discussions. As the number of people in the rooms grows, chats become more noisy. The solution is to create another channel - ideally something subject-specific to filter out the noise. There's a counter-effect which is somewhat unexpected - it can reduce interaction between members.\u003c/p\u003e","title":"The Slack Channel Effect"},{"content":"Want to know why I really don't care for single sign-on? Let's pretend I want to sign into StackOverflow.com.\nThe FlowOooh! I want to check my reputation on StackOverflow! Oh crap, this is a new computer. Let me log in!Huh. Well, let's check 1Password.Shit. I didn't save my password. Oh wait, maybe it was Google?Okay I think it's the second one.\nUm. Okay? Allow.That wasn't it. Let me click Back and see if it was Facebook.\nI guess I'd like to continue as Aaron since that's me?Yay!The RealityI originally signed up with my first Google account listed. I did NOT sign up with Facebook. After logging in with Facebook it automatically matched my account based upon e-mail address and let me in. StackOverflow is assuming that e-mail address changes on the trusted third party system are verified. I can imagine at least one of the \"more login options\" services would let me change the e-mail address to another user and ghost in as them using this.\nIn any case StackOverflow handles account creation decently. I've tried this SSO login on other services I didn't have in 1Password with more stabbyness. Sometimes a new account is created every single time I choose a different SSO account.\nI know I'm in the minority of most users having multiple Google accounts but I do know plenty of Facebook users with more than one. I'd rather have a known set of credentials than play the guessing game of which account was it.\n","permalink":"https://aaron.blog/why-single-sign-on-is-stabby/","summary":"\u003cp\u003eWant to know why I really don't care for single sign-on? Let's pretend I want to sign into StackOverflow.com.\u003c/p\u003e\u003ch1 id=\"the-flow\"\u003eThe Flow\u003c/h1\u003e\u003cblockquote\u003eOooh! I want to check my reputation on StackOverflow! Oh crap, this is a new computer. Let me log in!\u003c/blockquote\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/12/2016-12-01_14-21-26.png\" class=\"kg-image\" alt=\"2016-12-01_14-21-26.png\" loading=\"lazy\" width=\"1135\" height=\"349\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/12/2016-12-01_14-21-26.png 600w, /content/images/size/w1000/wp-content/uploads/2016/12/2016-12-01_14-21-26.png 1000w, /content/images/wp-content/uploads/2016/12/2016-12-01_14-21-26.png 1135w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/12/2016-12-01_14-22-05.png\" class=\"kg-image\" alt=\"2016-12-01_14-22-05.png\" loading=\"lazy\" width=\"730\" height=\"532\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/12/2016-12-01_14-22-05.png 600w, /content/images/wp-content/uploads/2016/12/2016-12-01_14-22-05.png 730w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cblockquote\u003eHuh. Well, let's check 1Password.\u003c/blockquote\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/12/2016-12-01_14-22-42.png\" class=\"kg-image\" alt=\"2016-12-01_14-22-42.png\" loading=\"lazy\" width=\"346\" height=\"304\"\u003e\u003c/figure\u003e\u003cblockquote\u003eShit. I didn't save my password. Oh wait, maybe it was Google?\u003c/blockquote\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/12/2016-12-01_14-24-33.png\" class=\"kg-image\" alt=\"2016-12-01_14-24-33.png\" loading=\"lazy\" width=\"403\" height=\"629\"\u003e\u003c/figure\u003e\u003cblockquote\u003eOkay I think it's the second one.\u003c/blockquote\u003e\u003cp\u003e\u003cbr\u003e\u003c/p\u003e","title":"Why Single Sign-On is Stabby"},{"content":"I woke up this morning seeing two notifications of calendar appointments I just couldn't miss. [sarcasm]\nAnnoying, right? Here's the best part. No matter what I do - Accept, Maybe, Decline - the sender of the spam appointment receives the notification of my action. There's no way to just simply delete the damn invitation from your calendar without sending the reply! Well I guess that means 章兴言 \u0026amp; 历昭 are going to get a sad decline from me.\nHow do I prevent this from happening in the future? How the hell did it happen? Turns out it's Apple again - thinking they know better for how you want to use e-mail and calendars. Thankfully there is an option to prevent the forced invites.\nThe Answer Lies in iCloud.comThese calendar invites aren't coming from some magic hacked portal in your phone. The invites are coming as e-mails into your iCloud.com e-mail account and then being automatically converted into in-app push notifications to both iOS and macOS. Once that's done the original e-mail is deleted. Gone. Poof. Magical, yet stabby.\nLet's turn off this magical conversion so we have the ability to spam the incoming e-mails and never have them hit your calendar.\nFirst, open iCloud.com up in a web browser.Log into using the account you use on your phone (where your calendars are stored).Click on Calendar.Click on the settings gearin the lower left of the screen.\nClick on Preferences.Click the Advanced tab.Under Invitations set the option for Receive event notifications as to the second option, as an Email to rather than an in-app notification.Going forward then all of the invites you receive to your iCloud e-mail account will be received as e-mails.\nDamn you, spammers!\n~A\n[update]\nDeleting Spam Invites Without Sending NotificationsTaken from the Apple Discussion Forums, here's a workaround to delete invites without sending the response to the spammer using macOS:\nCreate a new iCloud calendar (not \"On My Mac\").Move the spam event to the new iCloud calendar.Delete the new iCloud calendar.Calendar will now prompt you with \"Delete and Don't Notify\" and \"Delete and Notify\".Select \"Delete and Don't Notify\".Original post: https://discussions.apple.com/thread/3705591?tstart=0\n","permalink":"https://aaron.blog/preventing-spam-icloud-calendar-invites/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/11/img_12241.png\" class=\"kg-image\" alt=\"IMG_1224.PNG\" loading=\"lazy\" width=\"583\" height=\"228\"\u003e\u003c/figure\u003e\u003cp\u003eI woke up this morning seeing two notifications of calendar appointments I just couldn't miss. [sarcasm]\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/11/img_1225.png\" class=\"kg-image\" alt=\"IMG_1225.PNG\" loading=\"lazy\" width=\"602\" height=\"514\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/11/img_1225.png 600w, /content/images/wp-content/uploads/2016/11/img_1225.png 602w\"\u003e\u003c/figure\u003e\u003cp\u003eAnnoying, right? Here's the best part. No matter what I do - Accept, Maybe, Decline - the sender of the spam appointment receives the notification of my action. There's no way to just simply delete the damn invitation from your calendar without sending the reply! Well I guess that means 章兴言 \u0026amp; 历昭 are going to get a sad decline from me.\u003c/p\u003e","title":"Preventing Spam iCloud Calendar Invites"},{"content":"There's a cool service in macOS called \"Summarization\" that takes a block of text and figures out the most important sentences or paragraphs in it. I've used this service before to help reduce the amount to read on longer posts and conversations. It is definitely not perfect but it can help provide some clarity where our TL;DR brains need it.\nIn this example screenshot you can see I'm looking at a Wikipedia article. The summarize service gives you the option to summarize by paragraph or by sentence. There is a slider to indicate how much detail you want to retain. While less seems better, I've found the algorithm loses accuracy roughly around 40%.\nUsing the Summarize ServiceIt's really easy to use the service. First you have to turn it on.\nOpen System Preferences.Click on Keyboard.Select the Shortcuts tab and then select Services.Scroll down to Text and check the Summarize service.Now find text in any app, right click it and choose Summarize from the list of services.\nEnjoy!\n","permalink":"https://aaron.blog/summarizing-text-in-macos/","summary":"\u003cp\u003eThere's a cool service in macOS called \"Summarization\" that takes a block of text and figures out the most important sentences or paragraphs in it. I've used this service before to help reduce the amount to read on longer posts and conversations. It is definitely not perfect but it can help provide some clarity where our TL;DR brains need it.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/11/verbosity.png\" class=\"kg-image\" alt=\"Verbosity.png\" loading=\"lazy\" width=\"865\" height=\"724\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/11/verbosity.png 600w, /content/images/wp-content/uploads/2016/11/verbosity.png 865w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eIn this example screenshot you can see I'm looking at a Wikipedia article. The summarize service gives you the option to summarize by paragraph or by sentence. There is a slider to indicate how much detail you want to retain. While less seems better, I've found the algorithm loses accuracy roughly around 40%.\u003c/p\u003e","title":"Summarizing Text in macOS"},{"content":"Today I'm starting the day off with a deep breath and an eye on the future. Life seems to be a series of stepping stones and the path to the place where we all get along is not perfectly straight.\nJust remember to be kind to your fellow humans, we are all citizens of this planet. None of us has any more right to be here than the other.\n","permalink":"https://aaron.blog/taking-a-deep-breath/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/11/hope-definition.png\" class=\"kg-image\" alt=\"hope-definition\" loading=\"lazy\" width=\"579\" height=\"157\"\u003e\u003c/figure\u003e\u003cp\u003eToday I'm starting the day off with a deep breath and an eye on the future. Life seems to be a series of stepping stones and the path to the place where we all get along is not perfectly straight.\u003c/p\u003e\u003cp\u003eJust remember to be kind to your fellow humans, we are all citizens of this planet. None of us has any more right to be here than the other.\u003c/p\u003e","title":"Taking a Deep Breath"},{"content":"","permalink":"https://aaron.blog/another-day-another-set-of-itunes-connect-errors/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/11/2016-11-04_08-16-52.png\" class=\"kg-image\" alt=\"Xcode error that states \u0026quot;This action could not be completed. Try again. Error -22421\u0026quot;\" loading=\"lazy\" width=\"580\" height=\"350\"\u003e\u003c/figure\u003e","title":"Another day, another set of iTunes Connect errors"},{"content":"I drafted this post with an idea that I wanted to apologize to all the people I've met at conferences and I do not recognize them the next time we meet. It's especially embarrassing when I've had conversations online with them and didn't connect to two realities. The problem lies with how my brain works and how Attention Deficit Disorder can skew memories and how I process things.\nFrequently when I meet people I've forgotten their names within seconds. I try to say their name over again and to reinforce the memory of meeting them with some facial features or bits about what they work on. This process works well in the beginning of most events but within a few hours to a second day or more, I'm toast.\nConferences are a unique challenge to me when coping with how to process information. I can combat the issues of focus \u0026amp; attention in my home office with tools. Using my treadmill / standing desk with exercise mid-day helps reset whatever brain chemistry is fucked up. Note-taking apps, reminders in Slack, and other apps help with reminders and not losing information that doesn't make it to long-term memory. I lack most if not all of these tools at conferences.\nI do try to exercise at a conference but it usually ends up being in the morning or later at night. This past summer at 360iDev I snuck out before lunch to go for a run on the hotel roof's track. It was an absolutely brilliant idea and it helped recharge me for the afternoon. At my company's annual meeting last month I did a similar thing and found it kept me going.\nI try to help people with their own recall of who I am by being emotive and a bit more of an extrovert than I normally am. I also try to connect on Twitter or LinkedIn and add add them to a list with the conference as a title. Within a week or so after I try to interact. I also make sure my business cards have the same avatar that I use on Twitter and LinkedIn. I really find that makes the biggest difference!\nSo if you meet me at a conference or a work event, please do not be offended if I have to look at your name badge or ask your name. I have to entangle facts in my head with other reinforcements like your voice, stories from your life, and your general personality before I start to cement those memories for recall later.\n","permalink":"https://aaron.blog/conferences-my-add-brain/","summary":"\u003cp\u003eI drafted this post with an idea that I wanted to apologize to all the people I've met at conferences and I do not recognize them the next time we meet. It's especially embarrassing when I've had conversations online with them and didn't connect to two realities. The problem lies with how my brain works and how Attention Deficit Disorder can skew memories and how I process things.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/10/crap-i-forgot-your-name3.jpg\" class=\"kg-image\" alt=\"crap-i-forgot-your-name3\" loading=\"lazy\" width=\"300\" height=\"206\"\u003e\u003c/figure\u003e\u003cp\u003eFrequently when I meet people I've forgotten their names within seconds. I try to say their name over again and to reinforce the memory of meeting them with some facial features or bits about what they work on. This process works well in the beginning of most events but within a few hours to a second day or more, I'm toast.\u003c/p\u003e","title":"Conferences \u0026 My ADD Brain"},{"content":"Not pictured: 10 more notifications below these.\n","permalink":"https://aaron.blog/how-not-to-do-push-notifications/","summary":"\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2016/09/img_0866.png\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/09/img_0866.png?w=1152\" class=\"kg-image\" alt=\"img_0866\" loading=\"lazy\" width=\"576\" height=\"1024\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eNot pictured: 10 more notifications below these.\u003c/p\u003e","title":"How Not to Do Push Notifications"},{"content":"https://www.flickr.com/photos/restlessglobetrotter/2660204217\nNotifications are an essential part of most computer systems. Operations happen asynchronously and users who care about the completion of them need to be notified somehow. In most cases e-mail is the primary way someone is notified. E-mail has been around forever and it's easy to address a message to a specific user or a group of users. Most programming frameworks also include the ability to e-mail.\nI hate e-mail notifications. Okay; so hate is a powerful word. I severely dislike e-mail notifications.\nE-mail is fundamentally broken.\nE-mail has been around since the beginning of Internet time - even before it. Internet e-mail protocols have remained rather unchanged since 1982 when SMTP was introduced. This means e-mail is a reliable protocol but also it partially means it hasn't held up well to the rapidly changing ways of how we communicate. E-mail usage has been eclipsed dramatically by things like SMS, iMessage, WhatsApp, Facebook Messenger and so on. This feels very much like how the postal service's letter carrying service has evolved into only the mechanism in which bills and advertisements arrive to your house.\nE-mail can be hard to set up. We all have problems remembering usernames and passwords. E-mail is even worse with mixing in POP/IMAP/SMTP server addresses, port numbers, authentication methods, and SSL settings. Thankfully the major players like Gmail have wizards in most modern operating systems making the configuration process somewhat easier. Work e-mail can be confounded even more with VPN and proxy requirements.\nWe live in a world of data caps on cellular networks and home Internet connections. E-mail is not a super efficient player in this world. While most messages are a small number of bytes e-mail clients can add a ton of bloat. HTML formatting, attached images, and protocol inefficiencies can silently suck up your data. I've had many e-mail clients get stuck sending a message in a loop wiping out my remaining data for the month.\nRich content in e-mail clients is vastly difficult to pull off. Ask any web developer whom has been asked to create a slick marketing message or pretty template. Life becomes painful when you have to test your HTML against many e-mail clients. Rendering is randomly broken, JavaScript doesn't always work, and localizing isn't really possible.\nIn the end there's no guarantee that your message was delivered to the recipient. You also don't reliably have a way to determine if your message was read either. There are tricks for read notifications and newer optional protocols for delivery reliability. None of these really do much more than add more uncertainty to the process.\nWe use e-mail for everything. Notifications are lost in the noise.\nHow many of you have thousands of unread (and read) messages in your inbox right now? I'd guess a lot of you. E-mail clearly isn't working for how we're using it.\nThere are classes given at a corporate level to teach e-mail etiquette. Don't carbon-copy your entire team, don't include the body of the message you're replying to, don't put pictures in your e-mail signature, save the environment don't print this e-mail, and so on. It's a system that's easy to abuse.\nAn automated notification e-mail from your production system monitor comes in to tell you something is wrong. How long does it take for you to see it? Do you have rules set up to bubble \"important\" things to the top or in another bucket? I bet some of those monitoring systems are false alerts or not super serious so they sit in your inbox, unread. You'll eventually get to them and the problem will be fixed. You better leave those messages there \"for the reminder's sake.\" Sound familiar?\nThe important stuff gets lost. We can't easily mute the things that aren't important. There's no simple way to move a bar up and down for the severity of your notifications. You get all or nothing and that adds to information fatigue.\nChanges aren't transmitted well.\nI subscribe to a number of internal WordPress blogs at Automattic using the O2 theme. This theme gives us nested comments and a super lightweight way of communicating in an asynchronous manner. However, we do have so many of these blogs and you can only subscribe to so many before your brain asplodes. I use the WordPress.com Reader to subscribe to new posts. A lot of my colleagues use e-mail notifications for this.\nBlog posts aren't static. Once they've been posted they can still be edited. By subscribing to new posts via e-mail you're missing any edits done after the initial post. Imagine sending out a piece of code for your coworkers to test and right after you publish it you realize you made a mistake. You quickly edit the post, wipe your brow, and then hope nobody saw it. Anyone who got the e-mail notification won't see your update and will comment on the error. Chances are the other person won't read the edited post when the link to the post is clicked to comment on it. Subscribing to edits on posts as a solution is terribly taxing on the brain.\nSo what's the solution?\nThere are a lot of ways to communicate to users that isn't e-mail. Push notifications are the cleanest solution but they typically require a mobile or desktop app to be the receiver/displayer of the notifications. The WordPress mobile and desktop apps provide a contextually-relevant place to queue the notifications and read when appropriate. Badge icons, banner notifications and sounds all are configurable by the user to reduce fatigue. Use do not disturb on your device when you're opting out of everything for a period of time.\nPush notifications aren't without their failings either. Most providers don't offer 100% guarantee of delivery. Users can also feel bombarded by every app sending notifications and end up turning the feature off. There are ways to handle these situations in a series of escalation steps.\nIn normal circumstances users view/respond to a push notification in an allowable amount of time. Urgent notifications requiring action should be allotted less time. Notification read receipts may be a feature available by the platform. At least if the app is launched you can generally determine that the notification has been seen. Then the app silently indicates such through to your servers.\nNotifications that don't get read can get pushed again, sent as an e-mail with a high priority, or end up turning into a phone call. You may choose to \"dial down\" the number sent if a user isn't reading less important notifications. Instead choose to notify your user less but with more content to prevent them from feeling fatigue and uninstalling your app.\nE-mail isn't always the best option for communicating things to your users. Know how your users want to use your systems and come up with a method that prevents both missed messages and fatigue. Notify people when it's contextually relevant and give them options to turn things off when it bothers them. Users who ignore your notifications are one step away from not finding value in your product or service.\n","permalink":"https://aaron.blog/e-mail-notifications-arent-always-useful/","summary":"\u003cp\u003ehttps://www.flickr.com/photos/restlessglobetrotter/2660204217\u003c/p\u003e\u003cp\u003eNotifications are an essential part of most computer systems. Operations happen asynchronously and users who care about the completion of them need to be notified somehow. In most cases e-mail is the primary way someone is notified. E-mail has been around forever and it's easy to address a message to a specific user or a group of users. Most programming frameworks also include the ability to e-mail.\u003c/p\u003e\u003cp\u003eI hate e-mail notifications. Okay; so hate is a powerful word. I severely dislike e-mail notifications.\u003c/p\u003e","title":"E-mail Notifications Aren't Always Useful"},{"content":"Bicycling is my meditation. I use it as part of my toolset to calm my brain and to train my mind to take in a lot of input and focus on important things. I recently realized that there's a moment that doesn't happen very often when biking. It sometimes takes an entire summer for me to have it occur. I call it the Bicycler's Quiet.\nBicycler's Quiet is the sudden loss of wind noise in your ears when you're cycling with the wind. It doesn't happen very often because you need to be cycling at roughly the same speed and direction of the wind. Biking on days with very little to no wind doesn't do it because your movement creates wind across your ears.\nI love when it happens. Everything specific to the bike becomes quiet and you hear the world around you like it's the first time. Super surreal and it's a moment I live for. 🙃\n","permalink":"https://aaron.blog/bicyclers-quiet/","summary":"\u003cp\u003eBicycling is my meditation. I use it as part of my toolset to calm my brain and to train my mind to take in a lot of input and focus on important things. I recently realized that there's a moment that doesn't happen very often when biking. It sometimes takes an entire summer for me to have it occur. I call it the \u003cstrong\u003eBicycler's Quiet\u003c/strong\u003e.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/08/img_0178.jpg\" class=\"kg-image\" alt=\"IMG_0178\" loading=\"lazy\" width=\"300\" height=\"300\"\u003e\u003c/figure\u003e\u003cp\u003eBicycler's Quiet is the sudden loss of wind noise in your ears when you're cycling with the wind. It doesn't happen very often because you need to be cycling at roughly the same speed and direction of the wind. Biking on days with very little to no wind doesn't do it because your movement creates wind across your ears.\u003c/p\u003e","title":"Bicycler's Quiet"},{"content":"I turn 37 today. It's been an amazing journey through life so far and I can't wait to see where the next 37+ years lead me.\nIn the past five years alone things have changed so much. I finished my master's degree, we got a place \"up north\" for the weekends and met so many fun people, I've had amazing jobs doing what I love - software development, and I've had the opportunity to speak at a number of conferences about the things I've done. I've also learned a lot about myself listening to my brain and figuring out this thing called ADD/ADHD.\nMy goals for the next five years? Meet more awesome people. Do more awesome things. Be an even better human and husband.\n","permalink":"https://aaron.blog/another-year-around-the-sun/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/08/img_0558.jpg\" class=\"kg-image\" alt=\"37th Birthday\" loading=\"lazy\" width=\"1024\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2016/08/img_0558.jpg 600w, /content/images/size/w1000/wp-content/uploads/2016/08/img_0558.jpg 1000w, /content/images/wp-content/uploads/2016/08/img_0558.jpg 1024w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eI turn 37 today. It's been an amazing journey through life so far and I can't wait to see where the next 37+ years lead me.\u003c/p\u003e\u003cp\u003eIn the past five years alone things have changed so much. I finished my master's degree, we got a place \"up north\" for the weekends and met so many fun people, I've had amazing jobs doing what I love - software development, and I've had the opportunity to speak at a number of conferences about the things I've done. I've also learned a lot about myself listening to my brain and figuring out this thing called ADD/ADHD.\u003c/p\u003e","title":"Another Year Around the Sun"},{"content":"I have always believed I was a procrastinator. I tend to put difficult tasks off until when they are due. I always believed it was the pressure of the deadline that forced me to complete the task. College gave me a series of structured deadlines to learn new things. Procrastination can also add undue stress onto your system. Over time it will make you feel like you're stupid and can't get anything done. ADHD and procrastination seem to go hand in hand as well.\nI'm sort of done with procrastination. It sucks and I know I'm smarter than this.\nThis month I'm speaking at two conferences and giving two different talks. The first is on remote working (a \"soft\" topic) and the other on an introduction to RxSwift - a fairly complex programming topic. I've known I needed to prepare these talks for several months and I have been doing the work. The remote working talk went off well. The RxSwift talk is upcoming and I'm sweating it. I want the people at my talk to get something significant out of it and not walk away feeling something was missing or it was a waste of time. When I finally made this statement to myself I realized something significant:\nIt's not procrastination - it's a failure to start.\nI didn't dive into the demo project for the talk because I felt like an imposter. How could I give a talk about a topic I am not an expert in? The reality is I needed to dive into code to incrementally learn the topic better to give people a leg up on their first try at RxSwift. This fear of being an imposter kept making me lose focus on simple things and putting them off.\nI seem to have an enhanced behavior of finding something else to do instead of the \"real work\" when I encounter mental resistance. Mental resistance can come from not knowing a subject or the task feeling remedial. I tend to find other things to do instead like opening up a Facebook tab or checking the 14 different Slack instances I'm in for new messages. I know it is time to step back and re-center myself when I notice that my brain starts derailing like this.\nWhen you find yourself slipping on a task or unable to commit to get something done I suggest doing the following:\nBreak the task down into smaller bits and just get started on the first one. Just get started.Walk away. Literally - walk. Exercise is my number one tool to combat attention and focus issues. Grab your headphones and take a short walk around your office or neighborhood. Don't actively try to think about your problem at hand - just take in the different atmosphere. You'll be surprised how often an idea comes to you seemingly randomly during this process.Prevent the distraction by blocking the thing you're using as a mental crutch. In my case it was logging out of Facebook and blocking the site on my machine. The behavior broke after several months on my work computer. If it's something like wandering and cleaning your house, close your office door and leave a note to yourself to focus. Maybe try the Pomodoro Technique for 20 minute focus sessions.If all else fails stop committing to things you can't get done. You're not a failure if you don't have time or interest. Dig deep in your head to see what's important to you and your future.Sometimes we don't have a choice and we just have to buckle down and get something done. Reward yourself. Check off that box and celebrate! Sometimes the little successes are more important than the big ones.\n","permalink":"https://aaron.blog/i-am-a-procrastinator/","summary":"\u003cp\u003eI have always believed I was a procrastinator. I tend to put difficult tasks off until when they are due. I always believed it was the pressure of the deadline that forced me to complete the task. College gave me a series of structured deadlines to learn new things. Procrastination can also add undue stress onto your system. Over time it will make you feel like you're stupid and can't get anything done. ADHD and procrastination seem to go hand in hand as well.\u003c/p\u003e","title":"I am a procrastinator."},{"content":"I tend to set myself up for defeat with how my brain works when trying to accomplish a task. I overthink things.\nWhen I pull a task from my list of things to do a process starts in my head. I visualize the task and then try to figure out what the solution is and how it looks at the end. Smaller tasks with a clear goal seem to start just fine. Tasks that are a bit more nebulous or aren't clear how to do everything end up stalling. I end up wasting time misdirecting myself so I don't have to face the fact that I don't have an immediate solution.\nI also tend to misdirect myself with tasks that have a clear solution but aren't terribly exciting. It takes a serious conscious effort for me to keep a grasp on things that tend to be mundane but are a part of my day.\nWhile my focus on this post is generally around my job it applies to how I approach things with my personal life too. Unimportant or difficult tasks tend to get stalled and I will find myself doing other things (like cleaning, checking out Facebook, the weather...) just to not face the task at hand.\nSo ... Just Start.So how do I get over this fear of working on a task?\nJust start.\nSounds simple, right? It boils down to these things:\nIf this is a larger task admit you can't see the end and just find the first small chunk you can work on. Smaller tasks are easier to finish and it lets your unconscious noodle on the entire project in the meantime.Turn off the distractions and be cognizant of when you misdirect yourself. Try to figure out a pattern to what causes it and stop it before it happens.If this a task that's just not engaging or not exciting but its something you need to do, just start. Once you get moving and you prevent the misdirection you'll finish and feel good.Celebrate the finished tasks.","permalink":"https://aaron.blog/just-get-started/","summary":"\u003cp\u003eI tend to set myself up for defeat with how my brain works when trying to accomplish a task. I overthink things.\u003c/p\u003e\u003cp\u003eWhen I pull a task from my list of things to do a process starts in my head. I visualize the task and then try to figure out what the solution is and how it looks at the end. Smaller tasks with a clear goal seem to start just fine. Tasks that are a bit more nebulous or aren't clear how to do everything end up stalling. I end up wasting time misdirecting myself so I don't have to face the fact that I don't have an immediate solution.\u003c/p\u003e","title":"Just Get Started"},{"content":"Minutes can make a difference. This is something I quickly discovered early on when I started working remote.\nThe granularity of a usable block of time was much bigger when I worked in an office and had a 20 minute commute each way. Unconsciously I believe I felt 15 minutes was the smallest unit of time I could use to create or do something effective. Since I started working remote, I've discovered that unit of time has decreased to something even smaller which is closer to five minutes.\nI can get a lot done with five minutes. I can wake up, let the dogs outside, get the coffee started, and then be at my desk working. I don't have the normal rituals to adhere to in the morning - getting ready for work, driving, going up the elevator, saying hi, putting my lunch away, and then putting my mind into work mode. I end up starting on my treadmill desk right away in the morning with my coffee (when it finishes). If you're lucky to video chat with me in my morning I'll have bed head and workout clothes on. 😏\nOnce I realized how much I could actually get done in those five minutes I discovered other longer tasks were less efficient uses of my time. Driving to get a cup of coffee from Starbucks took easily 20 minutes. That's 4 times the amount of time I need to do something useful! OMG THE HORROR!\nWorking remote, to me, means working more efficiently. I try to use my time wisely and keep on track with my goals for the day. It's easy for me to get off track (especially for me dealing with ADD) so I have to break down my tasks into smaller achievable tasks. I also love checking off boxes when I finished something.\nYou can get a lot of things done in five minutes. Just don't forget you can also take a five minute break.\nFeatured image courtesy of http://scrutiny.deviantart.com/art/Time-is-Slipping-Away-177781756\n","permalink":"https://aaron.blog/the-power-of-five-minutes-when-working-remote/","summary":"\u003cp\u003eMinutes can make a difference. This is something I quickly discovered early on when I started working remote.\u003c/p\u003e\u003cp\u003eThe granularity of a usable block of time was much bigger when I worked in an office and had a 20 minute commute each way. Unconsciously I believe I felt 15 minutes was the smallest unit of time I could use to create or do something effective. Since I started working remote, I've discovered that unit of time has decreased to something even smaller which is closer to five minutes.\u003c/p\u003e","title":"The Power of Five Minutes When Working Remote"},{"content":"petrichor |ˈpeˌtrīkôr|\nnoun\na pleasant smell that frequently accompanies the first rain after a long period of warm, dry weather. other than the petrichor emanating from the rapidly drying grass, there was not a trace of evidence that it had rained at all.\n","permalink":"https://aaron.blog/fancy-word-of-the-day-petrichor/","summary":"\u003cp\u003e\u003cstrong\u003epetrichor\u003c/strong\u003e |ˈpeˌtrīkôr|\u003c/p\u003e\u003cp\u003enoun\u003c/p\u003e\u003cp\u003ea pleasant smell that frequently accompanies the first rain after a long period of warm, dry weather. other than the petrichor emanating from the rapidly drying grass, there was not a trace of evidence that it had rained at all.\u003c/p\u003e","title":"Fancy Word of the Day: Petrichor"},{"content":"Manchettes are the paper frills that cover the ends of a rack of ribs in a crown roast.\nhttps://www.flickr.com/photos/joeshlabotnik/5328798255\n","permalink":"https://aaron.blog/fancy-word-of-the-day-manchette/","summary":"\u003cp\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Manchette_(cuisine)\"\u003eManchettes\u003c/a\u003e are the paper frills that cover the ends of a rack of ribs in a crown roast.\u003c/p\u003e\u003cp\u003ehttps://www.flickr.com/photos/joeshlabotnik/5328798255\u003c/p\u003e","title":"Fancy Word of the Day - Manchette"},{"content":"Before Working RemoteIn July 2013 I started working remote at Automattic working on the WordPress for iOS app. I was pretty happy with my life at that time and the transition to the new job was not for reasons of disliking my previous job. In fact I loved working for Red Arrow Labs in Milwaukee and it was incredibly hard leaving them. I only left Red Arrow because it felt like Automattic was my unicorn of jobs and I had stumbled upon it by sheer luck. It turns out that I really wasn't entirely happy with how things were going in my life at the time even though the job was great.\nI don't believe single data points like body weight can gauge happiness. It is, however, an indicator of my overall health and satisfaction with my daily life. In 2010 I had dropped to 235lb/106kg without much effort except eliminating bad foods and walking around the neighborhood a lot. Life changed a bit and within three years I was back up to the 280lb/127kg range.\nI was admitted to the ER in 2011 when my heart rhythm freaked me out. I was diagnosed with Atrial Fibrillation (aFib) which is when the electrical signals around your heart freak out. The major risk associated with aFib is stroke because while your heart is beating all weird blood has the chance to pool causing a clot to form. I ended up being put on two medications and regular checkups with an electrophysiologist. Something had to change.\nWeight Loss FailuresI've learned over time that major self change only is successful when done in super small increments. Drastic short term changes, while satisfying to the impulse buyers in us, end up failing for myself because I miss the old way. Riding my new bike to work was a great success for me and made me feel really good - but it took a lot of effort. Instead of continuing with the biking to work I dissuaded myself by convincing myself it was too cold, or I had an early meeting and couldn't be sweaty, or my knees hurt a little. Turns out I was doing too much too fast.\nI didn't really find out how to let myself be successful until I left my office job and starting working remote at Automattic. Almost immediately I realized I really did have Attention Deficit Disorder (ADD) and couldn't ignore it any longer. My level of success as an Automattician depended on me being able to focus and alter my environment to remove distractions. I immediately changed everything in my office and set up all these tools like using the Pomodoro Technique, notebooks, standing at my desk. I felt super successful at first but in the end none of these techniques helped because I got overwhelmed.\nIn October 2013 I realized I needed help. I ended up seeing a counselor who specializes in both substance abuse and ADD. She helped me work through some of the issues I was having with my attention and got me to realize how I was able to succeed in the past and why I was failing now. The nature of working in an office with the multitude of distractions worked in favor of the ADD. Removing those distractions made me entirely in charge of my workday and my brain spun out of control. For around four months I was on Vyvannse to help let me see how my brain could operate with the focus I was looking for. Ultimately I took myself off of the meds because of some behavioral changes that were too drastic of a change. What I discovered pretty quickly though is a daily regimen breaking things up into chunks made a big difference in my ability to do work.\nCombating the Change AversionI started biking again mid 2012 after buying my first \"real\" bicycle made by Trek. I had no excuses any longer to biking - I finally had the comfortable seat, full range of gears, and a proper fit. I recorded all of my trips in RunKeeper for future analysis (like this post). I wanted to go for longer bike rides but excuses like being sweaty or its a bit chilly got in my way.\nI started working out over my \"lunch hour\" to help break up the day. Your brain chemistry changes during exercise and I discovered it helped reset my thoughts. I found a bunch of great step aerobics videos on YouTube from Jenny Ford. A small investment in a step bench allowed me to work out right in my office with a minimal mental barrier. I can shower after I'm done and there is zero commute to the gym. Over time I went from one day a week to around three days.\nAs time has progressed I've mixed in riding my bicycle almost every day during the summer for an hour (roughly 15 miles) with exercising in my basement. On bad weather days I stick with the routine because I now consider exercise just a regular part of my day. I don't need to overdo it to get benefits from it. For the last year I've been also using a treadmill under my desk walking on average of 6-10 miles a day. I absolutely love walking and working especially in the morning.\nAll of these changes to my exercise regimen happened super gradually. Any time I started something new I would come in at the ground level with no expectations of success. If I didn't like something, I stopped doing it. There was no need to try to fool myself with doing something like just because it burned a lot of calories.\nAutomatticWorking remote is a big part of my success but the other part is specific to Automattic. A subset of us have banded together to encourage fitness routines and providing support when things go wrong. We have a Slack chat room dedicated to fitness that is full of awesome praise and discussions. RunKeeper friends from work also provide that boost of support when we have that tiny success finishing a workout. At our grand meetups every year we also encourage physical activities to connect us together doing something active and fun. Automattic even recently bought everyone a Fitbit device of their liking to let us be aware of our activity levels.\nBefore working at Automattic I always thought of fitness as a specific set of things - things like P90X and powdered drinks/supplements, talking about your current weight lifting levels and competition meant to boast not encourage. Turns out none of that is the truth here. We have a bunch of people doing weight lifting, Crossfit, and running but its all ego-free. We all have our own approach to fitness and no judgement is passed only encouragement. It's super awesome.\nWhere I'm at TodayMy weight has dropped to around 225lb/102kg and remained relatively plateaued over the past year. Recently I've mixed in weight/resistance every other day which I am really enjoying. My goal isn't weight loss but rather increasing my focus with the side effect of increased stamina to do the fun things like biking or walking. With the weight loss and greatly improved active lifestyle I've been able to stop the aFib medications and just have biannual checkups with my electrophysiologist.\nHaving both the flexibility of working remote and the support of my coworkers going through similar challenges has helped a lot. I am a better person for combating the physical health issues and establishing a framework to counteract the ADD. While I don't believe I'd really be dead today if I had continued on the path of the unchecked body weight, I do know I am healthier and much happier.\nhttps://www.instagram.com/p/BBSvPLBseCW/\n","permalink":"https://aaron.blog/how-working-remote-probably-saved-my-life/","summary":"\u003ch1 id=\"before-working-remote\"\u003eBefore Working Remote\u003c/h1\u003e\u003cp\u003eIn July 2013 I started working remote at Automattic working on the WordPress for iOS app. I was pretty happy with my life at that time and the transition to the new job was not for reasons of disliking my previous job. In fact I loved working for Red Arrow Labs in Milwaukee and it was incredibly hard leaving them. I only left Red Arrow because it felt like Automattic was my unicorn of jobs and I had stumbled upon it by sheer luck. It turns out that I really wasn't entirely happy with how things were going in my life at the time even though the job was great.\u003c/p\u003e","title":"How Working Remote (Probably) Saved My Life"},{"content":"Watch the drone video below taken at our annual Grand Meetup in Park City, Utah October 2015:\nhttps://videopress.com/v/MYKeey35\nhttps://automattic.com/work-with-us/\n","permalink":"https://aaron.blog/this-is-what-400-automatticians-in-one-place-looks-like-from-a-drone/","summary":"\u003cp\u003eWatch the drone video below taken at our annual Grand Meetup in Park City, Utah October 2015:\u003c/p\u003e\u003cp\u003ehttps://videopress.com/v/MYKeey35\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://automattic.com/work-with-us/\"\u003ehttps://automattic.com/work-with-us/\u003c/a\u003e\u003c/p\u003e","title":"This is what 400 Automatticians in one place looks like from a drone"},{"content":"I may have mentioned this before, but I have experienced atrial fibrillation (A-fib) in the past. A-fib is an irregular heart rhythm with rapid and/or irregular heart beating. Summed up its because the electrical system with my heart gets funky once in a while causing a short-circuit on the outside of the heart. The irregular rhythm isn't the big risk - the risk is blood flow can get disrupted long enough in the heart to form blood clots.\nI've been lucky that by losing 60lb+ since I was originally diagnosed and keeping a regular cardio health regimen I've improved. I was on medication (metoprolol and flecainide) for a couple years but I didn't like my low heart rate and subsequent dizzy spells. My electrophysiologist and I have stopped the medication for now to see how well I'm doing without it. I needed my own electrocardiogram machine in order to prove the A-fib has stopped. The solution was a neat device made by AliveCor.\nThe AliveCor device connects with your iPhone or Android device and provides a FDA-cleared single-lead ECG readout. It can automatically detect A-Fib and provides the ability to export your results for your own doctor. You can also pay them for a review of your ECG by a technician within a 30-minute ($5) or 24-hour period ($2). It communicates with your device through its microphone. They claim is uses an ultrasonic sound that your phone has the ability to hear and it requires no pairing.\nI've only had the device a couple of days so I'll report back after a couple months! So far, so good!\n","permalink":"https://aaron.blog/detecting-atrial-fibrillation-with-your-smart-phone/","summary":"\u003cp\u003eI may have mentioned this before, but I have experienced atrial fibrillation (A-fib) in the past. A-fib is an irregular heart rhythm with rapid and/or irregular heart beating. Summed up its because the electrical system with my heart gets funky once in a while causing a short-circuit on the outside of the heart. The irregular rhythm isn't the big risk - the risk is blood flow can get disrupted long enough in the heart to form blood clots.\u003c/p\u003e","title":"Detecting Atrial Fibrillation with your Smart Phone"},{"content":"Tools to Help Test LocalizationApple provides some pretty slick tools to help with localization testing in your apps. I had completely forgotten about two launch parameters that make it possible to find those pesky layout problems early:\nNSDoubleLocalizedStrings - Any calls made to NSLocalizedString will double the strings to simulate languages with longer words, like German.NSShowNonLocalizedStrings - Replaces any text from NSLocalizedString that doesn't have an entry in a strings file.AppleTextDirection - Simulates a Left to Right language.In Xcode 7 there is an easier way to provide these options. Edit the scheme for your app, click on the Run section, then the Options tab. You'll see Application Language has two options - Double Length Pseudolanguage and Right to Left Pseudolanguage. There is also a check box for Show non-localized strings. These three options are equivalent to the launch arguments above.\nThere's more about testing the localization of your app in Apple's Internationalization and Localization Guide.\nWhy Isn't it Working!?!!?!?This past week I spent a good chunk of a day trying to figure out why Xcode's options for localization testing weren't working. I tried the three items above and also tried sending them as launch parameters like -NSDoubleLocalizedStrings YES with no avail. I checked the contents of NSUserDefaults upon launch and verified that the launch parameters made it into the defaults as expected. Why wasn't it working??\nI then tried to set the user default myself in the app delegate. At first it didn't work. Then when I restarted the app suddenly the strings were being duplicated. I was confused to say the least.\nI dug deeper and discovered that two test apps I had written for RayWenderlich.com worked just fine with the Xcode options and launch arguments approach. My project that didn't work had CocoaPods - so I thought maybe that was the problem. It wasn't because the second test app had CocoaPods. I then decided it had to be one of the pods causing the problem.\nI went back to the original app and started removing pods from the Podfile. Turns out the pod causing the issue was AFNetworking! I then added AFNetworking to my demo project that was working and it stopped working after that. Then I dug through each subspec in AFNetworking and found that the NSURLSession spec was the culprit.\nTurns out there is a single line of code in a method swizzle in AFNetworking's AFURLSessionManager's private class _AFURLSessionTaskSwizzling that's causing the issue.\nI opened an issue on GitHub to help track this. It does seem to be an issue even in AFNetworking 3.\nHow do I Fix it Right Now?Simply comment out the line of code referenced above in your checked out copy of AFNetworking. If you're using CocoaPods you'll get a warning message saying you have to unlock editing of that file. Go ahead and do that but don't forget to undo the change after.\n","permalink":"https://aaron.blog/swizzling-in-afnetworking-somehow-breaks-ios-nsdoublelocalizedstrings/","summary":"\u003ch1 id=\"tools-to-help-test-localization\"\u003eTools to Help Test Localization\u003c/h1\u003e\u003cp\u003eApple provides some pretty slick tools to help with localization testing in your apps. I had completely forgotten about two launch parameters that make it possible to find those pesky layout problems early:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003eNSDoubleLocalizedStrings\u003c/code\u003e - Any calls made to \u003ccode\u003eNSLocalizedString\u003c/code\u003e will double the strings to simulate languages with longer words, like German.\u003c/li\u003e\u003cli\u003e\u003ccode\u003eNSShowNonLocalizedStrings\u003c/code\u003e - Replaces any text from \u003ccode\u003eNSLocalizedString\u003c/code\u003e that doesn't have an entry in a strings file.\u003c/li\u003e\u003cli\u003e\u003ccode\u003eAppleTextDirection\u003c/code\u003e - Simulates a Left to Right language.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eIn Xcode 7 there is an easier way to provide these options. Edit the scheme for your app, click on the Run section, then the Options tab. You'll see Application Language has two options - \u003cem\u003eDouble Length Pseudolanguage\u003c/em\u003e and \u003cem\u003eRight to Left Pseudolanguage\u003c/em\u003e. There is also a check box for \u003cem\u003eShow non-localized strings\u003c/em\u003e. These three options are equivalent to the launch arguments above.\u003c/p\u003e","title":"Swizzling in AFNetworking somehow breaks iOS' NSDoubleLocalizedStrings"},{"content":"I just realized today that Trump's hair reminds me of Fizzgig from The Dark Crystal.\n","permalink":"https://aaron.blog/trumps-hair/","summary":"\u003cp\u003eI just realized today that Trump's hair reminds me of Fizzgig from The Dark Crystal.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/01/tumblr_nmmcpiwi8k1qd3fpno1_500.gif\" class=\"kg-image\" alt=\"tumblr_nmmcpiwi8K1qd3fpno1_500.gif\" loading=\"lazy\" width=\"480\" height=\"480\"\u003e\u003c/figure\u003e","title":"Trump's Hair"},{"content":"I prefer discing.\nWhy? Because I can.\n","permalink":"https://aaron.blog/discing-or-disking/","summary":"\u003cp\u003eI prefer discing.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/01/img_8467-2.gif\" class=\"kg-image\" alt=\"IMG_8467-2\" loading=\"lazy\" width=\"320\" height=\"320\"\u003e\u003c/figure\u003e\u003cp\u003eWhy? Because I can.\u003c/p\u003e","title":"Discing or Disking"},{"content":"I've taken on a challenge to do 30 days of cardio and weight training exercises. The challenge was put on by Jenny Ford, an avid YouTube home workout producer. So far I'm at day 11 and absolutely loving it!\nThe challenge consists of a mix of cardio one day and weight training the next day. There are six days of workouts and then one rest day. Generally the sixth day is more laid back doing yoga stretches. The only required equipment for the challenge are hand weights (I have 3lb, 5lb and 8lb weights), a step aerobics board or a surface to step up on, and a balance ball. None of the equipment is really required however - you can adapt any of the exercises to use soup cans for weights or just the floor if you have no board.\nMy goal for this challenge is not weight loss. I want to commit to six days of working out but really what I'm looking for is familiarity with adding in strength training to my normal workouts. During the winter I primarily only do cardio - step aerobics (to Jenny's videos) and my treadmill desk. Adding strength training should help me get past my weight plateau I've been at for about a year.\nJenny encourages people to post sweaty selfies on Instagram and Facebook, tagging #jennyfordfitness. She takes a very active approach in involving herself over social networks to bring encouragement and a sense of community.\nJenny Ford's 2016 30 Day Fitness Challenge\nhttps://www.instagram.com/p/BAhoMgoMeBW/\nIn case you didn't know, moobs are \"man boobs.\"\n","permalink":"https://aaron.blog/thirty-days-of-sweaty-moobs/","summary":"\u003cp\u003eI've taken on a challenge to do 30 days of cardio and weight training exercises. \u003ca href=\"http://www.jennyford.com/30-day-fitness-challenge-2016/\"\u003eThe challenge was put on by Jenny Ford\u003c/a\u003e, an avid YouTube home workout producer. So far I'm at day 11 and absolutely loving it!\u003c/p\u003e\u003cp\u003eThe challenge consists of a mix of cardio one day and weight training the next day. There are six days of workouts and then one rest day. Generally the sixth day is more laid back doing yoga stretches. The only required equipment for the challenge are hand weights (I have 3lb, 5lb and 8lb weights), a step aerobics board or a surface to step up on, and a balance ball. None of the equipment is really required however - you can adapt any of the exercises to use soup cans for weights or just the floor if you have no board.\u003c/p\u003e","title":"Thirty Days of Sweaty Moobs"},{"content":"Sometimes the hardest part of being a teacher is figuring out what your students DON'T know. It's relatively easy to teach a subject to an entire group when you're following a prescribed curriculum. The problem comes when the teacher doesn't realize everyone is learning at a different rate or figuring out what some students may already know. Maybe the needed skill is empathy - knowing when students are lost/misdirected - and to foster less resistance to ask questions.\nStudents also have to realize that sometimes teachers don't know absolutely everything. Just because they're not understanding something doesn't mean they're stupid - the teacher may have simply missed some details you're not aware of.\n","permalink":"https://aaron.blog/teachers-students-learning/","summary":"\u003cp\u003eSometimes the hardest part of being a teacher is figuring out what your students DON'T know. It's relatively easy to teach a subject to an entire group when you're following a prescribed curriculum. The problem comes when the teacher doesn't realize everyone is learning at a different rate or figuring out what some students may already know. Maybe the needed skill is empathy - knowing when students are lost/misdirected - and to foster less resistance to ask questions.\u003c/p\u003e","title":"Teachers, Students, Learning"},{"content":"Two weeks ago I made the proclamation that I'm going to try Dvorak again. Re-training the fingers didn't take much time and I was doing well the first couple of days. I found myself being more thoughtful about what I was typing and overall I think I had less hand muscle fatigue. Everything seemed honky-dory and I was just waiting for a words per minute increase with more use. Then my coworkers came back from vacation.\nMy effective speed was really low and when I'd get frustrated my brain would flip back into QWERTY. My error rate was high and I realized after my coworkers came back online from the holidays that this caused my thought processes to stall. Even at 100wpm with QWERTY I was always behind my brain - being super slow made my thoughts come to a halt to wait for the fingers to catch up.\nI know that given more time I'd be able to adapt to Dvorak better. Being remote and super dependent on Slack/live chat conversations I need to be able to dump out ideas quickly and move onto the next task. I might give Dvorak more time on my personal computer where I'm usually requiring less throughput.\nI don't count this as a failure - it's simply providing more insight into how I think and interact with computers.\n","permalink":"https://aaron.blog/sorry-dvorak-i-tried-i-really-tried/","summary":"\u003cp\u003eTwo weeks ago I made the proclamation that \u003ca href=\"http://astralbodi.es/2016/01/01/why-i-am-switching-to-dvorak-again/\"\u003eI'm going to try Dvorak again\u003c/a\u003e. Re-training the fingers didn't take much time and I was doing well the first couple of days. I found myself being more thoughtful about what I was typing and overall I think I had less hand muscle fatigue. Everything seemed honky-dory and I was just waiting for a words per minute increase with more use. Then my coworkers came back from vacation.\u003c/p\u003e","title":"Sorry, Dvorak, I tried. I really tried."},{"content":"I love that you can add energy to anything at Sonic. I am feeling a bit run down today - still have a cold - so I juiced up a Cherry Limeaid with Energy!\n","permalink":"https://aaron.blog/sonic-energy/","summary":"\u003cp\u003eI love that you can add energy to anything at Sonic. I am feeling a bit run down today - still have a cold - so I juiced up a Cherry Limeaid with Energy!\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/01/img_8410.jpg\" class=\"kg-image\" alt=\"img_8410\" loading=\"lazy\"\u003e\u003c/figure\u003e","title":"Sonic Energy"},{"content":"My coworker Alex reminded me of the Kickstarter project by the electronic music artist BT where he would use an orchestra in a live performance to replace most of the electronic components of his top songs. Well, the album was released! The music is great. Check out the Kickstarter campaign video below, the wrap up video, and links to the album.\nKickstarter projectStart with the power and excitement of electronic dance music (EDM), blend in the emotional and classical tones of a symphony orchestra, and the result is Electronic Opus, a first-of-its-kind, high-energy album and live concert experience arriving in March 2015.\nProduced by BT and the award-winning composer and Video Games Live creator Tommy Tallarico, Electronic Opus features BT’s signature EDM hits re-imagined, re-arranged and remixed with a full orchestra.\nhttps://www.kickstarter.com/projects/445474695/electronic-opus\nWrap-up videohttps://vimeo.com/124973274\nThe finished albumApple Music - https://itun.es/us/BfXD-Spotify - http://open.spotify.com/album/1e5B41rHQZHstoi1dfApIo","permalink":"https://aaron.blog/from-electronic-dance-to-orchestral-music/","summary":"\u003cp\u003eMy coworker Alex reminded me of the Kickstarter project by the electronic music artist BT where he would use an orchestra in a live performance to replace most of the electronic components of his top songs. Well, the album was released! The music is great. Check out the Kickstarter campaign video below, the wrap up video, and links to the album.\u003c/p\u003e\u003ch2 id=\"kickstarter-project\"\u003eKickstarter project\u003c/h2\u003e\u003cblockquote\u003eStart with the power and excitement of electronic dance music (EDM), blend in the emotional and classical tones of a symphony orchestra, and the result is Electronic Opus, a first-of-its-kind, high-energy album and live concert experience arriving in March 2015.\u003cbr\u003e\u003cbr\u003eProduced by BT and the award-winning composer and Video Games Live creator Tommy Tallarico, Electronic Opus features BT’s signature EDM hits re-imagined, re-arranged and remixed with a full orchestra.\u003c/blockquote\u003e\u003cp\u003e\u003cbr\u003ehttps://www.kickstarter.com/projects/445474695/electronic-opus\u003c/p\u003e","title":"From Electronic Dance to Orchestral Music"},{"content":"Those aren't grey hairs, it's beard tinsel!","permalink":"https://aaron.blog/beard-tinsel/","summary":"\u003cblockquote\u003eThose aren't grey hairs, it's beard tinsel!\u003c/blockquote\u003e","title":"Beard Tinsel"},{"content":"A majority of the selfies I see being taken are usually taken wrong. Well, let me clarify - most selfies should never be taken. The remaining ones are taken incorrectly because people tend to look at the camera wrong. What do I mean? Take a look:\nLooking at the screenIn this example I'm looking at the screen when taking the picture. It feels the most natural since I'm looking at myself and then the picture snaps my eyes looking downward. Now look at the picture when I look at the actual camera lens:\nLooking at the cameraMuch better, right? Next time you're taking a selfie make sure you tell yourself and whomever else is in the frame to look at the camera lens, not the screen!\nCamera on an iPhone 6sIf you're not using an iPhone you'll want to dig into the specs for your phone to determine which sensor is the camera. You can also just put your finger over each of the sensors while the camera app is running to figure out which one is the camera.\nWhen you're using a selfie stick the aiming of the eyes is less important.\nDon't use a selfie stick.\n","permalink":"https://aaron.blog/how-to-take-a-proper-selfie/","summary":"\u003cp\u003eA majority of the selfies I see being taken are usually taken wrong. Well, let me clarify - most selfies should never be taken. The remaining ones are taken incorrectly because people tend to look at the camera wrong. What do I mean? Take a look:\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2016/01/looking-at-screen.jpg\" class=\"kg-image\" alt=\"Looking at screen\" loading=\"lazy\" width=\"300\" height=\"300\"\u003e\u003cfigcaption\u003eLooking at the screen\u003c/figcaption\u003e\u003c/figure\u003e\u003cp\u003eIn this example I'm looking at the screen when taking the picture. It feels the most natural since I'm looking at myself and then the picture snaps my eyes looking downward. Now look at the picture when I look at the actual camera lens:\u003c/p\u003e","title":"How to take a (proper) selfie"},{"content":"We've been using Slack at Automattic for about two years now. One of the biggest challenges I had with it (and any other chat system really) is losing my place. I will frequently read activity in a room, quickly determine it is not immediately relevant, and tell myself to not forget to come back to it later. In reality I never remember and the idea is lost to the ether of my ADHD brain.\nSlack has a feature to handle this issue - you can mark a room unread at any position in history!\nHover over any message, click the ellipsis (...), and click Mark unread.\nYay!\n","permalink":"https://aaron.blog/marking-unread-in-slack/","summary":"\u003cp\u003eWe've been using Slack at Automattic for about two years now. One of the biggest challenges I had with it (and any other chat system really) is losing my place. I will frequently read activity in a room, quickly determine it is not immediately relevant, and tell myself to not forget to come back to it later. In reality I never remember and the idea is lost to the ether of my ADHD brain.\u003c/p\u003e","title":"Marking Unread in Slack"},{"content":"We have an internal movement at work to have people try out a new keyboard layout like Dvorak or Colemak. Why? I am not really sure other than it is something challenging to take on. I am personally doing it to learn to type with a bit more structure - my QWERTY typing is fast enough but I definitely do not use home row and I feel like it could be better.\nOne of my coworkers posted a few tips:\nGo cold turkey, it’s the only way you’ll stick with it.OS X has a Dvorak – Qwerty ⌘ option, which keeps keyboard shortcuts in their old Qwerty positions, if that worries you.Be prepared for something like 6 weeks of low-level frustration at your slow, stubborn fingers. The good news is, you only need to get to about 30 wpm before it feels comfortable enough.And my personal favourite suggestion, which some will disagree with: Don’t switch your keytops or use a keyboard overlay, it’ll just encourage you to hunt and peck. Learn by touch typing instead of looking down at the keys. OS X has an on-screen keyboard viewer, which will help you keep your eyes on the screen.Want to learn Dvorak?Learn the layout - http://learn.dvorak.nl/Then improve your speed - http://www.keyhero.com","permalink":"https://aaron.blog/why-i-am-switching-to-dvorak-again/","summary":"\u003cp\u003eWe have an internal movement at work to have people try out a new keyboard layout like Dvorak or Colemak. Why? I am not really sure other than it is something challenging to take on. I am personally doing it to learn to type with a bit more structure - my QWERTY typing is fast enough but I definitely do not use home row and I feel like it could be better.\u003c/p\u003e","title":"Why I am Switching to Dvorak, again"},{"content":"Interested to see when it's 2016 around the world? Check out TimeAndDate.com's awesome multi-zone countdown chart:\nhttp://www.timeanddate.com/counters/multicountdown.html\nAlso their interactive map is pretty slick:\nhttp://www.timeanddate.com/counters/newyearmap.html\n","permalink":"https://aaron.blog/time-left-until-year-2016-around-the-world/","summary":"\u003cp\u003eInterested to see when it's 2016 around the world? Check out TimeAndDate.com's awesome multi-zone countdown chart:\u003c/p\u003e\u003cp\u003ehttp://www.timeanddate.com/counters/multicountdown.html\u003c/p\u003e\u003cp\u003eAlso their interactive map is pretty slick:\u003c/p\u003e\u003cp\u003ehttp://www.timeanddate.com/counters/newyearmap.html\u003c/p\u003e","title":"Time Left Until Year 2016 Around the World"},{"content":"Here's a quick script that deletes and recreated all of your iOS simulators in Xcode 7. Use it when you get the duplicated nightmare or if you just want to reset everything:\nhttps://gist.github.com/cabeca/3ff77007204e5479f7af\n","permalink":"https://aaron.blog/duplicated-simulators-in-xcode-quick-fix/","summary":"\u003cp\u003eHere's a quick script that deletes and recreated all of your iOS simulators in Xcode 7. Use it when you get the duplicated nightmare or if you just want to reset everything:\u003c/p\u003e\u003cp\u003ehttps://gist.github.com/cabeca/3ff77007204e5479f7af\u003c/p\u003e","title":"Duplicated Simulators in Xcode - Quick Fix"},{"content":"This is a clip from the animated short, The Snowman, from 1982. This was adapted from a book written by Raymond Briggs in 1978.\nI remember that winter because it had brought the heaviest snow I had ever seen. Snow had fallen steadily all night long and in the morning I woke in a room filled with light and silence, the whole world seemed to be held in a dream-like stillness. It was a magical day... and it was on that day I made the Snowman.This is my favorite scene from the animated short.\nAnd the entire animated short -\n","permalink":"https://aaron.blog/the-snowman-walking-in-the-air/","summary":"\u003cp\u003eThis is a clip from the animated short, The Snowman, from 1982. This was adapted from a book written by Raymond Briggs in 1978.\u003c/p\u003e\u003cblockquote\u003e\u003ci\u003eI remember that winter because it had brought the heaviest snow I had ever seen. Snow had fallen steadily all night long and in the morning I woke in a room filled with light and silence, the whole world seemed to be held in a dream-like stillness. It was a magical day... and it was on that day I made the Snowman.\u003c/i\u003e\u003c/blockquote\u003e\u003cp\u003eThis is my favorite scene from the animated short.\u003c/p\u003e","title":"The Snowman - Walking in the Air"},{"content":"Every year at the Automattic Grand Meetup the entire company gets together in one place for a little over a week to work and have fun. Part of that meetup requires everyone to give a four minute flash talk on any subject. This year my coworker Carolyn Sonnek and I decided to team up on our flash talk.\nCarolyn and I are Tater Tot experts. EXPERTS. We dug deep and found some interesting facts on Tater Tots and even a conspiracy!\nhttps://videopress.com/v/iwNsOeW0\n","permalink":"https://aaron.blog/tater-tots-through-time/","summary":"\u003cp\u003eEvery year at the Automattic Grand Meetup the entire company gets together in one place for a little over a week to work and have fun. Part of that meetup requires everyone to give a four minute flash talk on any subject. This year my coworker Carolyn Sonnek and I decided to team up on our flash talk.\u003c/p\u003e\u003cp\u003eCarolyn and I are Tater Tot experts. EXPERTS. We dug deep and found some interesting facts on Tater Tots and even a conspiracy!\u003c/p\u003e","title":"Tater Tots Through Time"},{"content":"Doesn't the image convey a lot more emotion about my disdain for the ancient real estate agent we're forced to work with?\nAnd Justin if you're reading this, it's not you. 🙃\n","permalink":"https://aaron.blog/the-power-of-image-macros-in-chats/","summary":"\u003cp\u003eDoesn't the image convey a lot more emotion about my disdain for the ancient real estate agent we're forced to work with?\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/2015-12-15_13-52-50.png\" class=\"kg-image\" alt=\"2015-12-15_13-52-50.png\" loading=\"lazy\" width=\"289\" height=\"288\"\u003e\u003c/figure\u003e\u003cp\u003eAnd Justin if you're reading this, it's not you. 🙃\u003c/p\u003e","title":"The Power of Image Macros in Chats"},{"content":"Last week my friend Matt lost his wife Dawn. Nine days earlier they had their third child, a baby girl, Adeline. Dawn was only 42 years old.\nA friend of Dawn's set up a GoFundMe site to help with the costs of Dawn's passing, Adeline's birth and for the children's future education. If you have a few spare dollars please consider sending a donation in.\nDawn was a loving soul and it's quite apparent when you meet her family and pets.\nGoFundMe site: https://www.gofundme.com/pqfkb9sw\nObituary: http://www.schmidtandbartelt.com/obituaries/detail.aspx?id=9158\n","permalink":"https://aaron.blog/a-friends-sorrow/","summary":"\u003cp\u003eLast week my friend Matt lost his wife Dawn. Nine days earlier they had their third child, a baby girl, Adeline. Dawn was only 42 years old.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/ecjocosdi.jpg\" class=\"kg-image\" alt=\"_EcjocOsdi\" loading=\"lazy\" width=\"1024\" height=\"686\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/12/ecjocosdi.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/12/ecjocosdi.jpg 1000w, /content/images/wp-content/uploads/2015/12/ecjocosdi.jpg 1024w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eA friend of Dawn's \u003ca href=\"https://www.gofundme.com/pqfkb9sw\"\u003eset up a GoFundMe site\u003c/a\u003e to help with the costs of Dawn's passing, Adeline's birth and for the children's future education. If you have a few spare dollars please consider sending a donation in.\u003c/p\u003e","title":"A Friend's Sorrow"},{"content":"I made an observation today while listening to Digitally Imported's Trance channel. There is something intangibly different about listening to a \"real\" radio channel versus listening to a \"radio station\" on Pandora. Knowing that others around the area/world are listening and experiencing the same song I am has a bit of magic behind it.\nMaybe this is why I don't like Pandora as much - the music seems to have less life because its automatically selected and not something shared with others.\n","permalink":"https://aaron.blog/streaming-radio-vs-pandora-like-radio/","summary":"\u003cp\u003eI made an observation today while listening to \u003ca href=\"http://www.di.fm\" rel=\"noopener\"\u003eDigitally Imported\u003c/a\u003e's Trance channel. There is something intangibly different about listening to a \"real\" radio channel versus listening to a \"radio station\" on Pandora. Knowing that others around the area/world are listening and experiencing the same song I am has a bit of magic behind it.\u003c/p\u003e\u003cp\u003eMaybe this is why I don't like Pandora as much - the music seems to have less life because its automatically selected and not something shared with others.\u003c/p\u003e","title":"Streaming Radio vs. Pandora-like Radio"},{"content":"Our back porch is our favorite place to hang out when the weather is nice during the year. It is screened in and we put wood frames with plastic in them up during the winter to keep it warmer inside and to prevent snow from getting in. Part of the problem is when its warm out and raining - the water comes right inside because the plastic isn't up.\nOur solution was to replace the screens with a multi-track window system. The windows are made of vinyl instead of glass so they're super lightweight but very durable.\nBeforeIt only took our carpenter a day to tear down and reframe the porch. We had to wait until a week or so after the initial install to get everything buttoned up with white aluminum for warmer weather. The finished product is really nice looking and super convenient to use!\nAfterIn spring we'll work on finishing the inside including putting an electrical outlet or two in.\nView the complete album on Flickr:\nhttps://www.flickr.com/photos/astralbodies/albums/72157660880824390\n","permalink":"https://aaron.blog/the-porch-project-completed/","summary":"\u003cp\u003eOur back porch is our favorite place to hang out when the weather is nice during the year. It is screened in and we put wood frames with plastic in them up during the winter to keep it warmer inside and to prevent snow from getting in. Part of the problem is when its warm out and raining - the water comes right inside because the plastic isn't up.\u003c/p\u003e\u003cp\u003eOur solution was to replace the screens with a multi-track window system. The windows are made of vinyl instead of glass so they're super lightweight but very durable.\u003c/p\u003e","title":"The Porch Project Completed"},{"content":"I never noticed this until today - Ella pronounces Christmas as Krist-Mus.\nI can't unhear it now.\n","permalink":"https://aaron.blog/ella-fitzgerald-mis-pronounces-christmas/","summary":"\u003cp\u003eI never noticed this until today - Ella pronounces Christmas as Krist-Mus.\u003c/p\u003e\u003cfigure class=\"kg-card kg-embed-card\"\u003e\u003ciframe loading=\"lazy\" title=\"\" width=\"160\" height=\"9\" src=\"https://www.youtube.com/embed/VGtiLouJWuU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\"\u003e\u003c/iframe\u003e\u003c/figure\u003e\u003cp\u003eI can't unhear it now.\u003c/p\u003e","title":"Ella Fitzgerald Mis-pronounces Christmas"},{"content":"We had a Secret Santa gift exchange at work. I got some cool things including this fantastic tater tot merit badge.\nI am happy to finally have the recognition of my accomplishment.\n","permalink":"https://aaron.blog/tater-tot-merit-badge/","summary":"\u003cp\u003eWe had a Secret Santa gift exchange at work. I got some cool things including this fantastic tater tot merit badge.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/img_8106.jpg\" class=\"kg-image\" alt=\"img_8106\" loading=\"lazy\" width=\"480\" height=\"480\"\u003e\u003c/figure\u003e\u003cp\u003eI am happy to finally have the recognition of my accomplishment.\u003c/p\u003e","title":"Tater Tot Merit Badge"},{"content":"Did you know there is one company that owns a bunch of eyewear, eye care, and vision insurance brands? Nearly 70% of the market in the world is owned by the Italian eyewear company, Luxxotica Group S.p.A.\nThey own:\nRay-BanPersolOakleyThey make frames for:\nChanelPradaGiorgio ArmaniBurberryVersaceDolce and GabbanaMiu MiuDonna KaranStella McCartneyTory BurchAnd they own the eyecare brands:\nLenscraftersSunglass HutPearle VisionSears OpticalTarget OpticalGlasses.comIt also owns EyeMed Vision Care which a majority of U.S. companies use to provide vision coverage to their employees. Seems like a bit of a conflict of interest that EyeMed only has mostly Luxxotica-owned eyecare centers as \"in network\" and then those stores only carry their frames.\nAny wonder why eye care costs so much for glass and plastic sticks?\n","permalink":"https://aaron.blog/the-little-known-monopoly-on-eye-care/","summary":"\u003cp\u003eDid you know there is one company that owns a bunch of eyewear, eye care, and vision insurance brands? Nearly 70% of the market in the world is owned by the Italian eyewear company, \u003ca href=\"https://en.wikipedia.org/wiki/Luxottica\" rel=\"noopener\"\u003eLuxxotica Group S.p.A\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eThey own:\u003c/p\u003e\u003cul\u003e\u003cli\u003eRay-Ban\u003c/li\u003e\u003cli\u003ePersol\u003c/li\u003e\u003cli\u003eOakley\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eThey make frames for:\u003c/p\u003e\u003cul\u003e\u003cli\u003eChanel\u003c/li\u003e\u003cli\u003ePrada\u003c/li\u003e\u003cli\u003eGiorgio Armani\u003c/li\u003e\u003cli\u003eBurberry\u003c/li\u003e\u003cli\u003eVersace\u003c/li\u003e\u003cli\u003eDolce and Gabbana\u003c/li\u003e\u003cli\u003eMiu Miu\u003c/li\u003e\u003cli\u003eDonna Karan\u003c/li\u003e\u003cli\u003eStella McCartney\u003c/li\u003e\u003cli\u003eTory Burch\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eAnd they own the eyecare brands:\u003c/p\u003e\u003cul\u003e\u003cli\u003eLenscrafters\u003c/li\u003e\u003cli\u003eSunglass Hut\u003c/li\u003e\u003cli\u003ePearle Vision\u003c/li\u003e\u003cli\u003eSears Optical\u003c/li\u003e\u003cli\u003eTarget Optical\u003c/li\u003e\u003cli\u003eGlasses.com\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eIt also owns EyeMed Vision Care which a majority of U.S. companies use to provide vision coverage to their employees. Seems like a bit of a conflict of interest that EyeMed only has mostly Luxxotica-owned eyecare centers as \"in network\" and then those stores only carry their frames.\u003c/p\u003e","title":"The Little-Known Monopoly on Eye Care"},{"content":"Do you use SourceTree to help manage your Git repos? Ever work on a bunch of pull requests and have a lot of local branches you need to delete? I found a way to delete multiple branches at one time.\nClick Repository then click Branch.Click Delete Branches.Select the branch(es) you want to delete. Be sure not to select other than Local branches unless that's your intention.","permalink":"https://aaron.blog/sourcetree-delete-multiple-branches-at-one-time/","summary":"\u003cp\u003eDo you use SourceTree to help manage your Git repos? Ever work on a bunch of pull requests and have a lot of local branches you need to delete? I found a way to delete multiple branches at one time.\u003c/p\u003e\u003col\u003e\u003cli\u003eClick Repository then click Branch.\u003c/li\u003e\u003c/ol\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/2015-12-08_16-24-19.png\" class=\"kg-image\" alt=\"2015-12-08_16-24-19\" loading=\"lazy\" width=\"284\" height=\"513\"\u003e\u003c/figure\u003e\u003col\u003e\u003cli\u003eClick Delete Branches.\u003c/li\u003e\u003c/ol\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/2015-12-08_16-23-22.png\" class=\"kg-image\" alt=\"2015-12-08_16-23-22\" loading=\"lazy\" width=\"454\" height=\"319\"\u003e\u003c/figure\u003e\u003col\u003e\u003cli\u003eSelect the branch(es) you want to delete. Be sure not to select other than Local branches unless that's your intention.\u003c/li\u003e\u003c/ol\u003e","title":"SourceTree - Delete Multiple Branches at One Time"},{"content":"I'm proud to say that Automattic / WordPress.com is a supporter of RED.org - the foundation started by Bono and Bonny Shriver to help prevent and cure AIDS.\nRed.org recently moved over to WordPress.com VIP hosting and we partnered with them on producing an official (RED) WordPress.com shirt for all Automatticians. This is definitely my favorite piece of Automattic swag :).\n","permalink":"https://aaron.blog/wordpress-com-supports-red-org/","summary":"\u003cp\u003eI'm proud to say that Automattic / WordPress.com is a supporter of \u003ca href=\"https://red.org\"\u003eRED.org\u003c/a\u003e - the foundation started by Bono and Bonny Shriver to help prevent and cure AIDS.\u003c/p\u003e\u003cp\u003eRed.org recently moved over to WordPress.com VIP hosting and we partnered with them on producing an official (RED) WordPress.com shirt for all Automatticians. This is definitely my favorite piece of Automattic swag :).\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/img_8089.jpg\" class=\"kg-image\" alt=\"Me wearing a WordPress.com RED.org t-shirt\" loading=\"lazy\" width=\"1980\" height=\"1980\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/12/img_8089.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/12/img_8089.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/12/img_8089.jpg 1600w, /content/images/wp-content/uploads/2015/12/img_8089.jpg 1980w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e","title":"WordPress.com Supports (RED).org"},{"content":"Do you use a USB headset for video/audio conferencing on your Mac? Ever been frustrated that you can't really change the volume of just the headset if you keep your main audio coming through your speakers? There is a solution - use the Audio MIDI Setup app nestled in Applications/Utilities.\nLook for the device that matches your USB device - sometimes it only shows the manufacturer of the USB to Analog converter if its a cheapie device.Look for the \"out\" device if you're looking at changing what you hear, the \"in\" device for your microphone audio level.Slide the master control to the right if its available. If master isn't selectable, slide the individual left/right channels. The individual channels don't stop at any specific points along the line so you might want to manually match up the dB (gain) value so each ear is an identical volume level.","permalink":"https://aaron.blog/changing-the-volume-on-a-usb-headset-on-mac-os-x/","summary":"\u003cp\u003eDo you use a USB headset for video/audio conferencing on your Mac? Ever been frustrated that you can't really change the volume of just the headset if you keep your main audio coming through your speakers? There is a solution - use the \u003cstrong\u003eAudio MIDI Setup\u003c/strong\u003e app nestled in Applications/Utilities.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/2015-12-07_14-04-30.png\" class=\"kg-image\" alt=\"2015-12-07_14-04-30.png\" loading=\"lazy\" width=\"928\" height=\"549\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/12/2015-12-07_14-04-30.png 600w, /content/images/wp-content/uploads/2015/12/2015-12-07_14-04-30.png 928w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003col\u003e\u003cli\u003eLook for the device that matches your USB device - sometimes it only shows the manufacturer of the USB to Analog converter if its a cheapie device.\u003c/li\u003e\u003cli\u003eLook for the \"out\" device if you're looking at changing what you hear, the \"in\" device for your microphone audio level.\u003c/li\u003e\u003cli\u003eSlide the master control to the right if its available. If master isn't selectable, slide the individual left/right channels. The individual channels don't stop at any specific points along the line so you might want to manually match up the \u003cstrong\u003edB\u003c/strong\u003e (gain) value so each ear is an identical volume level.\u003c/li\u003e\u003c/ol\u003e","title":"Changing the volume on a USB Headset on Mac OS X"},{"content":"I've only spent a short amount of time with it so far but Deckset is impressing the hell out of me for creating Keynote-like presentations with Markdown syntax. I love creating minimalistic slides and I always feel like going from notes to slides loses something. Now I can create my notes with the slides being in-line with the content using a minimalistic design language in Markdown. \u0026lt;3\nIt's only available for Mac through the Apple Mac App Store at the moment.\nCheck it out: http://www.decksetapp.com\n","permalink":"https://aaron.blog/markdown-based-presentations/","summary":"\u003cp\u003eI've only spent a short amount of time with it so far but Deckset is impressing the hell out of me for creating Keynote-like presentations with Markdown syntax. I love creating minimalistic slides and I always feel like going from notes to slides loses something. Now I can create my notes with the slides being in-line with the content using a minimalistic design language in Markdown. \u0026lt;3\u003c/p\u003e\u003cp\u003eIt's only available for Mac through the Apple Mac App Store at the moment.\u003c/p\u003e","title":"Markdown-based Presentations"},{"content":"A good friend of mine, Eric Knapp, is a teacher at Madison College in Madison, WI. He's an awesome teacher and has a ton of smart students come through his classes. One of his students, Kathryn Sweet, guest-posted on the Anita Borg Institute's Medium account about her experiences with being turned down for internships because she's treated as an inferior student.\nClosing off internships to community college students disproportionately affects students of color, lower-income students, and students who are supporting families.It's incredibly stupid to consider community college students as unqualified for internships. I started my college career off with a two-year degree at Milwaukee Area Technical College - an institution related to Madison College where Kathryn attends. I got a great education there and it jump-started my drive to go further with a bachelor's and master's degrees. Had I not attended MATC and gotten a job with an employer willing to pay for my tuition I may not be where I am today.\nRead her post and if you're in the position of being involved with hiring at your company, take it to heart.\nLink: https://medium.com/@anitaborg_org/guest-post-community-college-we-re-not-second-class-students-798f9eeeba48#.pk01hrafr\n","permalink":"https://aaron.blog/community-college-students-are-not-inferior/","summary":"\u003cp\u003eA good friend of mine, \u003ca href=\"http://ericjknapp.com\"\u003eEric Knapp\u003c/a\u003e, is a teacher at Madison College in Madison, WI. He's an awesome teacher and has a ton of smart students come through his classes. One of his students, Kathryn Sweet, \u003ca href=\"https://medium.com/@anitaborg_org/guest-post-community-college-we-re-not-second-class-students-798f9eeeba48#.pk01hrafr\"\u003eguest-posted on the Anita Borg Institute's Medium account\u003c/a\u003e about her experiences with being turned down for internships because she's treated as an inferior student.\u003c/p\u003e\u003cblockquote\u003eClosing off internships to community college students disproportionately affects students of color, lower-income students, and students who are supporting families.\u003c/blockquote\u003e\u003cp\u003eIt's incredibly stupid to consider community college students as unqualified for internships. I started my college career off with a two-year degree at Milwaukee Area Technical College - an institution related to Madison College where Kathryn attends. I got a great education there and it jump-started my drive to go further with a bachelor's and master's degrees. Had I not attended MATC and gotten a job with an employer willing to pay for my tuition I may not be where I am today.\u003c/p\u003e","title":"Community College Students are NOT Inferior"},{"content":"In case you missed it - the Swift programming language is finally Open Source!\nToday we launched the open source Swift project along with the Swift.org website. We couldn’t be more excited to work together in an open community to find and fix issues, add enhancements, and bring Swift to new platforms.But also hidden in there is the news that the Foundation Framework was open sourced but with a little interesting side note -\nsubstantial reimplementation of the same APIGitHub project pageCompletely independent of the Objective-C runtime. MIND BLOWN.\nMore: https://swift.org/blog/\n","permalink":"https://aaron.blog/swift-goes-open-source-finally-foundation-framework-too/","summary":"\u003cp\u003eIn case you missed it - the Swift programming language is finally Open Source!\u003c/p\u003e\u003cblockquote\u003eToday we launched the open source Swift project along with the Swift.org website. We couldn’t be more excited to work together in an open community to find and fix issues, add enhancements, and bring Swift to new platforms.\u003c/blockquote\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/7drhiqrh-jpg.gif\" class=\"kg-image\" alt=\"7drHiqrh.jpg\" loading=\"lazy\" width=\"312\" height=\"213\"\u003e\u003c/figure\u003e\u003cp\u003eBut also hidden in there is the news that the Foundation Framework was open sourced but with a little interesting side note -\u003c/p\u003e","title":"Swift Goes Open Source (Finally) - Foundation Framework too!"},{"content":"I've fallen in love with this song ever since The Jane Doze played it at our company Grand Meetup closing party.\n","permalink":"https://aaron.blog/peanut-butter-jelly-to-start-your-day/","summary":"\u003cfigure class=\"kg-card kg-embed-card\"\u003e\u003ciframe loading=\"lazy\" title=\"\" width=\"160\" height=\"9\" src=\"https://www.youtube.com/embed/4jBDnYE1WjI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\"\u003e\u003c/iframe\u003e\u003c/figure\u003e\u003cp\u003eI've fallen in love with this song ever since \u003ca href=\"http://www.thejanedoze.com\"\u003eThe Jane Doze\u003c/a\u003e played it at our company Grand Meetup closing party.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/12/giphy.gif\" class=\"kg-image\" alt=\"giphy\" loading=\"lazy\" width=\"249\" height=\"246\"\u003e\u003c/figure\u003e","title":"Peanut Butter Jelly to Start Your Day"},{"content":"Have you heard about pinning tabs in Safari? If you have Mac OS X El Capitan then you have Safari 9 which includes tab pinning. From Apple's Support documentation:\nPin Facebook, Pinterest, Twitter, Gmail, or any other website you visit frequently throughout the day. Pinned Sites stay put on the left side of your tab bar so you can easily get to them at any time.I frequently keep several tabs open on my work computer - the three Gmail instances I'm in and WordPress.com's Reader. Battling with my attention requires me to analyze my behaviors and continuously adapt to prevent problems. I recently discovered I frequently flip back over to Safari to look for the unread count in the tab titles and will derail my current thought process to read the email. My solution? Pinned tabs.\nUnpinned Stabby TabsAs you can see I have an unread count in the far left Gmail instance. I'm driven to see what's behind that (1). Now with the tabs pinned:\nPinned, Less Stabby TabsI know the email is still there and I'm super familiar with what order those tabs are in. The miracle though, is, I no longer see the title of the tab and am not driven to read the unread messages. When my mind has a moment to change course during the day, I'll check my email.\n","permalink":"https://aaron.blog/pinning-safari-tabs-for-mental-focus/","summary":"\u003cp\u003eHave you heard about pinning tabs in Safari? If you have Mac OS X El Capitan then you have Safari 9 which includes tab pinning. From \u003ca href=\"https://support.apple.com/kb/PH21462?locale=en_US\"\u003eApple's Support documentation\u003c/a\u003e:\u003c/p\u003e\u003cblockquote\u003ePin Facebook, Pinterest, Twitter, Gmail, or any other website you visit frequently throughout the day. Pinned Sites stay put on the left side of your tab bar so you can easily get to them at any time.\u003c/blockquote\u003e\u003cp\u003eI frequently keep several tabs open on my work computer - the three Gmail instances I'm in and WordPress.com's Reader. Battling with my attention requires me to analyze my behaviors and continuously adapt to prevent problems. I recently discovered I frequently flip back over to Safari to look for the unread count in the tab titles and will derail my current thought process to read the email. My solution? Pinned tabs.\u003c/p\u003e","title":"Pinning Safari Tabs for Mental Focus"},{"content":"All I can think of when I hear Cyber Monday is some crappy 1980/90s movie about hacking and tech in the future.\n","permalink":"https://aaron.blog/that-stupid-awful-term-cyber-monday/","summary":"\u003cp\u003eAll I can think of when I hear Cyber Monday is some crappy 1980/90s movie about hacking and tech in the future.\u003c/p\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/hackers_stealingdisc-jpg.gif\" width=\"480\" height=\"213\" loading=\"lazy\" alt\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/johnnypluggedin.gif\" width=\"500\" height=\"375\" loading=\"lazy\" alt\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/1446426243_8b34l3_hu0cwe7.gif\" width=\"400\" height=\"288\" loading=\"lazy\" alt\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/giphy.gif\" width=\"450\" height=\"210\" loading=\"lazy\" alt\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/matthew-broderick-in-wargames.gif\" width=\"650\" height=\"432\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/11/matthew-broderick-in-wargames.gif 600w, /content/images/wp-content/uploads/2015/11/matthew-broderick-in-wargames.gif 650w\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/giphy-2.gif\" width=\"500\" height=\"281\" loading=\"lazy\" alt\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e","title":"That stupid awful term - Cyber Monday"},{"content":"I've been using Techsmith's SnagIt for years for taking screenshots. It started as a Windows-only product but then a Mac version came out. It's extremely simple to use and has most everything I want for a quick image including cropping, border effects, transparency, and annotations like arrows and text.\nWhat's your favorite screenshot and annotation tool?\n","permalink":"https://aaron.blog/my-favorite-screenshot-tool-snagit/","summary":"\u003cp\u003eI've been using \u003ca href=\"https://www.techsmith.com/snagit.html\"\u003eTechsmith's SnagIt\u003c/a\u003e for years for taking screenshots. It started as a Windows-only product but then a Mac version came out. It's extremely simple to use and has most everything I want for a quick image including cropping, border effects, transparency, and annotations like arrows and text.\u003c/p\u003e\u003cp\u003eWhat's your favorite screenshot and annotation tool?\u003c/p\u003e","title":"My Favorite Screenshot Tool - SnagIt"},{"content":"My husband and I visited an area of northern Wisconsin today to look at a little cottage down the road from where my grandmother had a cottage growing up. The pictures online showed it needed some work, which we expected and planned ahead for. Sadly when we saw it in person we discovered it needed a bunch more work.\nWe're going to keep looking for the right place. For now the campground we're in with our travel trailer gets us the \"away place\" during the summer. However, while we stood outside the lonely neglected little cottage, I fell back in love with the peace, quiet, and serenity of the north woods.\nedit - This post was supposed to be published yesterday but evidently it didn't.\n","permalink":"https://aaron.blog/the-lonely-little-cottage/","summary":"\u003cp\u003eMy husband and I visited an area of northern Wisconsin today to look at a little cottage down the road from where my grandmother had a cottage growing up. The pictures online showed it needed some work, which we expected and planned ahead for. Sadly when we saw it in person we discovered it needed a bunch more work.\u003c/p\u003e\u003cp\u003eWe're going to keep looking for the right place. For now the campground we're in with our travel trailer gets us the \"away place\" during the summer. However, while we stood outside the lonely neglected little cottage, I fell back in love with the peace, quiet, and serenity of the north woods.\u003c/p\u003e","title":"The lonely little cottage"},{"content":"A coworker introduced me to Ravelry.com to find new patterns and to keep track of stuff I do with knitting and crocheting. It's free and simple!\nRavelry is a place for knitters, crocheters, designers, spinners, weavers and dyers to keep track of their yarn, tools, project and pattern information, and look to others for ideas and inspiration. The content here is all user- driven; we as a community make the site what it is. Ravelry is a great place for you to keep notes about your projects, see what other people are making, find the perfect pattern and connect with people who love to play with yarn from all over the world in our forums.http://www.ravelry.com/about\n","permalink":"https://aaron.blog/ravelry-a-place-for-knitters-crocheters/","summary":"\u003cp\u003eA coworker introduced me to Ravelry.com to find new patterns and to keep track of stuff I do with knitting and crocheting. It's free and simple!\u003c/p\u003e\u003cblockquote\u003eRavelry is a place for knitters, crocheters, designers, spinners, weavers and dyers to keep track of their yarn, tools, project and pattern information, and look to others for ideas and inspiration. The content here is all user- driven; we as a community make the site what it is. Ravelry is a great place for you to keep notes about your projects, see what other people are making, find the perfect pattern and connect with people who love to play with yarn from all over the world in our forums.\u003c/blockquote\u003e\u003cp\u003e\u003ca href=\"http://www.ravelry.com/about\" rel=\"noopener\"\u003ehttp://www.ravelry.com/about\u003c/a\u003e\u003c/p\u003e","title":"Ravelry - A place for knitters \u0026 crocheters"},{"content":"I keep getting this error message on my iOS 9 device:\nCannot Get Mail - The mail server \"imap.gmail.com\" is not responding. Verify that you have entered the correct account info in Mail settings.This randomly pops up on my iPhone for only one of the two Gmail accounts I have configured. The first account is an @gmail.com account and this one is a Google Apps account.\nThere are only two ways I have found that resolve the problem:\nReboot the phone (seriously).Delete and re-add the account.I do not have two-step turned on and my account has not been locked by Google requiring the steps here to be followed.\nI'm kind of stumped but it appears I'm not alone. There are a TON of posts about this.\nNext time it happens I'm going to grab console logs off the device to get a better idea of what is going on.\n","permalink":"https://aaron.blog/cannot-get-mail-error-with-gmail-on-ios-9/","summary":"\u003cp\u003eI keep getting this error message on my iOS 9 device:\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/img_7953.jpg\" class=\"kg-image\" alt=\"Cannot Get Mail - The mail server imap.gmail.com is not responding. Verify that you have entered the correct account info in Mail settings.\" loading=\"lazy\" width=\"576\" height=\"1024\"\u003e\u003cfigcaption\u003eCannot Get Mail - The mail server \"imap.gmail.com\" is not responding. Verify that you have entered the correct account info in Mail settings.\u003c/figcaption\u003e\u003c/figure\u003e\u003cp\u003eThis randomly pops up on my iPhone for only one of the two Gmail accounts I have configured. The first account is an @gmail.com account and this one is a Google Apps account.\u003c/p\u003e","title":"Cannot Get Mail error with Gmail on iOS 9"},{"content":"So this happened this morning:\nMy secret? Thaw the tots in the microwave first but don't get them too hot. Line up the tots on the waffle iron. Any tots that got too hot the microwave will be breaking apart - sprinkle those over the rest to cement them together. Close the iron and squeeze it until the form takes. It took a while for the moisture to cook out of the tots - probably 5 minutes or more.\nGarnish with salt, maple syrup or ketchup and you're golden!\n","permalink":"https://aaron.blog/tater-tot-waffles/","summary":"\u003cp\u003eSo this happened this morning:\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/img_7951.jpg\" class=\"kg-image\" alt=\"IMG_7951\" loading=\"lazy\" width=\"768\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/11/img_7951.jpg 600w, /content/images/wp-content/uploads/2015/11/img_7951.jpg 768w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e\u003cp\u003eMy secret? Thaw the tots in the microwave first but don't get them too hot. Line up the tots on the waffle iron. Any tots that got too hot the microwave will be breaking apart - sprinkle those over the rest to cement them together. Close the iron and squeeze it until the form takes. It took a while for the moisture to cook out of the tots - probably 5 minutes or more.\u003c/p\u003e","title":"Tater Tot Waffles"},{"content":"I had my annual blood work scheduled for today - but I couldn't get an appointment until 9:40am. Having to fast overnight and wait to well past my breakfast time was annoying. I decided to keep my schedule the same this morning sans food and coffee.\nI walked and worked on my treadmill desk for a little under two hours before the appointment. I felt good, drank enough water but noticed I was hungrier than normal before leaving. I had an appointment right before my blood work elsewhere so I left the house around 9am.\nI didn't wait long to get into the lab - only a few minutes past my appointment time. I got in, sat down and a pleasant female tech verified my information. I was glad to get her as the other phlebotomist looked mean and stabby (well, stabbier than a phlebotomist is with a needle.)\nI was then introduced to a student nurse and was asked if it was okay if he tried to do the blood samples. I hesitated at first but then figured what the heck. It's a needle and I normally watch blood draws anyway.\nHe inserted the needle well and I tried to help calm his nerves. The first tube went well but when he was putting the second tube on I saw the needle come out enough to see the hole at the end of the needle. The tube lost its vacuum and the sample was tossed. The tech ended up taking over and said we would go for the other arm.\nIt was at the point I started to feel weird. I was clammy and getting signs of nausea. I attributed it to nerves possibly even though I felt completely at east with working with the student. She took the second sample and right before it finished she looked at me and told me I didn't look good - flushed and sweaty.\nShe was super nice and told me to put my head down on my hand. She even brought over a cold cloth and an orange juice. At no point was I rushed out. I even made sure to tell the student it wasn't his fault! :)\nWhat a strange reaction. I definitely did not like the feeling of something happening to me that I had no real control over. I suspect it was a combination of a vasovagal response and then the low level panic of the whole thing at the same time.\nHowever, next time I get blood drawn I'll make sure to not work out in the morning before the test!\n","permalink":"https://aaron.blog/i-nearly-passed-out-today/","summary":"\u003cp\u003eI had my annual blood work scheduled for today - but I couldn't get an appointment until 9:40am. Having to fast overnight and wait to well past my breakfast time was annoying. I decided to keep my schedule the same this morning sans food and coffee.\u003c/p\u003e\u003cp\u003eI walked and worked on my treadmill desk for a little under two hours before the appointment. I felt good, drank enough water but noticed I was hungrier than normal before leaving. I had an appointment right before my blood work elsewhere so I left the house around 9am.\u003c/p\u003e","title":"I Nearly Passed Out Today"},{"content":"I wasn't trying to accomplish this but it looks like I don't commit code on Saturdays all that often. I like it.\nI am a geek through and through but even I need days to switch gears. Always doing the same thing all the time gets old. Saturdays are usually filled with non-tech things like knitting, visiting with family and friends, bike rides and a ton of camping in the summer. :)\n","permalink":"https://aaron.blog/committing-to-a-no-commit-saturday/","summary":"\u003cp\u003eI wasn't trying to accomplish this but it looks like I don't commit code on Saturdays all that often. I like it.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"https://github.com/astralbodies\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/github-profile1.png\" class=\"kg-image\" alt=\"screenshot of my GitHub profile showing a visualization of commit history with barely any activity on Saturday\" loading=\"lazy\" width=\"750\" height=\"551\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/11/github-profile1.png 600w, /content/images/wp-content/uploads/2015/11/github-profile1.png 750w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eI am a geek through and through but even I need days to switch gears. Always doing the same thing all the time gets old. Saturdays are usually filled with non-tech things like knitting, visiting with family and friends, bike rides and a ton of camping in the summer. :)\u003c/p\u003e","title":"Committing to a no-commit Saturday"},{"content":"Breathe in, breathe out.\nhttps://www.doyogawithme.com/yoga_breathing\n","permalink":"https://aaron.blog/reminder-to-self/","summary":"\u003cp\u003eBreathe in, breathe out.\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://www.doyogawithme.com/yoga_breathing\" rel=\"noopener\"\u003ehttps://www.doyogawithme.com/yoga_breathing\u003c/a\u003e\u003c/p\u003e","title":"Reminder to Self"},{"content":"One of my favorite shots taken in Park City, Utah during a bike ride.\n","permalink":"https://aaron.blog/live-for-something/","summary":"\u003cp\u003eOne of my favorite shots taken in Park City, Utah during a bike ride.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/img_6911.jpg\" class=\"kg-image\" alt=\"Spray paint graffiti stating Live for Something\" loading=\"lazy\" width=\"2000\" height=\"1500\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/11/img_6911.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/11/img_6911.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/11/img_6911.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/11/img_6911.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/figure\u003e","title":"Live For Something"},{"content":"Probably not the best way to abbreviate \"no jalapeños\" on a receipt.\n","permalink":"https://aaron.blog/politically-incorrect-applebees/","summary":"\u003cp\u003eProbably not the best way to abbreviate \"no jalapeños\" on a receipt.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/img_7923.jpg\" class=\"kg-image\" alt=\"img_7923\" loading=\"lazy\"\u003e\u003c/figure\u003e","title":"Politically Incorrect Applebee's"},{"content":"A new water filter arrived today. I don't think I'll try installing it.\n","permalink":"https://aaron.blog/leaky-water-filter/","summary":"\u003cp\u003eA new water filter arrived today. I don't think I'll try installing it.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/img_7899.jpg\" class=\"kg-image\" alt loading=\"lazy\"\u003e\u003c/figure\u003e","title":"Leaky water filter"},{"content":"If you've been around long enough to have used Microsoft DOS as your primary operating system, you might remember Norton Commander.\nNorton Commander 5.51 running on MS-DOS 5Managing files in DOS was a pain in the butt without something even remotely graphical. I loved the two panes and simplistic navigation in folders. In fact I think Norton Commander made me better at command line stuff after I got a visualization of the file structure.\nAfter I got into Linux/Unix/Mac OS X I was so tickled when I found Midnight Commander. MC is a port (only visually) of the original Norton Commander. It's awesome and I've used it for years.\nMidnight Commander 4.8.13 running on Mac OS X 10.11.1Recently I found a replacement for Finder on Mac OS X that looks shockingly similar. It's called Commander One.\nMidnight Commander is free and open source - which means you can dig into how it works and help fix bugs you might find. It's a pretty stable product though and still actively worked on. Commander One is free but not open source. There are \"Pro packs\" you can purchase to add additional functionality.\n","permalink":"https://aaron.blog/remember-norton-commander/","summary":"\u003cp\u003eIf you've been around long enough to have used Microsoft DOS as your primary operating system, you might remember \u003ca href=\"https://en.wikipedia.org/wiki/Norton_Commander\" rel=\"noopener\"\u003eNorton Commander\u003c/a\u003e.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/norton_commander_5-51.png\" class=\"kg-image\" alt=\"Norton_Commander_5.51\" loading=\"lazy\" width=\"640\" height=\"350\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/11/norton_commander_5-51.png 600w, /content/images/wp-content/uploads/2015/11/norton_commander_5-51.png 640w\"\u003e\u003cfigcaption\u003eNorton Commander 5.51 running on MS-DOS 5\u003c/figcaption\u003e\u003c/figure\u003e\u003cp\u003eManaging files in DOS was a pain in the butt without something even remotely graphical. I loved the two panes and simplistic navigation in folders. In fact I think Norton Commander made me better at command line stuff after I got a visualization of the file structure.\u003c/p\u003e","title":"Remember Norton Commander?"},{"content":"I have one of the new Apple TVs and I really do enjoy it. Having been a Roku-only house its nice to be able to get to some of the things only in the Apple world. I have AirPlay on my Pioneer receiver but it doesn't work quite right all the time - but it works great on the Apple TV!\nSo there is one annoyance I can't get around easily. I use a Mac mini in my entertainment stand as a server, my DVR (with EyeTV \u0026amp; HDHomeRun tuners), a webcam server (EvoCam) and a weather station data collector. When I watch DVDS and recorded TV through EyeTV I use the \"old\" Apple remote. The problem? The new Apple TV responds to the infrared from the old remote!\nI dug through the settings of the Apple TV and there is no way to turn off IR on it. So until this is fixed I either have to use black electrical tape to cover the receiver or do this:\nPhysical hack FTW!\n","permalink":"https://aaron.blog/apple-tv-infrared-remotes/","summary":"\u003cp\u003eI have one of the new Apple TVs and I really do enjoy it. Having been a Roku-only house its nice to be able to get to some of the things only in the Apple world. I have AirPlay on my Pioneer receiver but it doesn't work quite right all the time - but it works great on the Apple TV!\u003c/p\u003e\u003cp\u003eSo there is one annoyance I can't get around easily. I use a Mac mini in my entertainment stand as a server, my DVR (with EyeTV \u0026amp; HDHomeRun tuners), a webcam server (EvoCam) and a weather station data collector. When I watch DVDS and recorded TV through EyeTV I use the \"old\" Apple remote. The problem? The new Apple TV responds to the infrared from the old remote!\u003c/p\u003e","title":"Apple TV + Infrared Remotes"},{"content":"Well, shit. Rdio was bought by Pandora and they're going to shut down the service.\nStabby. Very stabby.\n","permalink":"https://aaron.blog/rdio-is-shutting-down/","summary":"\u003cp\u003eWell, shit. \u003ca href=\"http://www.theverge.com/2015/11/16/9746220/pandora-to-acquire-key-parts-of-rdio\"\u003eRdio was bought by Pandora\u003c/a\u003e and they're going to shut down the service.\u003c/p\u003e\u003cp\u003eStabby. Very stabby.\u003c/p\u003e","title":"Rdio is Shutting Down"},{"content":"I've been goofing around with the Imagga API the past week and have been doing some fun stuff. It can take any image and analyze the colors and the subjects in it. Pretty slick!\nStep 1 - Upload a photo\nStep 2 - Let the API analyze the photo and come up with tags\n{\n\"results\": [\n{\n\"image\": \"d487d2521bb4b948b860ce216c434230\",\n\"tags\": [\n{\n\"confidence\": 26.336145269655205,\n\"tag\": \"person\"\n},\n{\n\"confidence\": 26.0971845554226,\n\"tag\": \"caucasian\"\n},\n{\n\"confidence\": 23.54227654205335,\n\"tag\": \"adult\"\n},\n{\n\"confidence\": 23.28269886958777,\n\"tag\": \"happy\"\n},\n{\n\"confidence\": 18.875687368248368,\n\"tag\": \"clothing\"\n},\n{\n\"confidence\": 18.155134932273736,\n\"tag\": \"attractive\"\n},\nStep 3 - Let the API analyze major colors in the photo\nStep 4 - Profit!\n","permalink":"https://aaron.blog/goofing-around-with-the-imagga-api/","summary":"\u003cp\u003eI've been goofing around with the \u003ca href=\"http://docs.imagga.com\"\u003eImagga API\u003c/a\u003e the past week and have been doing some fun stuff. It can take any image and analyze the colors and the subjects in it. Pretty slick!\u003c/p\u003e\u003cp\u003eStep 1 - Upload a photo\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/img_7816.jpg\" class=\"kg-image\" alt=\"Merman\" loading=\"lazy\" width=\"225\" height=\"300\"\u003e\u003c/figure\u003e\u003cp\u003eStep 2 - Let the API analyze the photo and come up with tags\u003c/p\u003e\u003cp\u003e{\u003cbr\u003e\"results\": [\u003cbr\u003e{\u003cbr\u003e\"image\": \"d487d2521bb4b948b860ce216c434230\",\u003cbr\u003e\"tags\": [\u003cbr\u003e{\u003cbr\u003e\"confidence\": 26.336145269655205,\u003cbr\u003e\"tag\": \"person\"\u003cbr\u003e},\u003cbr\u003e{\u003cbr\u003e\"confidence\": 26.0971845554226,\u003cbr\u003e\"tag\": \"caucasian\"\u003cbr\u003e},\u003cbr\u003e{\u003cbr\u003e\"confidence\": 23.54227654205335,\u003cbr\u003e\"tag\": \"adult\"\u003cbr\u003e},\u003cbr\u003e{\u003cbr\u003e\"confidence\": 23.28269886958777,\u003cbr\u003e\"tag\": \"happy\"\u003cbr\u003e},\u003cbr\u003e{\u003cbr\u003e\"confidence\": 18.875687368248368,\u003cbr\u003e\"tag\": \"clothing\"\u003cbr\u003e},\u003cbr\u003e{\u003cbr\u003e\"confidence\": 18.155134932273736,\u003cbr\u003e\"tag\": \"attractive\"\u003cbr\u003e},\u003c/p\u003e\u003cp\u003eStep 3 - Let the API analyze major colors in the photo\u003c/p\u003e","title":"Goofing around with the Imagga API"},{"content":"I had a moment of introspection today as I sat in a pew at a good friend's dad's funeral: Death is much like chronic pain. A few years back, on a different blog of mine, I made this statement regarding chronic pain with my cluster headaches:\nAnd lastly, the most important lesson I’ve learned? The pain reminds us that we’re alive. Without the pain we’d go through life not understanding what a gift it is to be able to relax without pain and distractions. That pain keeps me from being a sheep, tooling around life without knowing where I came from and where I want to go.Death sucks but it reminds us we're alive. Cherish the time you have with your living family and friends. Everything doesn't have to be a party - but ever so often have a moment of reflection and smile when you're having a good day.\n\u0026lt;3\n","permalink":"https://aaron.blog/death-is-much-like-chronic-pain/","summary":"\u003cp\u003eI had a moment of introspection today as I sat in a pew at a good friend's dad's funeral: Death is much like chronic pain. A few years back, on a different blog of mine, I \u003ca href=\"http://www.paininthehead.org/2009/08/04/four-years-gone-by/\" rel=\"noopener\"\u003emade this statement regarding chronic pain\u003c/a\u003e with my cluster headaches:\u003c/p\u003e\u003cblockquote\u003eAnd lastly, the most important lesson I’ve learned? The pain reminds us that we’re alive. Without the pain we’d go through life not understanding what a gift it is to be able to relax without pain and distractions. That pain keeps me from being a sheep, tooling around life without knowing where I came from and where I want to go.\u003c/blockquote\u003e\u003cp\u003eDeath sucks but it reminds us we're alive. Cherish the time you have with your living family and friends. Everything doesn't have to be a party - but ever so often have a moment of reflection and smile when you're having a good day.\u003c/p\u003e","title":"Death Is Much Like Chronic Pain"},{"content":"Ever have those days where you write or speak a word and the longer you stare at it or repeat it the less real it feels? There happens to be a term for that feeling - Semantic satiation.\nDefinition: [ source ]\nSemantic satiationsemantic saturationverbal satiationThe concept of semantic satiation was described by E. Severance and M.F. Washburn in The American Journal of Psychology in 1907. The term was introduced by psychologists Leon James and Wallace E.\nRepeat any word over and over and you'll experience this.\n","permalink":"https://aaron.blog/fancy-sounding-term-of-the-day-semantic-satiation/","summary":"\u003cp\u003eEver have those days where you write or speak a word and the longer you stare at it or repeat it the less real it feels? There happens to be a term for that feeling - Semantic satiation.\u003c/p\u003e\u003cp\u003eDefinition: [ \u003ca href=\"http://grammar.about.com/od/rs/g/Semantic-Satiation.htm\" rel=\"noopener\"\u003esource\u003c/a\u003e ]\u003c/p\u003e\u003cblockquote\u003e\u003cem\u003eSemantic satiationsemantic saturationverbal satiation\u003c/em\u003e\u003c/blockquote\u003e\u003cblockquote\u003eThe concept of semantic satiation was described by E. Severance and M.F. Washburn in \u003cem\u003eThe American Journal of Psychology\u003c/em\u003e in 1907. The term was introduced by psychologists Leon James and Wallace E.\u003c/blockquote\u003e\u003cp\u003e\u003cbr\u003eRepeat any word over and over and you'll experience this.\u003c/p\u003e","title":"Fancy-sounding term of the day: Semantic satiation"},{"content":"When I worked in an office headphones were a requirement for me. I absolutely needed them to focus. I really don't use headphones all that often anymore since I started working remote 2 1/2 years ago. Listening to music over decent speakers seemed to be enough. Lately I'm discovering I missed the power behind having the sound close to your head.\nThe past two weeks I've been using my headphones again to help with my attention \u0026amp; focus in the afternoons. My mornings start with using my treadmill under my desk to walk and work. Mid-day when I find my brain wandering, I stop working and do some sort of exercise. Now in the afternoons I'm finding putting on the noise-canceling headphones gives me the boost to wrap up the work for the day.\nThere's something comforting with having the music close to your ears. I usually mix between the New EDM station on Rdio, a couple electronic stations on DI.fm and sometimes BPM on SiriusXM. Most music that has too many words doesn't work too well for focus.\nI'm still amazed after 30 months of working on dealing with ADHD I am still finding things to tweak. :)\n","permalink":"https://aaron.blog/headphones-attention/","summary":"\u003cp\u003eWhen I worked in an office headphones were a requirement for me. I absolutely needed them to focus. I really don't use headphones all that often anymore since I started working remote 2 1/2 years ago. Listening to music over decent speakers seemed to be enough. Lately I'm discovering I missed the power behind having the sound close to your head.\u003c/p\u003e\u003cp\u003eThe past two weeks I've been using my headphones again to help with my attention \u0026amp; focus in the afternoons. My mornings start with using my treadmill under my desk to walk and work. Mid-day when I find my brain wandering, I stop working and do some sort of exercise. Now in the afternoons I'm finding putting on the noise-canceling headphones gives me the boost to wrap up the work for the day.\u003c/p\u003e","title":"Headphones \u0026 Attention"},{"content":"I keep a curated playlist on Rdio of songs that are excellent for dancing at your standing desk. The playlist also works well for a particularly awesome dance party.\nhttps://www.rdio.com/people/astralbodies/playlists/7569006/To_Dance_Shamelessly_at_a_Standing_Desk/\nEnjoy! :)\n","permalink":"https://aaron.blog/music-for-dancing-at-your-standing-desk/","summary":"\u003cp\u003eI keep a \u003ca href=\"https://www.rdio.com/people/astralbodies/playlists/7569006/To_Dance_Shamelessly_at_a_Standing_Desk/\"\u003ecurated playlist on Rdio\u003c/a\u003e of songs that are excellent for dancing at your standing desk. The playlist also works well for a particularly awesome dance party.\u003c/p\u003e\u003cp\u003ehttps://www.rdio.com/people/astralbodies/playlists/7569006/To_Dance_Shamelessly_at_a_Standing_Desk/\u003c/p\u003e\u003cp\u003eEnjoy! :)\u003c/p\u003e","title":"Music for Dancing at your Standing Desk"},{"content":"I'm currently writing the materials for my presentation on Core Data \u0026amp; Synchronization of data for RWDevCon 2016. One of the requirements for the demonstration app is a web service that provides a REST API to sync with. One of the requirements of the talk is that I cannot rely upon an Internet connection. Every person going through the tutorial needs to be able to bring up a local web service to following along with while coding the iOS app on their machine.\nI started looking into a lot of wrappers for web apps, including Electron. The issue is I have a limited amount of time to come up with a solution that is super simple for conference attendees to install and bring up. I haven't developed a web app for a couple years - and I feel so rusty. I do not have a trusty fallback programming language outside of Swift and Objective-C. I really feel stupid sometimes not knowing Ruby, Python or any other language as well as I feel like I should.\nI ended up digging for two full nights and got super frustrated. There is just so much to learn about a new language, their web frameworks, persistence layers, and on and on. I still need to find time to write the iOS demo application - so I ended up time-boxing the search. Suddenly I had a moment of clarity. I remembered CouchDB - a document store/database that has a JSON REST API built in!\nI first learned about the Apache CouchDB project from a presentation given by Jens Alfke at SecondConf in Chicago, 2011.\nhttps://player.vimeo.com/video/37867869\nAttendees will get a single ZIP file with the CouchDB binary. I'll then have a small script they can execute to seed the data into the store. Super super simple. So far I'm in love with CouchDB again. :)\n","permalink":"https://aaron.blog/rediscovering-couchdb/","summary":"\u003cp\u003eI'm currently writing the materials for my presentation on Core Data \u0026amp; Synchronization of data for \u003ca href=\"http://www.rwdevcon.com\"\u003eRWDevCon 2016\u003c/a\u003e. One of the requirements for the demonstration app is a web service that provides a REST API to sync with. One of the requirements of the talk is that I cannot rely upon an Internet connection. Every person going through the tutorial needs to be able to bring up a local web service to following along with while coding the iOS app on their machine.\u003c/p\u003e","title":"Rediscovering CouchDB"},{"content":"Because I've had quite a few people ask...\nGet it on Zazzle.com\n","permalink":"https://aaron.blog/sparkly-code-princess-mug/","summary":"\u003cp\u003eBecause I've had quite a few people ask...\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"https://astralbodies.files.wordpress.com/2014/01/img_1929.jpg?w=600\" class=\"kg-image\" alt loading=\"lazy\" width=\"600\" height=\"386\"\u003e\u003c/figure\u003e\u003cp\u003eGet it on \u003ca href=\"http://www.zazzle.com/sparkly_code_princess_mug-168212639598281392?rf=238669214551565723\"\u003eZazzle.com\u003c/a\u003e\u003c/p\u003e","title":"Sparkly Code Princess mug"},{"content":"I posted earlier last week about how I figured out how the heck I was taking so many Apple Watch screenshots. Turns out there are multiple scenarios causing it to happen. I was thinking about turning the watch face around to move the buttons onto the other side. Something was holding me back until my friend Ellen said she turned her watch too.\nhttps://twitter.com/designatednerd/status/663208455449260032\nSwapping the watch bands was super simple. Then I went into the Apple Watch Settings app and told it the digital crown was on the left. Boom. No more accidental screenshots.\n","permalink":"https://aaron.blog/preventing-apple-watch-screenshots/","summary":"\u003cp\u003eI posted earlier last week about how I figured out how the heck I was \u003ca href=\"http://astralbodi.es/2015/11/04/apple-photos-littered-with-apple-watch-screenshots/\"\u003etaking so many Apple Watch screenshots\u003c/a\u003e. Turns out there are multiple scenarios causing it to happen. I was thinking about turning the watch face around to move the buttons onto the other side. Something was holding me back until my friend Ellen said she turned her watch too.\u003c/p\u003e\u003cp\u003ehttps://twitter.com/designatednerd/status/663208455449260032\u003c/p\u003e\u003cp\u003eSwapping the watch bands was super simple. Then I went into the Apple Watch Settings app and told it the digital crown was on the left. Boom. No more accidental screenshots.\u003c/p\u003e","title":"Preventing Apple Watch Screenshots"},{"content":"My system for helping keep my brain focused during the workday is a system of lists in a note-taking program like Evernote or Simplenote. Every time I encounter an e-mail, talk to a coworker about something, or get assigned a pull request to review I turn that into a checkbox item. If I don't get to an item in a day, those empty checkbox items get moved to the next day (or week). The system isn't without faults but it seems to work. The only issue with the checkboxes is they don't portray status of longer-running tasks.\nThis next week I'm going to try something different with how I keep myself organized. For simple TODOs, I'll still use checkbox items. For longer running tasks with different states to jump through I'm going to try using a personal Trello board. We use Trello at Automattic for some projects as well as at RayWenderlich.com for project tracking. I've done simple Kanban boards before but I think Trello might be what I'm missing. Their mobile app is pretty good as well which helps with things I think of while on the go.\nI'll report back after I get some time in with it!\n","permalink":"https://aaron.blog/keeping-myself-organized-using-trello/","summary":"\u003cp\u003eMy system for helping keep my brain focused during the workday is a system of lists in a note-taking program like Evernote or Simplenote. Every time I encounter an e-mail, talk to a coworker about something, or get assigned a pull request to review I turn that into a checkbox item. If I don't get to an item in a day, those empty checkbox items get moved to the next day (or week). The system isn't without faults but it seems to work. The only issue with the checkboxes is they don't portray status of longer-running tasks.\u003c/p\u003e","title":"Keeping Myself Organized Using Trello"},{"content":"I've been using a standing desk for over 2 1/2 years. About nine months ago I started mixing in walking on a treadmill to my daily life. I noticed something over the course of this summer - standing at my desk brought back a ton of lower back pain. I thought I had licked the back pain early on with yoga stretches to improve my hip flexor muscles. Turns out, I forgot how to stand.\nHow are you supposed to stand? There are a TON of great posts out there about the right posture. I usually refer to this one when someone new starts standing. The thing I forgot is something so slight that you won't notice until you've been standing for a while:\nBEND YOUR KNEES SLIGHTLY\nSeriously? Yup. We/I have a tendency to stand straight up (when I'm not dancing at my standing desk) and pull the knees back, locking them. While this is \"easier\" to stand it ends up putting a ton of strain on your knees and changes your posture, stressing your back.\u0026nbsp;I thought I was having sciatic nerve problems but it turns out it was in fact sacroiliac joint pain from locking my knees.\nDancing at my desk, walking on the treadmill and balancing on a single foot didn't seem to aggravate the back. Turns out my knees naturally don't lock back in those situations. Use your leg muscles to stand by letting the legs bend just slightly. You'll notice a huge improvement in a short time. I noticed in minutes there was a difference.\n","permalink":"https://aaron.blog/standing-desk-back-pain/","summary":"\u003cp\u003eI've been using a standing desk for over 2 1/2 years. About nine months ago I started mixing in walking on a treadmill to my daily life. I noticed something over the course of this summer - standing at my desk brought back a ton of lower back pain. I thought I had licked the back pain early on with yoga stretches to improve my hip flexor muscles. Turns out, I forgot how to stand.\u003c/p\u003e","title":"Standing Desk Back Pain"},{"content":"Here's a super interesting write up on how to implement a natural language search using Core Data in a Mac or iOS app. Black Pixel needed to find a way to bring a more natural way for users of the Inspirato app to search for the right vacation. Pretty cool stuff here and something I was very excited to read about with my previous experience with search technologies.\nDeveloping Inspirato’s Search Tool\n","permalink":"https://aaron.blog/natural-language-search-with-core-data/","summary":"\u003cp\u003eHere's a super interesting write up on how to implement a natural language search using Core Data in a Mac or iOS app. Black Pixel needed to find a way to bring a more natural way for users of the Inspirato app to search for the right vacation. Pretty cool stuff here and something I was very excited to read about with my previous experience with search technologies.\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://medium.com/bpxl-craft/developing-a-new-way-to-search-cf1a46d382df\" rel=\"noopener\"\u003eDeveloping Inspirato’s Search Tool\u003c/a\u003e\u003c/p\u003e","title":"Natural Language Search with Core Data"},{"content":"I've noticed that ever since I got my Apple Watch that my photo stream has been filled with seemingly random screenshots of my watch face. It's easy to take a screenshot - simple hit the digital crown and the side button at the same time. So why the heck am I always causing these screenshots?\nToday I finally discovered the root of the issue. When I'm on a video call at my standing desk I typically put my hands in my pockets to force myself to focus on the people talking. I get seriously distracted if I don't do this. Turns out that's the exact reason for all of the photos.\nThe edge of my pocket is hitting both buttons at the same time. Derrrrp!\n","permalink":"https://aaron.blog/apple-photos-littered-with-apple-watch-screenshots/","summary":"\u003cp\u003eI've noticed that ever since I got my Apple Watch that my photo stream has been filled with seemingly random screenshots of my watch face. It's easy to take a screenshot - simple hit the digital crown and the side button at the same time. So why the heck am I always causing these screenshots?\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/2015-11-04_12-16-53.png\" class=\"kg-image\" alt=\"2015-11-04_12-16-53\" loading=\"lazy\" width=\"208\" height=\"244\"\u003e\u003c/figure\u003e\u003cp\u003eToday I finally discovered the root of the issue. When I'm on a video call at my standing desk I typically put my hands in my pockets to force myself to focus on the people talking. I get seriously distracted if I don't do this. Turns out that's the exact reason for all of the photos.\u003c/p\u003e","title":"Apple Photos littered with Apple Watch screenshots"},{"content":"Screen sharing over iMessage is not a terribly well-known feature of Mac OS X - but it's incredibly awesome and easy to use. The only requirements are the person needs a relatively new Mac OS X install (Yosemite or higher) and iMessage enabled on their Mac.\nIn Messages, find your existing conversation (or create a new one with the user).Click the Details button up top and click it.Find the little icon that looks like two squares with an offset between them and click it.Select Ask to Share Screen.The other person should get a notice and they can accept it.Once you're sharing you are in view-only mode - you have to click the icon in the upper left to request control of their desktop.Pretty simple! I've had some issues in the past with the notifications never coming through for screen sharing but it seems to be resolved with Mac OS X 10.11 (El Capitan).\nView Apple's Support Documentation on screen sharing in Yosemite\n","permalink":"https://aaron.blog/easy-mac-to-mac-screen-sharing/","summary":"\u003cp\u003eScreen sharing over iMessage is not a terribly well-known feature of Mac OS X - but it's incredibly awesome and easy to use. The only requirements are the person needs a relatively new Mac OS X install (Yosemite or higher) and iMessage enabled on their Mac.\u003c/p\u003e\u003col\u003e\u003cli\u003eIn Messages, find your existing conversation (or create a new one with the user).\u003c/li\u003e\u003cli\u003eClick the Details button up top and click it.\u003c/li\u003e\u003c/ol\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2015/11/2015-11-02_19-09-28.png\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/2015-11-02_19-09-28.png?w=660\" class=\"kg-image\" alt=\"2015-11-02_19-09-28\" loading=\"lazy\" width=\"660\" height=\"152\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/11/2015-11-02_19-09-28.png?w=660 600w, /content/images/wp-content/uploads/2015/11/2015-11-02_19-09-28.png?w=660 660w\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/2015-11-02_18-50-29.png\" class=\"kg-image\" alt=\"2015-11-02_18-50-29\" loading=\"lazy\" width=\"357\" height=\"495\"\u003e\u003c/figure\u003e\u003col\u003e\u003cli\u003eFind the little icon that looks like two squares with an offset between them and click it.\u003c/li\u003e\u003c/ol\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/2015-11-02_18-53-03.png\" class=\"kg-image\" alt=\"2015-11-02_18-53-03\" loading=\"lazy\" width=\"204\" height=\"80\"\u003e\u003c/figure\u003e\u003col\u003e\u003cli\u003eSelect Ask to Share Screen.\u003c/li\u003e\u003cli\u003eThe other person should get a notice and they can accept it.\u003c/li\u003e\u003c/ol\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/2015-11-02_18-54-08.png\" class=\"kg-image\" alt=\"2015-11-02_18-54-08\" loading=\"lazy\" width=\"332\" height=\"73\"\u003e\u003c/figure\u003e\u003col\u003e\u003cli\u003eOnce you're sharing you are in view-only mode - you have to click the icon in the upper left to request control of their desktop.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003ePretty simple! I've had some issues in the past with the notifications never coming through for screen sharing but it seems to be resolved with Mac OS X 10.11 (El Capitan).\u003c/p\u003e","title":"Easy Mac to Mac Screen Sharing"},{"content":"CBS announced today that a totally new Star Trek series is being planned for launch in 2017.\nThe most interesting part of the news release is that you'll have to buy CBS' streaming service for $5.99/month to gain access to it. It's a bold move for CBS to go to a subscription-only model for a traditionally broadcast-only TV network. I think they would be better off spending the time partnering with one of the streaming providers out there like Netflix, Hulu or Amazon Prime. I can't see spending a separate charge for potentially a single show every week.\nThe best part is the news release barely talks about the show. It almost seems like they're more fixated on the delivery of the show than the show itself (who's starring in it, the premise, etc). :(\n","permalink":"https://aaron.blog/cbs-to-launch-star-trek-series-in-2017-for-a-fee/","summary":"\u003cp\u003e\u003ca href=\"http://www.startrek.com/article/new-star-trek-series-premieres-january-2017\" rel=\"noopener\"\u003eCBS announced today\u003c/a\u003e that a totally new Star Trek series is being planned for launch in 2017.\u003c/p\u003e\u003cp\u003eThe most interesting part of the news release is that you'll have to buy CBS' streaming service for $5.99/month to gain access to it. It's a bold move for CBS to go to a subscription-only model for a traditionally broadcast-only TV network. I think they would be better off spending the time partnering with one of the streaming providers out there like Netflix, Hulu or Amazon Prime. I can't see spending a separate charge for potentially a single show every week.\u003c/p\u003e","title":"CBS to launch Star Trek series in 2017 for a fee"},{"content":"Candy Pumpkins. Barf.","permalink":"https://aaron.blog/quite-possibly-the-worst-candy-ever/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/11/img_7216.jpg\" class=\"kg-image\" alt loading=\"lazy\" width=\"400\" height=\"400\"\u003e\u003cfigcaption\u003eCandy Pumpkins. Barf.\u003c/figcaption\u003e\u003c/figure\u003e","title":"Quite possibly the worst candy ever"},{"content":"","permalink":"https://aaron.blog/happy-hauntings/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/10/friendly_pumpkin.jpg\" class=\"kg-image\" alt=\"Friendly_pumpkin\" loading=\"lazy\" width=\"660\" height=\"495\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/10/friendly_pumpkin.jpg 600w, /content/images/wp-content/uploads/2015/10/friendly_pumpkin.jpg 660w\"\u003e\u003c/figure\u003e","title":"Happy Hauntings!"},{"content":"IBM announced earlier this week that they're buying the Weather Channel's business to business, mobile, and cloud-based properties. One of these is my favorite place to find weather forecasts - Weather Underground.\nI've been a user of Weather Underground and also uploading my house's weather station data to the site for over 13 years. I'm not sure what this news ultimately means for WU. NBC dumped money into the site a while back and modernized the user experience - although I'm not sure how much usefulness was added. I'm hoping that IBM buying the properties means a continued interest in open and crowd-sourced weather data source.\nI'd hate to think me uploading data is only helping IBM play the stock market better and not the general public with prediction improvements.\n","permalink":"https://aaron.blog/ibm-buying-weather-underground/","summary":"\u003cp\u003e\u003ca href=\"http://www-03.ibm.com/press/us/en/pressrelease/47952.wss\" rel=\"noopener\"\u003eIBM announced earlier this week\u003c/a\u003e that they're buying the Weather Channel's business to business, mobile, and cloud-based properties. One of these is my favorite place to find weather forecasts - \u003ca href=\"http://www.wunderground.com\"\u003eWeather Underground\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eI've been a user of Weather Underground and also uploading my house's weather station data to the site for over 13 years. I'm not sure what this news ultimately means for WU. NBC dumped money into the site a while back and modernized the user experience - although I'm not sure how much usefulness was added. I'm hoping that IBM buying the properties means a continued interest in open and crowd-sourced weather data source.\u003c/p\u003e","title":"IBM buying Weather Underground"},{"content":"neologism |nēˈäləˌjizəm|\nnoun\na newly coined word or expression.the coining or use of new words.","permalink":"https://aaron.blog/neologism/","summary":"\u003cp\u003e\u003cstrong\u003eneologism\u003c/strong\u003e |nēˈäləˌjizəm|\u003cbr\u003enoun\u003c/p\u003e\u003cul\u003e\u003cli\u003ea newly coined word or expression.\u003c/li\u003e\u003cli\u003ethe coining or use of new words.\u003c/li\u003e\u003c/ul\u003e","title":"Fancy-sounding word of the day: Neologism"},{"content":"While updating a few apps today, the Apple App Store is giving me this super helpful error message.\nTemporarily Unavailable - This feature is temporarily unavailable. Try again later.I hadn't realized updating/installing apps was a feature!\n","permalink":"https://aaron.blog/this-feature-is-temporarily-unavailable/","summary":"\u003cp\u003eWhile updating a few apps today, the Apple App Store is giving me this super helpful error message.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/10/img_7146.png\" class=\"kg-image\" alt=\"IMG_7146\" loading=\"lazy\" width=\"600\" height=\"1067\" srcset=\"/content/images/wp-content/uploads/2015/10/img_7146.png 600w\"\u003e\u003cfigcaption\u003eTemporarily Unavailable - This feature is temporarily unavailable. Try again later.\u003c/figcaption\u003e\u003c/figure\u003e\u003cp\u003eI hadn't realized updating/installing apps was a feature!\u003c/p\u003e","title":"This feature is temporarily unavailable"},{"content":"WiFi on Apple Watch!?It's not completely obvious but the Apple Watch supports WiFi networks starting in Watch OS 2.0. How does one configure WiFi to work with the Watch? It's not terribly obvious so I threw this guide together.\nMy SituationMy Apple Watch was not configured to work with WiFi. I have both 5GHz and 2.4GHz networks in my home. I normally do not join the 2.4GHz network because it doesn't work as well as the 5GHz. I looked at the Apple Support page on WiFi for the Apple Watch and realized my situation. Apple Watch only supports 2.4GHz networks.\nDOH!\nThe solution for me was to join the 2.4GHz network so the iPhone knows the password. Those credentials are then shared automatically with the Apple Watch.\nThe ProcessStep 1 - Join a 2.4GHz network. In my case, sourapple. I normally use sourapple 5GHz. FBI Surveillance Van is the WiFi in my garden shed but it's at 5GHz. I'm disappointed that my Apple Watch won't work with my WiFi when I'm out in the yard without my phone.\nStep 2 - Give the iPhone a few moments to do whatever magic it needs to do to copy the new credentials to the Apple Watch. I ended up just launching the Watch app on my iPhone and poked around for a bit. This step may not be necessary.\nStep 3 - Bring up the settings glance on your Watch.\nStep 4 - Turn off Bluetooth on your iPhone.\nStep 5 - See the icon of the iPhone turn into a cloud on your Watch.\nWhat's the Big DealTurning on WiFi support means you can put greater distance between you and your iPhone and your Watch will still have connectivity. The downside is that WiFi uses more energy than bluetooth and it'll impact your battery life.\n","permalink":"https://aaron.blog/extending-your-apple-watch-with-wifi/","summary":"\u003ch1 id=\"wifi-on-apple-watch-\"\u003eWiFi on Apple Watch!?\u003c/h1\u003e\u003cp\u003eIt's not completely obvious but the Apple Watch supports WiFi networks starting in Watch OS 2.0. How does one configure WiFi to work with the Watch? It's not terribly obvious so I threw this guide together.\u003c/p\u003e\u003ch1 id=\"my-situation\"\u003eMy Situation\u003c/h1\u003e\u003cp\u003eMy Apple Watch was not configured to work with WiFi. I have both 5GHz and 2.4GHz networks in my home. I normally do not join the 2.4GHz network because it doesn't work as well as the 5GHz. I looked at the \u003ca href=\"https://support.apple.com/en-us/HT204562\"\u003eApple Support page on WiFi\u003c/a\u003e for the Apple Watch and realized my situation. Apple Watch only supports 2.4GHz networks.\u003c/p\u003e","title":"Extending your Apple Watch with WiFi"},{"content":"I've been noodling some ideas lately and I sort of rediscovered an idea I remembered I had from the past.\nMost mobile app interactions are 20-30 seconds in length (at most!). It makes a lot of sense to design an experience around these types/lengths of interactions. Some interactions go beyond that length and their design should be completely different.\nYou know you're hitting the right area in the users' brains when you find your app is the first thing they use in the morning and/or the last thing they use before sleep. This is an incredibly powerful place to exist in someone's life.\n","permalink":"https://aaron.blog/power-of-mobile-apps/","summary":"\u003cp\u003eI've been noodling some ideas lately and I sort of rediscovered an idea I remembered I had from the past.\u003c/p\u003e\u003cp\u003eMost mobile app interactions are 20-30 seconds in length (at most!). It makes a lot of sense to design an experience around these types/lengths of interactions. Some interactions go beyond that length and their design should be completely different.\u003c/p\u003e\u003cp\u003eYou know you're hitting the right area in the users' brains when you find your app is the first thing they use in the morning and/or the last thing they use before sleep. This is an incredibly powerful place to exist in someone's life.\u003c/p\u003e","title":"Power of Mobile Apps"},{"content":"I work for Automattic, a 100% distributed company. We rely upon meetups with our teammates to power the social aspect of our jobs and to work on short-duration high-velocity projects. Every year we also partake in a Grand Meetup where everyone gets together in one place to work and socialize. This year we were back in Park City Utah at the Canyons Resort. Here's a wrap-up of what I did during the eight days there.\nTeachingLast year I taught an iOS class to about 10 people. The focus was on the WordPress for iOS application and to get them to become contributors quickly. This year I taught an iOS class again but I shifted from the complex WPiOS app to teaching Swift and how to start an app from scratch. The class ended up having almost 30 students.\nThe first day we spent most of the day on Swift. The rest of that day and the entire second day focus on Storyboards and Autolayout. I created a demo application prior to the GM which demonstrated a bunch of core concepts including timers, local push notifications, Core Graphics transformations, app lifecycles, storyboards, autolayout, and debugging techniques.\nEveryone walked away with enough knowledge about Swift, Xcode, and iOS to get involved in a project or a more complicated tutorial. It was hard coming up with a curriculum that fit the vast range of experience the students had but I felt it worked out well.\nWorkshopsI organized two different workshops which were both held at night after dinners. The first workshop dealt with managing your attention at Automattic. The second was a forum/roundtable for all of the mobile developers at Automattic.\nI've mentioned before on this blog that I've been dealing with ADHD for some time - mainly since starting at Automattic. Over the past 2 1/2 years I've amassed knowledge and tools that can be applied to everyone working here, not just those with ADHD. We had a great discussion and discovered that we all have our own unique challenges with our work habits.\nThe mobile roundtable was also a success. When I first started at Automattic all of the mobile developers lived on one team. After about 6-8 months it was decided that we split the team up and embed mobile devs on product teams. This completely made sense and it has been a success since. The one thing that I miss from \"those days\" was a tight connection between all of us. We still try to hang out in the same Slack rooms but it is hard for new hires to get connected in the same way. The roundtable gave us a chance to talk about things that affect all of us and to make sure we all see faces with the names.\nOutside ActivitiesPart of the Grand Meetup is set aside for doing activities with your teammates. This year I organized a guided bicycle tour around Park City. I did this last year but with only seven of us - this year it ended up being around 60 people over four time slots.\nAs Automattic grows we have to accommodate more people in these planned activities. I knew going in that it was going to be a challenge to coordinate people signing up internally and getting those details to the shop to allocate bikes. I started communicating about a month prior with the shop and ended up working directly with the manager/owner. Each planned activity had to accommodate up to 80 people in order for it to be on the master schedule. 80 was going to be a stretch with the shop, but they said they could do it.\nOf those 60 people I think we ended up with 50 that attended. I made sure everyone got an Automattic \"Poetry in Motion\" fitness shirt if they desired one and worked with our activity planner to get boxed lunches arranged. It was a lot of wrangling but I actually had fun doing it. Nearly everyone who went said they had a great time and couldn't wait until next year.\nFlash TalkEvery Grand Meetup you're expected to give up to a four minute talk on any subject. One of my coworkers, Carolyn Sonnek, and I decided to do a group talk on tater tots. I think you can see a theme here.\nThe talk ended up covering the history of Tater Tots and then uncovered a grand conspiracy surrounding them. When the videos become available I'll make sure to post it here. :)\nIt ended up being super hilarious and a lot of fun to work with Carolyn on.\nThe PartyMy coworker Rebecca Collins and I planned most of the closing party the last night of the Grand Meetup. It started out with the idea that we'd shuffle a playlist on a set of speakers. Then a couple weeks out it ended up that the two of us were to get some talent in and make the night AWESOME. So, we made it awesome.\nThe evening started off with a number of our fellow Automatticians forming a band which was organized by Carly Stambaugh. The music was great and it was surreal seeing your coworkers showing their rockstar nature. It was EPIC.\nAfter the band finished their set the special guest came on, The Jane Doze. They rocked the Kokopelli Ballroom until midnight with dance music that made everyone get up and party. Between the lighting, decor, photo booth, glowy paraphernalia (sticks, rings, bracelets), and custom cocktails it was a sight to see and hear. It took a lot of effort from everyone involved in the planning but it was a clear success. As soon as Rebecca and I saw the looks on people's faces it was obvious we pulled it off. :)\nDecompressionComing back from a Grand Meetup means a depression sets in. Another Automattician, Maria Scarpello, posted on the realness of the post-GM blues calling it decompression. She alluded to it being very similar to the decompression that happens after attending events like Burning Man. It's nice having a name for the condition and knowing you're not the only one.\nThis year, for some reason, I didn't feel (or haven't yet felt) the decompression. I very much felt energized after coming back home to kick ass at what I do. I seriously miss my coworkers and know that most of them I won't see until next year. I'll get to see the people on my team sooner, of course, but being around the group as a whole is a ways away again.\nNext YearI really can't wait for next year's Grand Meetup. The effort I put into it this year was totally worth it.\nAnd PS if you want to be there for the next Grand Meetup, Automattic is hiring!\n","permalink":"https://aaron.blog/the-compression-of-400-teammates/","summary":"\u003cp\u003eI work for Automattic, a 100% distributed company. We rely upon meetups with our teammates to power the social aspect of our jobs and to work on short-duration high-velocity projects. Every year we also partake in a Grand Meetup where everyone gets together in one place to work and socialize. This year we were back in Park City Utah at the Canyons Resort. Here's a wrap-up of what I did during the eight days there.\u003c/p\u003e","title":"The Compression of 400 Teammates"},{"content":"I had a user write in to get some help clarifying a behavior with the Migraine Diary app I wrote on iOS 9.\nThe user explained that every morning she turns on her phone and Migraine Diary shows on the screen and when she opens it, it tells her Good Morning. The little icon sounded like Continuation or App Suggestions neither of which Migraine Diary supports. I asked for a screenshot and got this:\nSure enough, there's the app at the bottom of the screen. I've asked them for a screenshot of the Good Morning screen but still haven't gotten an answer back. I did some digging and found this thread on Reddit that shows what I think the user is seeing:\nHas anyone else seen this? Anybody know what the heck it is? Time to file a Radar?\n","permalink":"https://aaron.blog/ios-9-good-morning-afternoon-weirdness/","summary":"\u003cp\u003eI had a user write in to get some help clarifying a behavior with the Migraine Diary app I wrote on iOS 9.\u003c/p\u003e\u003cp\u003eThe user explained that every morning she turns on her phone and Migraine Diary shows on the screen and when she opens it, it tells her Good Morning. The little icon sounded like Continuation or App Suggestions neither of which Migraine Diary supports. I asked for a screenshot and got this:\u003c/p\u003e","title":"iOS 9 Good Morning \u0026 Afternoon Weirdness"},{"content":"It has been a great bicycling season this year! Last year I logged 641 miles and today I just broke 1,000 miles.I wasn't necessarily trying for the distance but rather keeping it part of my regular schedule to not make it feel like exercise or something I HAD to do. Exercise is a huge part of my system to help combat the problems of Attention Deficit Disorder (ADD/ADHD) and bicycling makes it fun too.I am tolerating the colder weather with some different clothes but I suspect I'll be hanging the bike up for the year soon. Somewhat sad but it gives me something to look forward to in spring! :)So I'm celebrating the number 1,000 only because I am proud I stuck to my goals and had fun doing it!\n","permalink":"https://aaron.blog/one-year-and-1000-miles/","summary":"\u003cp\u003eIt has been a great bicycling season this year! Last year I logged 641 miles and today I just broke 1,000 miles.I wasn't necessarily trying for the distance but rather keeping it part of my regular schedule to not make it feel like exercise or something I HAD to do. Exercise is a huge part of my system to help combat the problems of Attention Deficit Disorder (ADD/ADHD) and bicycling makes it fun too.I am tolerating the colder weather with some different clothes but I suspect I'll be hanging the bike up for the year soon. Somewhat sad but it gives me something to look forward to in spring! :)So I'm celebrating the number 1,000 only because I am proud I stuck to my goals and had fun doing it!\u003c/p\u003e","title":"One Year and 1000 Miles"},{"content":"I've noticed an issue I've been having with my iPhone 6 Plus a couple weeks ago. After the phone has been in my pocket for an indeterminate amount of time, I would randomly be unable to light the screen back up. The phone would come out of sleep, I could swipe to unlock (or use Voice Over) and I could see the backlight come on. The problem was the screen itself was just black - nothing to show. Rebooting sometimes fixed this. It was especially annoying when trying to board a plane and then being unable to bring up the boarding pass.\nI noticed this week that I could produce a similar behavior more regularly. I needed something I could reliably reproduce before bringing it into an Apple Store. Here it is:\n[wpvideo DQmniYFQ]\nHopefully they can repair or replace the device. I made the mistake of going with a regional carrier (US Cellular) and in the past I heard you had to arrange repair through the carrier. I'm hoping its just a screen replacement and they can do it in-store.\n","permalink":"https://aaron.blog/iphone-6-plus-screen-backlight-issue/","summary":"\u003cp\u003eI've noticed an issue I've been having with my iPhone 6 Plus a couple weeks ago. After the phone has been in my pocket for an indeterminate amount of time, I would randomly be unable to light the screen back up. The phone would come out of sleep, I could swipe to unlock (or use Voice Over) and I could see the backlight come on. The problem was the screen itself was just black - nothing to show. Rebooting sometimes fixed this. It was especially annoying when trying to board a plane and then being unable to bring up the boarding pass.\u003c/p\u003e","title":"iPhone 6 Plus Screen Backlight Issue"},{"content":"Today I was musing about company culture. Most tech job postings these days mention \"our culture\" and tend to interview for you to be a culture fit. Sometimes I really wonder if they're confusing culture vs. culture:\nculture |ˈkəlCHər|\nThe arts and other manifestations of human intellectual achievement regarded collectively: 20th century popular culture.The cultivation of bacteria, tissue cells, etc., in an artificial medium containing nutrients.Source: Oxford Dictionaries\nForcing a culture on new employees tends to lend itself to definition #2. Finding new employees that fit into what is perceived as the #1 definition actually means your culture is artificial. Exposing your human intellectual manifestations to your candidates and letting them determine if they want to contribute to that culture seems to be the right move.\nForcing a culture to form in your company feels more of an experiment than how human nature behaves. Find people you want to work with based upon how they work and not how you want them to work. You might just find their distinctiveness is what your company needs to move up to the next level of success.\n","permalink":"https://aaron.blog/culture-vs-culture/","summary":"\u003cp\u003eToday I was musing about company culture. Most tech job postings these days mention \"our culture\" and tend to interview for you to be a culture fit. Sometimes I really wonder if they're confusing culture vs. culture:\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eculture\u003c/strong\u003e |ˈkəlCHər|\u003c/p\u003e\u003col\u003e\u003cli\u003e\u003cem\u003eThe arts and other manifestations of human intellectual achievement regarded collectively: 20th century popular culture.\u003c/em\u003e\u003c/li\u003e\u003cli\u003e\u003cem\u003eThe cultivation of bacteria, tissue cells, etc., in an artificial medium containing nutrients.\u003c/em\u003e\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eSource: \u003ca href=\"http://www.oxforddictionaries.com/us/definition/american_english/culture\" rel=\"noopener\"\u003eOxford Dictionaries\u003c/a\u003e\u003c/p\u003e\u003cp\u003eForcing a culture on new employees tends to lend itself to definition #2. Finding new employees that fit into what is perceived as the #1 definition actually means your culture is artificial. Exposing your human intellectual manifestations to your candidates and letting them determine if they want to contribute to that culture seems to be the right move.\u003c/p\u003e","title":"Culture vs. Culture"},{"content":"Working for a 100% distributed company presents a number of benefits as well as challenges. One of those challenges is the fear of missing out or FoMO. It is a real thing.\nThe Fear of Missing Out is the emotional stress we can experience when we feel like things that should be important to us are occurring without our observance or involvement. Social media plays an important role in this as we experience other people's involvement in activities that portray a perceived positive impact on their well-being. Even though we know that the world isn't as rosy as is portrayed through these sites, we feel a tinge of jealous a number of times.\nBoy that looks fun.I can't believe I didn't go to that concert.I wish I had x to do y with.Working remote presents its own version of FoMO. The larger our company gets, the more communication channels exist. In Slack we have over 450 channels and a hoard of private blogs to communicate with. You simply cannot subscribe to every blog and channel without overloading your brain. The cost of not subscribing means you feel you're missing out on something. How do you combat this?\nWe have a general rule that anything said in Slack is ephemeral. It's searchable, yes, but unless you were pinged either directly or in a room, we can't expect people to \"catch up\" on backchat when returning. More permanent things have to be documented on an internal blog if they are to be treated as such. People who should be made aware of the items that don't belong to that team should be pinged in the post. The assumption is you should be following your team's blog pretty closely.\nThis gives us the benefit to start unsubscribing to things. At some point one of these checks causes the balance to be made and information flows between barriers. You have to trust this happens. Once in a while you get surprised by a piece of information but you just roll with the punches.\nThe FoMO also happens when you're in person with your coworkers. We have an annual get-together we call the Grand Meetup. We're all at the same place at the same time for over a week. There is SO MUCH going on this week that you will miss things. You should miss things. There are so many people to meet, activities to participate in, and projects to work on that we can forget to sleep.\nThe fear is real. It will grip you. Remember to breathe, take a step back and trust that its okay if you don't experience everything in life. Just don't forget to look out your own window once in a while. :)\nFeatured image credit - https://www.flickr.com/photos/deathtogutenberg/15065313478/\n","permalink":"https://aaron.blog/the-fear-of-missing-out/","summary":"\u003cp\u003eWorking for a 100% distributed company presents a number of benefits as well as challenges. One of those challenges is the fear of missing out or FoMO. \u003ca href=\"https://en.wikipedia.org/wiki/Fear_of_missing_out\"\u003eIt is a real thing\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eThe Fear of Missing Out is the emotional stress we can experience when we feel like things that should be important to us are occurring without our observance or involvement. Social media plays an important role in this as we experience other people's involvement in activities that portray a perceived positive impact on their well-being. Even though we know that the world isn't as rosy as is portrayed through these sites, we feel a tinge of jealous a number of times.\u003c/p\u003e","title":"The Fear of Missing Out"},{"content":"I made the realization today that my house is merely a container for dog beds. At least 11 designated areas (designated by the dogs) are pictured here. I think there are more beds than pieces of furniture in the house.\n","permalink":"https://aaron.blog/my-house-is-a-dog-bed-container/","summary":"\u003cp\u003eI made the realization today that my house is merely a container for dog beds. At least 11 designated areas (designated by the dogs) are pictured here. I think there are more beds than pieces of furniture in the house.\u003c/p\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6313-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6313-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6313-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6313-scaled.jpg 1600w, /content/images/wp-content/uploads/2015/07/img_6313-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6314.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6314.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6314.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6314.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6314.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6315.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6315.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6315.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6315.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6315.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6316.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6316.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6316.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6316.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6316.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6317.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6317.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6317.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6317.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6317.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6318.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6318.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6318.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6318.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6318.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6319.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6319.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6319.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6319.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6319.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6320.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6320.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6320.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6320.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6320.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6321.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6321.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6321.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6321.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6321.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6322.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6322.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6322.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6322.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6322.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/07/img_6323.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2015/07/img_6323.jpg 600w, /content/images/size/w1000/wp-content/uploads/2015/07/img_6323.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2015/07/img_6323.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2015/07/img_6323.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e","title":"My House is a Dog Bed Container"},{"content":"I love photography. My love for taking photos is an ebb and flow. I'm not sure what exactly affects the arbitrary direction of those currents other than the nature of my brain. I still take a fair number of photos but sadly they're only with my iPhone 6 Plus as of late.\nI have a fair amount of camera gear, centered around my Canon 40D from a few years back. I was seriously proud when I bought that digital SLR. I also have a number of pieces of studio lighting equipment and related paraphernalia. I enjoy the whole concept of being a full time photographer - but for some reason I just peter out and lose interest. I've been pondering why lately and this is sort of my mental dump on the subject.\nI miss my DSLR because it forces me to take the extra moment to compose the shot and find the right way to convey the emotion and special effect on my being at the time. I'm not sure I miss my film-based SLR as much but this effect is definitely amplified when it's not easy to see the results immediately on a screen.\nCarrying around the iPhone/3G/4/5/5S/6 Plus over the years has made photography more accessible to me. (Well, to the world actually) I find carrying around the gear is not super easy but it is definitely the mark of a photographer. I've tried smaller bags and those help but then I discover soon I left a particular lens filter in the larger bag at home and I get all crabby. Having the iPhone in your pocket means you can take a picture whenever the need arises. The other huge improvement a smartphone gives you is you can put it away to enjoy the moment easier.\nHow many times have you been to a serenely beautiful place and can't help yourself but take a large number of photos and videos? What we're trying to do as photographers is capture that moment so well so we don't forget it and then we can share it. With large memory capacities, high frame rates, auto-bracketing, effect filters, etc we start to reduce the quality and forethought into a photo and replace it with quantity. Being worried about getting the right shot from every angle and a slow motion video of all the movement can ruin the moment. Don't forget to just sit ... and watch ... and compose the photos in your mind as well.\n","permalink":"https://aaron.blog/missing-my-dslr-camera/","summary":"\u003cp\u003eI love photography. My love for taking photos is an ebb and flow. I'm not sure what exactly affects the arbitrary direction of those currents other than the nature of my brain. I still take a fair number of photos but sadly they're only with my iPhone 6 Plus as of late.\u003c/p\u003e\u003cp\u003eI have a fair amount of camera gear, centered around my Canon 40D from a few years back. I was seriously proud when I bought that digital SLR. I also have a number of pieces of studio lighting equipment and related paraphernalia. I enjoy the whole concept of being a full time photographer - but for some reason I just peter out and lose interest. I've been pondering why lately and this is sort of my mental dump on the subject.\u003c/p\u003e","title":"Missing my DSLR Camera"},{"content":"In iOS 9 Apple has introduced a number of new shiny things for UIKit Dynamics. One of them is UIFieldBehavior which describes magnetic, electrical and spring fields of influence. Fields are hard to debug (even in real life!) so Apple decided to provide a debug mode on UIDynamicAnimator. The trick is the debug mode isn't published in the headers. Why? Who knows. They mentioned it quite plainly at WWDC 2015 and said you have to turn it on in the LLDB debugger.\nI found an easier and more straightforward way. Just use key-value coding! UIDynamicAnimator still inherits from NSObject so the KVC helper methods are still there.\nhttps://gist.github.com/astralbodies/f346b07e7788f2c975a4\nEasy!\n","permalink":"https://aaron.blog/uikit-dynamics-turning-on-debug-mode/","summary":"\u003cp\u003eIn iOS 9 Apple has introduced a number of new shiny things for UIKit Dynamics. One of them is UIFieldBehavior which describes magnetic, electrical and spring fields of influence. Fields are hard to debug (even in real life!) so Apple decided to provide a debug mode on UIDynamicAnimator. The trick is the debug mode isn't published in the headers. Why? Who knows. They mentioned it quite plainly at WWDC 2015 and said you have to turn it on in the LLDB debugger.\u003c/p\u003e","title":"UIKit Dynamics - Turning on Debug Mode"},{"content":"Most of my journey the past couple of years with coping with attention problems is increasing my self-awareness. I am my own obstacle and I must hack my own consciousness to work the way I need it to.\nIt's easy to slip into old habits and totally forget the tools you've put in place. All it takes is one of those well-known \"ooh shiny\" moments and you're off track for an hour reading about nuclear testing instead of solving the problem for work.\nOne of the tools I use is keeping a log of things I've accomplished in the day/week. The log gives me a complete picture of what I've been able to focus on and lets me easily reflect on the past week. I tend to find the holes this way - places I've let tasks slip through. This seems to work much like the effect looking at photographs lets you recall and retain memories. The problem I have is I don't remember to write things in the log all the time. Then I forget about the log.\nI've discovered one of the biggest lies I keep telling myself even with all of these tools and practices. What is that lie?\nI'll get to it [the task] in a few minutes.Yeah, it never happens. Ever. I always forget or something more important on the signal to noise ratio scale eclipses it. My goal is to stop letting this little lie derail me. If the task takes a few moments to complete, DO IT NOW.\n","permalink":"https://aaron.blog/biggest-lie-to-your-adhd-self/","summary":"\u003cp\u003eMost of my journey the past couple of years with coping with attention problems is increasing my self-awareness. I am my own obstacle and I must hack my own consciousness to work the way I need it to.\u003c/p\u003e\u003cp\u003eIt's easy to slip into old habits and totally forget the tools you've put in place. All it takes is one of those well-known \"ooh shiny\" moments and you're off track for an hour reading about nuclear testing instead of solving the problem for work.\u003c/p\u003e","title":"Biggest Lie To Your ADHD Self"},{"content":"Using Too Much DataBeing a remote worker, I tend to work at home a lot. I also like to roam around to coffee shops and coworking spots on occasion in addition to traveling to meet up with my coworkers. This means I tend to tether quite often and use mobile data.\nOne of the biggest annoyances I have with Mac OS X is that in 2015 it isn't aware of tethered vs. (relatively) unmetered connections. I wish there was a mode in Mac OS X that would intelligently back off autoupdates, file sync, and other expensive data operations while on specific connections. This includes when you're tethered to your iOS device using the iCloud automatic tethering option and WiFi access points you've specified as being metered connections.\nI've never gone over my data allotment but I've also probably been way too careful and not been as productive as I could have been. I just want this to be somewhat automatic.\nLimit Your DataI was delighted to discover TripMode recently. TripMode is the missing piece of the operating system to block connections when you're on a metered data connection. It sits in your menu bar up top and remains inactive until you turn it on or when you rejoin a WiFi network previously marked as metered.\nYou can turn off individual applications and known services (like iCloud). Each application shows the current usage for the session/day/month depending on what you've selected at the bottom of the popover. So far it's worked well in my limited testing. I hope to report back positive results after the one week trial is up.\nTripMode is a kernel extension and therefore isn't available from the Mac App Store. They promise to not collect specifics about the connections and apps you are making but rather gather general stats about volumes and usage.\nStill Check Your DeviceAfter all is said and done, TripMode isn't the end-all indicator of your current data usage. Your cellular carrier will be able to provide you the most accurate measurement of the data used in your current billing period. iOS does provide usage statistics in Settings \u0026gt; Cellular with tethering being one further deeper in System Services under Use Cellular Data For:.\nPlease be aware that even iOS can be wrong about the total amount of data transferred. Your cellular carrier's method on determining bytes transferred may differ from how your phone sees it. Its also possible from tower to tower the algorithm may differ. Ultimately the billing system from your carrier is responsible for the total usage. Usage while roaming or on partner networks can also be delayed for up to a month. Most carrier don't apply that delayed usage to the month it actually occurred in but rather the month it hits their billing system.\n","permalink":"https://aaron.blog/limiting-data-while-tethering-on-a-mac/","summary":"\u003ch1 id=\"using-too-much-data\"\u003eUsing Too Much Data\u003c/h1\u003e\u003cp\u003eBeing a remote worker, I tend to work at home a lot. I also like to roam around to coffee shops and coworking spots on occasion in addition to traveling to meet up with my coworkers. This means I tend to tether quite often and use mobile data.\u003c/p\u003e\u003cp\u003eOne of the biggest annoyances I have with Mac OS X is that in 2015 it isn't aware of tethered vs. (relatively) unmetered connections. I wish there was a mode in Mac OS X that would intelligently back off autoupdates, file sync, and other expensive data operations while on specific connections. This includes when you're tethered to your iOS device using the iCloud automatic tethering option and WiFi access points you've specified as being metered connections.\u003c/p\u003e","title":"Limiting Data While Tethering on a Mac"},{"content":"Just PublishedThe New York Times just published an article on their Well Blog entitled \"The Downside of Treadmill Desks\". It's an interesting read.\nThe article mentions a study performed by two groups at the Brigham Young University in Utah and published to the PLoS One Journal in April. After studying 75 individuals it was determined that while there is a significant positive health impact on using a treadmill desk, productivity and cognition decreased.\nMy ThoughtsAs I've mentioned before I've been using a treadmill desk since February of this year. Personally I've seen a huge increase in concentration and cognition when using the treadmill.\nI average about three hours of use today, sometimes up to five. I tend to use the treadmill in the morning the longest, then stand midday and revisit the treadmill at the end of the work day. I've found in the morning the treadmill boosts my concentration more than a cup of coffee would. I almost always forget I'm even walking on the treadmill.\nMy experiences may differ than the study because I have ADHD. The treadmill, it seems, busies the part of my brain that likes to derail my concentration. My original goal for using the treadmill desk was not for the exercise/calorie burn but rather the assist with concentration.\nObservations \u0026amp; RealitiesI think the reality of treadmill desks at a normal office job present the following limitations:\nThey're LoudYou're going to be walking on a machine. The machine can be loud and your hooves smashing down on it are going to be loud. You're going to want to reduce the noise as much as possible (if you're considerate) which means slower speeds and potentially an unnatural gate.\nI've found speeds below 2mph aren't effective for my needs. I need to be at 2.5mph or greater for me to see a real attention benefit - and then anything over 3.2mph usually causes too much sweat.\nHumans PerspireYou're going to sweat. I don't care if you use a fan (which adds to the noise mentioned above) you're still going to sweat even at 1mph. Those dress pants and undershirt are going to be really pretty after walking six miles.\nYou can try to keep cooler by using a fan, changing clothes, taking a shower. All of these things modify how you're going to work and walk. Worrying about not sweating too much will ultimately reduce your speed which will keep you from hitting the right speed (if your speed is anything like mine).\nIf your office isn't equipped with a shower or a place to change that's convenient, your coworkers may not want an afternoon meeting with you.\nYou're VulnerableWhen you're on a treadmill desk, you're vulnerable. How so? You're walking, sweating, breathing hard and wearing workout clothes in front of your coworkers. I'm sure the whole office isn't on treadmills (huzzah if they are!). This will unavoidably single you out. Until you really get comfortable with the treadmill and the way you're integrated into your workplace you are going to feel like a weirdo.\nWeirdos can't concentrate well. You need to realize you're not a weirdo.\nIt Takes PracticeThe study specifically mentions typing ability deteriorates when using the treadmill desk. This is an obvious side effect of walking while typing. But like with most things in life, it takes practice.\nI was a hot ass mess trying to type and walk the first couple of weeks using the treadmill desk. I couldn't find the right height for the monitor, keyboard, speed to walk at. All of those things will eventually gel together and you'll find the right combination. I'm typing at my normal rate of words per minute and my accuracy is just fine.\nBelieve What You WantThe huge flaw in this article and the abstract of the journal article is this - it doesn't indicate how much time the participants were given. If you don't give someone a chance to adapt to the new situation it's obvious they're not going to be productive!\nYou're going to have to find out if a treadmill desk works for you. Don't believe everything you read and don't assume the variables apply to you. Don't assume I'm right either. A lot of the reasons the treadmill desk works for me has to do with working remote at home and my brain's specific issues with ADHD.\nAll I can suggest is give it a whirl!\n","permalink":"https://aaron.blog/the-downside-to-treadmill-desks/","summary":"\u003ch1 id=\"just-published\"\u003eJust Published\u003c/h1\u003e\u003cp\u003eThe New York Times just \u003ca href=\"http://well.blogs.nytimes.com/2015/06/10/the-downside-of-treadmill-desks\" rel=\"noopener\"\u003epublished an article on their Well Blog entitled \"The Downside of Treadmill Desks\"\u003c/a\u003e. It's an interesting read.\u003c/p\u003e\u003cp\u003eThe article mentions a study performed by two groups at the Brigham Young University in Utah and published to the PLoS One Journal in April. After studying 75 individuals it was determined that while there is a significant positive health impact on using a treadmill desk, productivity and cognition decreased.\u003c/p\u003e","title":"The Downside to Treadmill Desks"},{"content":"I noticed a couple days ago that the Digital Crown on my Apple Watch wasn't turning quite as easily as it had when I got it. Of course I immediately thought it was a defect since it visually looked clean. Turns out it was needing a bit of maintenance.\nI use a treadmill desk and even with the 3mph speed I sweat a bit. The Watch was designed to handle fitness scenarios but apparently it can get gunked up without some maintenance. Simply wiping down the exterior is not enough.\nApple has realized this too. They even published a support document specifically about the Digital Crown and their recommended process to remedy it:\nhttps://support.apple.com/en-us/ht204639\nIt was a little unnerving putting the Watch under running water, but it worked. Now you know.\n","permalink":"https://aaron.blog/is-your-apple-watch-digital-crown-sticking/","summary":"\u003cp\u003eI noticed a couple days ago that the Digital Crown on my Apple Watch wasn't turning quite as easily as it had when I got it. Of course I immediately thought it was a defect since it visually looked clean. Turns out it was needing a bit of maintenance.\u003c/p\u003e\u003cp\u003eI use a treadmill desk and even with the 3mph speed I sweat a bit. The Watch was designed to handle fitness scenarios but apparently it can get gunked up without some maintenance. Simply wiping down the exterior is not enough.\u003c/p\u003e","title":"Is your Apple Watch Digital Crown sticking?"},{"content":"I committed an act of such shame that I have a hard time even talking about.\nOkay it wasn't that horrible and I knew this was going to happen eventually - just not on day two. I scratched the display of my Apple Watch Sport edition.\nI thought I was babying the thing. I was taking it off when I knew it could get damaged but somehow I managed to still scratch it. I called Apple and talked to a super nice tech on the AppleCare team. I e-mailed him photos and he forwarded them onto engineering. I got a call back and was simply told, it's cosmetic damage.\nI know it's cosmetic. But really, should a $400+ watch scratch this easily? I have watches costing in the $10-$30 range with scratches much less visible than this and some with no damage. I'd expect the glass to withstand at least a brushing against a non-diamond-encrusted surface.\nI guess Apple has other expectations on the durability of their glass.\n","permalink":"https://aaron.blog/apple-watch-sport-ion-x-glass-easily-scratched/","summary":"\u003cp\u003eI committed an act of such shame that I have a hard time even talking about.\u003c/p\u003e\u003cp\u003eOkay it wasn't that horrible and I knew this was going to happen eventually - just not on day two. I scratched the display of my Apple Watch Sport edition.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2015/05/img_5400.jpg\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/05/img_5400.jpg?w=225\" class=\"kg-image\" alt=\"Apple Watch Sport in Green with a scratch in the display\" loading=\"lazy\" width=\"225\" height=\"300\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eI thought I was babying the thing. I was taking it off when I knew it could get damaged but somehow I managed to still scratch it. I called Apple and talked to a super nice tech on the AppleCare team. I e-mailed him photos and he forwarded them onto engineering. I got a call back and was simply told, it's cosmetic damage.\u003c/p\u003e","title":"Apple Watch Sport Ion-X Glass Easily Scratched"},{"content":"I am implementing a new feature for WordPress for iOS in the site stats and needed to demo the implementation for my coworkers. By accident I recorded my computer audio and gave the demo accompanying music. I liked this so when I recorded the next change I did it again.\n[wpvideo ri5olTYQ]\nI think I'll continue with this :).\n","permalink":"https://aaron.blog/demoing-a-fix-or-feature-is-better-with-music/","summary":"\u003cp\u003eI am implementing a new feature for WordPress for iOS in the site stats and needed to demo the implementation for my coworkers. By accident I recorded my computer audio and gave the demo accompanying music. I liked this so when I recorded the next change I did it again.\u003c/p\u003e\u003cp\u003e[wpvideo ri5olTYQ]\u003c/p\u003e\u003cp\u003eI think I'll continue with this :).\u003c/p\u003e","title":"Demoing a fix or feature is better with music"},{"content":"A coworker of mine posted this video today about what that extra pair of holes is for on your running shoes:\nThat reminded me of this site. My mind was completely blown when I saw just how many ways you can tie your shoes.\nIan's Shoelace Site\n","permalink":"https://aaron.blog/how-do-you-tie-your-shoes/","summary":"\u003cp\u003eA coworker of mine posted this video today about what that extra pair of holes is for on your running shoes:\u003c/p\u003e\u003cfigure class=\"kg-card kg-embed-card\"\u003e\u003ciframe loading=\"lazy\" title=\"\" width=\"160\" height=\"9\" src=\"https://www.youtube.com/embed/IijQyX_YCKA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\"\u003e\u003c/iframe\u003e\u003c/figure\u003e\u003cp\u003eThat reminded me of this site. My mind was completely blown when I saw just how many ways you can tie your shoes.\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://www.fieggen.com/shoelace/lacingmethods.htm\" rel=\"noopener\"\u003eIan's Shoelace Site\u003c/a\u003e\u003c/p\u003e","title":"How do you tie your shoes?"},{"content":"I've mentioned before on this site and other places that I have Attention Deficit Hyperactivity Disorder (ADHD) and that I've been doing a lot to manage it. I didn't really connect the dots until I started working remote for Automattic almost two years ago. It's a continual process for me and I'm continuing to make adjustments over time to combat it. I have good days and I have bad days.\nMedicationAfter I got diagnosed with ADHD by an accredited counselor and my primary physician, I started on medication to help. It was my goal at that point to not be on the meds long term but rather use them to show me where I could be. It's hard to see the destination without an idea of where you're going or even why you're going.\nThe medications worked pretty quickly. Within the first week I started seeing things in life I always ignored. I went to a museum in Houston with family and discovered myself reading the signs around exhibits and actually taking in what I was seeing. It was amazing. Within a couple months I realized I wasn't eating food regularly any more (it's a common side effect) and my personality was changing too. We also increased the medication a few levels to figure out what was the right level to be at. I ended up taking myself off of the medication a bit earlier than I had wanted to originally but I could see the longer I was on it the harder it would be to come off. I wasn't addicted per se but the clarity I got from it was hard to give up. Really hard.\nPost-MedicationSince I've been off the medication I've been using the tools my counselor and I came up with to help with concentration and focus. Primarily its a mix of the following:\nExerciseNote takingMusicMeditationMindfulnessExerciseBeing active is a huge part of the success with dealing with ADHD. Working at home gives me a ton of flexibility to include exercise in my daily routine. I'll break up my day around noon with a bike ride, walk or step aerobics in my basement. Since February of this year I've been using a treadmill under my standing desk with some good results. I try to walk in the morning and afternoon and then stand in between. I find it gives me some different kind of focus than when just purely standing. I haven't fully decided if I'm more successful with the treadmill desk but I am benefitting from the activity being more regular health-wise.\nNote takingTaking notes is a huge deal with ADHD. You have to leave yourself a reminder of where you left off on a task or else you will forget. Short notes are sometimes not even sufficient - a few words is sometimes not enough to remind you. It's crazy how often I can forget to do something even hours later without a note. I haven't found the perfect single place to leave notes so it's a combination of sticky notes on my monitor, handwritten notes next to my keyboard and electronic notes in Evernote. I should boil it down to one place but I tire easily of a single solution and then stop using it.\nMusicI'm not quite sure how I'd survive without music. I've been listening to electronic/trance/techno music since I was 12 years old when I discovered it allowed me to concentrate on tasks. Most electronic music (if there isn't a lot of vocals) will busy the part of my brain that is trying to derail me. Working in a regular office environment you'd always find me with my headphones on. Working at home I'm using open speakers and I find that I don't get the same effect. I actually don't listen to music consistently throughout the day but when I find myself straining to finish a task, I find the right music to assist.\nMeditation \u0026amp; MindfulnessI should practice formal meditation more. Years ago I would set aside time to meditate and I enjoyed it. In the two years I've worked remote I've only done a full meditation exercise a handful of times. I tend to use short moments of meditation thought to help center myself when I feel like I'm going too many ways. Being mindful of yourself is a big help. Be aware of when you're started to swerve off course and recognize the signs. Being on the treadmill desk is a little like meditation ... it's amazing how much around me sort of fades out when I'm walking and working.\nThe NoiseWhat it comes down to is you have to try to reduce or replace the noise in your head with something else. In radio engineering Signal to Noise Ratio is the amount of desired signal vs the background noise. You want more signal than noise otherwise your transmission isn't effective. Signal is analogous to the task or idea you're trying to focus on and the noise is everything else going on in your brain that's trying to derail it. You have to find the ways that work for you to reduce the noise or improve the signal.\nMuch like radio engineers there are things you can do to improve signal and reduce noise - some of which I've mentioned. Everyone is different. For some the only thing that works is the medication - and it works well. Don't be ashamed if you are on medication to help. There is such a negative stigma with taking medication for mental conditions which to me is crazy. Find what works for you! Don't get discouraged if something doesn't work down the road or if you fail with an experiment.\n","permalink":"https://aaron.blog/my-signal-to-noise-ratio/","summary":"\u003cp\u003eI've mentioned before on this site and other places that I have Attention Deficit Hyperactivity Disorder (ADHD) and that I've been doing a lot to manage it. I didn't really connect the dots until I started working remote for Automattic almost two years ago. It's a continual process for me and I'm continuing to make adjustments over time to combat it. I have good days and I have bad days.\u003c/p\u003e","title":"My Signal-to-Noise Ratio"},{"content":"My credit card got charged today for my Apple Watch which wasn't supposed to ship until June. I was so excited that I tweeted the shipping notification to sarcastically note the availability in June still.\nCopying that text into a tweet, I actually got:\nPreparing for Shipment TODO: Pull info bubble content div up to the order list level (only need 1 per page) and refactor info bubbles into single conditional \u0026amp; span based on group status type OR alternatively, refactor to single info bubble per delivery group based on status shipped shipped Available to ship: June\nSo it appears that even Apple developers leave TODOs in production code. I don't feel so bad now that I do it. :)\n","permalink":"https://aaron.blog/even-apple-leaves-todos-in-production-code/","summary":"\u003cp\u003eMy credit card got charged today for my Apple Watch which wasn't supposed to ship until June. I was so excited that I tweeted the shipping notification to sarcastically note the availability in June still.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/04/2015-04-22_11-02-33.png\" class=\"kg-image\" alt=\"Screen capture of the Preparing Shipment notification with a note of the watch being available in June\" loading=\"lazy\" width=\"660\" height=\"183\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/04/2015-04-22_11-02-33.png 600w, /content/images/wp-content/uploads/2015/04/2015-04-22_11-02-33.png 660w\"\u003e\u003c/figure\u003e\u003cp\u003eCopying that text into a tweet, I actually got:\u003c/p\u003e\u003cp\u003ePreparing for Shipment TODO: Pull info bubble content div up to the order list level (only need 1 per page) and refactor info bubbles into single conditional \u0026amp; span based on group status type OR alternatively, refactor to single info bubble per delivery group based on status shipped shipped Available to ship: June\u003c/p\u003e","title":"Even Apple Leaves TODOs in Production Code"},{"content":"Pro Tip: If your product involves transmission and reception of electromagnetic waves, make sure you have a kick ass signal wherever your big ass banner advertisements are.\nI also tweeted about it and the US Cellular support reps, while friendly, just don't get it.\nhttps://twitter.com/USCellularCares/status/585119706962665472\n","permalink":"https://aaron.blog/the-message-just-isnt-getting-through/","summary":"\u003cp\u003ePro Tip: If your product involves transmission and reception of electromagnetic waves, make sure you have a kick ass signal wherever your big ass banner advertisements are.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2015/04/img_4914.png\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/04/img_4914.png?w=576\" class=\"kg-image\" alt=\"US Cellular banner hanging inside of a mall with overlaid iOS interface showing a poor signal and US Cellular carrier name\" loading=\"lazy\" width=\"576\" height=\"1024\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eI also tweeted about it and the US Cellular support reps, while friendly, just don't get it.\u003c/p\u003e\u003cp\u003ehttps://twitter.com/USCellularCares/status/585119706962665472\u003c/p\u003e","title":"The Message Just Isn't Getting Through"},{"content":"In my post on using QuickTime to record an iOS device I mentioned the carrier and time are fixed at simple dots and 9:41am. Why 9:41am? Well I knew there was a reason behind it and did a quick search to review the reason.\nJanuary 9th 2007 .. iPhone announcement day .. 9:41am:\nSource: http://www.engadget.com/2007/01/09/live-from-macworld-2007-steve-jobs-keynote/\n","permalink":"https://aaron.blog/apple-at-941am/","summary":"\u003cp\u003eIn my post on \u003ca href=\"http://astralbodi.es/2015/04/02/recording-your-ios-8-device-with-quicktime-player/\"\u003eusing QuickTime to record an iOS device\u003c/a\u003e I mentioned the carrier and time are fixed at simple dots and 9:41am. Why 9:41am? Well I knew there was a reason behind it and did a quick search to review the reason.\u003c/p\u003e\u003cp\u003eJanuary 9th 2007 .. iPhone announcement day .. 9:41am:\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2015/04/2015-04-03_07-03-08.png\" class=\"kg-image\" alt=\"9:41am - \u0026quot;This is a day I've been looking forward to for two and a half years.\u0026quot; \u0026quot;Every once in a while a revolutionary product comes along that changes everything. One is very fortunate if you get to work on just one of these in your career. Apple has been very fortunate that it's been able to introduce a few of these into the world. In 1984 we introduced the Macintosh. It didn't just change Apple, it changed the whole industry. In 2001 we introduced the first iPod, and it didn't just change the way we all listened to music, it changed the entire music industry.\u0026quot;\" loading=\"lazy\" width=\"639\" height=\"521\" srcset=\"/content/images/size/w600/wp-content/uploads/2015/04/2015-04-03_07-03-08.png 600w, /content/images/wp-content/uploads/2015/04/2015-04-03_07-03-08.png 639w\"\u003e\u003c/figure\u003e\u003cp\u003eSource: \u003ca href=\"http://www.engadget.com/2007/01/09/live-from-macworld-2007-steve-jobs-keynote/\" rel=\"noopener\"\u003ehttp://www.engadget.com/2007/01/09/live-from-macworld-2007-steve-jobs-keynote/\u003c/a\u003e\u003c/p\u003e","title":"Apple at 9:41am"},{"content":"I got this from Cards Against Humanity today - they accidentally messed up my order and had to apologize in their own style.\nDear valued Cards Against Humanity customer,\nWe fucked up.\nYour order is on its way, but we had a warehousing issue. If you ordered a 2014 Holiday Pack, you'll receive a Science Pack. If you ordered a Science Pack, you'll receive a 2014 Holiday Pack. Oops!\nWe're really sorry about this, but we're going to make it right and send you what you actually ordered within the next week. Feel free to keep the extra pack, or gift it to a crappy friend. We understand if you've completely lost all faith in us.\nSorry again,\n- Jenn and the Cards Against Humanity team\n\u0026lt;3\n","permalink":"https://aaron.blog/the-best-apology-letter-ever/","summary":"\u003cp\u003eI got this from Cards Against Humanity today - they accidentally messed up my order and had to apologize in their own style.\u003c/p\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"padding-left:30px;\"\u003eDear valued Cards Against Humanity customer,\u003c/p\u003e\u003c!--kg-card-end: html--\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"padding-left:30px;\"\u003eWe fucked up.\u003c/p\u003e\u003c!--kg-card-end: html--\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"padding-left:30px;\"\u003eYour order is on its way, but we had a warehousing issue. If you ordered a 2014 Holiday Pack, you'll receive a Science Pack. If you ordered a Science Pack, you'll receive a 2014 Holiday Pack. Oops!\u003c/p\u003e","title":"The Best Apology Letter Ever"},{"content":"The TaskYou need to record your iPhone or iPad's screen to show someone a bug or demo a feature to your customers. In the past the only method available was to use a program like Reflector to emulate an AirPlay/Apple TV and then record on your machine. This works fairly decently although the quality over WiFi isn't very good leaving you with a less-than-crisp recording. Reflector also isn't free which makes it difficult for users in the wild to record bugs.\nEnter iOS 8 \u0026amp; YosemiteApple introduced the ability to record the screens of iOS 8 devices with QuickTime Player in Mac OS X Yosemite. You may have already been familiar with the ability to do a screen recording with QuickTime but now those screens includes any of the iOS 8 devices you have connected with a cable. The implications of this new feature include:\nHigh quality video recording - the video is going over the wire instead of WiFiCapture audio from the device or your computerEasy access to QuickTime's built-in exporting toolsNo new software to install - Yosemite and iOS 8 are the only requirementThe StepsConnect your iOS 8 device to your Mac OS X Yosemite (10.10) computer with the USB to lightning or dock connector cable.Launch QuickTime Player (inside of /Applications in Finder).Click Done on the file browser window that appears by default when QuickTime launches.Click File \u0026gt; New Movie Recording. A window will appear typically picking your built-in FaceTime camera by default. Smile.Click the little arrow next to the red recording button.Under Camera select the iOS device you wish to record.Your iOS device's screen should appear on your Mac.Optionally select your device under Microphone as well if you want to record the audio from the device rather than your computer's microphone.Click the red record button when you want to record, clicking it again when you're done.Export the video under File \u0026gt; Export picking an appropriate resolution.Notice that Apple took the time to replace your device's status bar with one being carrier-free and fixed at 9:41am.\nNice touch.\nLimitationsThere are only a couple limitations that I've found so far. Finger tips are not shown in the video, so it can be hard to demonstrate things. My suggestion is to talk through the issue or provide a list of things you tapped if its not obvious. Secondly if you're trying to demonstrate something that involves going full screen (like watching a video on the phone) then the recording will not capture the full screen presentation (it'll go black). Lastly there is a little bit of lag when you're recording so make sure to watch the actual device screen and not your computer. If you record audio from your microphone, QuickTime does a good job syncing it up afterwards. This process also works a bit better on newer devices.\nNext StepsSharing the video you've recorded can be a challenge since these videos tend to be of a very very large size in a matter of seconds. Exporting in 480p can definitely help. If you're providing a demonstration of a bug then you may wish to clip the beginning and end of the movie to only show the actual reproduction of the bug. Follow Apple's instructions on how to clip a video here.\nReflector is still a great program and very useful. Simple things like being able to add a fake iPhone or iPad frame around the video makes a big difference for demo purposes. I will still continue to use Reflector especially since it's still the only way to record iOS 7 devices.\n","permalink":"https://aaron.blog/recording-your-ios-8-device-with-quicktime-player/","summary":"\u003ch2 id=\"the-task\"\u003eThe Task\u003c/h2\u003e\u003cp\u003eYou need to record your iPhone or iPad's screen to show someone a bug or demo a feature to your customers. In the past the only method available was to use a program like \u003ca href=\"http://www.airsquirrels.com/reflector/\" rel=\"noopener\"\u003eReflector\u003c/a\u003e to emulate an AirPlay/Apple TV and then record on your machine. This works fairly decently although the quality over WiFi isn't very good leaving you with a less-than-crisp recording. Reflector also isn't free which makes it difficult for users in the wild to record bugs.\u003c/p\u003e","title":"Recording Your iOS Device with QuickTime Player"},{"content":"It's In Our NatureThe human body seems to have a natural instinct to burn itself out. We find something we like and want to continue receiving those brain signals so we keep on doing the thing. Eventually our brain grows weary and sometimes our body too. My scientific analysis has some gaps but you get the idea. We like to put blinders on until we feel pain that something is no longer fun.\n@JaimeeJaimeeAt CocoaConf Chicago, Jaimee Newbury gave an excellent talk on Burnout and how she used her skills as a product designer to battle it. Not only was her talk informative, it was quite moving. She managed to incorporate stories of her family, her childhood and the movie Rocky to help us comprehend why she reached burnout.\nGo the DistanceRocky is Jaimee's favorite movie and from it she remarks on one quote from Sly Stallone - \"It doesn't matter if I lose this fight. All I want to do is go the distance.\" Simply put you're going to fail in life. The idea is not to let those failures consume you to the point of stagnating your creativity and drive to continue on. We learn from failures - how else would we know when we succeed?\nThe Four StepsThere are four steps in the plan Jaimee is following to help her spin the burnout back into creativity: understand, discover, design, iterate. These are the same steps she would follow when working with product development - why not reuse the tools you already know? First you have to really understand what the problem is you're trying to solve. Then you have to discover the context of the problem - determine all of the variables, inputs, behaviors, technical issues that cause or interact with the issue. Next, design a solution to help resolve the problem but while keeping in mind the human condition - we can only change so much so fast. Finally, the last step is to iterate because as we go through the journey of change we'll need to tune things as we discover more about ourselves.\nTake AwaysThere are a couple big takeaways from Jaimee's talk that I wanted to share.\nWatch Rocky again, I don't think I gave it enough time as a child.Read The Power of Habit by Charles Duhigg - it describes the method of small changes to alter human behaviors. I've heard of this book before in a talk about creativity and inspiration so I need to get it and read it.Subscribe to Jaimee's YouTube channel.Use hand-drawn artwork in my next talk's slides.I've gotten to the point of burnout a few times in my life and I've made my own internal rules to deal with situations like this. I don't think I've ever analyzed my process enough to know what it was (or that it really even existed). This talk on burnout has made me understand more about how I approach problems and I'm glad that I do have some analytical assistance from my experience as a software developer. Hacking your own brain and life is quite possible! :)\n","permalink":"https://aaron.blog/getting-burned-out/","summary":"\u003ch2 id=\"it-s-in-our-nature\"\u003eIt's In Our Nature\u003c/h2\u003e\u003cp\u003eThe human body seems to have a natural instinct to burn itself out. We find something we like and want to continue receiving those brain signals so we keep on doing the thing. Eventually our brain grows weary and sometimes our body too. My scientific analysis has some gaps but you get the idea. We like to put blinders on until we feel pain that something is no longer fun.\u003c/p\u003e","title":"Getting Burned Out"},{"content":"I've recently become a fan of Walt Whitman's poem from 1892 entitled \"O Me! O Life!\". I've heard the poem in the past but it has never resonated with me until hearing Daniel Steinberg, an iOS developer and trainer, used it in his keynote at CocoaConf Chicago.\nO Me! O Life!\nOh me! Oh life! of the questions of these recurring, Of the endless trains of the faithless, of cities fill’d with the foolish, Of myself forever reproaching myself, (for who more foolish than I, and who more faithless?) Of eyes that vainly crave the light, of the objects mean, of the struggle ever renew’d, Of the poor results of all, of the plodding and sordid crowds I see around me, Of the empty and useless years of the rest, with the rest me intertwined, The question, O me! so sad, recurring—What good amid these, O me, O life?\n\u0026nbsp; \u0026nbsp; \u0026nbsp;Answer. That you are here—that life exists and identity, That the powerful play goes on, and you may contribute a verse.\nI knew I had heard this before - most likely in commercials and referenced in other stories. I realized where I had heard it recently when Daniel played the Apple commercial that the late Robin Williams narrated lines from Dead Poets Society. It was actually one of the last productions he worked on before his death.\nThe challenge is to find out how you can contribute a verse to the play that is life. Daniel's message to us as software developers is that we can both construct our verse and help others contribute their verse to life. The apps we write can unlock the inspiration, provide the accessibility, and fuel the creativity to let people bring their verse into existence.\nI've never considered the work I do to be something that is capable of changing a person's life until this past weekend. Viewing the ad Robin narrated again with an understanding of Walt's poem hit a heart string.\nhttps://vimeo.com/85377877\nI create apps that people use and touch from the moment they wake up in the morning to the moments before they go to sleep. I am a part of people's own verses in life without them even knowing I'm there acting as a muse. I help provide the means for the users to help others with their verses.\nAll of our contributions to life are intertwined. I exist because you exist. Finding your verse in life will ultimately help someone else discover theirs.\n","permalink":"https://aaron.blog/creating-your-verse-in-play-that-is-life/","summary":"\u003cp\u003eI've recently become a fan of Walt Whitman's poem from 1892 entitled \"O Me! O Life!\". I've heard the poem in the past but it has never resonated with me until hearing \u003ca href=\"http://dimsumthinking.com/Info/index.html\" rel=\"noopener\"\u003eDaniel Steinberg\u003c/a\u003e, an iOS developer and trainer, used it in his keynote at \u003ca href=\"http://cocoaconf.com/chicago-2015/schedule\" rel=\"noopener\"\u003eCocoaConf Chicago\u003c/a\u003e.\u003c/p\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"padding-left:30px;\"\u003e\u003cstrong\u003eO Me! O Life!\u003c/strong\u003e\u003c/p\u003e\u003c!--kg-card-end: html--\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"padding-left:30px;\"\u003eOh me! Oh life! of the questions of these recurring,\nOf the endless trains of the faithless, of cities fill’d with the foolish,\nOf myself forever reproaching myself, (for who more foolish than I, and who more faithless?)\nOf eyes that vainly crave the light, of the objects mean, of the struggle ever renew’d,\nOf the poor results of all, of the plodding and sordid crowds I see around me,\nOf the empty and useless years of the rest, with the rest me intertwined,\nThe question, O me! so sad, recurring—What good amid these, O me, O life?\u003c/p\u003e","title":"Creating your Verse in the Play that is Life"},{"content":"Walking While You WorkI'm not going to link to any articles or research about the benefits of walking while you work. I've been standing at my desk since I started working at home and to me this is the next progression. I have ADHD and I'm always trying to find ways to hack my brain. I decided to get in on the treadmill desk game.\nThe First StepsA couple months back I ended up buying a cheapie treadmill on Amazon to experiment with walking while working. I used it a couple of times with some success but I ultimately felt it didn't provide much help for my focus. I kept doing research to determine what the issue was and spent time observing myself during a walking session with it. I was surprised it wasn't obvious why I didn't like this experiment.\nPrimarily the treadmill is too narrow for my clown-sized feet. Okay they're not Krusty-sized but size 11 shoes are not terribly compatible with an 18\" belt. I frequently found myself walking off the belt and then getting jarred out of my concentration. The sides are also not raised up very much so there is no subtle guide for your feet to bump into if you're not accurate.\nI'm just under 230lb and while this is nearly 60lb less than when I started this journey for fitness, it's apparently the edge for the treadmill at low speed. The motor needs to be a high torque type as slow walking is complete hell on a standard treadmill. I expected the thing to blow up and take my ankles with it in the process.\nI didn't want to spend a boatload of cash investing in a treadmill that I may or may not end up using. This was $200 with delivery and it served its purpose. The problem is I wanted to continue walking which meant I needed to find another larger treadmill or else I'd stop.\nThe Second StepI'm sure you've noticed the step pun by now.\nAfter some discussions with my coworkers and a bit of online research, I opted to get the LifeSpan TR1200-D3 unit. It's the middle of the line and doesn't come with the desk since I already have an UpDesk. My reasons behind picking this treadmill were:\nThe console unit has bluetooth and connects to my Mac to show the current steps. It also syncs with their online service which does suck but provides a record that's usable enough.It's rated to be used for an average of six hours a day and is limited to 4mph or lower.The unit comes with a shock absorbing frame to make my moobs the only thing that jiggle and bounce.The one downside is that while it has wheels to move it around, it doesn't have a safe way to lean it up against a wall. I've come up with a temporary solution using an old yoga mat but I want to make something a bit more secure.\nObservances \u0026amp; SuggestionsAfter walking for a week I've already made a number of observations that I didn't expect.\nMy original UpDesk tends to wobble when it's fully raised up. I ended up buying 3\" casters for the feet a while back and those are barely high enough with the treadmill under it. Instead now I raised the keyboard up temporarily with a cardboard box. I find my wrists are now at the right angle for typing although with no wrist support my accuracy has taken a hit. Not leaning on the desk while I type does however have the benefit of not wiggling the screen. My monitor is on an arm and I have it tilted up while I'm on the treadmill.I'm using Things to keep track of ideas/tasks I think of that I can't do when walking. There are just some tasks that aren't conducive while you're walking (like testing apps on devices) and you need a reliable place to put those task reminders. I also like to stick with one task as a time while walking to prevent my brain from getting derailed. So far I'm happy with Things.Don't overwalk. When you get into something (like me typing up this post) it's so easy to lose track of your steps. You will be sore the next day.Get good shoes and don't wear those anywhere except in your house or on the treadmill. Snow, dirt and dust will make your treadmill look ugly and harder to maintain.Buy a good treadmill mat to go underneath if you're on hardwood floors.Even though LifeSpan tracks activity I'm still logging my walking activity with RunKeeper. I like the social component of RunKeeper and since it has all my exercise activity in it why not keep using it.Next StepsI'm just going to keep at this. I need to find the balance of walking time during the day vs productivity levels. Once I come up with a good solution to store the treadmill upright I believe finding this balance will be easier. I do not want to stop doing my normal exercise routine (step aerobics at home in the winter and also going to the gym) so I'll have to be careful to not burn myself out. In the end I want this to be a good way to maintain focus and to help train my brain to be better at tasking.\nI'll keep posting about my experiences here!\n","permalink":"https://aaron.blog/walking-while-working-another-step-for-focus/","summary":"\u003ch2 id=\"walking-while-you-work\"\u003eWalking While You Work\u003c/h2\u003e\u003cp\u003eI'm not going to link to any articles or research about the benefits of walking while you work. I've been standing at my desk since I started working at home and to me this is the next progression. I have ADHD and I'm always trying to find ways to hack my brain. I decided to get in on the treadmill desk game.\u003c/p\u003e\u003ch2 id=\"the-first-steps\"\u003eThe First Steps\u003c/h2\u003e\u003cp\u003eA couple months back I ended up buying a \u003ca href=\"http://www.amazon.com/gp/product/B004TGWUPE\" rel=\"noopener\"\u003echeapie treadmill on Amazon\u003c/a\u003e to experiment with walking while working. I used it a couple of times with some success but I ultimately felt it didn't provide much help for my focus. I kept doing research to determine what the issue was and spent time observing myself during a walking session with it. I was surprised it wasn't obvious why I didn't like this experiment.\u003c/p\u003e","title":"Walking While Working - Another Step For Focus"},{"content":"Every year at Automattic we get together at what we call the Grand Meetup. Everyone is expected to give a four minute flash talk on any subject - literally any subject. Last year I described a funny story about a boss stealing my iPhone. This year I combined another funny story with some personal philosophies.\nLast summer I posted about how Things With Wheels Are Meant To Move and that paired well with my tweets about my philosophy on systems. This flash talk is an amalgamation of those two posts.\n[wpvideo poH8v32Z]\n","permalink":"https://aaron.blog/things-with-wheels-flash-talk/","summary":"\u003cp\u003eEvery year at Automattic we get together at what we call the Grand Meetup. Everyone is expected to give a four minute flash talk on any subject - literally any subject. Last year I described a funny story about a \u003ca href=\"http://astralbodi.es/2014/04/07/how-i-got-well-played-revenge/\"\u003eboss stealing my iPhone\u003c/a\u003e. This year I combined another funny story with some personal philosophies.\u003c/p\u003e\u003cp\u003eLast summer I posted about how \u003ca href=\"http://astralbodi.es/2014/07/23/things-with-wheels-are-meant-to-move-no/\"\u003eThings With Wheels Are Meant To Move\u003c/a\u003e and that paired well with my tweets about \u003ca href=\"http://astralbodi.es/2014/07/22/systems-philosophy/\"\u003emy philosophy on systems\u003c/a\u003e. This flash talk is an amalgamation of those two posts.\u003c/p\u003e","title":"Things With Wheels Flash Talk"},{"content":"This has to be the most useless and scary software update screens to date that I've seen.\nDon't get me wrong, I like Android and I'm getting back into developing software for it and iOS isn't blameless in the shit-UX department. I couldn't pass up this example of a super important interaction that is done so poorly.\nEven though I'm familiar enough to what a \"target\" is in this context, I'm still confused by the screen. I'm uploading TO the device, not downloading FROM the device. According to this warning, I'm safe to turn off my computer and unplug the USB. The block of text in the upper left, while useful to a developer, is super scary for a user. If they're lucky to be blessed with 20/20 vision it's still pretty useless information.\nThe space between target and the exclamation points also makes me believe a careless developer wrote the UI. This results in me trusting this software update even less. If a semi-QA-type person couldn't pick this out right away then I'm really concerned about my phone getting bricked.\nThe moral of the story is - convey exactly what should and shouldn't happen when you're performing any critical operations. You're making your users feel very vulnerable and even if everything goes okay they may choose to not do the same action next time. Aim for happy fuzzies.\n","permalink":"https://aaron.blog/dont-turn-off-target/","summary":"\u003cp\u003eThis has to be the most useless and scary software update screens to date that I've seen.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"http://astralbodi.es/2014/12/22/dont-turn-off-target/img_4239/#main\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/12/img_4239.jpg\" class=\"kg-image\" alt=\"target !!\" loading=\"lazy\" width=\"642\" height=\"1024\" srcset=\"/content/images/size/w600/wp-content/uploads/2014/12/img_4239.jpg 600w, /content/images/wp-content/uploads/2014/12/img_4239.jpg 642w\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eDon't get me wrong, I like Android and I'm getting back into developing software for it and iOS isn't blameless in the shit-UX department. I couldn't pass up this example of a super important interaction that is done so poorly.\u003c/p\u003e\u003cp\u003eEven though I'm familiar enough to what a \"target\" is in this context, I'm still confused by the screen. I'm uploading TO the device, not downloading FROM the device.  According to this warning, I'm safe to turn off my computer and unplug the USB.  The block of text in the upper left, while useful to a developer, is super scary for a user.  If they're lucky to be blessed with 20/20 vision it's still pretty useless information.\u003c/p\u003e","title":"Don't turn off target !!"},{"content":"It is very surreal to see your name on a printed book.\n","permalink":"https://aaron.blog/core-data-by-tutorials/","summary":"\u003cp\u003eIt is very surreal to see your name on a printed book.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2014/12/img_4225.jpg\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/12/img_4225.jpg?w=696\" class=\"kg-image\" alt=\"IMG_4225\" loading=\"lazy\" width=\"696\" height=\"908\" srcset=\"/content/images/size/w600/wp-content/uploads/2014/12/img_4225.jpg?w=696 600w, /content/images/wp-content/uploads/2014/12/img_4225.jpg?w=696 696w\"\u003e\u003c/a\u003e\u003c/figure\u003e","title":"Core Data by Tutorials"},{"content":"We've all done it - left your wallet at home and you're in a dire need for money, groceries, gas, etc. How do you get by if you can't get your wallet with your ID in short order?\nI was thinking about this problem and thought of a simple solution. Go to a merchant that accepts Apple Pay and sells general gift cards. A place like Walgreens sells gift cards for restaurants, gas stations and other merchants. They even sell Visa and MasterCard gift cards (with an activation fee). Walgreens also typically sells transit passes for buses and trains.\nThis may not help you immediately when you're in line at the grocery store with a cart full of groceries. But, if you're stranded away from home and have an immediate need, this is a possible solution.\nI'd also suggest putting a high-resolution scanned image of your ID and Passport into a safe application like 1Password.\n","permalink":"https://aaron.blog/surviving-with-apple-pay/","summary":"\u003cp\u003eWe've all done it - left your wallet at home and you're in a dire need for money, groceries, gas, etc.  How do you get by if you can't get your wallet with your ID in short order?\u003c/p\u003e\u003cp\u003eI was thinking about this problem and thought of a simple solution.  Go to a merchant that accepts Apple Pay and sells general gift cards.  A place like Walgreens sells gift cards for restaurants, gas stations and other merchants.  They even sell Visa and MasterCard gift cards (with an activation fee).  Walgreens also typically sells transit passes for buses and trains.\u003c/p\u003e","title":"Surviving with Apple Pay"},{"content":"I've been using an UpDesk since I started working from home in July 2013. I typically try to stand over half of the day being careful to not hurt my lower back with multiple days of standing fatigue. I do plenty of stretches and general movement while standing as well - but I do like to sit in my fancy Herman Miller Aeron chair once in a while. Having the motorized desk is awesome for this because I can change the configuration of my workspace based upon my mood, attention momentum and other variables. I noticed after some time, however, that I didn't have a really good understanding of how often I switched configurations and generally how long I could stand.\nSo, I connected my standing desk to the Internet.\nI'm using a SmartThings multi-sensor which has a magnetic switch, temperature and vibration sensor inside of it. I attached the sensor to the bottom of the desk lift and the magnet to the bottom of the desk tabletop. When the desk raises up, it sends a signal to the SmartThings hub over a Zigbee mesh network.\nIFTTT is connected to my SmartThings account and I set up an action there for both the open and close events of the switch. When either event occurs, an entry is added to an existing Evernote note with the action and time stamp. It's fairly simple and I wanted to send the events to a graph or spreadsheet but in the end I found the note and its history are sufficient for my needs.\nNext steps? Since I work remote I'm not tied to my desk. I have the ability to work anywhere and on occasion I'll work from a coffee shop or even my back porch. I want to incorporate some sort of occupancy sensor to my office but I haven't come up with the right solution. Ultimately I want to know when I'm using the desk, not necessarily when there is movement in my office. A weight sensor or maybe a limited proximity beacon of some sort would work. I could pair the occupancy with desk position to determine the actual amount of time I'm sitting or standing and not just the change between states.\n","permalink":"https://aaron.blog/i-connected-my-standing-desk-to-evernote/","summary":"\u003cp\u003eI've been \u003ca href=\"http://astralbodi.es/2014/04/03/my-desk-setup/\" rel=\"noopener\"\u003eusing an UpDesk\u003c/a\u003e since I started working from home in July 2013.  I typically try to stand over half of the day being careful to not hurt my lower back with multiple days of standing fatigue.  I do plenty of stretches and general movement while standing as well - but I do like to sit in my fancy Herman Miller Aeron chair once in a while.  Having the motorized desk is awesome for this because I can change the configuration of my workspace based upon my mood, attention momentum and other variables.  I noticed after some time, however, that I didn't have a really good understanding of how often I switched configurations and generally how long I could stand.\u003c/p\u003e","title":"I Connected My Standing Desk to Evernote"},{"content":"I recently got a new work computer and instead of using Time Machine to restore, I decided to install everything fresh. I installed Oh My Zsh (which is fantastic by the way) which I used on my previous machine. My favorite theme is Candy Kingdom. After switching and relaunching Terminal I noticed the following error after every command prompt display:\nzsh: command not found: battery_time_remaining\nTurns out it was a simple problem - I had to enable the battery plugin in my ~/.zshrc config file:\nplugins=(git battery)\nFinding the solution wasn't straightforward and its been forever since I installed Oh My Zsh. Now I know and you do too.\n","permalink":"https://aaron.blog/oh-my-zsh-error-about-battery/","summary":"\u003cp\u003eI recently got a new work computer and instead of using Time Machine to restore, I decided to install everything fresh.  I installed Oh My Zsh (which is fantastic by the way) which I used on my previous machine.  My favorite theme is Candy Kingdom.  After switching and relaunching Terminal I noticed the following error after every command prompt display:\u003c/p\u003e\u003cp\u003e\u003ccode\u003ezsh: command not found: battery_time_remaining\u003c/code\u003e\u003c/p\u003e\u003cp\u003eTurns out it was a simple problem - I had to enable the battery plugin in my ~/.zshrc config file:\u003c/p\u003e","title":"Oh My Zsh Error About Battery"},{"content":"The ProblemSomething that has been missing on iOS for a long time is a reliable way to provide emergency contact information. Imagine you're out and about and you end up having an accident or have an acute attack from a known medical condition you have. We all tend to carry our mobile phones with us. Most emergency personnel are trained to review personal data in your wallet/purse and now mobile phones. The issue is most of us have a lock code on our devices, preventing access to potential life-saving communication with a loved one about your medical condition.\nSetting up Medical IDiOS 8 now has a feature that lets you provide that critical medical information to emergency responders. It's called Medical ID. Here's how to set it up in a few steps:\nFirst, select the \"Health\" app.\nThen, select \"Medical ID\" on the far right. And then tap \"Create Medical ID\".\nEnter in your personal information you'd like to provide to emergency workers. At a minimum you should select a contact from your phone to allow someone to call on your behalf. I'd also suggest entering in your blood type.\nTap Done when you're finished.\nNow when someone swipes to \"Emergency Call\" on your device, Medical ID is listed with the details you provided.\nShare This InformationMake sure to share this information with your loved ones that have iOS devices. A few minutes of setting this up could mean a huge help down the road!\n","permalink":"https://aaron.blog/providing-emergency-contacts-with-ios-8/","summary":"\u003ch1 id=\"the-problem\"\u003eThe Problem\u003c/h1\u003e\u003cp\u003eSomething that has been missing on iOS for a long time is a reliable way to provide emergency contact information.  Imagine you're out and about and you end up having an accident or have an acute attack from a known medical condition you have.  We all tend to carry our mobile phones with us.  Most emergency personnel are trained to review personal data in your wallet/purse and now mobile phones.  The issue is most of us have a lock code on our devices, preventing access to potential life-saving communication with a loved one about your medical condition.\u003c/p\u003e","title":"Providing Emergency Contacts with iOS 8"},{"content":"I love the word \"stabby\". It typically means, if you're feeling stabby, that you would like to stab someone or something because of your current emotional state. Stabby can also describe the state of a thing - like \"pairing bluetooth headsets is stabby\" because it's a pain in the ass.\nI've tried to pass around the Theory of Stabby to my coworkers at previous jobs and at Automattic. It's definitely been a successful campaign because we managed to get a stabby emoticon added to our chat system, Slack.\nI've started a website you can easily share with coworkers, family and friends when you're feeling particularly stabby. It's also mobile-friendly so you can text someone the URL and be done.\nhttp://stabby.today\nI expect Stabby Today to evolve over time. I will accept feature requests.\n","permalink":"https://aaron.blog/stabby/","summary":"\u003cp\u003eI love the word \"stabby\".  It typically means, if you're feeling stabby, that you would like to stab someone or something because of your current emotional state.  Stabby can also describe the state of a thing - like \"pairing bluetooth headsets is stabby\" because it's a pain in the ass.\u003c/p\u003e\u003cp\u003eI've tried to pass around the Theory of Stabby to my coworkers at previous jobs and at Automattic.  It's definitely been a successful campaign because we managed to get a stabby emoticon added to our chat system, Slack.\u003c/p\u003e","title":"Stabby"},{"content":"It's definitely not any surprise to me that Tim Cook is gay. When he became CEO of Apple and after Steve Jobs' death it was talked about. I was surprised for a brief moment upon that initial discovery but was happy to see Apple embracing diversity at all levels.\nToday Tim Cook came out publicly as gay in hopes to inspire others to be themselves and accept others too.\nWhat I'm really surprised and delighted to see are the reactions from other developers in the Apple/Mac/iOS community:\nhttps://twitter.com/monkbent/status/527801313447264256\nhttps://twitter.com/flyosity/status/527800542131929088\nhttps://twitter.com/dlpasco/status/527799229893578753\nhttps://twitter.com/justin/status/527797670211878912\nI'm again reminded that I've chosen a career path in a community that accepts me and others for who they are. From the days of attending my first iOS/Mac Developer conference, SecondConf, I realized that people were different in this community. I'm proud to say I'm gay as well and happy to know that my peeps have my back.\nThanks, Tim!\n","permalink":"https://aaron.blog/my-reaction-to-tim-cooks-coming-out/","summary":"\u003cp\u003eIt's definitely not any surprise to me that Tim Cook is gay.  When he became CEO of Apple and after Steve Jobs' death it was talked about.  I was surprised for a brief moment upon that initial discovery but was happy to see Apple embracing diversity at all levels.\u003c/p\u003e\u003cp\u003eToday \u003ca href=\"http://www.businessweek.com/articles/2014-10-30/tim-cook-im-proud-to-be-gay\" rel=\"noopener\"\u003eTim Cook came out publicly\u003c/a\u003e as gay in hopes to inspire others to be themselves and accept others too.\u003c/p\u003e\u003cp\u003eWhat I'm really surprised and delighted to see are the reactions from other developers in the Apple/Mac/iOS community:\u003c/p\u003e","title":"My Reaction to Tim Cook's Coming Out"},{"content":"WordPress.com's Daily Post is holding an online photo blogging course called Photo 101. It starts Monday, November 3rd and it goes through November 28th. Each day a topic is presented and it's your challenge to post a photo that is your interpretation of the topic. Along with the topic are tips and tricks for you to learn. Posts are tagged so they're visible on the WordPress.com Reader. WordPress.com-hosted sites and self-hosted sites are both encouraged to join in!\nVisit WordPress.com's main blog for an intro post regarding this course.\nI will be posting the daily photos over at Astral Imagery, my photo blog.\n","permalink":"https://aaron.blog/blogging-u-s-photo-101-course-post-a-photo-a-day/","summary":"\u003cp\u003eWordPress.com's \u003ca href=\"http://dailypost.wordpress.com\" rel=\"noopener\"\u003eDaily Post\u003c/a\u003e is holding an online photo blogging course called Photo 101.  It starts Monday, November 3rd and it goes through November 28th.  Each day a topic is presented and it's your challenge to post a photo that is your interpretation of the topic.  Along with the topic are tips and tricks for you to learn.  Posts are tagged so they're visible on the WordPress.com Reader.  WordPress.com-hosted sites and self-hosted sites are both encouraged to join in!\u003c/p\u003e","title":"Blogging U.’s Photo 101 Course: Post a Photo a Day"},{"content":"I thought I knew a lot about Core Data with having used it a lot over the past years. Today, I learned something new that I feel like I should have known for a long time. NSManagedObjectIDs can change. Seriously.\nIf you want a different notion of identity, you can just add an UUID string as an attribute to your entity. A separate mapping table is not recommend. The 2 apps should agree to use the same UUIDs for the same identities.BenRef:\u0026nbsp;https://devforums.apple.com/message/480640#480640\nBen is one of the core developers of Core Data at Apple. The last sentence describing ways primary keys can change blew my mind when mentioning \"not-light-weight migration\". In WordPress for iOS we sometimes have to perform heavyweight migrations - especially in the case of removing objects or combining object ancestries. In a number of cases we use NSManagedObjectID's URIRepresentation and throw it in NSUserDefaults for retrieval later. Turns out, that ID isn't stable enough between migrations.\nThe solution, as Ben points out, is to create a UUID and make the ID yourself upon initial persistence.\nMind blown.\n","permalink":"https://aaron.blog/core-data-object-ids-can-change/","summary":"\u003cp\u003eI thought I knew a lot about Core Data with having used it a lot over the past years.  Today, I learned something new that I feel like I should have known for a long time.  NSManagedObjectIDs can change.  Seriously.\u003c/p\u003e\u003cblockquote\u003eIf you want a different notion of identity, you can just add an UUID string as an attribute to your entity. A separate mapping table is not recommend. The 2 apps should agree to use the same UUIDs for the same identities.\u003c/blockquote\u003e\u003cul\u003e\u003cli\u003eBen\u003c/li\u003e\u003c/ul\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"padding-left:30px;\"\u003eRef:\u0026nbsp;\u003ca href=\"https://devforums.apple.com/message/480640#480640\" target=\"_blank\" rel=\"noopener\"\u003ehttps://devforums.apple.com/message/480640#480640\u003c/a\u003e\u003c/p\u003e","title":"Core Data Object IDs can change"},{"content":"UPS is delivering my iPhone 6 Plus today.\n","permalink":"https://aaron.blog/anxious/","summary":"\u003cp\u003eUPS is delivering my iPhone 6 Plus today.\u003cbr\u003e\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wp-content/uploads/2014/09/img_3814.jpg\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/09/img_3814.jpg?w=696\" class=\"kg-image\" alt=\"UPS Sign\" loading=\"lazy\" width=\"696\" height=\"928\" srcset=\"/content/images/size/w600/wp-content/uploads/2014/09/img_3814.jpg?w=696 600w, /content/images/wp-content/uploads/2014/09/img_3814.jpg?w=696 696w\"\u003e\u003c/a\u003e\u003c/figure\u003e","title":"Anxious"},{"content":"Plus using dependency managers like CocoaPods tends to get unwieldily the larger your team gets. Not only do you have to worry about the libraries as dependencies but now you have to worry about the versioning of the dependency manager. Oy!\n","permalink":"https://aaron.blog/code-dependent/","summary":"\u003cp\u003ePlus using dependency managers like CocoaPods tends to get unwieldily the larger your team gets.  Not only do you have to worry about the libraries as dependencies but now you have to worry about the versioning of the dependency manager.  Oy!\u003c/p\u003e","title":"Code Dependent"},{"content":"At Automattic we all are a distributed workforce - we all work from all over the world. Every few months we meet up with our teammates and work on projects designed to be started and finished within the week. Once a year the entire company gets together in one place and we affectionally dub it the \"Grand Meetup\" (abbreviated GM). This year, we all met up in Park City, Utah USA at the Grand Summit Canyons Resort.\nWe do a lot of things at the GM. Primarily the GM is meant to be a restorative time to emotionally connect with our peers. This comes in the form of group lunches and dinners, flash talks, recreational outings, and just sitting on couches talking over a coffee or beer. Since we don't often get to see each other (especially those of us who don't directly work together) this is a chance to establish the inner voice we have that represents someone's online persona. When we see each other online after a GM, we can emote better because everyone has gotten to know our personalities.\nWe also are required to pick one of three things to do for real work during the GM: work on a project (to be assigned), work on your day to day project if you need face-to-face time, or participate in a learn-up group (teaching or learning). I ended up choosing to teach a class on iOS development to seven other coworkers. It was fantastic. Almost everyone submitted a pull request to WordPress-iOS by the end of the class.\nI didn't take a ton of photos at the meetup but here are some of my favorite:\n","permalink":"https://aaron.blog/2014-automattic-grand-meetup/","summary":"\u003cp\u003eAt \u003ca href=\"http://automattic.com\" rel=\"noopener\"\u003eAutomattic\u003c/a\u003e we all are a distributed workforce - we all work from all over the world.  Every few months we meet up with our teammates and work on projects designed to be started and finished within the week.  Once a year the entire company gets together in one place and we affectionally dub it the \"Grand Meetup\" (abbreviated GM).  This year, we all met up in Park City, Utah USA at the \u003ca href=\"http://www.canyonsresort.com\" rel=\"noopener\"\u003eGrand Summit Canyons Resort\u003c/a\u003e.\u003c/p\u003e","title":"2014 Automattic Grand Meetup"},{"content":"I've been noticing on my Mac OS X Mavericks 10.8 Server I have running in a data center has been filling up its Time Machine volume way too quickly. The backups are continually huge and only about a week fits on the second hard drive inside of the Mac mini. Every time the machine backed up it was taking up so much room that previous backups had to be deleted.\nI searched everywhere and couldn't find an issue. I looked in console logs for Time Machine and couldn't find anything definitive as well but it looked like it was something in /Library/Server. I realized that it must be a file or set of files that are always being written to so they're always backed up every hour or so.\nI had tried some command-line tools like \"du\" but the usage was so many levels deep it was hard to pinpoint. Finally I grew a brain and installed DaisyDisk on the server to see what I could find. Within minutes I found the pinch point. See all of the repeated pattern in the third layer from the center?\nTurns out the file /Library/Server/Xcode/Logs/xcs_proxy.log was huge and never rolled over by the logging utility. I had been using Xcode on this server to run Bots but had since turned it off. I still need to figure out WHY this file is being written to without the Bots service running. Because the file is always being written to, the entire thing is backed up every single hour.\nSolution:\nsudo rm /Library/Server/Xcode/Logs/*\nIf I find the solution to the xcs_proxy issue, I'll follow up.\n","permalink":"https://aaron.blog/mac-os-x-server-time-machine-volume-filling-fast/","summary":"\u003cp\u003eI've been noticing on my Mac OS X Mavericks 10.8 Server I have running in a data center has been filling up its Time Machine volume way too quickly.  The backups are continually huge and only about a week fits on the second hard drive inside of the Mac mini.  Every time the machine backed up it was taking up so much room that previous backups had to be deleted.\u003c/p\u003e","title":"Mac OS X Server Time Machine Volume Filling Too Fast"},{"content":"I've noticed a trend lately - I never shut down my MacBook Pro(s) any more. Ever since Power Nap came out I tend to just leave my machines running all the time, even if they're on battery. Even with boot times being so fast on the SSD retina MBP I just like the fact I can leave everything be.\n","permalink":"https://aaron.blog/long-running-macbook-pro/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/08/uptime.png\" class=\"kg-image\" alt=\"uptime\" loading=\"lazy\" width=\"533\" height=\"118\"\u003e\u003c/figure\u003e\u003cp\u003eI've noticed a trend lately - I never shut down my MacBook Pro(s) any more.  Ever since Power Nap came out I tend to just leave my machines running all the time, even if they're on battery.  Even with boot times being so fast on the SSD retina MBP I just like the fact I can leave everything be.\u003c/p\u003e","title":"Long-Running MacBook Pro"},{"content":"The WordPress for iOS project had a number of unit tests using Core Data and a custom asynchronous test helper. The helper used a semaphore in a global scope and a bit of method swizzling to give a wait/notify mechanism. The problem with this solution was the global semaphore and poorly written tests causing a conflict. Tests would call the ending wait and previous tests running Core Data would fire off notifies causing a mismatch between the original test and the recipient of the message to pass by the current semaphore.\nThe solution was to eliminate the global scope and have a semaphore object/instance that could be passed around by the single test. The more I started designing the solution I realized we should just start using the new asynchronous testing capabilities of Xcode 6. Xcode 6 / iOS 8 / Yosemite brings us a wealth of new tools to play with including Swift, the newest language developed by Apple.\nXCTestExpectationThe newest member to the XCTest framework is XCTestExpectation. This class encapsulates a single semaphore (of sorts) allowing your test to wait for 1..n things before the test is considered over. This helps with asynchronous things like AFNetworking, Core Data, and Grand Central Dispatch. If you're using a Core Data stack with multiple NSManagedObjectContext instances (background \u0026amp; main for example) then you're going to almost certainly want to know how to test asychronously.\nCreating a XCTestExpectation is quite simple:\n- (void)testObjectPermanence { XCTestExpectation *saveExpectation = [self expectationWithDescription:@\"Context save expectation\"]; // .. }The method expectationWithDescription: is part of XCTestCase and it has a companion method waitForExpectationsWithTimeout:handler: which you call when you're reading to block the test execution until [saveExpectation fulfill] is called. Fulfilling an expectation means the expectation has been met and the flag should be flipped for the test that is waiting. If your test execution never reaches a fulfillment, then your test will fail when your timeout threshold is met.\nSome important things to note about XCTest asynchronous testing:\nA XCTestExpectation instance can only be fulfilled a single time. Use multiple instances if you have more than one expectation.Only a single waitForExpectationsWithTimeout:handler: can be active at any one time.Unit tests, by default, run one at a time and not in parallel. If you modify the test suite running to parallelize, I can see things breaking fairly quickly.There are convenience methods to create expectations on a KVO property or NSNotificationCore Data Secret SauceThere are a bunch of waits you could fire off a fulfillment on an XCTestExpectation when a Core Data context saves. In the case of WordPress-iOS we use a central class, ContextManager, to help manage all of the Core Data levers and knobs. There is a companion class called CoreDataTestHelper that does a bunch of useful things like overriding our persistent store to be in memory rather than on disk and also swizzle a method on ContextManager to fire fulfillments if an expectation is recorded. Here's an example of a test using this expectation helper:\n- (void)testObjectPermanence { XCTestExpectation *saveExpectation = [self expectationWithDescription:@\"Context save expectation\"]; [CoreDataTestHelper sharedHelper].testExpectation = saveExpectation; NSManagedObjectContext *derivedContext = [[ContextManager sharedInstance] newDerivedContext]; Blog *blog = [self createTestBlogWithContext:derivedContext]; [[ContextManager sharedInstance] saveDerivedContext:derivedContext]; // Wait on the merge to be completed [self waitForExpectationsWithTimeout:2.0 handler:nil];\nXCTAssertFalse(blog.objectID.isTemporaryID, @\u0026ldquo;Object ID should be permanent\u0026rdquo;);\nYou can see we store the single expectation for the next NSManagedObjectContext save on the CoreDataTestHelper sharedHelper instance. Later on when the context is saved, the following swizzled code executes and fulfills the expectation:\n+ (void)load { Method originalSaveContext = class_getInstanceMethod([ContextManager class], @selector(saveContext:)); Method testSaveContext = class_getInstanceMethod([ContextManager class], @selector(testSaveContext:)); method_exchangeImplementations(originalSaveContext, testSaveContext); } Next StepsOur asynchronous tests are definitely not finished and the Core Data testing stack will most likely continue to change. Our service layer doesn\u0026rsquo;t enforce a single save paradigm - we tell contributors that they should probably save often and at least one time before the service method completes. The problem with the design we\u0026rsquo;re using above is that there is no good way to let a number of saves happen and to wait until the very last save. In order do that, we\u0026rsquo;d have to offer up a special saveContext method on ContextManager that could get an instance of an XCTestExpectation. That method would exist only as a class extension in our CoreDataTestHelper. It\u0026rsquo;s messy but then again so is Core Data at times. :)\nPull RequestThe changes I made to the WordPress for iOS project are up for review in this GitHub Pull Request.\n","permalink":"https://aaron.blog/asynchronous-unit-testing-core-data-with-xcode-6/","summary":"\u003cp\u003eThe \u003ca href=\"http://github.com/wordpress-mobile/WordPress-iOS\" rel=\"noopener\"\u003eWordPress for iOS\u003c/a\u003e project had a number of unit tests using Core Data and a custom asynchronous test helper.  The helper used a semaphore in a global scope and a bit of method swizzling to give a wait/notify mechanism.  The problem with this solution was the global semaphore and poorly written tests causing a conflict.  Tests would call the ending wait and previous tests running Core Data would fire off notifies causing a mismatch between the original test and the recipient of the message to pass by the current semaphore.\u003c/p\u003e","title":"Asynchronous unit testing Core Data with Xcode 6"},{"content":"I met some fellow coworkers at Hudson Business Lounge downtown Milwaukee today on a $25 day pass. I've been a member in the past but haven't been there in over a year. I sat down and realized that the four of us wouldn't fit at the table because of that awkward power outlet under the one chair. I decided to move the table so that it was centered between the chairs.\nThis is when it all went wrong.\nAs I started to push on the end on the right pictured above, I realized quickly that physics (as I knew it) wasn't working right. Instead of the table top moving parallel to the floor, it started to nose dive forward. Suddenly I felt a sharp pain in my shin and saw my Kleen Kanteen coffee cup rocket off the table and onto the floor. The two MacBook Pros looked at me in horror as they gripped on for dear life with the 34 cent rubber pads under them.\nThankfully the MacBook Pros stayed put and only one got kissed with a splash of coffee + soy milk.\nThat's about when I realized the table top wasn't actually affixed TO ITS LEGS.\nCoincidentally this meshes well wish my previous post about not assuming things were done correctly in the past. Just because something looks like it works right doesn't mean it actually does.\nThe best part is the guy working front desk told me to not feel bad, it's happened before.\n","permalink":"https://aaron.blog/things-with-wheels-are-meant-to-move-no/","summary":"\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/07/table.png\" class=\"kg-image\" alt=\"Table\" loading=\"lazy\" width=\"600\" height=\"450\" srcset=\"/content/images/wp-content/uploads/2014/07/table.png 600w\"\u003e\u003c/figure\u003e\u003cp\u003eI met some fellow coworkers at \u003ca href=\"http://www.hudson-business-lounge.com\" rel=\"noopener\"\u003eHudson Business Lounge\u003c/a\u003e downtown Milwaukee today on a $25 day pass.  I've been a member in the past but haven't been there in over a year.  I sat down and realized that the four of us wouldn't fit at the table because of that awkward power outlet under the one chair.  I decided to move the table so that it was centered between the chairs.\u003c/p\u003e","title":"Things With Wheels Are Meant to Move, No?"},{"content":"I was apparently feeling philosophical the other day and posted two tweets about dealing with systems architecture. They generally apply to life as well, so I'm posting them here on my blog so I don't forget them.\nJust because something was done a certain way, doesn't mean it was done right and even if it was done right at the time it may be wrong now.https://twitter.com/astralbodies/status/488786577360171008\nWax on, wax off.\nhttps://twitter.com/astralbodies/status/488786693999558656\n","permalink":"https://aaron.blog/systems-philosophy/","summary":"\u003cp\u003eI was apparently feeling philosophical the other day and posted two tweets about dealing with systems architecture.  They generally apply to life as well, so I'm posting them here on my blog so I don't forget them.\u003c/p\u003e\u003cblockquote\u003eJust because something was done a certain way, doesn't mean it was done right and even if it was done right at the time it may be wrong now.\u003c/blockquote\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/astralbodies/status/488786577360171008\"\u003ehttps://twitter.com/astralbodies/status/488786577360171008\u003c/a\u003e\u003c/p\u003e\u003cblockquote\u003eWax on, wax off.\u003c/blockquote\u003e\u003cp\u003e\u003cbr\u003e\u003ca href=\"https://twitter.com/astralbodies/status/488786693999558656\"\u003ehttps://twitter.com/astralbodies/status/488786693999558656\u003c/a\u003e\u003c/p\u003e","title":"Systems Philosophy"},{"content":"Today marks my one year anniversary with Automattic. I work with some awesome people and it's been a rewarding first year. I've had challenges to face (my attention for one), fun speaking at conferences, shipped a number of improvements and new features of WordPress for iOS, and learned a ton of new things. I'm excited to experience my next year here!\n","permalink":"https://aaron.blog/one-year-at-automattic/","summary":"\u003cp\u003eToday marks my one year anniversary with Automattic.  I work with some awesome people and it's been a rewarding first year.  I've had challenges to face (\u003ca href=\"http://astralbodi.es/2013/10/31/paying-attention-at-automattic/\" rel=\"noopener\"\u003emy attention\u003c/a\u003e for one), fun speaking at conferences, shipped a number of improvements and new features of WordPress for iOS, and learned a ton of new things.  I'm excited to experience my next year here!\u003c/p\u003e","title":"One Year at Automattic"},{"content":"Developers interested in contributing to the WordPress mobile apps can now connect to WordPress.com with their own account. More details to follow on how to set up the individual projects.\n","permalink":"https://aaron.blog/authentication-improvements-for-testing-your-apps/","summary":"\u003cp\u003eDevelopers interested in contributing to the WordPress mobile apps can now connect to WordPress.com with their own account.  More details to follow on how to set up the individual projects.\u003c/p\u003e","title":"Authentication improvements for testing your apps"},{"content":"On occasion my Calendar on Mavericks gets hosed when syncing with Google. If I look in the console, I see errors like the following mentioning \"An error exists on principal\":\n6/5/14 10:05:00.337 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [iCloud]] 6/5/14 10:05:00.338 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Time Off]] 6/5/14 10:05:00.340 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Events]] 6/5/14 10:05:00.341 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Launch]] 6/5/14 10:05:00.341 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Conferences]] 6/5/14 10:05:00.342 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Some Team]]\nHitting Command-R in calendar results in it sitting on Updating for some time (minutes?) and then an exclamation point appearing next to the calendars in question. I finally found a solution to fix it until the next time it happens. I'm not sure what the actual cause is but this can get you back up \u0026amp; running.\nClose the Calendar app.Go into System Preferences.Click on Internet Accounts.Click on the Google account (if you have multiple you may have to do this for each).Uncheck \"Calendars\".Click Show All or close preferences.Open Terminal.app (Applications \u0026gt; Utilities)type: killall -9 CalendarAgenttype exit or close the window.Go back into System Preferences and turn Calendar back on for the Google Account(s).Start up Calendar and hit command-R - everything should refresh properly.Let me know if you have questions!\n","permalink":"https://aaron.blog/mac-os-x-10-9-mavericks-calendar-google-sync-problems/","summary":"\u003cp\u003eOn occasion my Calendar on Mavericks gets hosed when syncing with Google.  If I look in the console, I see errors like the following mentioning \"An error exists on principal\":\u003c/p\u003e\u003cp\u003e6/5/14 10:05:00.337 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [iCloud]] 6/5/14 10:05:00.338 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Time Off]] 6/5/14 10:05:00.340 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Events]] 6/5/14 10:05:00.341 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Launch]] 6/5/14 10:05:00.341 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Conferences]] 6/5/14 10:05:00.342 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Some Team]]\u003c/p\u003e","title":"Mac OS X 10.9 Mavericks Calendar + Google Sync Problems"},{"content":"I posted a while back about what I've been doing to lose weight.\nI was my heaviest last year around September 2013 at 277lb (125kg). I started on my ADD meds around October and stopped taking a medication for my cluster headaches that was causing weight gain as well. You can see the drop but then around end of January I came off the meds. The weight hopped back up for a bit but I dug deep and kept my exercise a bit more regular. So far I'm down 40lb! I don't really have any goal in mind other than to reach at least 235lb which the lightest I've been for the past five years.\nThis summer I've been able to get on my bicycle and ride with my partner around our campground and neighborhood. He's been getting more active as well which is great! Having the Nike Fuelband and Withings Scale has been great at tracking my progress and keeping me motivated. I also use RunKeeper still to track my workouts which feeds calories burned into MyFitnessPal. I'm also pretty consistently doing step aerobics at home during the week using Jenny Ford's awesome videos. I recommend taking a look at her work on YouTube and then buying a video or two if you like them. :)\nOn occasion I've been taking a picture of myself with Photo Booth on my Mac to track visual progress of my success.\n","permalink":"https://aaron.blog/nerdy-fitness-progress/","summary":"\u003cp\u003eI \u003ca href=\"http://astralbodi.es/2014/03/19/nerdy-fitness/\"\u003eposted a while back\u003c/a\u003e about what I've been doing to lose weight.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/05/weightgraph.png\" class=\"kg-image\" alt=\"WeightGraph\" loading=\"lazy\" width=\"696\" height=\"385\" srcset=\"/content/images/size/w600/wp-content/uploads/2014/05/weightgraph.png 600w, /content/images/wp-content/uploads/2014/05/weightgraph.png 696w\"\u003e\u003c/figure\u003e\u003cp\u003eI was my heaviest last year around September 2013 at 277lb (125kg).  I started on my ADD meds around October and stopped taking a medication for my cluster headaches that was causing weight gain as well.  You can see the drop but then around end of January I came off the meds.  The weight hopped back up for a bit but I dug deep and kept my exercise a bit more regular.  So far I'm down 40lb!  I don't really have any goal in mind other than to reach at least 235lb which the lightest I've been for the past five years.\u003c/p\u003e","title":"Nerdy Fitness Progress"},{"content":"This is probably one of the best videos I've seen promoting the need for us as humans to reconnect with each other. I work for a distributed company and I call tell you, we realize the importance of face to face interaction. Also we need to make sure we're connecting not just to our friends, family and other humans but also our pets. It's so easy to ignore them when you're tied into an electronic device all day long. They need love too :).\n","permalink":"https://aaron.blog/look-up-unplug/","summary":"\u003cp\u003eThis is probably one of the best videos I've seen promoting the need for us as humans to reconnect with each other.  I work for a distributed company and I call tell you, we realize the importance of face to face interaction.  Also we need to make sure we're connecting not just to our friends, family and other humans but also our pets.  It's so easy to ignore them when you're tied into an electronic device all day long.  They need love too :).\u003c/p\u003e","title":"Look Up \u0026 Unplug"},{"content":"In January 2014, the Mobile Team at Automattic met in Tokyo Japan for our quarterly face to face meetup. Here are some of the pictures I took from the meetup. It was a great experience and I would definitely go back to Japan!\n","permalink":"https://aaron.blog/tokyo-mobile-meetup-january-2014/","summary":"\u003cp\u003eIn January 2014, the Mobile Team at Automattic met in Tokyo Japan for our quarterly face to face meetup. Here are some of the pictures I took from the meetup. It was a great experience and I would definitely go back to Japan!\u003c/p\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/20140113_200258-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/20140113_200258-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/20140113_200258-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/20140113_200258-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/20140113_200258-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/20140113_200325-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/20140113_200325-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/20140113_200325-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/20140113_200325-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/20140113_200325-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/20140113_211105-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/20140113_211105-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/20140113_211105-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/20140113_211105-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/20140113_211105-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/20140113_211122-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/20140113_211122-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/20140113_211122-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/20140113_211122-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/20140113_211122-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/20140113_213001-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/20140113_213001-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/20140113_213001-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/20140113_213001-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/20140113_213001-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/20140113_223152-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/20140113_223152-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/20140113_223152-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/20140113_223152-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/20140113_223152-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1934.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1934.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1934.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1934.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1934.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1936-scaled.jpg\" width=\"2000\" height=\"713\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1936-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1936-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1936-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1936-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1937.jpg\" width=\"2000\" height=\"598\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1937.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1937.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1937.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1937.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1938-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1938-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1938-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1938-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1938-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1939-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1939-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1939-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1939-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1939-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1940-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1940-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1940-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1940-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1940-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1941-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1941-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1941-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1941-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1941-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1942-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1942-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1942-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1942-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1942-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1943-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1943-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1943-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1943-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1943-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1944-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1944-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1944-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1944-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1944-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1945-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1945-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1945-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1945-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1945-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1946-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1946-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1946-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1946-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1946-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1947-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1947-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1947-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1947-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1947-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1948-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1948-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1948-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1948-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1948-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1949-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1949-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1949-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1949-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1949-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1950-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1950-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1950-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1950-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1950-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1951-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1951-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1951-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1951-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1951-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1952-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1952-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1952-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1952-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1952-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1954-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1954-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1954-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1954-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1954-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1955-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1955-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1955-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1955-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1955-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1956-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1956-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1956-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1956-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1956-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1957-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1957-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1957-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1957-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1957-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1958-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1958-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1958-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1958-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1958-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1962-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1962-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1962-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1962-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1962-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1963-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1963-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1963-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1963-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1963-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1964-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1964-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1964-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1964-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1964-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1966-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1966-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1966-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1966-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1966-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1967-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1967-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1967-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1967-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1967-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1968-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1968-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1968-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1968-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1968-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1969-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1969-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1969-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1969-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1969-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1970-scaled.jpg\" width=\"2000\" height=\"654\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1970-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1970-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1970-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1970-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1971-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1971-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1971-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1971-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1971-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1972-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1972-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1972-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1972-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1972-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1973-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1973-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1973-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1973-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1973-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1974-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1974-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1974-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1974-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1974-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1975-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1975-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1975-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1975-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1975-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1976-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1976-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1976-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1976-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1976-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1977-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1977-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1977-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1977-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1977-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1978-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1978-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1978-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1978-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1978-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1979-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1979-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1979-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1979-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1979-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1980-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1980-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1980-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1980-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1980-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1981-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1981-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1981-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1981-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1981-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1982-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1982-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1982-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1982-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1982-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1983-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1983-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1983-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1983-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1983-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1984-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1984-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1984-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1984-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1984-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1985-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1985-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1985-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1985-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1985-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1986-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1986-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1986-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1986-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1986-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1987-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1987-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1987-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1987-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1987-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1990-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1990-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1990-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1990-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1990-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1992-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1992-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1992-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1992-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1992-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1993-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1993-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1993-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1993-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1993-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1996-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1996-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1996-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1996-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_1996-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_1998-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_1998-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_1998-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_1998-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_1998-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2001-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2001-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2001-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2001-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2001-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2002-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2002-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2002-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2002-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2002-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2004-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2004-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2004-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2004-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2004-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2005-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2005-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2005-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2005-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2005-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2006-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2006-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2006-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2006-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2006-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2008-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2008-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2008-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2008-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2008-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2010-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2010-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2010-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2010-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2010-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2012-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2012-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2012-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2012-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2012-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2014-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2014-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2014-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2014-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2014-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2016-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2016-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2016-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2016-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2016-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2022-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2022-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2022-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2022-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2022-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2026-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2026-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2026-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2026-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2026-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2027-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2027-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2027-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2027-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2027-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2032-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2032-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2032-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2032-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2032-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2033-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2033-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2033-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2033-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2033-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2034-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2034-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2034-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2034-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2034-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2035-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2035-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2035-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2035-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2035-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2037-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2037-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2037-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2037-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2037-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2038-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2038-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2038-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2038-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2038-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2041-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2041-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2041-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2041-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2041-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2043-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2043-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2043-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2043-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2043-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2045-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2045-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2045-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2045-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2045-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2047-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2047-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2047-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2047-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2047-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2048-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2048-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2048-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2048-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2048-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2049-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2049-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2049-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2049-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2049-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2050-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2050-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2050-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2050-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2050-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2051-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2051-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2051-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2051-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2051-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2052-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2052-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2052-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2052-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2052-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2053-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2053-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2053-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2053-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2053-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2057-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2057-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2057-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2057-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2057-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2058-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2058-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2058-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2058-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2058-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2059-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2059-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2059-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2059-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2059-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2060-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2060-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2060-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2060-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2060-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2061-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2061-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2061-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2061-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2061-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2062-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2062-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2062-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2062-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2062-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2063-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2063-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2063-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2063-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2063-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2064-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2064-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2064-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2064-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2064-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2069-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2069-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2069-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2069-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2069-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2071-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2071-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2071-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2071-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2071-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2073-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2073-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2073-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2073-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2073-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2083-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2083-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2083-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2083-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2083-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2086-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2086-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2086-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2086-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2086-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2087.jpg\" width=\"960\" height=\"1280\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2087.jpg 600w, /content/images/wp-content/uploads/2014/04/img_2087.jpg 960w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2089-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2089-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2089-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2089-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2089-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2091-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2091-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2091-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2091-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2091-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2092-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2092-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2092-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2092-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2092-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2093-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2093-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2093-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2093-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2093-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2094-scaled.jpg\" width=\"2000\" height=\"693\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2094-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2094-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2094-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2094-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2095-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2095-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2095-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2095-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2095-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2096-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2096-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2096-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2096-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2096-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2097-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2097-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2097-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2097-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2097-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2098-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2098-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2098-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2098-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2098-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2101-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2101-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2101-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2101-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2101-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2102-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2102-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2102-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2102-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2102-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2112-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2112-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2112-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2112-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2112-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2117-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2117-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2117-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2117-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2117-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2120-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2120-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2120-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2120-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2120-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2121-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2121-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2121-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2121-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2121-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2122-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2122-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2122-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2122-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2122-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2123-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2123-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2123-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2123-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2123-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2124-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2124-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2124-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2124-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2124-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2125-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2125-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2125-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2125-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2125-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2127-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2127-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2127-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2127-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2127-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2128-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2128-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2128-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2128-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2128-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2130-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2130-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2130-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2130-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2130-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2131-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2131-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2131-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2131-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2131-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2133-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2133-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2133-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2133-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2133-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2134-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2134-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2134-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2134-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2134-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2135-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2135-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2135-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2135-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2135-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2136-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2136-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2136-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2136-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2136-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2137-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2137-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2137-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2137-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2137-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2138-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2138-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2138-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2138-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2138-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2139-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2139-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2139-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2139-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2139-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2140-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2140-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2140-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2140-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2140-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2141.jpg\" width=\"960\" height=\"1280\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2141.jpg 600w, /content/images/wp-content/uploads/2014/04/img_2141.jpg 960w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2142-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2142-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2142-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2142-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2142-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2143-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2143-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2143-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2143-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2143-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2144-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2144-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2144-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2144-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2144-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2145-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2145-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2145-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2145-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2145-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2146-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2146-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2146-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2146-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2146-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2147-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2147-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2147-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2147-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2147-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2148-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2148-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2148-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2148-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2148-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2150-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2150-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2150-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2150-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2150-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2154-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2154-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2154-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2154-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2154-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2157-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2157-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2157-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2157-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2157-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2158-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2158-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2158-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2158-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2158-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2159-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2159-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2159-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2159-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2159-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2162-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2162-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2162-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2162-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2162-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2163-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2163-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2163-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2163-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2163-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2164-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2164-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2164-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2164-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2164-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2165-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2165-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2165-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2165-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2165-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2166-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2166-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2166-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2166-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2166-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2167-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2167-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2167-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2167-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2167-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2169-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2169-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2169-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2169-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2169-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2170-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2170-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2170-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2170-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2170-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2171-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2171-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2171-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2171-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2171-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2173-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2173-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2173-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2173-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2173-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2174-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2174-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2174-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2174-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2174-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2175-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2175-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2175-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2175-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2175-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2176-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2176-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2176-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2176-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2176-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2177-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2177-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2177-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2177-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2177-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2178-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2178-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2178-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2178-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2178-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2179-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2179-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2179-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2179-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2179-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2180-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2180-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2180-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2180-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2180-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2181-scaled.jpg\" width=\"2000\" height=\"472\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2181-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2181-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2181-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2181-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2182-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2182-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2182-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2182-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2182-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2184-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2184-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2184-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2184-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2184-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2185-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2185-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2185-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2185-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2185-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2186-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2186-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2186-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2186-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2186-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2188-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2188-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2188-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2188-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2188-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2189-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2189-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2189-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2189-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2189-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2190-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2190-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2190-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2190-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2190-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2191-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2191-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2191-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2191-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2191-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2192-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2192-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2192-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2192-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2192-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2193-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2193-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2193-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2193-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2193-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2194-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2194-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2194-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2194-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2194-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2195-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2195-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2195-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2195-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2195-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2196-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2196-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2196-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2196-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2196-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2197-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2197-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2197-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2197-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2197-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2199-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2199-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2199-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2199-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2199-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2203-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2203-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2203-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2203-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2203-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2204.jpg\" width=\"2000\" height=\"2000\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2204.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2204.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2204.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2204.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2205-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2205-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2205-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2205-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2205-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2206-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2206-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2206-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2206-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2206-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2207-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2207-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2207-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2207-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2207-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2208-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2208-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2208-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2208-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2208-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2210-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2210-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2210-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2210-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2210-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2211-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2211-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2211-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2211-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2211-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2215-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2215-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2215-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2215-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2215-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2217-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2217-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2217-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2217-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2217-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-gallery-card kg-width-wide\"\u003e\u003cdiv class=\"kg-gallery-container\"\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2222-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2222-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2222-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2222-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2222-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2224-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2224-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2224-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2224-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2224-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2226-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2226-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2226-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2226-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2226-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2227-scaled.jpg\" width=\"1920\" height=\"2560\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2227-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2227-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2227-scaled.jpg 1600w, /content/images/wp-content/uploads/2014/04/img_2227-scaled.jpg 1920w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2228-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2228-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2228-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2228-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2228-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-row\"\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2232-scaled.jpg\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2232-scaled.jpg 600w, /content/images/size/w1000/wp-content/uploads/2014/04/img_2232-scaled.jpg 1000w, /content/images/size/w1600/wp-content/uploads/2014/04/img_2232-scaled.jpg 1600w, /content/images/size/w2400/wp-content/uploads/2014/04/img_2232-scaled.jpg 2400w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003cdiv class=\"kg-gallery-image\"\u003e\u003cimg src=\"/content/images/wp-content/uploads/2014/04/img_2233.jpg\" width=\"960\" height=\"1280\" loading=\"lazy\" alt srcset=\"/content/images/size/w600/wp-content/uploads/2014/04/img_2233.jpg 600w, /content/images/wp-content/uploads/2014/04/img_2233.jpg 960w\" sizes=\"(min-width: 720px) 720px\"\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/figure\u003e","title":"Tokyo Mobile Meetup January 2014"},{"content":"Before coming to work for Automattic, I pair programmed a lot. Developers who pair learn from each other in a symbiotic sort of manner. It's definitely a good way to get a project off to a fast start and to come to consensus on design and intent. Once I started working at Automattic, I realized pair programming is less of a reality since we're all in disparate locations across the globe. We tend to use code reviews as our way of pairing together on code and making sure the design we discussed in chat came through properly. We've also done screen sharing but never really felt it was effective.\nI recently discovered Screenhero and it's not much different than screen sharing with Skype or Hangouts except for some simple, but significant differences.\nI can see the remote cursor.The remote can see my cursor and in addition the direction I'm scrolling.Dead simple to install and connect with people.The HD video and audio also add to the awesomeness of Screenhero. I've only used it a handful of times and I can already tell you it's in my arsenal of tools.\nThe price for individuals is free but there are some team-based features coming like group calls. Prices aren't set yet but they've mentioned $20/user/month. Can't say it's worth it yet for that price - team sharing might indeed be worth it.\n","permalink":"https://aaron.blog/using-screenhero-for-pair-programming/","summary":"\u003cp\u003eBefore coming to work for Automattic, I \u003ca href=\"http://en.wikipedia.org/wiki/Pair_programming\" rel=\"noopener\"\u003epair programmed\u003c/a\u003e a lot.  Developers who pair learn from each other in a symbiotic sort of manner.  It's definitely a good way to get a project off to a fast start and to come to consensus on design and intent.  Once I started working at Automattic, I realized pair programming is less of a reality since we're all in disparate locations across the globe.  We tend to use code reviews as our way of pairing together on code and making sure the design we discussed in chat came through properly.  We've also done screen sharing but never really felt it was effective.\u003c/p\u003e","title":"Using Screenhero for Pair Programming Remotely"},{"content":"My friend Marty gave a nugget of wisdom today that I thought I'd share. I mentioned how I've been doing good at losing weight but this past weekend I cut loose a little with family over. I intended on relaxing the calorie count so I don't feel guilty at all. His quote though, brought things into perspective.\nProgress is never a straight line. You just need to re-focus this week.Progress really never is linear. Looking at all of the metrics I've been capturing relating to my progress with improving my health that is certainly the case.\nMy suggestion is to make sure you're normalizing all the data in your life. Look for trends, not sharp points. Learn to understand when a data point is an outlier and exclude it from your data set.\n","permalink":"https://aaron.blog/the-non-linear-nature-of-progress/","summary":"\u003cp\u003eMy friend Marty gave a nugget of wisdom today that I thought I'd share.  I mentioned how I've been doing good at losing weight but this past weekend I cut loose a little with family over.  I intended on relaxing the calorie count so I don't feel guilty at all.  His quote though, brought things into perspective.\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/progress-01.png\" class=\"kg-image\" alt=\"progress-01\" loading=\"lazy\" width=\"300\" height=\"300\"\u003e\u003c/figure\u003e\u003cblockquote\u003eProgress is never a straight line.  You just need to re-focus this week.\u003c/blockquote\u003e\u003cp\u003eProgress really never is linear.  Looking at all of the metrics I've been capturing relating to my progress with improving my health that is certainly the case.\u003c/p\u003e","title":"The Non-Linear Nature of Progress"},{"content":"Enjoy chasing storms from your couch like me? There's a great app called \"TVNweather Live Storm Chasing\" that I've been using to watch live streams from actual storm chasers out in the field. You'll see names like Reed Timmer (TornadoVideos.net) and the team running the Dominator 2.\nTVNweather Live Storm Chasing for iOS\nThe app itself needs some work with stability, but the collection of active streams is incredibly handy and fun to watch. An Android version is coming soon as well. Until then you can also watch on their site at http://tvnweather.com/live.\n","permalink":"https://aaron.blog/live-storm-chasing-app/","summary":"\u003cp\u003eEnjoy chasing storms from your couch like me?  There's a great app called \"TVNweather Live Storm Chasing\" that I've been using to watch live streams from actual storm chasers out in the field.  You'll see names like Reed Timmer (\u003ca href=\"http://www.tornadovideos.net\" rel=\"noopener\"\u003eTornadoVideos.net\u003c/a\u003e) and the team running the \u003ca href=\"http://en.wikipedia.org/wiki/SRV_Dominator\" rel=\"noopener\"\u003eDominator 2\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://itunes.apple.com/us/app/tvnweather-live-storm-chasing/id839867076?mt=8\" rel=\"noopener\"\u003eTVNweather Live Storm Chasing for iOS\u003c/a\u003e\u003c/p\u003e\u003cp\u003eThe app itself needs some work with stability, but the collection of active streams is incredibly handy and fun to watch.  An Android version is coming soon as well.  Until then you can also watch on their site at \u003ca href=\"http://tvnweather.com/live\" rel=\"noopener\"\u003ehttp://tvnweather.com/live\u003c/a\u003e.\u003c/p\u003e","title":"Live Storm Chasing App"},{"content":"It's grilling season again (finally) here in Wisconsin. I got my Range iOS-enabled thermometer over the winter season and only used it once with a ham. I used it today with grilling burgers, brats and steak and really enjoyed it.\nThe Range thermometer is really fast at responding to temperature change. The problem I always have with even the best analog thermometers is that once they reach a high temperature, it's hard to test temperature of meat that may be a little bit colder. I can move the Range thermometer around from each thing on the grill and not have to wait for it to reset.\nThe Range also has a great feature that isn't well documented. On the silicone cord there is a ring magnet that helps keep the cord under control when you want to close the lid to your oven or grill. It's fantastic because the ring is a little bigger than the cord so it can move freely through it.\nThe application Range built is fairly basic but extremely useful. There is also a developer SDK available for anyone that wants to write their own apps to work with the Range. It's definitely worth the money!\n","permalink":"https://aaron.blog/grilling-season-with-my-range-thermometer/","summary":"\u003cp\u003eIt's grilling season again (finally) here in Wisconsin.  I got my \u003ca href=\"http://supermechanical.com/range/\" rel=\"noopener\"\u003eRange iOS-enabled thermometer\u003c/a\u003e over the winter season and only used it once with a ham.  I used it today with grilling burgers, brats and steak and really enjoyed it.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/img_2722.jpg\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/img_2722.jpg\" class=\"kg-image\" alt=\"Range Thermometer\" loading=\"lazy\" width=\"300\" height=\"300\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eThe Range thermometer is really fast at responding to temperature change.  The problem I always have with even the best analog thermometers is that once they reach a high temperature, it's hard to test temperature of meat that may be a little bit colder.  I can move the Range thermometer around from each thing on the grill and not have to wait for it to reset.\u003c/p\u003e","title":"Grilling Season with my Range Thermometer"},{"content":"Glue is the thing that ... well ... glues everything together. You don't see glue (if the product is made right) but it plays an important role in the overall satisfaction with the product. If you buy a bird house that has bad gluing technique or not enough glue, you will be upset when the first bird flattens the house.\nThe same hold trues for mobile apps as well as web and desktop applications. For sake of this discussion, I'm limiting myself to mobile apps and mentioning some specific iOS technologies.\nSo much time is seemingly spent on visual design and user experience that occasionally the glue doesn't receive the attention it should. Glue is everything that the user doesn't see outright in your app:\nPersistence / State Restoration Core Data Data Synchronization (iCloud, Dropbox, Simperium, etc.) UIStateRestoration Performance Power CPU Memory Integration \u0026amp; Networking Internationalization Dates \u0026amp; Times Accessibility Unit Testing It's easy to get hung up on the visual details and leave some of these incredibly important things to the side. Users may not see the problems outright but they will come to associate a bad feel with your app if things don't work quite right.\nExample: The Nike+ Fuelband AppI've been an avid Fuelband user for almost two years now. I've come to treat the device as something that I use every day and pay attention to how much activity I've done for the day. Getting to green is my goal and it irritates me when things don't work. Some of the glue that has been broken lately includes funky sync over Bluetooth LE and bad dates/times when syncing with their web app. The web app itself has also been flaky and slow. This is a good example of when a beautifully designed app fails the user and causes distrust of the entire brand.\nThe RecourseAdmit your mistakes and start fixing them. The WordPress iOS app has been around for quite some time but had been unstable for a while. The nature of open source software means there are so many hands touching it. We started focusing on the glue to make the experience better overall. Once we got some of the stability back into the project, we moved forward with the UI changes for iOS 7. Things are improving with every release - especially when we are able to spend the time to replace aging code. Core Data has a big role in the application and stabilizing the stack there with multithreading has made a huge improvement. We have big plans for further UI improvements! Get involved at http://make.wordpress.org/mobile if you're interested. :)\nThe BalanceA balance has to be maintained between visual and the non-visual elements of an application. If you're in charge of running a mobile project, make sure the people paying the bill know upfront what's important to keep in mind when developing an application. If they don't want to pay for what you're estimating, don't take the project. This may be a little hard at an ad agency or working with an internal department, but the outcome is the same. Make sure they know if all they want to focus on is the user experience and visual design, the output will be of prototype quality. It's your job to educate your customer and product owner of the importance of the things that can't be seen.\n","permalink":"https://aaron.blog/on-the-importance-of-glue/","summary":"\u003cp\u003eGlue is the thing that ... well ... glues everything together.  You don't see glue (if the product is made right) but it plays an important role in the overall satisfaction with the product.  If you buy a bird house that has bad gluing technique or not enough glue, you will be upset when the first bird flattens the house.\u003c/p\u003e\u003cp\u003eThe same hold trues for mobile apps as well as web and desktop applications.  For sake of this discussion, I'm limiting myself to mobile apps and mentioning some specific iOS technologies.\u003c/p\u003e","title":"On the Importance of Glue"},{"content":"If you run unit tests inside of Xcode, you may wish to turn on the behavior to show the test results after they run.\nGo to Preferences in Xcode.Click on the Behaviors tab.Click on Succeeds.Check the box shown and select \"Show\" then \"Test Navigator\".Repeat step 4 for Fails as well.Now when your tests finish (failed or succeeded) you'll see the pretty green or red marks.\n","permalink":"https://aaron.blog/if-you-run-unit-tests-in-xcode/","summary":"\u003cp\u003eIf you run unit tests inside of Xcode, you may wish to turn on the behavior to show the test results after they run.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/testbehaviors.png\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/testbehaviors.png\" class=\"kg-image\" alt=\"TestBehaviors\" loading=\"lazy\" width=\"696\" height=\"510\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003col\u003e\u003cli\u003eGo to Preferences in Xcode.\u003c/li\u003e\u003cli\u003eClick on the Behaviors tab.\u003c/li\u003e\u003cli\u003eClick on Succeeds.\u003c/li\u003e\u003cli\u003eCheck the box shown and select \"Show\" then \"Test Navigator\".\u003c/li\u003e\u003cli\u003eRepeat step 4 for Fails as well.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eNow when your tests finish (failed or succeeded) you'll see the pretty green or red marks.\u003c/p\u003e","title":"If you run Unit Tests in Xcode"},{"content":"You may not be aware but Apple has a pretty extensive set of public e-mail discussion lists.\nhttps://lists.apple.com/mailman/listinfo\nThere are topics ranging from fundamental Objective-C issues through to development for their various desktop applications. Some of the lists are quite chatty but you can subscribe in digest format to get a daily e-mail instead of each individual message. This is a great way to reach engineers working on the piece you're interested in and is a quite interesting place to lurk.\n","permalink":"https://aaron.blog/apples-public-mailing-lists/","summary":"\u003cp\u003eYou may not be aware but Apple has a pretty extensive set of public e-mail discussion lists.\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://lists.apple.com/mailman/listinfo\" rel=\"noopener\"\u003ehttps://lists.apple.com/mailman/listinfo\u003c/a\u003e\u003c/p\u003e\u003cp\u003eThere are topics ranging from fundamental Objective-C issues through to development for their various desktop applications.  Some of the lists are quite chatty but you can subscribe in digest format to get a daily e-mail instead of each individual message.  This is a great way to reach engineers working on the piece you're interested in and is a quite interesting place to lurk.\u003c/p\u003e","title":"Apple's Public Mailing Lists"},{"content":"This is a pretty definite way of making me unsubscribe from your marketing emails.\n","permalink":"https://aaron.blog/how-to-make-me-instantly-unsubscribe/","summary":"\u003cp\u003eThis is a pretty definite way of making me unsubscribe from your marketing emails.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/bieber.jpg\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/bieber.jpg\" class=\"kg-image\" alt=\"Bieber\" loading=\"lazy\" width=\"696\" height=\"633\"\u003e\u003c/a\u003e\u003c/figure\u003e","title":"How to Make Me Instantly Unsubscribe"},{"content":"Ever since I visited House of Shields downtown San Francisco, the cocktail called a Dark \u0026amp; Stormy has been one of my favorites. HoS makes their own variation of it, one part using a ginger syrup that they make themselves. I ended up finding a decent combination of ingredients locally that I prefer from HoS' recipe. Most Dark \u0026amp; Stormy recipes will indicate to use Gosling's Black Seal rum which can be hard to obtain. Gosling's also makes a ginger beer which is the staple used in a Dark \u0026amp; Stormy. I found a zippier ginger beer and a tasty alternative to Black Seal.\nAaron's Dark \u0026amp; Stormy1.5 - 2oz Captain Morgan Black Spiced Rum [review]0.5oz Lime Juice (Real Lime works great)6oz Reed's Extra Ginger Brew beer (no alcohol)Pint GlassCubed IceRoughly 205cal per serving\nThere are technically formal methods to make the Dark \u0026amp; Stormy. At House of Shields they have all the fancy bar equipment and hand tools. I just dump all the ingredients on top of the ice in the pint glass and then stir with a straw.\nEnjoy!\n","permalink":"https://aaron.blog/dark-stormy-cocktail/","summary":"\u003cp\u003eEver since I visited \u003ca href=\"http://www.thehouseofshields.com/\" rel=\"noopener\"\u003eHouse of Shields\u003c/a\u003e downtown San Francisco, the cocktail called a Dark \u0026amp; Stormy has been one of my favorites.  HoS makes their own variation of it, one part using a ginger syrup that they make themselves.  I ended up finding a decent combination of ingredients locally that I prefer from HoS' recipe.  Most Dark \u0026amp; Stormy recipes will indicate to use \u003ca href=\"http://www.goslingsrum.com/microsites/blackseal.php\" rel=\"noopener\"\u003eGosling's Black Seal rum\u003c/a\u003e which can be hard to obtain.  Gosling's also makes a ginger beer which is the staple used in a Dark \u0026amp; Stormy.  I found a zippier ginger beer and a tasty alternative to Black Seal.\u003c/p\u003e","title":"Dark \u0026 Stormy Cocktail"},{"content":"I've noticed that when I've achieved a free drink at Starbucks, I tend to add on things I normally wouldn't. Sometimes the baristas like to make a special comment about it as well which makes me feel guilty about ordering literally \"anything I want.\"\nYou know what, f**k that.\nI've purchased 12 drinks to get one free. It's one of the reasons I continue to patronize Starbucks because I feel like that 12th drink is nice to get. I don't go very often any more so when I do get the free one, I like to take advantage of their offer. Hell, I've dropped probably $60 by then!\nThis past Friday I ordered a Venti Soy Green Tea Frappucino with Protein Powder. I've ordered this before and like the consistency having both the soy and protein powder. I get to the window to pay and I mention I have a free drink coming. Before I can hand my phone over the barista makes a snarky comment:\nOh well that makes sense why you added all those extras on!Immediately I tell him that the order isn't that unusual for me. His reply?\nWow that's a really expensive drink.No shit, Sherlock. I tell him something like that's why I don't come to Starbucks often anymore. I get my drink and go on my way.\nAs I'm driving home I realize his attempt at humorous banter was a complete fail and ended up making the customer feel uncomfortable. I've recalled similar situations before when I get my free drink. What the f**k do they expect that I'm going to get a tall drip coffee for my freebie? If I ordered 20 espresso shots in a Venti cup, by all means point me out and call me a bitch in front of everyone.\nThat's my rant. Scan my damn phone, be polite and give me my goddamn free drink.\n","permalink":"https://aaron.blog/those-judgmental-baristas/","summary":"\u003cp\u003eI've noticed that when I've achieved a free drink at Starbucks, I tend to add on things I normally wouldn't.  Sometimes the baristas like to make a special comment about it as well which makes me feel guilty about ordering literally \"anything I want.\"\u003c/p\u003e\u003cp\u003eYou know what, f**k that.\u003c/p\u003e\u003cp\u003eI've purchased 12 drinks to get one free.  It's one of the reasons I continue to patronize Starbucks because I feel like that 12th drink is nice to get.  I don't go very often any more so when I do get the free one, I like to take advantage of their offer.  Hell, I've dropped probably $60 by then!\u003c/p\u003e","title":"Those Judgmental Baristas"},{"content":"You know you've lost your mind when you trip a little and the recovery move resembles a move from your step aerobics routine and you hear the instructor say:\n\"Now, funky push!\"","permalink":"https://aaron.blog/you-know-youve-lost-your-mind-when/","summary":"\u003cp\u003eYou know you've lost your mind when you trip a little and the recovery move resembles a move from your step aerobics routine and you hear the instructor say:\u003c/p\u003e\u003cblockquote\u003e\"Now, funky push!\"\u003c/blockquote\u003e","title":"You Know You've Lost Your Mind When..."},{"content":"Dave Thomas has a really excellent post about how it's time to kill Agile. It's a very well thought out post and it embodies a lot of my concerns with the movement. I have a few insights to add to his perspective.\nI was a software engineer consultant for over five years. The Java and open-source community had adopted Agile and implementations like Scrum and XP fairly quickly. It made us find the way to get software that was good out the door in a timely fashion. It made us not sit on our asses collecting requirements for months before any real work was done. I worked on a very successful search project at a Fortune 500 company following Agile methods loosely based on Scrum. I still believe to this day the level of success was due to the project being in \"skunkworks\" and therefore having a simplified budget and leaving us in control of the moving parts. Once that project got into a normal budgeting process, innovation floundered.\nSomething happened to Agile. Maybe it was Microsoft adopting Scrum, maybe it was some publication for management types convincing them Agile would save them oodles of money. I'm not really sure what it was. But at some point the word Agile because synonymous with \"bring in consultants give them incredibly short deadlines and expect high quality for cheeeeeeeeeap\" - and it lost its power.\nI think I realized this shift was coming when a previous manager at a client thought they were being astute by terming their development lifecycle was \"pwagile\" - a combination of waterfall and Agile. It was at that point I saw that the true value of Agile development had been muddied and it would be hard to come back from that. The one thing I saw that made Scrum fail time and time again was budgeting by feature and not for an entire project. Management couldn't see the benefit of this change of perspective, so I lost hope.\nThere has also been this big rush to train companies to become Agile partners - to learn the ways of \"doing it right\". At some point we forgot that Agile was meant to be lean, easy to remember, something that is taught and then becomes reflex memory. Adding so much process (and selling training \u0026amp; tools) around it defeats the purpose. I found it interesting how many of these trainers no longer developed software themselves. I really believe in dog-fooding your own stuff.\nDave's plea to consider developing with agility instead of following \"Agile\" is dead on. Get back to making software great and doing what people actually need.\n","permalink":"https://aaron.blog/agility-not-agile-development/","summary":"\u003cp\u003eDave Thomas has a really excellent post about how \u003ca href=\"http://pragdave.me/blog/2014/03/04/time-to-kill-agile/\" rel=\"noopener\"\u003eit's time to kill Agile\u003c/a\u003e.  It's a very well thought out post and it embodies a lot of my concerns with the movement.  I have a few insights to add to his perspective.\u003c/p\u003e\u003cp\u003eI was a software engineer consultant for over five years.  The Java and open-source community had adopted Agile and implementations like Scrum and XP fairly quickly.  It made us find the way to get software that was good out the door in a timely fashion.  It made us not sit on our asses collecting requirements for months before any real work was done.  I worked on a very successful search project at a Fortune 500 company following Agile methods loosely based on Scrum.  I still believe to this day the level of success was due to the project being in \"skunkworks\" and therefore having a simplified budget and leaving us in control of the moving parts.  Once that project got into a normal budgeting process, innovation floundered.\u003c/p\u003e","title":"Agility Not Agile Development"},{"content":"I'm making a pledge as a software developer to think of accessibility with every change I make. My first step was to turn on iOS' VoiceOver and test everything I'm working on with it. In the first five minutes of using it, I've discovered so many necessary improvements to make the app even useful for someone who has trouble seeing. There are many more accessibility tools than VoiceOver (like Dynamic Type) that should also be on your list to try. Baby steps.\nDevelopers: Spend some time with your apps without your eyes. It's not fair to place limits on sight-impaired people because you're lazy.\nI'm going to stop being lazy.\n","permalink":"https://aaron.blog/stop-being-lazy-with-accessibility/","summary":"\u003cp\u003eI'm making  a pledge as a software developer to think of accessibility with every change I make.  My first step was to turn on iOS' VoiceOver and test everything I'm working on with it.  In the first five minutes of using it, I've discovered so many necessary improvements to make the app even useful for someone who has trouble seeing.  There are many more accessibility tools than VoiceOver (like Dynamic Type) that should also be on your list to try.  Baby steps.\u003c/p\u003e","title":"Stop Being Lazy with Accessibility"},{"content":"A couple days ago we had to replace the air conditioning condenser and evaporator units in our home's central air system. The unit was 21 years old and was leaking coolant slowly throughout the last summer. It was just time. The new unit is much more efficient, handles more air, and should be quieter even though it's physically larger.\nWe had been talking about another item in our furnace and that was replacing the A/C motor with a D/C motor. The A/C motor is called a PSC or permanent split capacitor motor and they are largely inefficient over time. The Nest Thermostat allows you to schedule your fan to be on for time periods in the day. We've been running our fan for 15 minutes every hour during the daytime to keep air circulating to reduce warm/cool spots and to help reduce dust. Running the fan that much with a standard PSC blower is expensive and taxing on the motor itself.\nThe D/C motor is called an ECM - or electronically commutated motor. It has a built-in transformer to convert to DC, uses less energy and can change its speed variably without suffering on efficiency. The motors are also built with better ball bearings and are meant to be on 24x7 for the life of the unit. The ECM motor is set to run at the lowest \u0026amp; quietest speed for circulation and then speeds up when the heat or A/C turns on. We can leave the fan on 24x7 for the same (maybe even less) energy cost that the old A/C fan for 15 minutes every hour between 6am and 10pm.\nIf you have an energy efficient furnace (which we don't right now) then you may be eligible for a rebate from your State. The State of Wisconsin gives homeowners a $125 check for replacing their PSC motors with an ECM if you have a furnace that is efficient at 90% or greater.\nMore about ECMshttp://www.thomasnet.com/articles/machinery-tools-supplies/ECM-Motors-HVAC-Systems\nhttp://www.comfortgurus.com/product_info.php/products_id/3646\n","permalink":"https://aaron.blog/home-hacks-dc-blower-motor/","summary":"\u003cp\u003eA couple days ago we had to replace the air conditioning condenser and evaporator units in our home's central air system.  The unit was 21 years old and was leaking coolant slowly throughout the last summer.  It was just time.  The new unit is much more efficient, handles more air, and should be quieter even though it's physically larger.\u003c/p\u003e\u003cp\u003eWe had been talking about another item in our furnace and that was replacing the A/C motor with a D/C motor.  The A/C motor is called a PSC or permanent split capacitor motor and they are largely inefficient over time.  The \u003ca href=\"http://www.nest.com\" rel=\"noopener\"\u003eNest Thermostat\u003c/a\u003e allows you to schedule your fan to be on for time periods in the day.  We've been running our fan for 15 minutes every hour during the daytime to keep air circulating to reduce warm/cool spots and to help reduce dust.  Running the fan that much with a standard PSC blower is expensive and taxing on the motor itself.\u003c/p\u003e","title":"Home Hacks - DC Blower Motor"},{"content":"I purchased an UpDesk PowerUp Series I (original) last year and love it. I got the standard maple-colored desk top and am very happy with the density of the wood, quality laminate and curved front edge. The one thing I was not very satisfied with was the mounting option given for the clasps keeping the wiring under it from hanging. I was given a good amount of these self-adhesive twist plastic cable ties:\nSimple yet effective solution, right? Yes but only if the adhesive pad would stick longer than a couple of days to the underside of the desk. The adhesive was hit or miss on the surface. I searched around for solutions that were permanent but not so much that if I wanted to move wires or add additional ones it would require unscrewing something. I ended up finding these gems at Home Depot:\nSource: HomeDepot.com\nThey have an adhesive backing to them and an optional screw hole for which I bought 1/2\" #8 wood screws. Works like a charm. You then take any old zip tie and feed it through and tie your cords up.\nSo now I have the wires under the table all neatly attached. I no longer have to worry about finding plastic ties fallen off the table and sticking to my hardwood floor.\n","permalink":"https://aaron.blog/mounting-wires-under-a-standing-desk/","summary":"\u003cp\u003eI purchased an \u003ca href=\"https://myupdesk.com/\" rel=\"noopener\"\u003eUpDesk PowerUp Series I\u003c/a\u003e (original) last year and love it.  I got the standard maple-colored desk top and am very happy with the density of the wood, quality laminate and curved front edge.  The one thing I was not very satisfied with was the mounting option given for the clasps keeping the wiring under it from hanging.  I was given a good amount of these self-adhesive twist plastic cable ties:\u003c/p\u003e","title":"Mounting Wires Under a Standing Desk"},{"content":"We bought our first house in June 2001 and moved to our new home in January 2013. In that 12 years (plus the five years in apartments) we've create a crap ton of content. That content is in the form of home video and movies on VCR tapes, photographs, negatives and all of the digital files stored on CDs, DVDs, and hard drives. I realized that some of that content is on aging media (VCR tapes and IDE hard drives) and needs to be moved to newer storage to prevent inaccessibility. We all have a responsibility of archiving that content so that our future selves and generations have access to it for historical and entertainment purposes. We all must become archivists.\nOur parents had an easier job - pay gobs of money to buy the photographic film and get it developed and printed after. Then physically store those photos in an album or shoebox and then archive them in a dark basement. Passing those archives on simply requires handing the printed media over to the next caretaker. With our photo albums now becoming entirely digital, this process just won't work any more for new content.\nMy first digital camera was a crappy Sony hybrid webcam/battery powered digital camera. It took the world's shittiest photos but at the time was super convenient and fun to use. I did a really poor job about keeping track of those images because of it's novelty - I didn't realize how important those files would be. I look back at my huge Aperture/iPhoto library and see big gaps. I kick myself all the time for losing those images. I may have burned them onto a CD or DVD but I've since lost track of that by poorly labeling the discs with a marker.\nThere are several things we have to do to keep the content we create safe and available for future generations:\nBack everything up. Back up it again. Consider backing up to the Internet to a media sharing service like Flickr/Picasa Web/SmugMug or a file backup service like Backblaze.Leave instructions for next of kin on how to access your archives. Passwords, safe deposit boxes, physical storage locations should be listed.Label things - hard drives, CDs, DVDs. Make sure it's visibly marked as important to prevent it from being tossed out.Convert for the future - Magnetic media isn't forever - move files to newer technology and file formats as time passes.Organize - You don't know what you have unless you can find it easily. Physically organize as well as digitally.I just bought an Elgato Video Capture device to help convert video from VCR tapes over to a digital format. It's time consuming but worth it in the end. I can't believe some of the home video footage I found that I've totally forgotten about!\nWe have a responsibility to keep moving those archives forward as new technology comes out. Every couple of years make sure to audit your collections and make sure you're keeping the memories safe for when you really want to relive them and to pass them on.\n","permalink":"https://aaron.blog/on-aging-content-the-long-process-of-conversion/","summary":"\u003cp\u003eWe bought our first house in June 2001 and moved to our new home in January 2013.  In that 12 years (plus the five years in apartments) we've create a crap ton of content.  That content is in the form of home video and movies on VCR tapes, photographs, negatives and all of the digital files stored on CDs, DVDs, and hard drives.  I realized that some of that content is on aging media (VCR tapes and IDE hard drives) and needs to be moved to newer storage to prevent inaccessibility.  We all have a responsibility of archiving that content so that our future selves and generations have access to it for historical and entertainment purposes.  We all must become archivists.\u003c/p\u003e","title":"On Aging Content - The Long Process of Conversion"},{"content":"I'm not terribly paranoid about online security compared to some. I do take some extra precautions when doing things online that involves financial data and logging into accounts. Here are a few rules I follow internally when out and about:\nPublic WiFi should only be used when cellular data isn't sufficient or availableAlways ask what the SSID (network name) is when using public WiFi at a coffee shop - don't assume you've picked the right oneNever ever do anything with financial information (banks, credit cards including purchases)Never create new accounts over public WiFiWired and \"protected\" WiFi at hotels is just as unsafe as public WiFiUse a VPN (virtual private network) to a trusted destination when using a public Internet connectionSecure your home WiFi with a strong password and WPA2-PSK encryptionA virtual private network connection lets you create a safe connection from where you are to where the VPN server resides. Depending on the VPN configuration it may allow you to go back out to the Internet from there or you may be limited to local connections only on the server side. In the case of how I use VPN, I connect to a home server which effectively makes someone in the coffee shop I'm at unable to see my online activity.\nI have a Mac mini running Mac OS X Mavericks + Server at home - it actually is the machine I use in my entertainment stand for movies and recording TV off the air. I have the VPN service turned on so that when I am out of my home I can tunnel through to home and back out onto the Internet. VPN can be configured on most mobile devices (Android and iOS) and laptops (Windows, Mac and Linux). It does require some technical knowledge to do this.\nThere are also apps you can purchase for your mobile device to give you a VPN connection. The problem I have with these services is you have no idea what's happening on the server side. If the point of using VPN is to prevent eavesdroppers from seeing your secure data then you have to be able to trust the entire connection. VPN does provide a false sense of security in the sense that it's not securing the entire conversation. VPN is only secure up to the end point (server). If someone has access to that server, there is a chance they can snoop on your activity.\nIn the end, just be careful what you're doing online in public areas. Cellular data is certainly more secure than public WiFi but it's still susceptible to snooping. There is a fine line between paranoia and convenience so you'll just want to determine where that line lies for yourself.\n","permalink":"https://aaron.blog/why-i-use-vpn-on-my-mobile-devices/","summary":"\u003cp\u003eI'm not terribly paranoid about online security compared to some. I do take some extra precautions when doing things online that involves financial data and logging into accounts.  Here are a few rules I follow internally when out and about:\u003c/p\u003e\u003cul\u003e\u003cli\u003ePublic WiFi should only be used when cellular data isn't sufficient or available\u003c/li\u003e\u003cli\u003eAlways ask what the SSID (network name) is when using public WiFi at a coffee shop - don't assume you've picked the right one\u003c/li\u003e\u003cli\u003eNever ever do anything with financial information (banks, credit cards including purchases)\u003c/li\u003e\u003cli\u003eNever create new accounts over public WiFi\u003c/li\u003e\u003cli\u003eWired and \"protected\" WiFi at hotels is just as unsafe as public WiFi\u003c/li\u003e\u003cli\u003eUse a VPN (virtual private network) to a trusted destination when using a public Internet connection\u003c/li\u003e\u003cli\u003eSecure your home WiFi with a strong password and WPA2-PSK encryption\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eA virtual private network connection lets you create a safe connection from where you are to where the VPN server resides.  Depending on the VPN configuration it may allow you to go back out to the Internet from there or you may be limited to local connections only on the server side.  In the case of how I use VPN, I connect to a home server which effectively makes someone in the coffee shop I'm at unable to see my online activity.\u003c/p\u003e","title":"Why I Use VPN on My Mobile Devices"},{"content":"Public Service Announcement - Be careful who you send emoji characters to via text message - they may not be getting the output you expect!\nI was at a friend's house and she showed me her phone after getting a bunch of cryptic messages from an iOS user. I realized emoji doesn't necessarily render correctly on Android phones. Apparently KitKat fixes this to some success, however, she can't upgrade to that OS quite yet. Google Hangouts as her SMS application helped some but only to send. She still receives the malformed UTF-16 characters.\nAnyone have a good suggestion for an app or keyboard to install on a non-rooted Android device?\n","permalink":"https://aaron.blog/android-emoji-isnt-what-you-expect/","summary":"\u003cp\u003ePublic Service Announcement - Be careful who you send emoji characters to via text message - they may not be getting the output you expect!\u003cbr\u003e\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/image.jpg\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/image.jpg\" class=\"kg-image\" alt=\"image\" loading=\"lazy\" width=\"259\" height=\"300\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eI was at a friend's house and she showed me her phone after getting a bunch of cryptic messages from an iOS user.  I realized emoji doesn't necessarily render correctly on Android phones.  Apparently KitKat fixes this to some success, however, she can't upgrade to that OS quite yet.  Google Hangouts as her SMS application helped some but only to send.  She still receives the malformed UTF-16 characters.\u003c/p\u003e","title":"Android Emoji Isn't What You Expect"},{"content":"A few years back I switched to Verizon Wireless here in the States which is a predominately CDMA-based carrier with a fairly large LTE 4G network. Previously I was on AT\u0026amp;T which is a traditional GSM network with a LTE 4G network as well. I left AT\u0026amp;T because their footprint where I spend most of my summer is quite poor and results in the inability to work remotely there or even enjoy streaming radio.\nThere are times I do regret leaving a GSM provider.\nOne of those times is when I remember I can't use data on the phone while I'm talking on it. Granted I don't make all that many phone calls with my iPhone 5s but when I do it always seems to be when I'm using data. I've heard the arguments before - why do you need to surf the web when you're talking on the phone? In the past that argument satiated me but recently I've realized I use data ALL THE TIME.\niMessage - You can't get messages while you're on the phone unless the sender is on a phone and has the ability to send a text when it fails. Sucks.FaceTime - Same deal, no data, no FaceTime. The FaceTime users get no indicator you're on the phone because your Mac back home is ringing without you there.Navigation - I use Waze for navigation and traffic - it's a pain when I'm on the phone right before my last turn comes and the data craps out.Finding shit for friends - I can't tell you how many times I've been on the phone and need to look something up like directions or what have you.The list could go on forever. Verizon DOES have a solution for this - route calls over their 3G or LTE networks. It's been in place for some time with their 3G network but they've neglected to roll it out to their most popular phone models including the iPhone. This update would effectively turn all your calls into VoIP calls and go over the data connection. I do this already with FaceTime Audio when I'm talking with someone who has it but the downside is by doing it myself, I'm using up my data allocation. I'd assume Voice over LTE wouldn't go against your data plan but rather stay with the voice plan.\nI'm not sure what the delays are other than they underestimated strain on their already strained network. I'd also like to go back in time and kick whomever designed CDMA in the head that didn't allow simultaneous voice and data.\n","permalink":"https://aaron.blog/verizon-wireless-voice-over-3glte/","summary":"\u003cp\u003eA few years back I switched to Verizon Wireless here in the States which is a predominately CDMA-based carrier with a fairly large LTE 4G network.  Previously I was on AT\u0026amp;T which is a traditional GSM network with a LTE 4G network as well.  I left AT\u0026amp;T because their footprint where I spend most of my summer is quite poor and results in the inability to work remotely there or even enjoy streaming radio.\u003c/p\u003e","title":"Verizon Wireless \u0026 Voice over 3G/LTE"},{"content":"Last week I was having a discussion with my coworkers about how I think someone should feel when viewing/interacting with their site stats in the WordPress world. I made a list of things I'd expect and one of them I wrote down was definitely inspired by my personality:\nhttps://twitter.com/gregibrown/status/452133773727899648\nI do really like shiny things. Okay maybe part of it is attention-related but in general I like things that stand out. Why have stuff that's dull and drab when it perform the same function but LOOK AWESOME?\nYou've seen my laptop.\nYou've seen my desk lamp.\nAnd I'll further confirm it with my shoes and custom WordPress backpack.\nShiny Things keep me engaged and entertained.\n","permalink":"https://aaron.blog/i-like-shiny-things/","summary":"\u003cp\u003eLast week I was having a discussion with my coworkers about how I think someone should feel when viewing/interacting with their site stats in the WordPress world.  I made a list of things I'd expect and one of them I wrote down was definitely inspired by my personality:\u003c/p\u003e\u003cp\u003ehttps://twitter.com/gregibrown/status/452133773727899648\u003c/p\u003e\u003cp\u003eI \u003cstrong\u003edo\u003c/strong\u003e really like shiny things.  Okay maybe part of it is attention-related but in general I like things that stand out.  Why have stuff that's dull and drab when it perform the same function but LOOK AWESOME?\u003c/p\u003e","title":"I like Shiny Things"},{"content":"I have the strangest glitch happening with Mac OS X Mavericks and I can't find anyone else describing the same issue. I have a D-Link DUB-H7 USB 2.0 hub connected to my Thunderbolt Display which is in turn connected to my retina 15\" MacBook Pro.\nIf I cold boot with this hub connected to my Thunderbolt Display, both the USB external keyboard (not connected to the hub) and the built-in keyboard have a number of keys that do not function. I, J, M and a few others I know of offhand that don't work. As soon as I disconnect the hub, both keyboards work perfectly. Also, after I log into Mavericks, the keyboards work fine regardless of the hub being connected or not.\nWTF\n","permalink":"https://aaron.blog/mavericks-usb-hub-oddities/","summary":"\u003cp\u003eI have the strangest glitch happening with Mac OS X Mavericks and I can't find anyone else describing the same issue.  I have a D-Link DUB-H7 USB 2.0 hub connected to my Thunderbolt Display which is in turn connected to my retina 15\" MacBook Pro.\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/img_2629.jpg\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/img_2629.jpg\" class=\"kg-image\" alt=\"USB Hub\" loading=\"lazy\" width=\"300\" height=\"300\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eIf I cold boot with this hub connected to my Thunderbolt Display, both the USB external keyboard (not connected to the hub) and the built-in keyboard have a number of keys that do not function.  I, J, M and a few others I know of offhand that don't work.  As soon as I disconnect the hub, both keyboards work perfectly.  Also, after I log into Mavericks, the keyboards work fine regardless of the hub being connected or not.\u003c/p\u003e","title":"Mavericks USB Hub Oddities"},{"content":"I've been using my MacBook Pro with the lid closed and only the external Thunderbolt Display. I'm finding it helps keep focus on the task I'm working on. I didn't want to waste room on my desk with the Griffin laptop stand, so I moved to a BookArc which is working great!\nhttp://www.twelvesouth.com/product/bookarc-for-macbook-pro-retina\n","permalink":"https://aaron.blog/stand-for-macbook-pro-when-its-closed/","summary":"\u003cp\u003eI've been using my MacBook Pro with the lid closed and only the external Thunderbolt Display.  I'm finding it helps keep focus on the task I'm working on.  I didn't want to waste room on my desk with the Griffin laptop stand, so I moved to a BookArc which is working great!\u003c/p\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/img_2624.jpg\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/img_2624.jpg\" class=\"kg-image\" alt=\"BookArc\" loading=\"lazy\" width=\"696\" height=\"522\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003e\u003ca href=\"http://www.twelvesouth.com/product/bookarc-for-macbook-pro-retina\" rel=\"noopener\"\u003ehttp://www.twelvesouth.com/product/bookarc-for-macbook-pro-retina\u003c/a\u003e\u003c/p\u003e","title":"Stand for MacBook Pro When It's Closed"},{"content":"Last fall I gave a four minute flash talk at our company meetup. Everyone is required to give one and it can be on any topic. I chose to tell a story about how I got revenge on my boss.\n[wpvideo k15SG13b]\n","permalink":"https://aaron.blog/how-i-got-well-played-revenge/","summary":"\u003cp\u003eLast fall I gave a four minute flash talk at our company meetup.  Everyone is required to give one and it can be on any topic.  I chose to tell a story about how I got revenge on my boss.\u003c/p\u003e\u003cp\u003e[wpvideo k15SG13b]\u003c/p\u003e","title":"How I Got Well Played Revenge"},{"content":"Martin Fowler coined one of my favorite phrases while on a panel at the XP 2000 Conference regarding change and if your employer isn't willing to change:\nIf you can't change your organization, change your organization!I don't think much of eXtreme Programming but I think the phrase itself applies itself to many things in life. Whenever someone asks me for advice about their jobs or careers I usually bring this phrase up at some point. The idea is, if you don't like what you're doing and your company isn't willing to invest in you or your ideas, then go somewhere else. I just like how elegantly short the quote is!\nSource: Martin Fowler, The XP 2000 Conference\n","permalink":"https://aaron.blog/change-your-organization/","summary":"\u003cp\u003eMartin Fowler coined one of my favorite phrases while on a panel at the XP 2000 Conference regarding change and if your employer isn't willing to change:\u003c/p\u003e\u003cblockquote\u003eIf you can't change your organization, change your organization!\u003c/blockquote\u003e\u003cp\u003eI don't think much of eXtreme Programming but I think the phrase itself applies itself to many things in life.  Whenever someone asks me for advice about their jobs or careers I usually bring this phrase up at some point.  The idea is, if you don't like what you're doing and your company isn't willing to invest in you or your ideas, then go somewhere else.  I just like how elegantly short the quote is!\u003c/p\u003e","title":"Change Your Organization"},{"content":"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!\nBack 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.\nThe 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.\nImmediately 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:\nCentering yourselfExercise to reset your day (yoga, aerobics, a quick walk)Elimination of distractionsListening to your own mindand one of the ones I recently rediscovered myself:\nWriting stuff down in a paper notebook makes me remember it laterExercise 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!\nSo 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.\n","permalink":"https://aaron.blog/my-attention-so-far/","summary":"\u003cp\u003eIn the recent past \u003ca href=\"http://astralbodi.es/2013/10/31/paying-attention-at-automattic/\" rel=\"noopener\"\u003eI blogged about my trials and tribulations\u003c/a\u003e with my experiences with ADHD working at Automattic.  I figured it was time to give a follow up on how things are going!\u003c/p\u003e\u003cp\u003eBack 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.\u003c/p\u003e","title":"My Attention So Far"},{"content":"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.\nGeneral Utilities1Password - Probably the best password manager out there combined with mobile appsCloudup - quick way to share images, videos, text (ask me for a referral code)Coffitivity - coffeehouse sounds to help boost productivityCyberduck - SFTP clientDaisyDisk - finding where all my space has goneDropboxEvernote - where I keep my larger notes, graphics, PDF filesParallels Desktop - for the occasional booting of old Mac OS \u0026amp; Windows VMsRadium - menu bar radio streamingRdio - monthly subscription-based song streamingRescueTime - track my app usage to determine if I'm distractedSimplenote - for my quick note taking needsSkype - sadly yesSlack - communication for our team - web socket-based system like HipChat but betterGraphicsAdobe Photoshop CC - go-to app for image editingAperture (more for personal use)Balsamiq Mockups - easy mockupsBartender - organize your menu bar extras areaCamtasia 2 - screen castsColor PickerJoin.me - easy screen sharing - I use it more for helping people fix computer problems remotelyPixelmatorSnagItDevelopment - GeneralBase - for digging around SQLite files; especially handy debugging Core DataCharles - proxying application for testing remote callsHockeyApp - binary distribution for testingKaleidoscope - 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 codingTextMate - Still my favorite text editorTextual - Mac IRC clientDevelopment - iOSAppCode - 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 filesystemsPaintCode - easiest way to get Core Graphics code from images or hand-drawn UI elementsReflector - transmit your iOS device screen to your computer for recordingSpark Inspector - interactively debug your UIView layers \u0026amp; NSNotificationCenter callsXcodexScope - helpful UI tools for your MacDevelopment - AndroidAndroid StudioGenymotion - Android VM manager - lurv","permalink":"https://aaron.blog/software-i-use-every-day/","summary":"\u003cp\u003eIn the spirit of \u003ca href=\"http://astralbodi.es/2014/04/03/my-desk-setup/\"\u003eyesterday's post\u003c/a\u003e, 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.\u003c/p\u003e\u003ch1 id=\"general-utilities\"\u003eGeneral Utilities\u003c/h1\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"https://agilebits.com/onepassword\" rel=\"noopener\"\u003e1Password\u003c/a\u003e - Probably the best password manager out there combined with mobile apps\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://cloudup.com\" rel=\"noopener\"\u003eCloudup\u003c/a\u003e - quick way to share images, videos, text (ask me for a referral code)\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://coffitivity.com\" rel=\"noopener\"\u003eCoffitivity\u003c/a\u003e - coffeehouse sounds to help boost productivity\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://cyberduck.io\" rel=\"noopener\"\u003eCyberduck\u003c/a\u003e - SFTP client\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.daisydiskapp.com\" rel=\"noopener\"\u003eDaisyDisk\u003c/a\u003e - finding where all my space has gone\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://db.tt/8LJJmAH\" rel=\"noopener\"\u003eDropbox\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://www.evernote.com/referral/Registration.action?uid=2421839\u0026amp;sig=ccd1ee0ea909f6f205e1869523c7bd16\" rel=\"noopener\"\u003eEvernote\u003c/a\u003e - where I keep my larger notes, graphics, PDF files\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.parallels.com/products/desktop/\" rel=\"noopener\"\u003eParallels Desktop\u003c/a\u003e - for the occasional booting of old Mac OS \u0026amp; Windows VMs\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://catpigstudios.com\" rel=\"noopener\"\u003eRadium\u003c/a\u003e - menu bar radio streaming\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.rdio.com\" rel=\"noopener\"\u003eRdio\u003c/a\u003e - monthly subscription-based song streaming\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://www.rescuetime.com\" rel=\"noopener\"\u003eRescueTime\u003c/a\u003e - track my app usage to determine if I'm distracted\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.simplenote.com\" rel=\"noopener\"\u003eSimplenote\u003c/a\u003e - for my quick note taking needs\u003c/li\u003e\u003cli\u003eSkype - sadly yes\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.slack.com\" rel=\"noopener\"\u003eSlack\u003c/a\u003e - communication for our team - web socket-based system like HipChat but better\u003c/li\u003e\u003c/ul\u003e\u003ch1 id=\"graphics\"\u003eGraphics\u003c/h1\u003e\u003cul\u003e\u003cli\u003eAdobe Photoshop CC - go-to app for image editing\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://www.apple.com/aperture/\" rel=\"noopener\"\u003eAperture\u003c/a\u003e (more for personal use)\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://www.rescuetime.com\" rel=\"noopener\"\u003eBalsamiq Mockups\u003c/a\u003e - easy mockups\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.macbartender.com\" rel=\"noopener\"\u003eBartender\u003c/a\u003e - organize your menu bar extras area\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.techsmith.com/camtasia.html\" rel=\"noopener\"\u003eCamtasia 2\u003c/a\u003e - screen casts\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://itunes.apple.com/us/app/color-picker/id502401013?mt=12\" rel=\"noopener\"\u003eColor Picker\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://join.me\" rel=\"noopener\"\u003eJoin.me\u003c/a\u003e - easy screen sharing - I use it more for helping people fix computer problems remotely\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.pixelmator.com\" rel=\"noopener\"\u003ePixelmator\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.techsmith.com/snagit.html\" rel=\"noopener\"\u003eSnagIt\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003ch1 id=\"development-general\"\u003eDevelopment - General\u003c/h1\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"http://menial.co.uk/base/\" rel=\"noopener\"\u003eBase\u003c/a\u003e - for digging around SQLite files; especially handy debugging Core Data\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.charlesproxy.com\" rel=\"noopener\"\u003eCharles\u003c/a\u003e - proxying application for testing remote calls\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://hockeyapp.net/features/\" rel=\"noopener\"\u003eHockeyApp\u003c/a\u003e - binary distribution for testing\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.kaleidoscopeapp.com\" rel=\"noopener\"\u003eKaleidoscope\u003c/a\u003e - arguably the most beautiful diff tool - ignore whitespace is still not a feature :(\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.jetbrains.com/phpstorm/\" rel=\"noopener\"\u003ePHPStorm\u003c/a\u003e - for when I have to get into WordPress and WordPress.com API coding\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://macromates.com\" rel=\"noopener\"\u003eTextMate\u003c/a\u003e - Still my favorite text editor\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.codeux.com\" rel=\"noopener\"\u003eTextual\u003c/a\u003e - Mac IRC client\u003c/li\u003e\u003c/ul\u003e\u003ch1 id=\"development-ios\"\u003eDevelopment - iOS\u003c/h1\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"http://www.jetbrains.com/objc/\" rel=\"noopener\"\u003eAppCode\u003c/a\u003e - alternative IDE for Objective-C - I switch between Xcode and here for specific reasons (future post?)\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.macroplant.com/iexplorer/\" rel=\"noopener\"\u003eiExplorer\u003c/a\u003e - could not live without the ability to dig around device filesystems\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.paintcodeapp.com\" rel=\"noopener\"\u003ePaintCode\u003c/a\u003e - easiest way to get Core Graphics code from images or hand-drawn UI elements\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.airsquirrels.com/reflector/\" rel=\"noopener\"\u003eReflector\u003c/a\u003e - transmit your iOS device screen to your computer for recording\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://sparkinspector.com\" rel=\"noopener\"\u003eSpark Inspector\u003c/a\u003e - interactively debug your UIView layers \u0026amp; NSNotificationCenter calls\u003c/li\u003e\u003cli\u003eXcode\u003c/li\u003e\u003cli\u003e\u003ca href=\"https://iconfactory.com/software/xscope\" rel=\"noopener\"\u003exScope\u003c/a\u003e - helpful UI tools for your Mac\u003c/li\u003e\u003c/ul\u003e\u003ch1 id=\"development-android\"\u003eDevelopment - Android\u003c/h1\u003e\u003cul\u003e\u003cli\u003eAndroid Studio\u003c/li\u003e\u003cli\u003e\u003ca href=\"http://www.genymotion.com\" rel=\"noopener\"\u003eGenymotion\u003c/a\u003e - Android VM manager - lurv\u003c/li\u003e\u003c/ul\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/installed-apps.png\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/installed-apps.png\" class=\"kg-image\" alt=\"Installed Apps\" loading=\"lazy\" width=\"270\" height=\"300\"\u003e\u003c/a\u003e\u003c/figure\u003e","title":"Software I Use Every Day"},{"content":"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.\n","permalink":"https://aaron.blog/new-host/","summary":"\u003cp\u003eI'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.\u003c/p\u003e","title":"New Host"},{"content":"I always like seeing people's desk setups so I figured I would post mine. I didn't pretty everything up for the photo.\nUpDesk v1Retina MacBook Pro 15\" + Thunderbolt DisplayiPad Air, iPod touch 5th gen, iPhone 4 + personal iPhone 5s taking the photoWired Apple keyboard (I like the number keypad)Magic MouseCreative GigaWorks T20 speakersVornado \"Zippi\" FanGriffin Elevator standSome crappy corner monitor stand from AmazonThe 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:\nSun Drop soda - a swell caffeine supplement much akin to Mountain DewM2 \u0026amp; P2 iDevice stands by ElagoPencil by 53 - stylus for Paper app","permalink":"https://aaron.blog/my-desk-setup/","summary":"\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/img_2608.jpg\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/img_2608.jpg\" class=\"kg-image\" alt=\"IMG_2608\" loading=\"lazy\" width=\"696\" height=\"367\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eI always like seeing people's desk setups so I figured I would post mine.  I didn't pretty everything up for the photo.\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"http://www.myupdesk.com\" rel=\"noopener\"\u003eUpDesk\u003c/a\u003e v1\u003c/li\u003e\u003cli\u003eRetina MacBook Pro 15\" + Thunderbolt Display\u003c/li\u003e\u003cli\u003eiPad Air, iPod touch 5th gen, iPhone 4 + personal iPhone 5s taking the photo\u003c/li\u003e\u003cli\u003eWired Apple keyboard (I like the number keypad)\u003c/li\u003e\u003cli\u003eMagic Mouse\u003c/li\u003e\u003cli\u003eCreative GigaWorks T20 speakers\u003c/li\u003e\u003cli\u003eVornado \"Zippi\" Fan\u003c/li\u003e\u003cli\u003eGriffin Elevator stand\u003c/li\u003e\u003cli\u003eSome crappy corner monitor stand from Amazon\u003c/li\u003e\u003cli\u003eThe \u003ca href=\"https://cloudup.com/cNvAmRafaq9\" rel=\"noopener\"\u003etrippy light fixture\u003c/a\u003e is to help me with my attention span - it does help! - \u003ca href=\"http://www.amazon.com/HoMedics-LT-100-ColorMotion-Therapy-Light/dp/B0002RPZT2/ref=cm_cd_ql_qh_dp_t\" rel=\"noopener\"\u003eHomedics Mood Wave\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e[Edit] A few additional items from conversations on Twitter and alike:\u003c/p\u003e","title":"My Desk Setup"},{"content":"Giving a presentation with Xcode on screen? Don't forget about Presentation mode in Fonts \u0026amp; Colors!\nIt doesn't help with the text size in the navigator but at least everyone will see your code nice and clear!\n","permalink":"https://aaron.blog/xcode-presentation-mode/","summary":"\u003cp\u003eGiving a presentation with Xcode on screen?  Don't forget about Presentation mode in Fonts \u0026amp; Colors!\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/2014-04-02_20-51-43.png\" class=\"kg-image\" alt=\"2014-04-02_20-51-43\" loading=\"lazy\" width=\"750\" height=\"550\"\u003e\u003c/figure\u003e\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"/content/images/wordpress-com/2014/04/2014-04-02_20-52-00.png\"\u003e\u003cimg src=\"/content/images/wordpress-com/2014/04/2014-04-02_20-52-00.png\" class=\"kg-image\" alt=\"2014-04-02_20-52-00\" loading=\"lazy\" width=\"550\" height=\"204\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eIt doesn't help with the text size in the navigator but at least everyone will see your code nice and clear!\u003c/p\u003e","title":"Xcode Presentation Mode"},{"content":"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.\nI'm checking in the whole effing workspace.\nWhy?\nEvery 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\u0026nbsp;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.\n","permalink":"https://aaron.blog/checking-in-cocoapods-files/","summary":"\u003cp\u003eI'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.\u003c/p\u003e\u003cp\u003eI'm checking in the whole effing workspace.\u003c/p\u003e\u003cp\u003eWhy?\u003c/p\u003e\u003c!--kg-card-begin: html--\u003e\u003cul\u003e\n\t\u003cli\u003eEvery branch, especially master, should be compilable and archivable up to a point.\n\u003cul\u003e\n\t\u003cli\u003eCaveat 1: Xcode is a piece of shit sometimes and will break things because it can between versions.\u003c/li\u003e\n\t\u003cli\u003eCaveat 2: Provisioning Profiles.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\t\u003cli\u003eCocoaPods is a well-maintained tool, however, Specs are a crap-shoot.\n\u003cul\u003e\n\t\u003cli\u003eSpecs can disappear.\u003c/li\u003e\n\t\u003cli\u003eSpecs can be unofficially maintained.\u003c/li\u003e\n\t\u003cli\u003eSpecs can be wrong.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\t\u003cli\u003eChecking in your Pods directory ensures the best possible snapshot of the pre-binary code.\n\u003cul\u003e\n\t\u003cli\u003eForcing 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.\u003c/li\u003e\n\t\u003cli\u003eYou may decide to drop Pods support and forget how to use it.\u003c/li\u003e\n\t\u003cli\u003eWouldn't it be nice to do diffs on your dependency classes?\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\t\u003cli\u003eXcode Bots doesn't work well enough yet with CocoaPods for me to want to install Pods every build\n\u003cul\u003e\n\t\u003cli\u003eI'm also not sold on Xcode Bots itself - it's quite unreliable and likes to smoke my server's CPU.\u003c/li\u003e\n\t\u003cli\u003eCocoaPods needs to not be a hinderance - its pretty\u0026nbsp;innocuous when the risky work (installing Pods) is done and checked in.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\u003c!--kg-card-end: html--\u003e\u003cp\u003eThat sums up my thoughts.  I primarily work on \u003ca href=\"https://github.com/wordpress-mobile/WordPress-iOS\" rel=\"noopener\"\u003eWordPress for iOS\u003c/a\u003e 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.\u003c/p\u003e","title":"Checking in CocoaPods files"},{"content":"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:\nBackground refresh will start your app if it's not running.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.You can't really debug wake by push other than with logging.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.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.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.\n","permalink":"https://aaron.blog/ios-background-refresh-force-killing/","summary":"\u003cp\u003eIf 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:\u003c/p\u003e\u003col\u003e\u003cli\u003eBackground refresh will start your app if it's not running.\u003c/li\u003e\u003cli\u003eIf 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.\u003c/li\u003e\u003cli\u003eYou can't really debug wake by push other than with logging.\u003c/li\u003e\u003cli\u003eTouching 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.\u003c/li\u003e\u003cli\u003eDon'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.\u003c/li\u003e\u003cli\u003eUpdate 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.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eTake a look at \u003ca href=\"https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html\" rel=\"noopener\"\u003eApple's documentation on app lifecycle\u003c/a\u003e - there is an excellent set of graphics to demonstrate where things hook in.\u003c/p\u003e","title":"iOS Background Refresh \u0026 Force Killing"},{"content":"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.\nWhen 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.\nI 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. :D\nI'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!\nI'm seriously looking forward to spring/summer so that my partner and I can get out with our bicycles!\n","permalink":"https://aaron.blog/nerdy-fitness/","summary":"\u003cp\u003eNerds 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.\u003c/p\u003e\u003cp\u003eWhen 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.\u003c/p\u003e","title":"Nerdy Fitness"},{"content":"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.\n[slideshare id=32054049\u0026amp;doc=advancedcoredata-140307170729-phpapp01]\n","permalink":"https://aaron.blog/cocoaconf-chicago-advanced-core-data/","summary":"\u003cfigure class=\"kg-card kg-image-card\"\u003e\u003ca href=\"http://www.flickr.com/photos/cocoaconf/12998406694/\"\u003e\u003cimg src=\"/content/images/7358/12998406694_86461a65f2.jpg\" class=\"kg-image\" alt=\"Aaron Douglas - Advanced Core Data\" loading=\"lazy\" width=\"500\" height=\"333\"\u003e\u003c/a\u003e\u003c/figure\u003e\u003cp\u003eI was lucky enough to be able to speak at \u003ca href=\"http://cocoaconf.com/chicago-2014/sessions/douglas-core-data\" rel=\"noopener\"\u003eCocoaConf Chicago 2014\u003c/a\u003e 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.\u003c/p\u003e\u003cp\u003e[slideshare id=32054049\u0026amp;doc=advancedcoredata-140307170729-phpapp01]\u003c/p\u003e","title":"CocoaConf Chicago - Advanced Core Data"},{"content":"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.\nWork Wherever, WheneverAutomattic 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.\nEquipment for your JobFirst 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!\nYour TeamEveryone 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:\nThe Automattic Mobile team Hangout this past weekOne 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!\nCultureIt 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.\nIt'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!\nWe'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!\n","permalink":"https://aaron.blog/working-at-automattic/","summary":"\u003cp\u003eSome people have asked me what it's like working for \u003ca href=\"http://automattic.com\" rel=\"noopener\"\u003eAutomattic\u003c/a\u003e.  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.\u003c/p\u003e\u003ch1 id=\"work-wherever-whenever\"\u003eWork Wherever, Whenever\u003c/h1\u003e\u003cp\u003eAutomattic 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.\u003c/p\u003e","title":"Working at Automattic"},{"content":"Do you have a ScanSnap scanner on your Mac and scan things to Evernote? You notice that if you have Evernote running, ScanSnap can't launch Evernote properly? You might get an error message like the following:\nFailed to start up Evernote for Mac.Make sure that the selected application is installed correctly.Turns out Evernote is broken. EvernoteHelper.app is an embedded application that runs while Evernote is running (or while it's in the background) and if you're set to English, its name is the same as the main Evernote application. Technically, the CFBundleName is being overridden in the InfoPlist.strings file. You can verify this by running /Applications/Utilities/Activity Monitor.app and seeing:\nHow do you fix this? Well, Evernote should really fix it. In fact, I've opened a support request with them. But until then, you can follow these steps to modify the bundle name by hand. Follow these directions at your own risk.\nOpen Terminal.app in /Applications/Utilities.Type the following command and hit enter: curl -o /Applications/Evernote.app/Contents/Library/LoginItems/EvernoteHelper.app/Contents/Resources/English.lproj/InfoPlist.strings https://i.cloudup.com/ovQskXFl1h.stringsType the following command and hit enter: killall EvernoteHelperRestart Evernote and try scanning!Please note that this fix will most likely break every time Evernote is updated. Like I mentioned I submitted a support request to their team to see if it can get fixed permanently. This was attempted with the stand-alone download of Evernote, not the version available in the Mac App Store (it may work with the App Store version too).\nUpdated 2014/01/02 - The team handling support at Evernote has acknowledged receipt of the problem and is forwarding it to the product team for review.\n","permalink":"https://aaron.blog/scansnap-on-mac-not-opening-evernote-properly/","summary":"\u003cp\u003eDo you have a ScanSnap scanner on your Mac and scan things to Evernote?  You notice that if you have Evernote running, ScanSnap can't launch Evernote properly?  You might get an error message like the following:\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"/content/images/wordpress-com/2013/12/2013-12-27_15-05-56.png\" class=\"kg-image\" alt=\"Failed to start up Evernote for Mac. Make sure that the selected application is installed correctly.\" loading=\"lazy\" width=\"420\" height=\"170\"\u003e\u003cfigcaption\u003eFailed to start up Evernote for Mac.Make sure that the selected application is installed correctly.\u003c/figcaption\u003e\u003c/figure\u003e\u003cp\u003eTurns out Evernote is broken.  EvernoteHelper.app is an embedded application that runs while Evernote is running (or while it's in the background) and if you're set to English, its name is the same as the main Evernote application.  Technically, the CFBundleName is being overridden in the InfoPlist.strings file.  You can verify this by running /Applications/Utilities/Activity Monitor.app and seeing:\u003c/p\u003e","title":"Fix ScanSnap on Mac not opening Evernote properly"},{"content":"I cut the cord two years ago from cable TV but am interested in using apps for the iPad and Roku to watch live cable TV. I called Time Warner Cable today to ask them if they offered a cable TV package that wouldn't require a physical installation. TL;DR - using the TWC TV apps (iPad, Android tablet, Roku) requires a physical install.\nMy SituationMost of the summer (April - October) I'm not home on the weekends as we have a seasonal spot at a campground about 3 hours away from home. We ended up cutting cable two years ago and don't really miss it for what we used of it. At one time I ran a MythTV server with two tuner cards, and it worked well. I have since moved to two dual-tuner HDHomeRun units with Elgato's EyeTV running on a Mac mini. It works well enough and it allows me to stream and download any recorded content to my iPad/iPhone. I can even watch live remotely and not pay anything extra.\nThere are a couple cable shows that I pay for per-episode on iTunes since cutting the cord. I'm happy to do so as they are high quality recordings that don't get permanently erased when the shit cable DVR craps out. Some cable channels stream their content on their site for free with ads included - some are even at HD quality. There are a couple channels that I really want to watch, but I can't without an active cable subscription - CNN being one of these.\nI recently moved into a new house and it was not wired for cable TV. I use ethernet and WiFi to pull content from the networked tuners, so it didn't matter. The less infrastructure, the better in my opinion. I do not want cable lines strewn through my house or outside along the siding because the installers can't take the time to fish cable properly. No thanks.\nWhat I WantI want a subscription to cable TV that is solely supported by two things:\nAll of their apps (iOS, Android, smart TVs, and Roku)Third-party sites requiring cable subscriptionsZero infrastructure in my house is a requirement - I already pay for broadband Internet from the cable company. There is a cable line in my house, terminated at the modem in the basement. I shouldn't need anything else.\nI want to be able to watch shows live - on demand would be great - through the devices I already own. I want to be able to log into websites and watch their content which should be offered to the public anyway supported by ads.\nWhy Cable Companies Won't Do ItWell, at least why they won't do it soon.\nCable companies have invested a LOT in their television signal processing and distribution technologies. They've made the move in the past five years to going to a switched (IP-based) network to allow them to grow outside the constraints of electromagnetic spectrum limitations of cable line medium. They also have a lot of people working for them to support the networks including sales staff, engineers, technicians and all the associated management around that.\nThere are also several legal limitations to take into account. Local municipalities and States levy heavy tariffs [examples] against cable companies that are passed onto the consumer. Internet service is typically not covered by this - only sales tax. TV not limited to a physical location gets tricky when taxation is involved.\nThis move means their primary bread \u0026amp; butter will be broadband Internet. More people are ditching cable TV and keeping their broadband Internet. Internet access is now a utility and is as difficult to live without at home as it would be without gas or water. Requiring people to have broadband Internet service keeps a good portion of that cable network support staff employed.\nThe Sad RealityFinding content that you want to watch can be really difficult. Studios and distribution companies have made it way too complicated (if not impossible) to legally purchase or view some shows. Sadly, people are still going to turn to BitTorrent to find the shows they want to watch. It's lost revenue for advertisers, cable companies, and software developers for cable companies not to support this new model of accessing TV.\nCable companies need to adapt and quickly. We're only going to say \"TAKE MY MONEY!!\" for so long before we move on!\n","permalink":"https://aaron.blog/cable-companies-please-take-my-money/","summary":"\u003cp\u003eI cut the cord two years ago from cable TV but am interested in using apps for the iPad and Roku to watch live cable TV.  I called Time Warner Cable today to ask them if they offered a cable TV package that wouldn't require a physical installation.  TL;DR - using the TWC TV apps (iPad, Android tablet, Roku) requires a physical install.\u003c/p\u003e\u003ch1 id=\"my-situation\"\u003eMy Situation\u003c/h1\u003e\u003cp\u003eMost of the summer (April - October) I'm not home on the weekends as we have a seasonal spot at a campground about 3 hours away from home.  We ended up cutting cable two years ago and don't really miss it for what we used of it.  At one time I ran a \u003ca href=\"http://www.mythtv.org\" rel=\"noopener\"\u003eMythTV\u003c/a\u003e server with two tuner cards, and it worked well.  I have since moved to two dual-tuner \u003ca href=\"http://www.silicondust.com\" rel=\"noopener\"\u003eHDHomeRun\u003c/a\u003e units with \u003ca href=\"http://www.elgato.com/eyetv/eyetv-3\" rel=\"noopener\"\u003eElgato's EyeTV\u003c/a\u003e running on a Mac mini.  It works well enough and it allows me to stream and download any recorded content to my iPad/iPhone.  I can even watch live remotely and not pay anything extra.\u003c/p\u003e","title":"Cable companies: Please, take my money!"},{"content":"Back in iOS 4, a nifty block-based observer method was added to NSNotificationCenter:\n(id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block;\nSuper convenient, right? I love using blocks to pass simple callbacks to controllers instead of creating a delegate protocol. There is a catch with this method, and it's not terribly obvious unless you're looking closely. The method returns (id) - according to Apple's documentation the return object is \"An opaque object to act as the observer\". What does this mean?\nTypically when you register your class instance as an observer, you pair it with a removeObserver somewhere else usually in dealloc. The thing is, removing self will NOT remove block-based observers! The opaque object that the method returned needs to be retained somewhere so that removeObserver can be called with that object. This is especially important if you're calling self within the block to eliminate a retain cycle/memory leak.\nRead more about the method and it's usage in Apple's documentation.\n","permalink":"https://aaron.blog/nsnotificationcenter-block-based-observer-2/","summary":"\u003cp\u003eBack in iOS 4, a nifty block-based observer method was added to NSNotificationCenter:\u003cbr\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003e(id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block;\u003c/code\u003e\u003cbr\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eSuper convenient, right? I love using blocks to pass simple callbacks to controllers instead of creating a delegate protocol. There is a catch with this method, and it's not terribly obvious unless you're looking closely. The method returns (id) - according to Apple's documentation the return object is \"An opaque object to act as the observer\".  What does this mean?\u003c/p\u003e","title":"NSNotificationCenter Block-based Observer"},{"content":"All of my teen and adult life I realized that I perceive the world a little differently than most. I’d like to think I’m a smart guy but I never did very well in high school on exams especially for topics that weren’t science/math/computer related. I couldn’t read textbooks very well; my eyes would gloss over the details and I’d realize after reading a page I retained none of it. I hated research papers the most. In my early teens I discovered electronic music (at the time everything was called techno) and I realized listening to it while doing homework would keep that part of my brain busy so I could somewhat focus. I never put a name to the condition and just moved forward.\nIn my adult life, I coped with the challenges of whatever this condition was through a series of tools that I put together through trial and error. None of these tools were formally created by myself, much like the music discovery in my teens, I found what worked and continued with it. I ended up continuing on into college part time at night while working full time - I found the context shift during the day allowed my brain to focus on the learning. I did very well and my grades finally reflected how I felt what my potential could be. Work itself was a challenge, but I realized I liked taking on a number of different tasks and spending a pre-determined amount of time on each every day, keeping a structure in place to prevent boredom. I continually wanted to learn new things. Music and noise-canceling headphones also were still in my toolbox.\nAs I elevated myself in my career, getting more responsibilities like peer mentoring and tech lead on projects, I found the tools I had in the past didn’t quite work for this. Having to interact with others and integrate with their workflows caused me to derail pretty quickly. Keeping focus and retaining facts got hard at times. I plugged on.\nFlash forward to me starting at Automattic. Automattic, if you're not aware, is an entirely distributed company. All of us work out of our homes or wherever we may be. We are all forced to be self-starters and good communicators over IRC and through posting of internal blogs.\nI realized pretty quickly - within the first week there - that my quirkiness with focus and attention was more than just an annoyance. It was preventing me from maintaing cohesiveness between the work days and I felt like I was losing track of important details. I had an annual physical coming up so I decided to voice my concerns with my primary care doctor. He was receptive to what I was talking about but required me to talk with a specialist in the clinic - she is a trained counselor that deals with a variety of issues, ADHD being one of them. It was apparent to her that I had been showing signs of ADD (not so much hyperactivity) and suggested we take a layered approach to combating it. I was not comfortable with being on medication for the rest of my life but was willing to give it a whirl so I had some idea of what “normal” feels like.\nSo what’s my next steps and am I seeing any improvement? Short answer, yes, the medication seems to be helping with attention and focus. I can have conversations with people and I hold onto the train of thought much easier. I’m doing other things as well including meditation, yoga, exercise and some computer software to keep things in check. I’m also started a new internal blog at Automattic called Automattention for those of us who want to talk about ADHD and how it affects our lives at Automattic. I also plan on sharing my experiences here as I think it's something a lot of people can benefit from hearing!\n","permalink":"https://aaron.blog/paying-attention-at-automattic/","summary":"\u003cp\u003eAll of my teen and adult life I realized that I perceive the world a little differently than most. I’d like to think I’m a smart guy but I never did very well in high school on exams especially for topics that weren’t science/math/computer related. I couldn’t read textbooks very well; my eyes would gloss over the details and I’d realize after reading a page I retained none of it. I hated research papers the most. In my early teens I discovered electronic music (at the time everything was called techno) and I realized listening to it while doing homework would keep that part of my brain busy so I could somewhat focus. I never put a name to the condition and just moved forward.\u003c/p\u003e","title":"Paying Attention at Automattic"},{"content":"I had the awesome privilege of being a guest panelist on the iPhreaks podcast talking about scalable cloud apps to back your mobile phone apps. We talked mostly about Parse but we did also discuss a lot of new service offerings like Microsoft Azure, Simperium, and a few others. It was fun and unscripted for sure.\nhttp://iphreaksshow.com/021-iphreaks-show-scalable-cloud-applications-with-aaron-douglas/\nTake a listen and make sure to subscribe to their podcast if you're even remotely interested in Mac and iOS development!\n","permalink":"https://aaron.blog/iphreaks-show-guest-panelist/","summary":"\u003cp\u003eI had the awesome privilege of being a guest panelist on the iPhreaks podcast talking about scalable cloud apps to back your mobile phone apps.  We talked mostly about \u003ca href=\"http://www.parse.com\" rel=\"noopener\"\u003eParse\u003c/a\u003e but we did also discuss a lot of new service offerings like Microsoft Azure, Simperium, and a few others.  It was fun and unscripted for sure.\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://iphreaksshow.com/021-iphreaks-show-scalable-cloud-applications-with-aaron-douglas/\" rel=\"noopener\"\u003ehttp://iphreaksshow.com/021-iphreaks-show-scalable-cloud-applications-with-aaron-douglas/\u003c/a\u003e\u003c/p\u003e\u003cp\u003eTake a listen and make sure to subscribe to their podcast if you're even remotely interested in Mac and iOS development!\u003c/p\u003e","title":"iPhreaks Show - Guest Panelist"},{"content":"At first glance this news seems awesome for consumers:\nApple offering 'last compatible version' of iOS apps for older hardwareFinally my old iPhone 3G can download apps that I purchased after iOS 4 became obsolete! This should have been communicated to us as developers and the revenue channel for Apple.\nDevelopers, on the other hand, should be ready for an onslaught of support requests they can do absolutely nothing about. We've assumed, since the beginning of Apple App Store time, that old versions were not installable by devices unless they pulled a backup IPA and installed it manually. We know this happens fairly rarely. Some of us put checks in the app to notify users of new versions in the App Store, but did we prevent the app from functioning? Probably not.\nIf we have a backend in our apps, we probably continued to support the old version for a while by versioning the API calls. Most likely iOS 4 is not even something we test against our API. Now imagine users turning on old devices and installing an ancient version of your app. Do we expect it to work? We knew that this was a scenario but now that Apple is allowing downloads of an old version it implies we as developers support that version. We really need the ability to issue point releases for a particular older OS if this is to be a viable option for users. Up until now we've been told to abandon old iOS versions fairly quickly.\nHopefully Apple communicates this change to us formally and gives us the tools to prevent bad app reviews and an onslaught of support requests we can't do anything about.\n","permalink":"https://aaron.blog/apple-app-store-deprecated-version-nightmare/","summary":"\u003cp\u003eAt first glance this news seems awesome for consumers:\u003c/p\u003e\u003ch3 id=\"apple-offering-last-compatible-version-of-ios-apps-for-older-hardware\"\u003e\u003ca href=\"http://www.engadget.com/2013/09/17/apple-ios-last-compatible-version-app-iphone-ipod-ipad/\" rel=\"noopener\"\u003eApple offering 'last compatible version' of iOS apps for older hardware\u003c/a\u003e\u003c/h3\u003e\u003cp\u003eFinally my old iPhone 3G can download apps that I purchased after iOS 4 became obsolete!  This should have been communicated to us as developers and the revenue channel for Apple.\u003c/p\u003e\u003cp\u003eDevelopers, on the other hand, should be ready for an onslaught of support requests they can do absolutely nothing about.  We've assumed, since the beginning of Apple App Store time, that old versions were not installable by devices unless they pulled a backup IPA and installed it manually.  We know this happens fairly rarely.  Some of us put checks in the app to notify users of new versions in the App Store, but did we prevent the app from functioning?  Probably not.\u003c/p\u003e","title":"Apple App Store Deprecated Version Nightmare"},{"content":"I've never been able to put in words the reason why I am attached to using written notes over my iPad until today.\nI was sitting in a talk today by Rob Martin when I had an epiphany. When I'm holding my opened notebook, the crisp clean chunky feel of unused pages on the right feels like raw potential. The pages on the left, roughened from notes written on them, feels like accomplishment.\nAnd now I realize why I am inspired to write and record more on my paper Moleskine notebook than in Evernote on my iPad.\n","permalink":"https://aaron.blog/manual-note-taking-epiphany/","summary":"\u003cp\u003eI've never been able to put in words the reason why I am attached to using written notes over my iPad until today.\u003c/p\u003e\u003cp\u003eI was sitting in a talk today by \u003ca href=\"http://twitter.com/version2beta\"\u003eRob Martin\u003c/a\u003e when I had an epiphany. When I'm holding my opened notebook, the crisp clean chunky feel of unused pages on the right feels like raw potential. The pages on the left, roughened from notes written on them, feels like accomplishment.\u003c/p\u003e","title":"Manual note-taking epiphany"},{"content":"I gave a talk today at That Conference in Wisconsin Dells, WI USA. I'm posting my slides here so that others who didn't have the chance to go can peruse them. Hit me up with any questions or if you'd like to have audio to go with it. I'd have to record it, but would love to do so if there is a desire.\nCheers!\nGitHub: https://github.com/astralbodies/CoreDataRabbitHole\n[slideshare id=25224548\u0026amp;style=max-width: 427px; border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;\u0026amp;sc=no]\nGoing Down the Core Data Rabbit Hole from Aaron Douglas","permalink":"https://aaron.blog/going-down-the-core-data-rabbit-hole/","summary":"\u003cp\u003eI gave a talk today at \u003ca href=\"http://www.thatconference.com\"\u003eThat Conference\u003c/a\u003e in Wisconsin Dells, WI USA.  I'm posting my slides here so that others who didn't have the chance to go can peruse them.  Hit me up with any questions or if you'd like to have audio to go with it.  I'd have to record it, but would love to do so if there is a desire.\u003c/p\u003e\u003cp\u003eCheers!\u003c/p\u003e\u003cp\u003eGitHub: \u003ca href=\"https://github.com/astralbodies/CoreDataRabbitHole\"\u003ehttps://github.com/astralbodies/CoreDataRabbitHole\u003c/a\u003e\u003c/p\u003e\u003cp\u003e[slideshare id=25224548\u0026amp;style=max-width: 427px; border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;\u0026amp;sc=no]\u003c/p\u003e","title":"Going Down the Core Data Rabbit Hole"},{"content":"I've been using Octopress for over year and I really enjoyed it. You have to love the command line, understand Git, and know your stuff when something breaks. Oh, and it will break. A lot. But when you fix it, you get that satisfaction that you're a geek and you got it.\nI was kind of done with the shit breaking. (That and I got a job with Automattic)\nSo now I'm back to WordPress. Luckily I had kept my WordPress site around that I migrated from to Octopress. I found that Octopress, because it was a simple type and post software, made me blog a lot less. A LOT less. That benefited me because I was able to copy and paste the 12 or so blogs I made into WordPress. I made sure the titles were the same, the date published matched, and I copied the tags. I had to install a GitHub Gist plugin because I used a lot of Gists in my posts now. I also had to manually upload images from my posts into the blog.\nI had to modify the default permalink setup to match Octopress' way of doing things to keep search engines from breaking. Then I installed the official Disqus plugin and synced in all of my blog comments into WordPress and then shut off Disqus.\nCustom permalink: /blog/%year%/%monthnum%/%day%/%postname%/\nI'm really happy to be back. Ping me if you have questions about how I did the migration!\n","permalink":"https://aaron.blog/migrated-back-to-wordpress/","summary":"\u003cp\u003eI've been using \u003ca href=\"http://octopress.org/\" rel=\"noopener\"\u003eOctopress\u003c/a\u003e for over year and I really enjoyed it.  You have to love the command line, understand Git, and know your stuff when something breaks.  Oh, and it will break.  A lot.  But when you fix it, you get that satisfaction that you're a geek and you got it.\u003c/p\u003e\u003cp\u003eI was kind of done with the shit breaking.  (That and I got a job with \u003ca href=\"http://automattic.com\" rel=\"noopener\"\u003eAutomattic\u003c/a\u003e)\u003c/p\u003e\u003cp\u003eSo now I'm back to WordPress.  Luckily I had kept my WordPress site around that I migrated from to Octopress.  I found that Octopress, because it was a simple type and post software, made me blog a lot less. A LOT less.  That benefited me because I was able to copy and paste the 12 or so blogs I made into WordPress.  I made sure the titles were the same, the date published matched, and I copied the tags.  I had to install a \u003ca href=\"http://wordpress.org/plugins/embed-github-gist/\" rel=\"noopener\"\u003eGitHub Gist plugin\u003c/a\u003e because I used a lot of Gists in my posts now.  I also had to manually upload images from my posts into the blog.\u003c/p\u003e","title":"Migrated back to WordPress"},{"content":"I had an excellent weekend at CocoaConf Chicago meeting interesting people and reconnecting with many as well.\nOne of the subjects that was brought up in Brittany Tarvin's Friday Keynote talk was that of women in the technology field. I had the pleasure of meeting Brittany at SecondConf and it was great to see her challenge to encourage women (and girls) to be software engineers brought to CocoaConf. Her talk stirred a lot of discussion, especially in the reverse panel discussion Saturday. The overwhelmingly positive response to her message was inspiring. Nowhere before have I experienced such open-minded discussions and outright admittance that we can all do more for women and other minorities in the tech field.\nI talked with a Brittany at SecondConf about the topic of the disadvantages women have when dealing with a white male dominated field. I admitted to her that I have similar experiences being gay and working for companies that have a \"brogrammer\" type of atmosphere. I left one job because I felt there was no way I could be open about myself there. The job had the typical \"brogrammer\" atmosphere - mostly if not all male development staff, a good majority right out of college, discussions of a sexual nature, and pressure to conform ever-present. The job became too much when I worked on-site at a client install for nearly a month. Discussions of going to \"titty bars\" and frequent use of the word fag and gay topped my list of offensive remarks.\nI'm usually the type of person who lets things slide, opting for a neutral reaction. Instead of trying to fix everything at the company, I left. My current employer has been fantastic, and I feel no need to have to hide who I am. I am certainly more productive and my coworkers see me as a part of the team. I'm by nature an outgoing person (you can thank my mom the social butterfly) - so being the \"shy\" one at the more conservative company should have been a flag to myself.\nGeeks need to be more empathetic and understand that not everyone thinks the same way. Parents need to encourage their children to do what they want to do and not limit them to things that are pink if they're girls and blue if they're boys. When you're at work, don't make assumptions that just because you work with someone means that you understand them completely. We all are unique people and we all have beliefs and emotions. I'm not asking for you to accept these emotions and beliefs, but just respect that they are there and try to work together.\nI encourage you to get involved in school outreach programs to teach children about technology. Open their minds at a young age and enforce the idea that we all can be what we want to be. Gender/race/sexual orientation bias is not acceptable in this day and age.\nSimply put: Quit being a dick.\nPlease check out Brittany's work at Tumblr and Twitter. Check out Brittany's employer Fading Red whom also actively supports her.\n","permalink":"https://aaron.blog/diversity-in-developers/","summary":"\u003cp\u003eI had an excellent weekend at \u003ca href=\"http://www.cocoaconf.com/\"\u003eCocoaConf Chicago\u003c/a\u003e meeting interesting people and reconnecting with many as well.\u003c/p\u003e\u003cp\u003eOne of the subjects that was brought up in \u003ca href=\"https://twitter.com/wildchocolate\"\u003eBrittany Tarvin's\u003c/a\u003e Friday Keynote talk was that of women in the technology field. I had the pleasure of meeting Brittany at \u003ca href=\"http://www.secondconf.com/\"\u003eSecondConf\u003c/a\u003e and it was great to see her challenge to encourage women (and girls) to be software engineers brought to CocoaConf. Her talk stirred a lot of discussion, especially in the reverse panel discussion Saturday. The overwhelmingly positive response to her message was inspiring. Nowhere before have I experienced such open-minded discussions and outright admittance that we can all do more for women and other minorities in the tech field.\u003c/p\u003e","title":"Diversity in Developers"},{"content":"I'm currently using BSKeyboardControls to add that fancy Next/Previous/Done buttons to the top of the keyboard on the iPad. I have noticed, however, that while scrolling through the fields in a UITableView, the cursor would sometimes disappear and the keyboard would be detached (typing does nothing).\nI threw some logging together and make a discovery - scrolling to a UITableViewCell far off the screen that is UIView.hidden == YES doesn't allow subviews to receive the becomeFirstResponder message.\n[gist 5100167]\nAnd the logs: [gist 5100147]\nThe solution (the only one I could come up with) is to fire off a message to the text field after a short delay to become the first responder. This seems to solve the problem.\n[gist 5100164]\n","permalink":"https://aaron.blog/scrolling-to-hidden-table-view-cells/","summary":"\u003cp\u003eI'm currently using \u003ca href=\"https://github.com/simonbs/BSKeyboardControls\"\u003eBSKeyboardControls\u003c/a\u003e to add that fancy Next/Previous/Done buttons to the top of the keyboard on the iPad. I have noticed, however, that while scrolling through the fields in a UITableView, the cursor would sometimes disappear and the keyboard would be detached (typing does nothing).\u003c/p\u003e\u003cp\u003eI threw some logging together and make a discovery - scrolling to a UITableViewCell far off the screen that is UIView.hidden == YES doesn't allow subviews to receive the becomeFirstResponder message.\u003c/p\u003e","title":"Scrolling to hidden table view cells"},{"content":"So you're working on a search screen or popover with UITableViewController and you're wondering how to get that fancy search magnifying glass in your search results, right?\nIn my example, I have my table view sourced by a simple array of data. This may not be the case for you, but you get the idea from the example. Simply add the constant UITableViewIndexSearch as the first section header title - UITableView will understand to replace the {search} text from that constant with the locale-specific image indicating search.\n[gist 3226609]\nThen, you want to show the search bar when that icon is selected. Normal behavior when selecting an index in the right hand gutter is to scroll to that section header. The search magnifying glass, however, signifies the search bar section. The key is that you have to use a UISearchDisplayController and tell the table view to scroll up to the search bar's rectangle:\n[gist 3226628]\nPretty simple! This feature isn't well documented in the Apple API but it's quite handy for making your app feel native.\n","permalink":"https://aaron.blog/adding-the-fancy-search-magnifying-glass-to-your-uitableview/","summary":"\u003cp\u003eSo you're working on a search screen or popover with UITableViewController and you're wondering how to get that fancy search magnifying glass in your search results, right?\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"http://www.artin.org/geekblog/wp-content/uploads/2012/08/Search.png\" class=\"kg-image\" alt=\"Search\" loading=\"lazy\" width=\"274\" height=\"300\"\u003e\u003c/figure\u003e\u003cp\u003eIn my example, I have my table view sourced by a simple array of data. This may not be the case for you, but you get the idea from the example. Simply add the constant UITableViewIndexSearch as the first section header title - UITableView will understand to replace the {search} text from that constant with the locale-specific image indicating search.\u003c/p\u003e","title":"Adding the fancy search magnifying glass to your UITableView"},{"content":"As a consultant, I have to move around to various companies as part of my job. Sometimes I am able to stay with the same client for months, sometimes weeks. The one thing that continues to be an issue wherever I go is the availability of a suitable development environment for me to start working on day one. I typically bring in my own laptop so that I can get started as quickly as possible. This is only if the client allows it.\nI've worked at a number of fortune 500 companies, and typically the answer to the \"may I use my own hardware?\" question is a solid NO. An exception to that answer was my last client - they are a large company with nearly $19 billion in revenue and yet they have an open policy about outside hardware. They outwardly tell people (at least in the IT areas) that you (employees/consultants) can bring in faster computers and better hardware than we can probably provide. Have at it.\nThe risk of this position is that of viruses and loss of corporate intellectual property via those personal machines being brought in. The reality of the decision is, it's not much different than having VPN from home. I, as a developer, need a high quality workstation with lots of RAM. Developing server-based applications requires a lot of resources when testing in a development environment. When asking for a machine less than a year old with 8GB of RAM, I got the typical pushback from desktop support telling me that I shouldn't be running server applications on a workstation. What? That's my JOB.\nOne of my coworkers, a consultant, had been there over a year and already brought in his own monitors and a workstation. I followed suit and brought in my own laptop and monitors. Our productivity skyrocketed having the right equipment for the job. Yes, it's frustrating not getting the equipment you should expect to do your job. Corporate red tape frequently stifles innovation.\nThere are positives and negatives for letting people bring in their own hardware. Implement controls to prevent unauthorized connections into corporate file shares and move on is what I say. Think of it this way - you're paying top dollar to get me in as a consultant. Wouldn't you want me to be the most effective I can be?\n","permalink":"https://aaron.blog/bringing-in-your-own-hardware-to-work/","summary":"\u003cp\u003eAs a consultant, I have to move around to various companies as part of my job. Sometimes I am able to stay with the same client for months, sometimes weeks. The one thing that continues to be an issue wherever I go is the availability of a suitable development environment for me to start working on day one. I typically bring in my own laptop so that I can get started as quickly as possible. This is only if the client allows it.\u003c/p\u003e","title":"Bringing in your own hardware to work"},{"content":"Spring 3.1 brought a lot of good changes to the framework but with any version change, behaviors can be different. Spring does a good job documenting most of this API changes but there is one that I apparently missed or underestimated the impact of.\nProperty files can be \"imported\" into the Spring context so that the values can be inserted into configuration using ${ } with the property value inside of the brackets. This is a handy feature that I use frequently in my Spring projects. The PropertyPlaceholderConfigurer has been replaced by PropertySourcesPlaceholderConfigurer in Spring 3.1. One minor difference between them is the latter has the ability to read @Value annotations for direct injection of property values. The other side effect is that the 3.1 class puts system properties ahead of your property file's values. 3.0, on the other hand, let your property file win if a name matched one as a system parameter.\nI ran into this problem because my 3.0 configuration had a replacement parameter for a data source name injected by JNDI. The JNDI name is different between environments at my client, so I had to parameterize it. In Spring 3.0, my configuration was as so:\n[gist 1855160]\nYou'll notice the context:property-placeholder element has a single properties file. The values read in are:\n[gist 1855426]\nand they are used in my JNDI configuration:\n[gist 1855169]\nWhen I switched to 3.1, I updated the XML namespace to point at 3.1. This changes things behind the scenes to go to PropertySourcesPlaceholderConfigurer. If you want to retain the original 3.0 behavior, you can keep the XMLNS at 3.0 or add system-properties-mode=\"FALLBACK\".\n[gist 1855156]\nI suspected something was happening with the behavior when I saw in the log files that the data source couldn't be cast as a string. I pulled out my hair trying to figure it out and ended up renaming pavDataSource to PavDataSource and it worked fine. This problem came back up deploying to another environment having the lower case name and I have no ability to change it. Switching back to 3.0 behavior fixed this because I suspect a system parameter was being created with pavDataSource as the name.\n[gist 1855239]\nConfusing and frustrating as hell, but the simple mode switch made it right as rain.\n","permalink":"https://aaron.blog/spring-3-1s-propertyplaceholderconfigurer/","summary":"\u003cp\u003eSpring 3.1 brought a lot of good changes to the framework but with any version change, behaviors can be different. Spring does a good job documenting most of this API changes but there is one that I apparently missed or underestimated the impact of.\u003c/p\u003e\u003cp\u003eProperty files can be \"imported\" into the Spring context so that the values can be inserted into configuration using ${ } with the property value inside of the brackets. This is a handy feature that I use frequently in my Spring projects. The PropertyPlaceholderConfigurer has been replaced by PropertySourcesPlaceholderConfigurer in Spring 3.1. One minor difference between them is the latter has the ability to read @Value annotations for direct injection of property values. The other side effect is that the 3.1 class puts system properties ahead of your property file's values. 3.0, on the other hand, let your property file win if a name matched one as a system parameter.\u003c/p\u003e","title":"Spring 3.1's PropertyPlaceholderConfigurer"},{"content":"Does using Maven with Eclipse make you stabby when you spend an hour waiting for Eclipse to finish validating files? You may not realize it, but Eclipse is indexing/validating files inside of your project's target folders! Yes kids, this is annoying and time consuming. The target folders also end up showing results in the \"Open Type\" and \"Open Resource\" windows. I'm sure we've all experienced the duplicate results when searching for a class or resource.\nWhy does it do this? Eclipse has a feature built in that will, by default, exclude folders that have been marked as \"derived\". Normally folders like your source output folders (bin for example) are marked for you. Well, Eclipse doesn't automatically mark the target folder as \"derived\" so it treats it like a regular folder. Right click your target folder in Eclipse and click the check box for \"derived\" - magically the folder is now excluded even from the Open Type and Open Resource windows.\nBut wait.\nNext time you run a Maven \"clean\", the target folder is deleted and the check box reset for derived. How do you avoid that? In your parent project (or current project if you have a single module) add the following to your plugin definitions:\n[gist id=1801819]\nThis will force Maven to use version 2.4.1 of the \"clean\" plugin - if you're using Maven 3 you can probably remove the version line. After version 2.3 of the plugin, excludeDefaultDirectories became available. This little gem will only delete the target content and leave the folder alone for you.\nEnjoy!\n","permalink":"https://aaron.blog/maven-eclipse-target-folder-validation-stabbyness/","summary":"\u003cp\u003eDoes using Maven with Eclipse make you stabby when you spend an hour waiting for Eclipse to finish validating files? You may not realize it, but Eclipse is indexing/validating files inside of your project's target folders! Yes kids, this is annoying and time consuming. The target folders also end up showing results in the \"Open Type\" and \"Open Resource\" windows. I'm sure we've all experienced the duplicate results when searching for a class or resource.\u003c/p\u003e","title":"Maven \u0026 Eclipse target folder + validation stabbyness"},{"content":"One of the biggest UI no-nos you can perform in iOS is creating a UITextView that assumes the size of the keyboard on the screen before the keyboard even shows up. You should be dynamically resizing your text views by looking at the dimensions of the keyboard, and not assuming you know the dimensions.\nWhy? Try enabling a Japanese keyboard and see how your app performs. You'll notice that the keyboard is taller than the English keyboard - it's to give room to a typeahead area for creating the glyphs. Now how does your app behave?\nThere is a quick and easy way you can resize automatically. In my example, I have a new view with a nearly full screen-sized text view showing. When the user taps into the text view, the text view is then resized to leave a bit of gap around it and the keyboard displays underneath.\nThe text view without a keyboard\nAfter the user taps in the text view, the keyboard appears. An example of an English keyboard is at left and a Japanese keyboard at the right. Notice any difference? What should happen is your app just figures out how much space you have left after the keyboard is displayed and resize accordingly. If you switch between keyboards, you have to account for visual changes as well. Here is the code I wrote to handle this properly: - (void)viewWillAppear:(BOOL)animated { [textView setText:_notesText];\n// Register notifications for when the keyboard appears\n[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];\n[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];\n}\n(void)viewWillDisappear:(BOOL)animated {\n[[NSNotificationCenter defaultCenter] removeObserver:self];\n}\n(void)keyboardWillShow:(NSNotification*)notification {\n[self moveTextViewForKeyboard:notification up:YES];\n}\n(void)keyboardWillHide:(NSNotification*)notification {\n[self moveTextViewForKeyboard:notification up:NO];\n}\n(void)moveTextViewForKeyboard:(NSNotification*)notification up:(BOOL)up {\nNSDictionary *userInfo = [notification userInfo];\nNSTimeInterval animationDuration;\nUIViewAnimationCurve animationCurve;\nCGRect keyboardRect;\n[[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:\u0026amp;animationCurve];\nanimationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];\nkeyboardRect = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];\nkeyboardRect = [self.view convertRect:keyboardRect fromView:nil];\n[UIView beginAnimations:@\"ResizeForKeyboard\" context:nil];\n[UIView setAnimationDuration:animationDuration];\n[UIView setAnimationCurve:animationCurve];\nif (up == YES) {\nCGFloat keyboardTop = keyboardRect.origin.y;\nCGRect newTextViewFrame = textView.frame;\noriginalTextViewFrame = textView.frame;\nnewTextViewFrame.size.height = keyboardTop - textView.frame.origin.y - 10;\ntextView.frame = newTextViewFrame;\n} else {\n// Keyboard is going away (down) - restore original frame\ntextView.frame = originalTextViewFrame;\n}\n[UIView commitAnimations];\n}\nThe view controller adds an observer for when the keyboard shows up and disappears. When the keyboard is coming up, we record the original frame of the text view - this makes it easier to restore the text view when the keyboard goes away. In this specific instance, the keyboard cannot be dismissed since enter is set to put carriage returns in the text box.\n","permalink":"https://aaron.blog/resizing-a-uitextview-automatically-with-the-keyboard/","summary":"\u003cp\u003eOne of the biggest UI no-nos you can perform in iOS is creating a UITextView that assumes the size of the keyboard on the screen before the keyboard even shows up. You should be dynamically resizing your text views by looking at the dimensions of the keyboard, and not assuming you know the dimensions.\u003c/p\u003e\u003cp\u003eWhy? Try enabling a Japanese keyboard and see how your app performs. You'll notice that the keyboard is taller than the English keyboard - it's to give room to a typeahead area for creating the glyphs. Now how does your app behave?\u003c/p\u003e","title":"Resizing a UITextView automatically with the keyboard"},{"content":"If you're looking to get higher frame rates and general application performance tweaks from your iOS application, you may need to take a look at transparent settings on your subviews. Any time you set a subview to be transparent, the OS has to blend multiple layers together to figure out the end flattened result. This blending takes CPU cycles and can impact performance of your app - especially in something as simple as a UITableViewCell.\nLuckily there is an easy way to find these problems using Xcode's companion tool, Instruments.\nOne of the instrumenting tools you can use on an app deployed to a device is Core Animation. The Core Animation instrument has a bunch of fancy switches you can flip.\nThat will turn on a visual indicator to show where multiple transparent layers exist on the screen. For example, the main table view of my app MigraineDiary shows the following:\nTo get your app into Instruments, simply select the \"Profile\" menu item under \"Product\". This will build your app and launch Instruments. Make sure you have your device selected and not the iOS Simulator. Any areas that are heavily colored in red should be reviewed by you to ensure you're not setting layers transparent that don't need to be. This includes using [UIColor clearColor]!\nYou'll notice transparency indicators in red on system components like the tab bar and nav bar. There isn't much you can do about these, so you can really just ignore them. If you've overridden behaviors, however, you may wish to review your code to make sure you're not breaking something.\n","permalink":"https://aaron.blog/fixing-layer-transparency-issues-in-xcode/","summary":"\u003cp\u003eIf you're looking to get higher frame rates and general application performance tweaks from your iOS application, you may need to take a look at transparent settings on your subviews. Any time you set a subview to be transparent, the OS has to blend multiple layers together to figure out the end flattened result. This blending takes CPU cycles and can impact performance of your app - especially in something as simple as a UITableViewCell.\u003c/p\u003e","title":"Fixing Layer Transparency Issues in Xcode"},{"content":"I've started to mess around with the Google Data APIs recently to help support my Migraine Diary iOS application. Specifically I want users to be able to export their journal entries into a Google Spreadsheet rather than just a plain CSV file. I am using the Objective-C client that Google built and have come across a number of issues or gotchas.\nThe Objective-C client is badly documented - a number of Google Data API calls have zero examples and translating REST calls into Objective-C classes is a challenge.OpenAuth 2 is surprisingly easy to useGoogle provides very little troubleshooting assistance even with their clientObjective-C is very new compared to the Python, .NET and Java clientsThat being said, I am making progress. I'll most likely share my finalized code to create a simple spreadsheet here so others have a jumping off point.\n","permalink":"https://aaron.blog/google-data-api/","summary":"\u003cp\u003eI've started to mess around with the \u003ca href=\"http://code.google.com/apis/gdata/\" rel=\"noopener\"\u003eGoogle Data APIs\u003c/a\u003e recently to help support my \u003ca href=\"http://itunes.apple.com/us/app/migraine-diary/id348561271?mt=8\" rel=\"noopener\"\u003eMigraine Diary\u003c/a\u003e iOS application. Specifically I want users to be able to export their journal entries into a Google Spreadsheet rather than just a plain CSV file. I am using the Objective-C client that Google built and have come across a number of issues or gotchas.\u003c/p\u003e\u003cul\u003e\u003cli\u003eThe Objective-C client is badly documented - a number of Google Data API calls have zero examples and translating REST calls into Objective-C classes is a challenge.\u003c/li\u003e\u003cli\u003eOpenAuth 2 is surprisingly easy to use\u003c/li\u003e\u003cli\u003eGoogle provides very little troubleshooting assistance even with their client\u003c/li\u003e\u003cli\u003eObjective-C is very new compared to the Python, .NET and Java clients\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eThat being said, I am making progress. I'll most likely share my finalized code to create a simple spreadsheet here so others have a jumping off point.\u003c/p\u003e","title":"Google Data API"},{"content":"I've been getting a warning dialog on my Mac (Lion 10.7) when opening Adium. It recently updated to the newest beta and is presenting the following quarantine message every time I open it -\n“Adium.app” is an application downloaded from the Internet. Are you sure you want to open it?Every other time I have gotten the quarantine message, it clears itself after the first launch. This time it did not. I found a quick and easy way to remove the quarantine extended file attribute:\nsudo xattr -d -r com.apple.quarantine /Applications/Adium.app\nRelaunch Adium one more time with the \"first time you've opened\" warning and you're set!\n","permalink":"https://aaron.blog/adium-always-presenting-apple-quarantine-message/","summary":"\u003cp\u003eI've been getting a warning dialog on my Mac (Lion 10.7) when opening Adium. It recently updated to the newest beta and is presenting the following quarantine message every time I open it -\u003c/p\u003e\u003cblockquote\u003e“Adium.app” is an application downloaded from the Internet. Are you sure you want to open it?\u003c/blockquote\u003e\u003cp\u003eEvery other time I have gotten the quarantine message, it clears itself after the first launch. This time it did not. I found a quick and easy way to remove the quarantine extended file attribute:\u003c/p\u003e","title":"Adium always presenting Apple Quarantine Message"},{"content":"After upgrading my iPhone 4 to iOS 5.0.1, Xcode has been giving me the following error message when debugging my Migraine Diary app remotely:\nwarning: Unable to read symbols for /Users/aaron/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader (file not found). warning: No copy of AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader found locally, reading from memory on remote device.\u0026nbsp; This may slow down the debug session.\nI tried deleting the directory and having Xcode pull down the symbols off of the phone again. No success. I ended up copying the contents of the main SDK bundles into the one in my local library. Solved it. Not sure if this is the right solution but it works. I vaguely remember this happening last time Apple released a small point release.\nSo copy the following directory:\n/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/AccessibilityBundles\nto:\n/Users/[your login name]/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/\n","permalink":"https://aaron.blog/missing-accessibilitysettingsloader-bundle-with-ios-5-0-1-debugging-2/","summary":"\u003cp\u003eAfter upgrading my iPhone 4 to iOS 5.0.1, Xcode has been giving me the following error message when debugging my Migraine Diary app remotely:\u003c/p\u003e\u003c!--kg-card-begin: html--\u003e\u003cp style=\"font-family:'Courier New', Courier, mono;\"\u003ewarning: Unable to read symbols for /Users/aaron/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader (file not found).\nwarning: No copy of AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader found locally, reading from memory on remote device.\u0026nbsp; This may slow down the debug session.\u003c/p\u003e\u003c!--kg-card-end: html--\u003e\u003cp\u003eI tried deleting the directory and having Xcode pull down the symbols off of the phone again.  No success.  I ended up copying the contents of the main SDK bundles into the one in my local library.  Solved it.  Not sure if this is the right solution but it works.  I vaguely remember this happening last time Apple released a small point release.\u003c/p\u003e","title":"Missing AccessibilitySettingsLoader bundle with iOS 5.0.1 debugging"},{"content":"Yes, there are three ways to represent a null value in Objective-C.\nNULL = Absence of a value with C-style pointers\nnil = Absence of value with Objective-C object variables\nNSNull = A nil boxed as an object for storage in a collection\nIf you try adding nil to a NSDictionary or NSArray, you will find out it doesn't perform as expected. If you absolutely need to store a null value in a collection, you can use NSNull to represent the lack of a value. For example:\nNSNull nullValue = [NSNull null]; [anArray addObject:nullValue];\nNote, however, that since NSNull represents the lack of a value, there is no way to retrieve that value from the collection. In order to determine if there is no value for a particular key or index, you must compare against NSNull.\nid value = [anArray objectAtIndex:3]; if (value == [NSNull null]) { // Do something for a null }\n","permalink":"https://aaron.blog/ios-basics-nil-vs-null-vs-nsnull/","summary":"\u003cp\u003eYes, there are three ways to represent a null value in Objective-C.\u003c/p\u003e\u003cp\u003eNULL = Absence of a value with C-style pointers\u003cbr\u003enil = Absence of value with Objective-C object variables\u003cbr\u003eNSNull = A nil boxed as an object for storage in a collection\u003c/p\u003e\u003cp\u003eIf you try adding nil to a NSDictionary or NSArray, you will find out it doesn't perform as expected.  If you absolutely need to store a null value in a collection, you can use NSNull to represent the lack of a value.  For example:\u003c/p\u003e","title":"iOS Basics: nil vs NULL vs NSNull"},{"content":"Ever wanted to have alternated colors on your table view cells? If so, you've probably done something inside of cellForRowAtIndexPath and applied a background color to your cell there.\nWould you be surprised to know that's completely wrong? Yup. Wrong. WRONG WRONG WRONG.\nI didn't know this, but any styles applied to cells based on state or whatever should really be in willDisplayCell - NOT when you configure the cell itself! Per Apple's documentation for the Table View delegate -\n\"A table view sends this message to its delegate just before it uses cell to draw a row, thereby permitting the delegate to customize the cell object before it is displayed. This method gives the delegate a chance to override state-based properties set earlier by the table view, such as selection and background color. After the delegate returns, the table view sets only the alpha and frame properties, and then only when animating rows as they slide in or out.\"\nKeep this in mind especially if you're using a NSFetchedResultsController with CoreData. You'll have to issue a [tableView reloadRowsAtIndexPaths:...] in your didChangeObject method. For some reason, at least in iOS 4.3.3, the willDisplayCell isn't firing with the default code Apple recommends when using a Fetched Results Controller. Adding that reload does the trick.\n","permalink":"https://aaron.blog/ios-customize-table-view-cells/","summary":"\u003cp\u003eEver wanted to have alternated colors on your table view cells? If so, you've probably done something inside of cellForRowAtIndexPath and applied a background color to your cell there.\u003c/p\u003e\u003cp\u003eWould you be surprised to know that's completely wrong?  Yup.  Wrong.  WRONG WRONG WRONG.\u003c/p\u003e\u003cp\u003eI didn't know this, but any styles applied to cells based on state or whatever should really be in willDisplayCell - NOT when you configure the cell itself!  Per \u003ca href=\"http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableViewDelegate_Protocol/Reference/Reference.html\" rel=\"noopener\"\u003eApple's documentation\u003c/a\u003e for the Table View delegate -\u003c/p\u003e","title":"iOS - Customize Table View Cells"},{"content":"We all like to put the current application version number in an \"about\" screen somewhere for users to reference. It's a pain, however, to have to update that screen every time we do a release as well as the version in the target configuration for the bundle. So why not pull the version number from the bundle? Here's how to do it:\nNSString version = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString)kCFBundleVersionKey];\nNSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@\"CFBundleShortVersionString\"];\nJust put this version number in your label programatically and you're set! Since my About screen is in a nib/xib, I set the label text to \"Version x.x\" so I would understand the label isn't static next time I look at the screen in Interface Builder.\n--- UPDATED 3/9/2012\nI updated this post with a recent change to the way version numbers work. Not sure if this was an advertised change by Apple, but this should fix any issues you have.\n","permalink":"https://aaron.blog/ios-pull-app-version-from-bundle-configuration/","summary":"\u003cp\u003eWe all like to put the current application version number in an \"about\" screen somewhere for users to reference.  It's a pain, however, to have to update that screen every time we do a release as well as the version in the target configuration for the bundle.  So why not pull the version number from the bundle?  Here's how to do it:\u003cbr\u003eNSString \u003cem\u003eversion = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString\u003c/em\u003e)kCFBundleVersionKey];\u003c/p\u003e\u003cp\u003eNSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@\"CFBundleShortVersionString\"];\u003c/p\u003e","title":"iOS - Pull App Version From Bundle Configuration"},{"content":"I recently upgraded my Time Warner Cable RoadRunner service to the RoadRunner Extreme 30Mbps down / 5Mbps up service. Part of that service upgrade required a new modem to be installed and a technician to come out to validate line quality values. Turns out, I could have done a self install myself and saved the $30 but I wasn't given that option even after asking.\nIn any case, while the technician was at my house I noticed on his computer screen power levels and signal to noise (SNR) levels for my modem. Right next to it were the acceptable ranges that Time Warner allows. I asked if I could take a picture of his screen, which he refused, but allowed me to record the values. Here I present them to you for your reference with my values in parenthesis.\nUpstream Power -\u0026gt; 33dBmV to 51dBmV (47.7)\nDownstream Power -\u0026gt; -10dBmV to 9dBmV (-3.2)\nUpstream SNR -\u0026gt; 20dB to 99dB (36.1)\nDownstream SNR -\u0026gt; 25dB to 99dB (34.7)\nYou can get to these stats by going to your modem when you are at home at http://192.168.100.1. Depending on the model and version of software on the modem, you may have to enable a higher level of access on the device to get to the screens with these values on them. Simple Google searches can provide the methods to access these screens for your modem model.\n","permalink":"https://aaron.blog/time-warner-cable-power-snr-acceptable-values/","summary":"\u003cp\u003eI recently upgraded my Time Warner Cable RoadRunner service to the RoadRunner Extreme 30Mbps down / 5Mbps up service. Part of that service upgrade required a new modem to be installed and a technician to come out to validate line quality values. Turns out, I could have done a self install myself and saved the $30 but I wasn't given that option even after asking.\u003c/p\u003e\u003cp\u003eIn any case, while the technician was at my house I noticed on his computer screen power levels and signal to noise (SNR) levels for my modem. Right next to it were the acceptable ranges that Time Warner allows. I asked if I could take a picture of his screen, which he refused, but allowed me to record the values. Here I present them to you for your reference with my values in parenthesis.\u003c/p\u003e","title":"Time Warner Cable Power / SNR Acceptable Values"},{"content":"I spent the past week pulling out my hair trying to submit an update for Centare's EyeOnWeather application to iTunes Connect. I kept getting a reject from the system and all I got for an error message was \"Invalid Binary.\" THANKS, THAT'S SOOPER.\nEventually I ended up attempting to contact iTunes Connect Support for further details. I thought it might have been missing icons, malformed Info.plist, something. I haven't changed anything in the project drastically with how it builds, so I was at a loss. Turns out, I was picking the wrong provisioning profile in my setup. Man I felt stupid. Ends up that I'm not crazy - Apple's documentation on how to set up your project for building still only references Xcode 3. Awesome for the rest of the world using Xcode 4. Here are some tips I got from Apple iTunes Connect support for pulling in information to submit to their developer team:\n(replace 'path/to/myapp.app\" with the actual path to your application): codesign --verify -vvvv -R='anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1] exists and certificate leaf[field.1.2.840.113635.100.6.1.4] exists' /path/to/myapp.app codesign -dvv /path/to/myapp.app - This command is useful to see what certificate was used to sign your app. If under the section labeled \"Authority\" it says iPhone Developer, this means that your app was signed with your Developer Certificate. If it says iPhone Distribution, this means that it was signed with your Distribution Certificate. codesign -d --entitlements - /path/to/myapp.app\nI ended up pulling the EyeOnWeather.app file out of my archive bundle to be sure I was testing what I sent up to iTunes Connect. You can also just do a \"Build for Archive\" and then right click your .app in Xcode under Product and \"Show In Finder\". Drag that file into Terminal and it'll paste the full path \u0026amp; filename.\nRunning those commands gave me confirmation of this - I was code signing with my developer profile. Even though you pick the Distribution certificate in the submission window for uploading, it doesn't change the signature of the app. The solution was to go into my setup for the build and change the Code Signing Identity for the \"Release\" configuration to the Distribution profile. I deleted the old \"Distribution\" build configuration that I had created back in the Xcode 3 days as it's no longer appropriate.\nThis link is the defacto WTF help me document for code signing in Xcode 4:\nTechnical Note TN2250 - Understanding and Resolving Code Signing Issues\n","permalink":"https://aaron.blog/itunes-connect-invalid-binary/","summary":"\u003cp\u003eI spent the past week pulling out my hair trying to submit an update for Centare's EyeOnWeather application to iTunes Connect.  I kept getting a reject from the system and all I got for an error message was \"Invalid Binary.\"  THANKS, THAT'S SOOPER.\u003c/p\u003e\u003cp\u003eEventually I ended up attempting to contact iTunes Connect Support for further details.  I thought it might have been missing icons, malformed Info.plist, something.  I haven't changed anything in the project drastically with how it builds, so I was at a loss.  Turns out, I was picking the wrong provisioning profile in my setup.  Man I felt stupid.  Ends up that I'm not crazy - Apple's documentation on how to set up your project for building still only references Xcode 3.  Awesome for the rest of the world using Xcode 4.  Here are some tips I got from Apple iTunes Connect support for pulling in information to submit to their developer team:\u003c/p\u003e","title":"iTunes Connect - Invalid Binary"},{"content":"I've been using a UITextView in an app and realized that it didn't have any rounded edges like the default behavior exhibited by the built-in iOS apps. For example in the calendar app, setting the Notes field shows:\nInside of Apple's Human Interface guidelines it specifically states \"A text view is a rounded rectangle of any height. A text view supports scrolling when the content is too large to fit inside its bounds.\" Adding a UITextView to a view shows square corners by default. So how the hell do you get rounded corners? Interface Builder doesn't show anything about corners. Seems like the only way to get this behavior is by doing the following in code:\nAdd: #import \u0026lt;QuartzCore/QuartzCore.h\u0026gt;And then add: textView.layer.cornerRadius = 10.0f;Replace textView with the variable pointing to your UITextView.\n","permalink":"https://aaron.blog/uitextview-having-rounded-corners/","summary":"\u003cp\u003eI've been using a UITextView in an app and realized that it didn't have any rounded edges like the default behavior exhibited by the built-in iOS apps.  For example in the calendar app, setting the Notes field shows:\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"http://www.artin.org/geekblog/wp-content/uploads/2011/04/Photo-Apr-25-8-28-43-PM.png\" class=\"kg-image\" alt loading=\"lazy\" title=\"Photo Apr 25, 8 28 43 PM\" width=\"200\" height=\"300\"\u003e\u003c/figure\u003e\u003cp\u003eInside of Apple's Human Interface guidelines it specifically states \"A text view is a rounded rectangle of any height. A text view supports  scrolling when the content is too large to fit inside its bounds.\"  Adding a UITextView to a view shows square corners by default.  So how the hell do you get rounded corners?  Interface Builder doesn't show anything about corners.  Seems like the only way to get this behavior is by doing the following in code:\u003c/p\u003e","title":"UITextView having rounded corners"},{"content":"I'm submitting a new version of my Migraine Diary App to the App Store and was running into problems with Xcode 4 giving me the following error: \"[Your App Name] does not contain a single-bundle application or contains multiple products. Please select another archive, or adjust your scheme to create a single-bundle application.\"\nThere is an issue or maybe it's an intentional design thing with Xcode 4 and how it handles statically built libraries being included in your project. I'm specifically using Core Plot and it's instruction set hasn't been updated for Xcode 4 yet. Here are the things I had to do to get Core Plot to bundle correctly with my App to submit it:\nClick on the Core Plot project which should be a child of your App's project.Click on the Project CorePlot-CocoaTouch and go to the Build Settings. Set \"Skip Install\" to Yes.Click on the CorePlot-CocoaTouch target and set \"Skip Install\" to Yes.Click Build Phases and under Copy Headers, move all of the Public and Private entries to the Project section.You should then be able to build your project for Archive and submit to Apple.\nThanks to Apple Dev Forums - https://devforums.apple.com/thread/86137\n","permalink":"https://aaron.blog/xcode-4-problem-submitting-app-with-static-library/","summary":"\u003cp\u003eI'm submitting a new version of my Migraine Diary App to the App Store and was running into problems with Xcode 4 giving me the following error: \"[Your App Name] does not contain a single-bundle application or contains multiple products. Please select another archive, or adjust your scheme to create a single-bundle application.\"\u003c/p\u003e\u003cfigure\u003e\u003cimg src=\"http://www.artin.org/geekblog/wp-content/uploads/2011/03/MigraineDiaryCannotBeSubmitted.png\" class=\"kg-image\" alt loading=\"lazy\" title=\"MigraineDiaryCannotBeSubmitted\" width=\"420\" height=\"148\"\u003e\u003c/figure\u003e\u003cp\u003eThere is an issue or maybe it's an intentional design thing with Xcode 4 and how it handles statically built libraries being included in your project.  I'm specifically using Core Plot and it's instruction set hasn't been updated for Xcode 4 yet.  Here are the things I had to do to get Core Plot to bundle correctly with my App to submit it:\u003c/p\u003e","title":"Xcode 4 - Problem submitting App with Static Library"},{"content":"I've brought an old project out of the moth balls recently, the Migraine Diary application I wrote as part of my master's thesis. It was my first \"real\" iPhone app and I call tell I didn't know what I was doing entirely looking through the code. What this has forced me to do, however, is re-learn some of the basics of iOS development and of Apple design patterns. I have been spending some time back in the Apple developer documentation and will probably be posting some of the gotchas that tripped me up two years ago and I'm solving now with the better, more elegant solution.\nNavigation controllers are very useful things to have in your app, and are probably the easiest thing to implement WRONG. Two years ago, I assumed any time I needed a navigation bar up top that I needed to create a UINavigationController and make my view the root controller of it. Silly me.\nOne of the problems I was facing in the Migraine Diary app was changing the back button text when I was one or more levels deep into a navigation controller. My main view was titled \"Journal Entries\" and my child view \"Journal Entry\". By default, the controller will title the back button as \"Journal Entries\" which you can see clutters up the screen.\nI found a lot of ways of hacking the title online, but there is really only one \"right way\" according to Apple. The button titled \"Journal Entries\" is actually owned by the parent view. Before you push the child view onto the navigation controller, do something like this:\nUIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@\"Back\" style:UIBarButtonItemStyleBordered target:nil action:nil]; [[self navigationItem] setBackBarButtonItem:backButton]; [backButton release];\nTake note that you're referring to [self navigationItem] not [[self navigationController] navigationItem] since you are in the PARENT controller.\nThat's it!\n","permalink":"https://aaron.blog/ios-basics-uinavigation-controller-back-button-text/","summary":"\u003cp\u003eI've brought an old project out of the moth balls recently, the \u003ca href=\"http://itunes.apple.com/us/app/migraine-diary/id348561271?mt=8\" rel=\"noopener\"\u003eMigraine Diary\u003c/a\u003e application I wrote as part of my master's thesis.  It was my first \"real\" iPhone app and I call tell I didn't know what I was doing entirely looking through the code.  What this has forced me to do, however, is re-learn some of the basics of iOS development and of Apple design patterns.  I have been spending some time back in the Apple developer documentation and will probably be posting some of the gotchas that tripped me up two years ago and I'm solving now with the better, more elegant solution.\u003c/p\u003e","title":"iOS Basics - UINavigation Controller \u0026 Back Button Text"},{"content":"Have you enabled Emoji on your iPhone to use emoticon-like characters like 13 year-old Japanese girls? Well if you have, you've noticed that sending those characters in e-mail and IM to non-iPhone users ends up in little boxes of unreadable gibberish if you're lucky or whitespace. Most people understand the concept of Unicode if you're a geek. Someone like my mom doesn't always remember that Emoji being sent over IM, while she's on her own iPhone, isn't going to be readable when I'm on my Mac.\nWe all know, however, emoticons can convey a good portion of a conversation. I don't want to miss out on the conversation with my mom so I decided rather than schooling her every time \"I CAN'T READ THAT MOM\", let's hack Adium to show Emoji! After a few minutes of research, I've discovered, some kind soul has already done the hard work.\nGo to http://www.adiumxtras.com/index.php?a=xtras\u0026amp;xtra_id=6226Download the ZIP file or attempt to install directly into Adium (Firefox was being a bitch and didn't let me do this; I think Safari will work)Go into your Appearance Preferences and customize your Emoticons settings.Turn on \"Emoji iPhone\" and make sure it's not first in your list. At least one other one should be turned on (like Default). You can click and drag the items in this list - put Emoji last.Now when you receive an IM with an Emoji character, it should present itself as the proper image. You can also select an Emoji character from the list, but be forewarned it's a BIG list and not presented as cleanly like on the iPhone. I pretty much use it to interpret the incoming characters and for going back in my archives.\n","permalink":"https://aaron.blog/iphone-emoji-in-adium/","summary":"\u003cp\u003eHave you enabled \u003ca href=\"http://www.iphonesavior.com/2009/02/spell-number-app-unleashes-free-iphone-emoji.html\"\u003eEmoji on your iPhone\u003c/a\u003e to use emoticon-like characters like 13 year-old Japanese girls?  Well if you have, you've noticed that sending those characters in e-mail and IM to non-iPhone users ends up in little boxes of unreadable gibberish if you're lucky or whitespace.  Most people understand the concept of Unicode if you're a geek.  Someone like my mom doesn't always remember that Emoji being sent over IM, while she's on her own iPhone, isn't going to be readable when I'm on my Mac.\u003c/p\u003e","title":"iPhone Emoji in Adium"},{"content":"I do a lot of local web development on my MacBook Pro. Frequently I had multiple tiers of servers running - a Jetty instance running the web tier and a JBoss/EJB server doing the business tier behind it. The problem is JBoss opens up so many ports on a particular network adapter and trying to get JBoss and Jetty to share a single IP is a nightmare. So the easier way is to just create a new IP or alias your localhost (127.0.0.1) into something like 127.0.0.2. When you start up Jetty, you pass in the binding IP of .2 and then JBoss and Jetty place nice with each other.\nThe Mac OS command (at least 10.6) to create an alias is:\nifconfig lo0 alias 127.0.0.2\nand to delete:\nifconfig lo0 -alias 127.0.0.2\nThis is not persistent - the alias will not survive a reboot. I don't need the alias often even to require it to be permanent. If you're curious how to keep it permanent, let me know and I'll post that. This is the hacker way to do it on the command line. There is a much easier way to do it through the GUI but this way doesn't stick around on the reboot, which is one of my requirements for my project - no retaining traces. :)\n","permalink":"https://aaron.blog/mac-os-x-adding-a-loopback-alias/","summary":"\u003cp\u003eI do a lot of local web development on my MacBook Pro.  Frequently I had multiple tiers of servers running - a Jetty instance running the web tier and a JBoss/EJB server doing the business tier behind it.  The problem is JBoss opens up so many ports on a particular network adapter and trying to get JBoss and Jetty to share a single IP is a nightmare.  So the easier way is to just create a new IP or alias your localhost (127.0.0.1) into something like 127.0.0.2.  When you start up Jetty, you pass in the binding IP of .2 and then JBoss and Jetty place nice with each other.\u003c/p\u003e","title":"Mac OS X - Adding a loopback alias"},{"content":"If you don't know what Evernote is, I'll quickly summarize it for you. Evernote is a cloud-based service that is accessible through the means of a web site, mobile and computer application and various other APIs. The point of Evernote is that if you ever find something you want to remember - a piece of text, web page, a PDF, an image, recipe, sound bite, anything, you put it into Evernote. Their service indexes it to make it searchable and then you forget about it until you want to find it later in life. It's more than that but you have to discover how it's useful to you.\nAnyway, I've been slowly integrating Evernote into my life. I've been scanning things in like extended warranty contracts for my cars and things that I normally keep in a filing cabinet at home but would need in a pinch when I'm not at home. Those scanned PDFs in Evernote become very useful wherever I am and now are searchable even if they are handwritten documents.\nTime Warner had me in a great package deal including their digital phone, digital cable, RoadRunner and a cable box for one price. Because of a problem two years back I was actually at the same price for over three years. That package expired 12/31 and my bill ended up jumping up nearly $60/month which I couldn't justify since I never use the home phone service. I ended up going in to the nearest Time Warner store and returning their cable box and remote, which they no longer include in any package, and exchanging the cable modem for one without phone service. The price I was quoted by their retention department for the new package was reasonable and was for two years. I was not told it would require signing a contract and the representative was a jerk about that in the store.\nLong story short, he agreed to give a year at $5 a month more. I didn't quite trust the guy so I had him give me a screen print of what he did showing the prices. When I got home, I scanned it into Evernote. A couples weeks later I discovered my bill was wrong while I was at work. When I called in, I popped open Evernote, read off a few screen codes to the rep and she believed my story and realized I had a screen print from their system.\nGoes to show taking initiative getting the screen print and using Evernote to record that data makes life easier!\n","permalink":"https://aaron.blog/how-evernote-won-my-time-warner-battle/","summary":"\u003cfigure\u003e\u003cimg src=\"http://www.artin.org/geekblog/wp-content/uploads/2011/01/Evernote_Icon_256.jpg\" class=\"kg-image\" alt loading=\"lazy\" title=\"Evernote_Icon_256\" width=\"150\" height=\"150\"\u003e\u003c/figure\u003e\u003cp\u003eIf you don't know what \u003ca href=\"http://www.evernote.com\" rel=\"noopener\"\u003eEvernote\u003c/a\u003e is, I'll quickly summarize it for you.  Evernote is a cloud-based service that is accessible through the means of a web site, mobile and computer application and various other APIs.  The point of Evernote is that if you ever find something you want to remember - a piece of text, web page, a PDF, an image, recipe, sound bite, anything, you put it into Evernote.  Their service indexes it to make it searchable and then you forget about it until you want to find it later in life.  It's more than that but you have to discover how it's useful to you.\u003c/p\u003e","title":"How Evernote Won My Time Warner Battle"},{"content":"There has been quite a bit of press about the upcoming Verizon / CDMA iPhone. I'm happy to hear that AT\u0026amp;T will finally lose the monopoly on the iPhone in the United States, but I'm disappointed that nothing has come out yet about T-Mobile carrying the GMS version of the phone. AT\u0026amp;T needs the competition to spread out the massive amount of users onto another network because frankly, they can't handle the amount of growth they've experienced. The iPhone is a great device, and I've had nothing but a positive experience for the most part with AT\u0026amp;T.\nI'll probably never switch from AT\u0026amp;T over to Verizon for the simple fact that GSM provides SIM cards, whereas CDMA does not. I like having the option available to me to swap my SIM into a different device, like when I go camping, so that I don't risk damaging the $400+ device when I don't need to. Of course, the iPhone 4's micro-SIM provides its own unique challenges, but a simple physical adapter allows it to be used in an older traditional SIM card holder.\nCDMA phones, at least in the USA, require the phone provider to activate each device and you cannot swap on a whim. Most people could care less. I on the other hand like being able to switch around equipment when needed, and not having to pay the provider to do it.\n","permalink":"https://aaron.blog/cdma-verizon-iphone/","summary":"\u003cp\u003eThere has been quite a bit of press about the upcoming Verizon / CDMA iPhone.  I'm happy to hear that AT\u0026amp;T will finally lose the monopoly on the iPhone in the United States, but I'm disappointed that nothing has come out yet about T-Mobile carrying the GMS version of the phone.  AT\u0026amp;T needs the competition to spread out the massive amount of users onto another network because frankly, they can't handle the amount of growth they've experienced.  The iPhone is a great device, and I've had nothing but a positive experience for the most part with AT\u0026amp;T.\u003c/p\u003e","title":"CDMA / Verizon iPhone"},{"content":"I recently upgraded a project I'm working on to Hibernate 3.6.0.Final from 3.5.6 and realized that one of my entities that had a CLOB (character large object) was pooping out. I was getting an exception stack track similar to:\nCaused by: org.postgresql.util.PSQLException: Bad value for type long : \u0026lt;table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" id=\"productDetailLineItems\"\u0026gt;\u0026lt;thead\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td rowspan=\"2\"\u0026gt;\u0026lt;input type=\"hidden\" name=\"productGroupId\" id=\"productGroupId\" value=\"101111\"/\u0026gt;Item Number\u0026lt;/td\u0026gt;\u0026lt;td rowspan=\"2\"\u0026gt;Motor HP\u0026lt;/td\u0026gt;\u0026lt;td rowspan=\"2\"\u0026gt;Price\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/thead\u0026gt;\u0026lt;tbody\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;form method=\"post\" id=\"4581000\" name=\"4581000\" action\u0026gt;\u0026lt;td\u0026gt;4581000\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;\u0026lt;span style=\"fraction\"\u0026gt;\u0026lt;sup\u0026gt;1\u0026lt;/sup\u0026gt;/\u0026lt;sub\u0026gt;2\u0026lt;/sub\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;\u0026lt;input type=\"button\" onclick=\"javascript:addToCart('4581000');\" value=\"$prc4581000\" /\u0026gt;\u0026lt;/td\u0026gt;\u0026lt;/form\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/tbody\u0026gt;\u0026lt;/table\u0026gt;at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong(AbstractJdbc2ResultSet.java:2690) [:]at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:1995) [:]at org.postgresql.jdbc3.Jdbc3ResultSet.getClob(Jdbc3ResultSet.java:44) [:]at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getClob(AbstractJdbc2ResultSet.java:373) [:]at org.jboss.resource.adapter.jdbc.WrappedResultSet.getClob(WrappedResultSet.java:516) [:6.0.0.Final]at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$2.doExtract(ClobTypeDescriptor.java:70) [:3.6.0.Final]at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:249) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:229) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:330) [:3.6.0.Final]at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265) [:3.6.0.Final]at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527) [:3.6.0.Final]at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455) [:3.6.0.Final]at org.hibernate.loader.Loader.getRow(Loader.java:1355) [:3.6.0.Final]at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611) [:3.6.0.Final]at org.hibernate.loader.Loader.doQuery(Loader.java:829) [:3.6.0.Final]at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) [:3.6.0.Final]at org.hibernate.loader.Loader.loadEntity(Loader.java:2037) [:3.6.0.Final]... 167 more\nI do local development on my MacBook Pro with PostgreSQL 9.0.2 and will point my machine at the client's DB2 database once in a while for pushes to their development system. When I point the system at their DB dev database, everything works fine. Pointing back at my PostgreSQL, the entity craps out. I tried going back to the old 8.0 driver like some people online suggested with no luck. I hadn't tried using this entity since I upgraded to Hibernate 3.6 because I also have been moving from OpenEJB to JBoss 6 so it could have been that as well.\nUltimately I found a simple solution. PostgreSQL apparently doesn't play well with Hibernate 3.6 and requires a specific Hibernate annotation on your entity (I'm using JPA entities by the way). On your CLOB, in addition to the @Lob, add:\n@Type(type=\"org.hibernate.type.StringClobType\")\nRedeploy your application and Hibernate should behave properly.\n","permalink":"https://aaron.blog/hibernate-3-6-0-final-postgresql-clobs/","summary":"\u003cp\u003eI recently upgraded a project I'm working on to Hibernate 3.6.0.Final from 3.5.6 and realized that one of my entities that had a CLOB (character large object) was pooping out.  I was getting an exception stack track similar to:\u003c/p\u003e\u003cp\u003eCaused by: org.postgresql.util.PSQLException: Bad value for type long : \u0026lt;table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" id=\"productDetailLineItems\"\u0026gt;\u0026lt;thead\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;td rowspan=\"2\"\u0026gt;\u0026lt;input type=\"hidden\" name=\"productGroupId\" id=\"productGroupId\" value=\"101111\"/\u0026gt;Item Number\u0026lt;/td\u0026gt;\u0026lt;td rowspan=\"2\"\u0026gt;Motor HP\u0026lt;/td\u0026gt;\u0026lt;td rowspan=\"2\"\u0026gt;Price\u0026lt;/td\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/thead\u0026gt;\u0026lt;tbody\u0026gt;\u0026lt;tr\u0026gt;\u0026lt;form method=\"post\" id=\"4581000\" name=\"4581000\" action\u0026gt;\u0026lt;td\u0026gt;4581000\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;\u0026lt;span style=\"fraction\"\u0026gt;\u0026lt;sup\u0026gt;1\u0026lt;/sup\u0026gt;/\u0026lt;sub\u0026gt;2\u0026lt;/sub\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/td\u0026gt;\u0026lt;td\u0026gt;\u0026lt;input type=\"button\" onclick=\"javascript:addToCart('4581000');\" value=\"$prc4581000\" /\u0026gt;\u0026lt;/td\u0026gt;\u0026lt;/form\u0026gt;\u0026lt;/tr\u0026gt;\u0026lt;/tbody\u0026gt;\u0026lt;/table\u0026gt;at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong(AbstractJdbc2ResultSet.java:2690) [:]at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:1995) [:]at org.postgresql.jdbc3.Jdbc3ResultSet.getClob(Jdbc3ResultSet.java:44) [:]at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getClob(AbstractJdbc2ResultSet.java:373) [:]at org.jboss.resource.adapter.jdbc.WrappedResultSet.getClob(WrappedResultSet.java:516) [:6.0.0.Final]at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$2.doExtract(ClobTypeDescriptor.java:70) [:3.6.0.Final]at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:249) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:229) [:3.6.0.Final]at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:330) [:3.6.0.Final]at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2265) [:3.6.0.Final]at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527) [:3.6.0.Final]at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455) [:3.6.0.Final]at org.hibernate.loader.Loader.getRow(Loader.java:1355) [:3.6.0.Final]at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611) [:3.6.0.Final]at org.hibernate.loader.Loader.doQuery(Loader.java:829) [:3.6.0.Final]at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) [:3.6.0.Final]at org.hibernate.loader.Loader.loadEntity(Loader.java:2037) [:3.6.0.Final]... 167 more\u003c/p\u003e","title":"Hibernate 3.6.0.Final + PostgreSQL + CLOBs"},{"content":"You can find me on Twitter or you can contact me via the form below.\n[contact-form][contact-field label='Name' type='name' required='1'/][contact-field label='Email' type='email' required='1'/][contact-field label='Comment' type='textarea' required='1'/][/contact-form]\n","permalink":"https://aaron.blog/contact-me/","summary":"\u003cp\u003eYou can find me on \u003ca href=\"http://twitter.com/astralbodies\" rel=\"noopener\"\u003eTwitter\u003c/a\u003e or you can contact me via the form below.\u003c/p\u003e\u003cp\u003e[contact-form][contact-field label='Name' type='name' required='1'/][contact-field label='Email' type='email' required='1'/][contact-field label='Comment' type='textarea' required='1'/][/contact-form]\u003c/p\u003e","title":"Contact Me"},{"content":"Installing MySQL should be a no brainer on any operating system, especially with how mature of a product it is. Apparently that assumption is incorrect. I tried installing the most recent GA release of MySQL on my new Snow Leopard machine, and found I couldn't start the blasted server. I've become lazy the older I get - I don't want to screw around with shell scripts, hacking this tweaking that. If I'm provided a Mac-based installer I WANT IT TO WORK. So, if you're like me and are frustrated as all hell with not being able to get MySQL to start via System Preferences after installing the 64-bit version (maybe 32-bit as well), do the following:\nDrop into Terminal.appType: sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /usr/local/mysql/support-files/mysql.serverFind the line starting with basedir and datadir and replace with: basedir=/usr/local/mysql datadir=/usr/local/mysql/dataSave the fileStart MySQL using the System Preferences pane button.I'm amazed this is the fix and that the MySQL team overlooked the configuration change in their packaging. Very irritating. Enjoy.\n","permalink":"https://aaron.blog/installing-mysql-5-5-8-on-mac-os-x-snow-leopard/","summary":"\u003cp\u003eInstalling MySQL should be a no brainer on any operating system, especially with how mature of a product it is.  Apparently that assumption is incorrect.  I tried installing the most recent GA release of MySQL on my new Snow Leopard machine, and found I couldn't start the blasted server.  I've become lazy the older I get - I don't want to screw around with shell scripts, hacking this tweaking that.  If I'm provided a Mac-based installer I WANT IT TO WORK.  So, if you're like me and are frustrated as all hell with not being able to get MySQL to start via System Preferences after installing the 64-bit version (maybe 32-bit as well), do the following:\u003c/p\u003e","title":"Installing MySQL 5.5.8 on Mac OS X Snow Leopard"},{"content":"I've been working with Hibernate 3.3.2 and Hibernate Search 3.1 for the past few months. We finally got to a point in our project where we are sucking in mass amounts of data into our application from a large business application via JMS. Suddenly, I'm getting the following errors during persistence:\norg.hibernate.AssertionFailure: collection [ class name here ] was not processed by flush()\nI tried changing the owning side of the collection, made a join table, and nothing helped. The error started when I added an @IndexEmbedded annotation to the collection, and I discovered I was missing the @ContainedIn annotation in the collection entity. That didn't fix it. After weeks of doing little tweaks, breaking, fixing, breaking, fixing, I finally discovered the problem. I was using an older manual for Hibernate Search (3.0 specifically) and I had the following configuration parameter pushed into my SessionFactory:\nhibernate.search.worker.batch_size = 1\nAs of Hibernate Search 3.1, that parameter has been deprecated. It has been replaced by a number of other settings allowing finer-grained control over your batch processing in Hibernate Search. Eventually we're upgrading to Hibernate Search 3.2 which handles batches altogether differently/better. Thought I'd share, because this one had me stumped.\n","permalink":"https://aaron.blog/flush-this-hibernate/","summary":"\u003cp\u003eI've been working with Hibernate 3.3.2 and Hibernate Search 3.1 for the past few months.  We finally got to a point in our project where we are sucking in mass amounts of data into our application from a large business application via JMS.  Suddenly, I'm getting the following errors during persistence:\u003c/p\u003e\u003cp\u003eorg.hibernate.AssertionFailure: collection [ class name here ] was not processed by flush()\u003c/p\u003e\u003cp\u003eI tried changing the owning side of the collection, made a join table, and nothing helped.  The error started when I added an @IndexEmbedded annotation to the collection, and I discovered I was missing the @ContainedIn annotation in the collection entity.  That didn't fix it.  After weeks of doing little tweaks, breaking, fixing, breaking, fixing, I finally discovered the problem.  I was using an older manual for Hibernate Search (3.0 specifically) and I had the following configuration parameter pushed into my SessionFactory:\u003c/p\u003e","title":"Flush THIS Hibernate!"},{"content":"The current project I'm on is pretty heavy into internationalization aka i18n. I found a pretty decent resource bundle editor for Eclipse that makes creating synchronized files across all languages much simpler.\nhttp://sourceforge.net/projects/eclipse-rbe\nIt installs in a snap and provides a simple, yet powerful, interface for a bundle.\n","permalink":"https://aaron.blog/eclipse-properties-files-resourcebundles-editor/","summary":"\u003cp\u003eThe current project I'm on is pretty heavy into internationalization aka i18n.  I found a pretty decent resource bundle editor for Eclipse that makes creating synchronized files across all languages much simpler.\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://sourceforge.net/projects/eclipse-rbe\" rel=\"noopener\"\u003ehttp://sourceforge.net/projects/eclipse-rbe\u003c/a\u003e\u003c/p\u003e\u003cp\u003eIt installs in a snap and provides a simple, yet powerful, interface for a bundle.\u003c/p\u003e","title":"Eclipse \u0026 Properties Files / ResourceBundles Editor"},{"content":"I've had problems connecting to my Ubuntu 9.10 server via Mac OS' built-in VNC client, \"Screen Sharing\". Frequently when I connect, I get a white screen with no indication that the connection is working. If I type characters or click the mouse, it does actually send those events to the remote side. My only option was to use Chicken of the VNC (which sucks) to connect to my server. Finally, I did some digging and found the solution/workaround.\nOpen a new Finder window.Click \"Go\" and then \"Go to Folder\" (or hit Command-Shift-G).Type in \"/System/Library/CoreServices\" and hit enter.Find the \"Screen Sharing\" application, click once to highlight.Click \"File\" and then \"Get Info\" (or hit Command-I).Find the checkbox labeled \"Open in 32-bit mode\" and check it.Close the Info window and Finder folder window.That's it! Apparently there is a bug in the application only when running in 64-bit mode. I don't really care why it fixes it, I'm just glad its fixed and I thought I'd share.\nThanks to the anonymous user on Mac OS X Hints!\n","permalink":"https://aaron.blog/mac-screen-sharing-vnc-white-screen/","summary":"\u003cp\u003eI've had problems connecting to my Ubuntu 9.10 server via Mac OS' built-in VNC client, \"Screen Sharing\".  Frequently when I connect, I get a white screen with no indication that the connection is working.  If I type characters or click the mouse, it does actually send those events to the remote side.  My only option was to use Chicken of the VNC (which sucks) to connect to my server.  Finally, I did some digging and found the solution/workaround.\u003c/p\u003e","title":"Mac Screen Sharing (VNC) \u0026 White Screen"},{"content":"I've spent the past two days trying to get a distributed secondary Hibernate cache working with a Spring 3 application. The application is web-based running on JBoss 5.1 so I figured the best approach would be to use JBoss Cache, since it's automatically configured and available in JNDI when you use the \"all\" configuration.\nHibernate 3.3.2 is configured inside of Spring using the Annotation-based session factory bean. Because I'm using JTA to manage transactions and Hibernate's current session, I need to make sure that the secondary cache, whatever I choose, is aware of the transaction manager. I originally had EHCache 2.0.1 hooked into Hibernate via Hibernate configuration parameters passed into Spring's bean. I was not setting the cache factory parameter on this bean. Everything works fine in this configuration and it recognizes the JTA transactions.\nThis application needs to be clustered horizontally - ensuring each component of the solution is failover-ready. JBoss Cache 2 is baked into JBoss AS 5.1 and a logical choice to pick. Hibernate has an extension JAR and it's a simple interface, especially when you're pulling out the cache from JNDI.\nThe problem? The JTA transaction manager that Spring proxies isn't available to JBoss Cache. JBoss Cache (on JBoss AS) runs at the container-level inside of a different classloader. Spring holds onto the reference to the transaction manager proxy inside of a ThreadLocal variable which is NOT accessible to the container. To get around this, I tried using Hibernate's implementation of the JBoss Transaction Manager lookup class, thinking since it's JTA it'll work.\nIt didn't.\nWhen I tried bringing up the application, I ran into errors surrounding the current transaction. At one point, the transaction was timing out during a cache pre-load process the application has. In another configuration, the application loaded but after a few minutes the app exceptioned out with a stale JDBC connection to the database. It was obvious to me that the JTA transaction surrounding the cache didn't sync with the Spring JTA transaction.\nI eventually gave up on JBoss Cache and am going with EHCache 2.0 using JGroups to synchronize each node. The \"all\" configuration of JBoss AS 5.1 has both JGroups and JBoss Cache preconfigured. I hooked into the synchronous JGroups UDP configuration, using the same JVM parameters the JBoss XML files use so that my app doesn't need a special deployment for each server. Theoretically, the configuration will work in a cluster without having to change anything around.\nWe'll see how the clustering works later on but for now, single node in cluster mode is working just fine.\n","permalink":"https://aaron.blog/spring-3-0-hibernate-3-3-2-jboss-cache-2-jta-fail/","summary":"\u003cp\u003eI've spent the past two days trying to get a distributed secondary Hibernate cache working with a Spring 3 application.  The application is web-based running on JBoss 5.1 so I figured the best approach would be to use JBoss Cache, since it's automatically configured and available in JNDI when you use the \"all\" configuration.\u003c/p\u003e\u003cp\u003eHibernate 3.3.2 is configured inside of Spring using the Annotation-based session factory bean.  Because I'm using JTA to manage transactions and Hibernate's current session, I need to make sure that the secondary cache, whatever I choose, is aware of the transaction manager.  I originally had EHCache 2.0.1 hooked into Hibernate via Hibernate configuration parameters passed into Spring's bean.  I was not setting the cache factory parameter on this bean.  Everything works fine in this configuration and it recognizes the JTA transactions.\u003c/p\u003e","title":"Spring 3.0 + Hibernate 3.3.2 + JBoss Cache 2 + JTA = Fail"},{"content":"I may have mentioned it before, but I created a Migraine Diary application for the iPhone as my master's captone/thesis project. The school year finished out for me and I submitted the application to Apple on the 29th. Two days - TWO DAYS - later they approved it and it's listed in iTunes!\nHead on over to Net Workz LLC to find the app.\nI still have a lot of work left to do before I'm really happy with it. Help screens, more graphing, and encryption are two things I really need to get out there. Until then, enjoy!\n","permalink":"https://aaron.blog/iphone-migraine-diary/","summary":"\u003cp\u003eI may have mentioned it before, but I created a Migraine Diary application for the iPhone as my master's captone/thesis project.  The school year finished out for me and I submitted the application to Apple on the 29th.  Two days - TWO DAYS - later they approved it and it's listed in iTunes!\u003c/p\u003e\u003cp\u003eHead on over to \u003ca href=\"http://www.networkzllc.net/migraine-diary/\"\u003eNet Workz LLC\u003c/a\u003e to find the app.\u003c/p\u003e\u003cp\u003eI still have a lot of work left to do before I'm really happy with it.  Help screens, more graphing, and encryption are two things I really need to get out there.  Until then, enjoy!\u003c/p\u003e","title":"iPhone Migraine Diary"},{"content":"I didn't start developing in Xcode \"for real\" until this year but I've played around with Xcode for a number of years. Over that time, I've screwed around with settings and changed defaults. It got to the point where following screen shot examples weren't matching up, #pramga marks in my code weren't showing up correctly in the code editor method drop down list and on and on. Perusing through Xcode Workspace Guide, I found this handy little suggestion from Apple:\nTo reset Xcode to its factory settings for the logged-in user, run these commands in Terminal:\n\u0026gt; defaults delete com.apple.Xcode\u0026gt; rm -rf ~/Library/Application Support/Xcode\nAfter doing this, I had to re-add my Subversion repository, move my build folder to the /tmp directory, and pick my text editor color scheme again. However, I now have a functioning Xcode and things seems happier again. Yippy skippy!\n","permalink":"https://aaron.blog/xcode-wtf-are-you-doing/","summary":"\u003cp\u003eI didn't start developing in Xcode \"for real\" until this year but I've played around with Xcode for a number of years.  Over that time, I've screwed around with settings and changed defaults.  It got to the point where following screen shot examples weren't matching up, #pramga marks in my code weren't showing up correctly in the code editor method drop down list and on and on.  Perusing through Xcode Workspace Guide, I found this handy little suggestion from Apple:\u003cbr\u003eTo reset Xcode to its factory settings for the logged-in user, run these commands in Terminal:\u003c/p\u003e","title":"Xcode WTF are you doing?!"},{"content":"Google just announced today (or yesterday?) that you can now have Google Voice's voicemail replace your cell phone's voicemail.\nhttp://googlevoiceblog.blogspot.com/2009/10/google-voice-with-your-existing-number.html\nWhat this means is you can now have all of your voicemails handled by one service provider. This feature only works with cell phones (most US carriers supported) but not landlines, VoIP or SIP phones yet.\nI switched my iPhone voicemail over to Google Voice today for a trial period. I'll see if I like it and report back. My first attempt wasn't perfect - it took nearly four additional rings after I ignored a test call for Google Voice to pick up. A total of eight rings is way too much for most callers to wait to leave a message.\nOne important thing to note - you will most likely have to pay airtime for the call while it is RINGING and inside of your Google Voice mailbox. You're not going to get something for free :).\n","permalink":"https://aaron.blog/google-voice-voicemail-for-your-cell/","summary":"\u003cp\u003eGoogle just announced today (or yesterday?) that you can now have Google Voice's voicemail replace your cell phone's voicemail.\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://googlevoiceblog.blogspot.com/2009/10/google-voice-with-your-existing-number.html\" rel=\"noopener\"\u003ehttp://googlevoiceblog.blogspot.com/2009/10/google-voice-with-your-existing-number.html\u003c/a\u003e\u003c/p\u003e\u003cp\u003eWhat this means is you can now have all of your voicemails handled by one service provider.  This feature only works with cell phones (most US carriers supported) but not landlines, VoIP or SIP phones yet.\u003c/p\u003e\u003cp\u003eI switched my iPhone voicemail over to Google Voice today for a trial period.  I'll see if I like it and report back.  My first attempt wasn't perfect - it took nearly four additional rings after I ignored a test call for Google Voice to pick up.  A total of eight rings is way too much for most callers to wait to leave a message.\u003c/p\u003e","title":"Google Voice voicemail for your cell"},{"content":"Xcode 3.2.1 was released today and is available for download with iPhone SDK 3.1.2. This release is mainly a bug fix release and I've confirmed it does fix the Unit Testing issue I reported earlier.\n","permalink":"https://aaron.blog/xcode-3-2-1/","summary":"\u003cp\u003eXcode 3.2.1 was released today and is available for download with iPhone SDK 3.1.2.  This release is mainly a bug fix release and I've confirmed it does fix the Unit Testing issue I reported earlier.\u003c/p\u003e","title":"Xcode 3.2.1"},{"content":"I haven't written unit tests before in Xcode. I started to read Apple's article on unit testing with iPhone development because I wanted to follow sound development principles with an agile approach. Not long into the guide, I got stuck. Literally. Using Xcode 3.2 on Snow Leopard caused Xcode to lock/hang during the build of the logical unit test. Same results after iPhone SDK 3.1 came out. I couldn't find anything online either except a few people experiencing the same issue. In the system console (not Xcode console) I was seeing:\n9/18/09 8:35:29 PM Xcode[669] -[XCBuildLogCommandInvocationSection setTestsPassedString:]: unrecognized selector sent to instance 0x2009b76209/18/09 8:35:29 PM Xcode[669] -runOperationInBackground raised an exception: -[XCBuildLogCommandInvocationSection setTestsPassedString:]: unrecognized selector sent to instance 0x2009b7620Xcode[669]\n-[XCBuildLogCommandInvocationSection setTestsPassedString:]: unrecognized selector sent to instance 0x2009b7620\nXcode[669]\n-runOperationInBackground raised an exception: -[XCBuildLogCommandInvocationSection setTestsPassedString:]: unrecognized selector sent to instance 0x2009b7620\nNeedless to say, I was losing my mind. Finally, a user in the Apple Developer forums, \"cde\", posted the following gem:\nWe have recently discovered the root cause of this problem.\nPeople who are affected can work around it by (I hope you're ready for this)...\n...changing the Time Zone on your Build machine away from Central Daylight Time. (In six weeks you can change it back, and people in Mountain Standard TIme will be affected.)\nNo, seriously.\u0026nbsp; Give it a try.\nThe problem is a single-character typo in a regular expression that parses the date stamp of the unit test. It causes it to miss the beginning of unit tests that are executed at -0500 or +0500 relative to GMT, so the end of those unit tests is unexpected, and it causes the build log parsing logic to initially hang and eventually crash.\nAs has been said, \"Then I decided to use regular expressions, and I had two problems...\"So until it's fixed, change your timezone to Pacific time.\n","permalink":"https://aaron.blog/xcode-snow-leopard-logical-unit-tests-hanging/","summary":"\u003cp\u003eI haven't written unit tests before in Xcode.  I started to read Apple's article on unit testing with iPhone development because I wanted to follow sound development principles with an agile approach.  Not long into the guide, I got stuck.  Literally.  Using Xcode 3.2 on Snow Leopard caused Xcode to lock/hang during the build of the logical unit test.  Same results after iPhone SDK 3.1 came out.  I couldn't find anything online either except a few people experiencing the same issue.  In the system console (not Xcode console) I was seeing:\u003c/p\u003e","title":"Xcode \u0026 Snow Leopard - Logical unit tests hanging"},{"content":"I'm currently using Scrum in my school capstone project. The advisor, however, designed the deliverables around the Unified Process and still expects some things like a Software Project Management Plan (SPMP). While it's a little late in the game, I've decided to fill one out and hope that maybe it'll help weed out some requirements I didn't document well in my backlogs.\nFirst task - find a template. An SPMP is usually based off of IEEE's standard 1058-1998, which costs more than a hundred dollars to get a copy of. I'm not paying $100+ to get a 200KB document. I've seen example around the Internet of a SPMP but nothing that was formatted well in Word or handled copying and pasting into Word. I spent some time doing more digging and found this wonderful site -\nConstrux - Resources \u0026amp; Tools\nThe site/company was founded by Steve McConnell - a name I had not heard of until now. He's apparently well known for software design, etc. Free registration gives you access to the tools and under Management there is a full and light template along with instructions. Score!\n","permalink":"https://aaron.blog/software-project-management-plan-template/","summary":"\u003cp\u003eI'm currently using Scrum in my school capstone project.  The advisor, however, designed the deliverables around the Unified Process and still expects some things like a Software Project Management Plan (SPMP).  While it's a little late in the game, I've decided to fill one out and hope that maybe it'll help weed out some requirements I didn't document well in my backlogs.\u003c/p\u003e\u003cp\u003eFirst task - find a template.  An SPMP is usually based off of IEEE's standard 1058-1998, which costs more than a hundred dollars to get a copy of.  I'm not paying $100+ to get a 200KB document.  I've seen example around the Internet of a SPMP but nothing that was formatted well in Word or handled copying and pasting into Word.  I spent some time doing more digging and found this wonderful site -\u003c/p\u003e","title":"Software Project Management Plan Template"},{"content":"Xcode has a build directory inside of your project, which you shouldn't be including in your source code management repository. Simply said, those files change so much and are \"discardable\". There is no way to easily exclude this directory from your repository. The accepted way to fix this (after some digging) is to simply move the build directory for Xcode to a temporary folder.\nTo move the build directory, click on the Xcode menu in your menu bar, and click on Preferences. Change the folder under \"Building\" to a temporary folder. I created a tmp directory in my user folder.\n","permalink":"https://aaron.blog/xcode-scm-build-directory/","summary":"\u003cp\u003eXcode has a build directory inside of your project, which you shouldn't be including in your source code management repository.  Simply said, those files change so much and are \"discardable\".  There is no way to easily exclude this directory from your repository.  The accepted way to fix this (after some digging) is to simply move the build directory for Xcode to a temporary folder.\u003c/p\u003e\u003cp\u003eTo move the build directory, click on the Xcode menu in your menu bar, and click on Preferences.  Change the folder under \"Building\" to a temporary folder.  I created a tmp directory in my user folder.\u003c/p\u003e","title":"Xcode SCM \u0026 build directory"},{"content":"I admit, back in the day I stole a lot of music with peer to peer sharing programs like Napster and WinMX. I stopped after I realized that most times the MP3s I was getting were subpar and the metadata associated with them was crap. I spent more time fixing artist names, track numbers, etc than I did listening to the actual music. Enter buying a Mac and having iTunes and I've tried to go legal for all my music.\nThen my mom calls me this last week. \"Hey, I'm looking for the sound track to Steven King's tv movie The Stand. They don't make it any more and Ebayers want like $60. Can you find it 'for free'?\"\nMy mom is asking me to break the law and download this CD without paying for it. I, of course, said no problem and starting the search and eventually found a few seeders with the songs. I went to iTunes and the album was there, sort of, but I couldn't view it getting a \"not available in the US Store\" error. Amazon doesn't sell the CD and their marketplace sellers want $40+ for a copy.\nWhen I told my mom I had the files, a mere 30 minutes after she requested them, remorse set in for her. \"Oh are you sure this is okay??\" I told her, it's illegal and if the RIAA had anything to say about it, they'd cut off my nipples. However, I've tried every LEGAL route to obtain the album. It's not like this is a collection of songs from other albums - this is music orchestrated specifically for the movie.\nSo, in the end, screw the music industry (in this case). You don't want to sell it to me, then I don't want to buy it from you.\n","permalink":"https://aaron.blog/stealing-music/","summary":"\u003cp\u003eI admit, back in the day I stole a lot of music with peer to peer sharing programs like Napster and WinMX.  I stopped after I realized that most times the MP3s I was getting were subpar and the metadata associated with them was crap.  I spent more time fixing artist names, track numbers, etc than I did listening to the actual music.  Enter buying a Mac and having iTunes and I've tried to go legal for all my music.\u003c/p\u003e","title":"Stealing Music"},{"content":"I finally got my Google Voice fka GrandCentral invite last week. I have to admit, I got really giddy like a kid getting candy when I saw the invite come through e-mail. So, I signed up, put my phone numbers in and have had two weeks to try it out. The verdict so far? It still needs some work but I love it simply because its free and super convenient.\nVoicemailGoogle Voice's main focus is on voice calls, obviously. You get one virtual phone number that rings all of your phones and a centralized voicemail system. This is very reminiscent of Vonage's multiring service but with one small (and very important) difference. Google Voice announces the call which prevents your individual voicemail / answering machines from snatching the call. This allows the Google Voice mailbox to truly hang onto the call and make it the only place you need to check for messages.\nGoogle Voice's voicemail center feels like Gmail. Its even integrated with your Google Contacts from Gmail. I had to set up synchronization between my Apple Address Book on my Mac and Gmail so that all my calls had the same metadata as my cell phone. After some screwing around, I got that to work.\nSMSI was very pleasantly surprised to find SMS supported in Google Voice. You can send and receive SMS (read - NOT MMS) messages from the Google Voice interface for free. Messages hit your contacts with your Google Voice number and replies are copied to your cell phone on file. The text messages going to your cell phone come from a \"fake\" phone number that allows you to reply, looping through Google Voice, and out to your contact. Doing this allows GV to retain your SMS history and it hides your cell number from the contact. Only caveat - it prefixes the message with the sender's name, which can make a 140 character message actually come across your cell phone as two messages. You can, however, disable SMS to your phone but then you're responsible for checking your GV inbox for incoming texts.\nCustomizationGoogle Voice allows you to create special voicemail greetings based on groups you set up or for individual contacts (based on the incoming phone number). Cell phone providers like AT\u0026amp;T have features like this but they tack on a large monthly fee to cover this. It's nice being able to have family and friends get an informal greeting whereas my standard greeting is more business-like.\nConvenienceUltimately, Google Voice is something I am going to take full advantage of. I am a software consultant and frequently have to give clients a phone number to contact me after hours. I do not like giving my personal cell phone number out simply because my employer does not reimburse me for the expense nor is that time truly billable to the client. I have an extension at my employer that is in itself virtual. Up until this point, that extension rang my cell phone. It was nice being able to give out an extension number instead of my cell, but again my cell voicemail took the calls. I don't want to have to leave a professional greeting on my cell phone. Now, I can associate the outgoing phone number at work with a professional greeting and the callers won't know they're calling outside of work.\nAlso, I do not have a guarantee of having cell phone coverage nor a desk phone when I'm at a client. Google Voice hooks into Gizmo5, a Skype-type service. This means that if I have outside Internet access, my Google Voice number can also dial my computer as well as my other phones. GV also can initiate a call for you, forward the call to your Gizmo5 SIP number - essentially giving you free outgoing calls.\nIs it worth it?Yes. Be advised, you're putting call history, voicemail, and SMS in the hands of a third party. I'm okay with this since AT\u0026amp;T already logs my SMS messages and has the capability to pull call records and voicemails. Its really no different. Get on the waiting list!!\n","permalink":"https://aaron.blog/two-weeks-with-google-voice/","summary":"\u003cp\u003eI finally got my Google Voice fka GrandCentral invite last week.  I have to admit, I got really giddy like a kid getting candy when I saw the invite come through e-mail.  So, I signed up, put my phone numbers in and have had two weeks to try it out.  The verdict so far?  It still needs some work but I love it simply because its free and super convenient.\u003c/p\u003e","title":"Two Weeks with Google Voice"},{"content":"Everyone is giving their two cents about the iPhone 3GS. I'm excited to see that Apple is releasing a faster phone that still feels like the first generation iPhone. Developers are used to a specific screen size for instance. Drastically changing the environment will create the discord other cell phone manufacturers feel when it comes to 3rd party applications.\nI do suspect, however, that next year will bring drastic change to the iPhone. Apple is still getting to where they really wanted the 1st generation iPhone to be. They realized that its easy to make their own hardware and software, but its hard when dealing with so many third parties. Cell phone carriers like AT\u0026amp;T stand in the way of real progress. Why doesn't Apple follow suit with Virgin and create their own private label cell phone company? I suspect that would give them a lot more flexibility in pricing and give them the ability to put whatever carrier they want behind the name.\nOverall, I am happy with AT\u0026amp;T at the moment. I am pissed to hear MMS and tethering won't be available this coming week for the iPhone 3.0 launch. I refuse to pay any more money for something that I can get for free by putting my SIM card into an OLDER phone. Silly AT\u0026amp;T, you're the death of the iPhone in the US.\n","permalink":"https://aaron.blog/thoughts-on-the-iphone-3gs/","summary":"\u003cp\u003eEveryone is giving their two cents about the iPhone 3GS.  I'm excited to see that Apple is releasing a faster phone that still feels like the first generation iPhone.  Developers are used to a specific screen size for instance.  Drastically changing the environment will create the discord other cell phone manufacturers feel when it comes to 3rd party applications.\u003c/p\u003e\u003cp\u003eI do suspect, however, that next year will bring drastic change to the iPhone.  Apple is still getting to where they really wanted the 1st generation iPhone to be.  They realized that its easy to make their own hardware and software, but its hard when dealing with so many third parties.  Cell phone carriers like AT\u0026amp;T stand in the way of real progress.  Why doesn't Apple follow suit with Virgin and create their own private label cell phone company?  I suspect that would give them a lot more flexibility in pricing and give them the ability to put whatever carrier they want behind the name.\u003c/p\u003e","title":"Thoughts on the iPhone 3GS"},{"content":"I've been scratching my freaking head for an hour trying to figure out how to load an image from my application's bundle. Doing this in Interface Builder is easy as pie, but not so straightforward.\n[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@\"thefilename\" ofType:@\"jpg\"]];\nEasy, isn't it?\n","permalink":"https://aaron.blog/loading-a-uiimage-from-a-bundle/","summary":"\u003cp\u003eI've been scratching my freaking head for an hour trying to figure out how to load an image from my application's bundle.  Doing this in Interface Builder is easy as pie, but not so straightforward.\u003c/p\u003e\u003cp\u003e[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@\"thefilename\" ofType:@\"jpg\"]];\u003c/p\u003e\u003cp\u003eEasy, isn't it?\u003c/p\u003e","title":"Loading a UIImage from a bundle"},{"content":"So I've spent a few days going over Google App Engine for Java. So far, I have to say, I'm impressed. Google has created a really cool service that lets anyone write a Java web application and host it on their multitude of servers. This is all for free, I might add. You have to be aware of a number of limitations including no threading and you're limited to their data store for persistence. Once you get over that, you'll see the advantage of it:\nReliabilityDurabilitySecurityScalabilitySo I got a little overwhelmed with the \"ity\" words, but it's very appropriate. App Engine for Java will take the \"cloud\" by storm, I think. I have been looking for a Java web host and am always discouraged by the price and the limitation on memory and disk space. With Google, you can get a decently sized application running for free and they provide all the nuts \u0026amp; bolts.\nNice, Google. Computing in the cloud isn't such a farce as I thought it was.\n","permalink":"https://aaron.blog/google-app-engine-java/","summary":"\u003cp\u003eSo I've spent a few days going over Google App Engine for Java.  So far, I have to say, I'm impressed.  Google has created a really cool service that lets anyone write a Java web application and host it on their multitude of servers.  This is all for free, I might add.  You have to be aware of a number of limitations including no threading and you're limited to their data store for persistence.  Once you get over that, you'll see the advantage of it:\u003c/p\u003e","title":"Google App Engine \u0026 Java"},{"content":"I spent a good 50+ hours on trying to consume a Microsoft WCF secure web service with a Java solution. I tried Spring Web Services, Axis2, and looked at Metro/Tango and decided Axis2 was the \"easiest\" solution. The web service I'm connecting to implements WS-Security, WS-SecureConversation, WS-Policy, WS-Trust and WS-Addressing (at least) and it's provided through a .NET 3.5 WCF endpoint.\nIt doesn't work.\nAxis2 can't handle SpNego which is a WCF closed protocol allowing two WCF machines to negotiate the credentials between them. The client has spent way too much money paying me to continue to figure out a Java solution, so I wrote a .NET 3.5 C# client. Took me literally five lines of code and it's working. That's great for .NET developers but a whole lotta horse shit for the rest of the world. I'm hoping Axis2's Rampart module is updated to play nice with WS-SecureConversation and a .NET WCF web service. Until then, I'm using the .NET client to download the data and I'm storing the SOAP body into a database table. On the Java side, I'm still using JAXB2 to unmarshall the data into Java objects and process it through our existing persistence framework.\nGo me!\n","permalink":"https://aaron.blog/microsoft-wcf-web-services-java/","summary":"\u003cp\u003eI spent a good 50+ hours on trying to consume a Microsoft WCF secure web service with a Java solution.  I tried Spring Web Services, Axis2, and looked at Metro/Tango and decided Axis2 was the \"easiest\" solution.  The web service I'm connecting to implements WS-Security, WS-SecureConversation, WS-Policy, WS-Trust and WS-Addressing (at least) and it's provided through a .NET 3.5 WCF endpoint.\u003c/p\u003e\u003cp\u003eIt doesn't work.\u003c/p\u003e\u003cp\u003eAxis2 can't handle SpNego which is a WCF closed protocol allowing two WCF machines to negotiate the credentials between them.  The client has spent way too much money paying me to continue to figure out a Java solution, so I wrote a .NET 3.5 C# client.  Took me literally five lines of code and it's working.  That's great for .NET developers but a whole lotta horse shit for the rest of the world.  I'm hoping Axis2's Rampart module is updated to play nice with WS-SecureConversation and a .NET WCF web service.  Until then, I'm using the .NET client to download the data and I'm storing the SOAP body into a database table.  On the Java side, I'm still using JAXB2 to unmarshall the data into Java objects and process it through our existing persistence framework.\u003c/p\u003e","title":"Microsoft WCF Web Services \u0026 Java"},{"content":"I've never been one to give a shit about what of \"me\" is online. I have blog(s), am on Twitter and many other social networking services. Up until now, I've pretty much said my mind and didn't care about the audience. I made a judgment call error a while back on Twitter, and now I'm correcting the issue.\nThe question comes to be, how does one split yourself from your professional life online from your personal life? To be honest, it's fairly difficult if not impossible if you're trying to keep your identity at all the same between the two. For instance, I originally signed up with Twitter to broadcast things to my friends. A friend of mine got interested as well, and we started following each other. Then, I started working for the same employer and soon coworkers found my profile through my friend. I have always tried to keep some level of anonymity but when my real picture was plastered on my twitter profile, it was hard to hide the fact it was me.\n4000 updates later on Twitter, I've realized I can't just say what I want any more. See this article about a consulting firm of FedEx became angered when someone they were paying to help them made defaming remarks of the shit hole city they're based in.\nSo now, I've gone private on Twitter, removed a number of followers I don't know, and have returned to using it as a communication tool with people close to me. No more bitching at the free world, no more possibly embarassing myself. It sucks it had to come to this, but I need to realize I'm representing more than just myself online. Since I'm associated with my coworkers, I'm therefore a voice for my employer.\n","permalink":"https://aaron.blog/when-you-are-on-the-internet/","summary":"\u003cp\u003eI've never been one to give a shit about what of \"me\" is online.  I have blog(s), am on Twitter and many other social networking services.  Up until now, I've pretty much said my mind and didn't care about the audience.  I made a judgment call error a while back on Twitter, and now I'm correcting the issue.\u003c/p\u003e\u003cp\u003eThe question comes to be, how does one split yourself from your professional life online from your personal life?  To be honest, it's fairly difficult if not impossible if you're trying to keep your identity at all the same between the two.  For instance, I originally signed up with Twitter to broadcast things to my friends.  A friend of mine got interested as well, and we started following each other.  Then, I started working for the same employer and soon coworkers found my profile through my friend.  I have always tried to keep some level of anonymity but when my real picture was plastered on my twitter profile, it was hard to hide the fact it was me.\u003c/p\u003e","title":"When YOU are on the Internet"},{"content":"I'm a fan of Unix operating systems in general. That's what got me interested in switching to Mac OS X because it's Unix-based. It was inevitable that I would eventually get a server-class machine again that wasn't Mac-based. The new Dell machine that I have running has Ubuntu 8.10 - a Debian-based machine which is something I'm new too.\nI wanted to set up the Ubuntu machine to share files with the Macs on my network but not by using the crappy Samba protocol or even NFS. I know both are troublesome and not as speedy on a Mac. My only other choice was to get AFP working on the Ubuntu server and to my delight, packages exist for this. Netatalk is an Appletalk daemon and Avahi is a Bonjour zeroconf equivalent. Installing those packages and starting the services didn't do it for me. Leopard was having issues with the cleartext passwords being passed to AFPD so I went nowhere.\nI did some digging and realized that OpenSSL isn't GNU and therefore support for it in netatalk isn't compiled in. Not being super familar with how Debian packaging works, I looked for a guide to help me with recompiling and installing the updated netatalk package.\nI found it and boy it's an awesome guide.\nhttp://www.kremalicious.com/2008/06/ubuntu-as-mac-file-server-and-time-machine-volume/\nTake a look, try it out. It worked perfectly me for on Ubuntu Intrepid Ibex (8.10).\n","permalink":"https://aaron.blog/getting-macs-to-play-with-ubuntu/","summary":"\u003cp\u003eI'm a fan of Unix operating systems in general.  That's what got me interested in switching to Mac OS X because it's Unix-based.  It was inevitable that I would eventually get a server-class machine again that wasn't Mac-based.  The new Dell machine that I have running has Ubuntu 8.10 - a Debian-based machine which is something I'm new too.\u003c/p\u003e\u003cp\u003eI wanted to set up the Ubuntu machine to share files with the Macs on my network but not by using the crappy Samba protocol or even NFS.  I know both are troublesome and not as speedy on a Mac.  My only other choice was to get AFP working on the Ubuntu server and to my delight, packages exist for this.  Netatalk is an Appletalk daemon and Avahi is a Bonjour zeroconf equivalent.  Installing those packages and starting the services didn't do it for me.  Leopard was having issues with the cleartext passwords being passed to AFPD so I went nowhere.\u003c/p\u003e","title":"Getting Macs to play with Ubuntu"},{"content":"The SANS Institute released a report on the top 25 most dangerous programming errors in the industry on January 12th, 2009. Items such as SQL injection, Cross-Site-Scripting problems and input validation top the list. The issue brought up isn't necessarily the errors themselves but rather the education of programmers and software engineers to be aware of the problems and include testing to find them. Most programmers coming out of college today aren't specifically taught what is considered a bad programming error. Becoming familiar with the list and learning more about the errors you don't understand will make you a better and safer programmer.\nhttp://www.sans.org/top25errors/\nThis isn't a static list - it can and will be updated periodically over time.\n","permalink":"https://aaron.blog/top-25-most-dangerous-programming-errors/","summary":"\u003cp\u003eThe SANS Institute released a report on the top 25 most dangerous programming errors in the industry on January 12th, 2009.  Items such as SQL injection, Cross-Site-Scripting problems and input validation top the list.  The issue brought up isn't necessarily the errors themselves but rather the education of programmers and software engineers to be aware of the problems and include testing to find them.  Most programmers coming out of college today aren't specifically taught what is considered a bad programming error.  Becoming familiar with the list and learning more about the errors you don't understand will make you a better and safer programmer.\u003c/p\u003e","title":"Top 25 Most Dangerous Programming Errors"},{"content":"After spending a significant amount of time this week on writing JUnit tests for a Spring Web app, I've come to a conclusion. College courses, even in the grad classes I am taking don't spend enough time on the concepts behind unit tests. Granted JUnit and NUnit has been covered in the classes I've had but really only the testing framework is discussed.\nTest-driven development (TDD) teaches us how to write a test first, make it fail, stub out your methods, and then code until your test passes. The practicality of TDD in the real world is limited because a requirement is to have your system well designed up front. Getting to a point where you'll know method names ahead of time means you've spent a significant amount of time thinking about the design and analyzing that design.\nWe all know that is rarely the case.\nThere needs to be a course on the concepts that we need to keep in mind when designing a system so it can be tested later. What kind of concepts? Understanding exactly what you shouldn't do to make tests difficult - limited coupling and high cohesion. I started to get a better idea of those concerns when I took a training course on the Spring Framework. Spring lets you use plain old Java beans for most of your core controllers which lets you test the functionality of the controller and not have to test the framework. Keeping those concepts in mind during your development will help out later.\nIn this last semester I took a software engineering course. In one of the lessons, a simple rule came up that I felt was totally appropriate for this theoretical Unit Testing course. Any methods you create should only take the exact type of arguments you'll use in that method. If the method calculates a pay increase for an employee, the method should take float for the current pay and a float for the percentage increase. Creating a method signature with an Employee object and something like an AnnualReview object doesn't define the method, it only confuses the developer. How can you write a JUnit when you don't know what the method is going to use?\nSo that's enough of my rant for now. I think I've written more in this post than I did for my final paper in the class. Ha!\n","permalink":"https://aaron.blog/an-idea-for-a-college-course-unit-testing/","summary":"\u003cp\u003eAfter spending a significant amount of time this week on writing JUnit tests for a Spring Web app, I've come to a conclusion.  College courses, even in the grad classes I am taking don't spend enough time on the concepts behind unit tests.  Granted JUnit and NUnit has been covered in the classes I've had but really only the testing framework is discussed.\u003c/p\u003e\u003cp\u003eTest-driven development (TDD) teaches us how to write a test first, make it fail, stub out your methods, and then code until your test passes.  The practicality of TDD in the real world is limited because a requirement is to have your system well designed up front.  Getting to a point where you'll know method names ahead of time means you've spent a significant amount of time thinking about the design and analyzing that design.\u003c/p\u003e","title":"An idea for a college course :: Unit Testing"},{"content":"I'd like to point out that writing JUnit tests after the fact is a pain in the ass. I like to think I know enough about software engineering to develop software that has high cohesion and limited coupling. Not following test-driven development allows me to forget some of those simple rules and now writing EasyMocks is killing me.\n","permalink":"https://aaron.blog/junit-testing/","summary":"\u003cp\u003eI'd like to point out that writing JUnit tests after the fact is a pain in the ass.  I like to think I know enough about software engineering to develop software that has high cohesion and limited coupling.  Not following test-driven development allows me to forget some of those simple rules and now writing EasyMocks is killing me.\u003c/p\u003e","title":"JUnit Testing"},{"content":"So I spent most of the past few months learning the bleeding edge of the Spring Framework, 2.5.x. The training I went to covered this version, the books I had covered the same. My first assignment? Using Spring 2.0 and Web Flow 1. Talk about crushed. Now I have to unlearn everything and go back to a previous version. This happens a lot, from what I've seen. Companies aren't willing to upgrade because of fear of stuff breaking; but they'll write shit loads of work-around code to keep old solutions working. That eventually bites them in the ass when the product they're on goes off support and they're forced to do a huge conversion.\nFun stuff.\n","permalink":"https://aaron.blog/springs-of-a-different-color/","summary":"\u003cp\u003eSo I spent most of the past few months learning the bleeding edge of the Spring Framework, 2.5.x.  The training I went to covered this version, the books I had covered the same.  My first assignment?  Using Spring 2.0 and Web Flow 1.  Talk about crushed.  Now I have to unlearn everything and go back to a previous version.  This happens a lot, from what I've seen.  Companies aren't willing to upgrade because of fear of stuff breaking; but they'll write shit loads of work-around code to keep old solutions working.  That eventually bites them in the ass when the product they're on goes off support and they're forced to do a huge conversion.\u003c/p\u003e","title":"Springs of a Different Color"},{"content":"In my Thursday night graduate class, Enterprise Data Modeling, we're working through Eric Evans' book, Domain-Drive Design. The book is taking us through the concept of designing an application based on the domain, or business use, rather than through UML and directly with objects. So far, it's pretty dry but the concepts are very clear and relative to my world.\nI'm only on chapter 3 but already the concept of a ubiquitous language is a solidification of what I've tried to do since the beginning of my career with computers. I've always known, maybe not so consciously, that business users and developers typically live on different levels. In the past, I've been the one the users come to for help because I don't throw up the typical IT wall in front of them. This book explains why developers suck at obtaining requirements and why end users don't give two shits about developers. Developing a vocabulary and language that BOTH parties can speak about a domain is key.\nI still don't see how exactly it's going to be accomplished without a lot of difficulty. I'm assuming I'll be more enlightened by the end of this class. I'm hoping this blog can be more of a help with digesting this information. We shall see. More later.\n","permalink":"https://aaron.blog/domain-driven-design/","summary":"\u003cfigure\u003e\u003cimg src=\"http://www.artin.org/geekblog/wp-content/uploads/2008/09/0321125215_xs.jpg\" class=\"kg-image\" alt loading=\"lazy\" title=\"Domain Drive Design\" width=\"76\" height=\"100\"\u003e\u003c/figure\u003e\u003cp\u003eIn my Thursday night graduate class, Enterprise Data Modeling, we're working through Eric Evans' book, Domain-Drive Design.  The book is taking us through the concept of designing an application based on the domain, or business use, rather than through UML and directly with objects.  So far, it's pretty dry but the concepts are very clear and relative to my world.\u003c/p\u003e\u003cp\u003eI'm only on chapter 3 but already the concept of a ubiquitous language is a solidification of what I've tried to do since the beginning of my career with computers.  I've always known, maybe not so consciously, that business users and developers typically live on different levels.  In the past, I've been the one the users come to for help because I don't throw up the typical IT wall in front of them.  This book explains why developers suck at obtaining requirements and why end users don't give two shits about developers.  Developing a vocabulary and language that BOTH parties can speak about a domain is key.\u003c/p\u003e","title":"Domain-Driven Design"},{"content":"I started this blog a while back but it was lost in the ether. An upgrade of Rails and a few attempts at fixing it caused it to go poof. Alas, I'm ready to start this blog again.\nWhat is it for? Well, a bunch of things. I'm going to post anything here that I think is geeky. This could include software development, gadgets, tips and tricks, whatever. I have no idea of what is going to end up here but I have ideas often enough that never get recorded.\n","permalink":"https://aaron.blog/my-blog-revisited-2/","summary":"\u003cp\u003eI started this blog a while back but it was lost in the ether.  An upgrade of Rails and a few attempts at fixing it caused it to go poof.  Alas, I'm ready to start this blog again.\u003c/p\u003e\u003cp\u003eWhat is it for?  Well, a bunch of things.  I'm going to post anything here that I think is geeky.  This could include software development, gadgets, tips and tricks, whatever.  I have no idea of what is going to end up here but I have ideas often enough that never get recorded.\u003c/p\u003e","title":"My Blog, Revisited"},{"content":"Who are you?My name is Aaron Douglas and I live in Milwaukee, Wisconsin in the United States. I’m in my 40s and have been a geek my entire life. MY ENTIRE LIFE. I’ve been with my partner for way over half of it so he knows all about the geek in me.\nI love learning new things, and that will never stop. It’s my goal to always know how something works.\nWhat’s this place all about?As go through life as a software developer, photographer, geek, consultant, meditator, dog lover, spoon bender I inevitably come across information that I do not want to forget. This site is my scratch pad. If I have to work through something to come up with a solution I figured why not put it out on the Internet for other people to find in case they want to use it too.\nWhat does Dangling Pointer mean?It’s a computer science term. In any programming language where you have pointers to places in memory, you have the ability to do bad things if you don’t know any better. One of those is a dangling pointer where the memory the pointer referenced was deallocated but another pointer hung around to that reference. That second pointer now references who knows what.\nThe point of the name change of my blog to this is simply a play on words. I forget about stuff that’s important, so this blog handles my deallocation of memory. No more dangling pointers. :)\nAstralbodies? Huh?Astralbodies has a lot of meanings. I chose the name because it references a “subtle body” that a lot of religions speak of. The astral body is the body between your physical body and your soul. I liked the reference to that because I feel like my online knowledge is a sort of an astral body, not really existing but you can feel its presence.\nIt’s also a reference to astronomy and an astral body being a star, a galaxy, or something else we can’t yet imagine.\nQuestions / Comments?If you questions or comments, feel free to send me a note on a blog post.\n","permalink":"https://aaron.blog/about/","summary":"\u003ch2 id=\"who-are-you\"\u003eWho are you?\u003c/h2\u003e\u003cp\u003eMy name is Aaron Douglas and I live in Milwaukee, Wisconsin in the United States. I’m in my 40s and have been a geek my entire life. MY ENTIRE LIFE. I’ve been with my partner for way over half of it so he knows all about the geek in me.\u003c/p\u003e\u003cp\u003eI love learning new things, and that will never stop. It’s my goal to always know how something works.\u003c/p\u003e","title":"About"}]