Keep Calm and Solder On

I think it’s painfully obvious to anyone who comes here to read my blog that I have a lot of hobbies and interests. I consider myself something of a renaissance woman. Any time I see something cool or eat something interesting my brain starts ruminating about how I can make this thing myself.

I have slowly come to the realization that I will not be able to do all of the things that interest me before I die. I probably won’t be fluently bilingual, so sorry Julia, my friend in Austria who keeps wanting me to learn the Austrian dialect of the German. I am probably not going to get a black belt in some kind of martial art. Heck, at this point I am pleasantly surprised that I have taken up and enjoy running, considering that I spent the last year in bed with my pugs hiding from the cold and working from home.

My little electronics helper.

My little electronics helper.

One of my multitude of hobbies/interests is working with electronics. I have always been fascinated by electronics and one reason I really got into programming was because I was interested in telling a machine what to do. Electronics, like a lot of other things such as C, is something I have been told I don’t really need to understand to be a great programmer. Actually, I think the more accurate advice was I didn’t need to understand it to know enough programming to find a job. There is a difference.

I have discovered the longer I am working with computers that there is always a lower level than the one I am currently working at. I went into programming thinking C was the lowest you could go. Then I discovered assembly language (which no, I have not succumbed to yet). Now I am discovering electronics.

Electronics, like programming, has something of a learning curve. There are lots of little pieces and components like transistors and DIPs that can be rather daunting to the uninitiated. Additionally, at least with programming you are dealing with text. You can look at a computer program without knowing and programming language and at least recognize that this is something human readable. Look at a circuit board and all you see is the language that Superman’s people used on Krypton. To make things even harder, you can’t debug a circuit in the compiler like you can with a program. Your circuit either works or it doesn’t. These things are incredibly daunting, which is exactly why I am incredibly obsessed with this right now.

Yes, this looks scary. It is at first, but it gets better.

Yes, this looks scary. It is at first, but it gets better.

I am a masochist. If I get to a point where I feel proficient with something, I feel uncomfortable and uneasy. My brain starts overheating and spinning itself into butter, so I have to find something harder to throw at it to keep myself from having a panic attack. It’s hard having a balancing act of giving my brain enough to do that it doesn’t overwork itself over nothing as opposed to trying to do too much and cracking under the weight.

My current hobby to do in my free time right now is to work on learning electronics. I specifically would like to figure out how to build electronic instruments. I would like to design and build a modular synthesizer in the basement. Eventually I would like to apply the knowledge I have about that to a piece of software to eventually release, but right now I am trying to thread that needle between doing too much and not doing enough.

Do I need to understand electronics to be a great programmer? No. Will knowing electronics help me make more money in the future? Probably not. Could I spend my free time writing an app that could conceivably earn me more money and advance my career? Probably.

So why do this?

Here’s why:

  • Because it’s fun. I love doing things with my hands and I honestly find working on software to be a bit soulless sometimes. I feel like nothing I do is real because it exists in the ether. Holding a real, physical component and soldering them together is fulfilling in a way that software development just isn’t.
  • You know what all this crap does? Me neither. Let's find out.

    You know what all this crap does? Me neither. Let’s find out.

  • I work with robotics. I didn’t have to write the firmware or the interface software to deal with the robotics initially, but it bothers me that I don’t quite grok how we are talking to the robotics. I know enough about the code to deal with it, but on a conceptual level there is still a lot of magic black box voodoo that is happening that I don’t fully understand. I don’t like working with things that work without me understanding what they do. I don’t “need” to understand this stuff to do my job, but I would personally feel more comfortable if I worked through a robotics project on my own and have a mental model for what it is that we are doing.
  • I don’t like looking at a circuit board and not understanding how it works. I think a lot of people feel very uneasy around things like programming because they see something that isn’t familiar to them and it frightens them away. I know there has to be a way of understanding how a circuit board works because other people design and build them for a living. Our entire society is built on integrated circuits and I want to know how they work and how to design them.
  • My analog synth kit that I am saving until I feel more comfortable tackling something this complex.

    My analog synth kit that I am saving until I feel more comfortable tackling something this complex.

  • It’s never been easier to self teach yourself electronics. Arduino and Raspberry Pi have made working with electronics and programming affordable and accessible to nearly everyone. In the last three or four years the MAKE series from O’Reilly has produced books on wearable electronics, analog synthesizers, and sensors. Sites like AdaFruit make it possible to buy projects designed by other electronics hobbyists. I have received an analog synthesizer kit that I am looking forward to assembling in my basement. I bought conductive thread and smart LEDs so that I can create a wearable electronics project. I don’t have kids and I have disposable time and money. Instead of spending a day playing Nintendogs on my Nintendo DS, I can go to my basement and build a robot that I can spend another weekend hacking.

If you are interested in electronics, here is what I have done:

  • Go to O’Reilly and pick up books like this one or this one. O’Reilly has great deals on ebooks if you buy two or more of them. Many of the books in the MAKE series have correlating kits on Maker Shed, which are also somewhat available at Radio Shack, if you like brick and mortar stores. Just doing a kit is not going to teach you electronics, but it will get you comfortable with soldering and putting pieces together. The physical aspect of feeling comfortable touching and manipulating small parts is vitally important and I have personally found when I am trying to learn new things that just following directions and putting something together is a good first step to introduce you to something unfamiliar.
  • You're going to snip and solder a lot of these little bastards. Get used to it.

    You’re going to snip and solder a lot of these little bastards. Get used to it.

  • Invest in a good soldering iron. In fact, don’t stop at the soldering iron. Any time you buy tools, invest in good tools. You are going to be snipping a lot of wires and fighting with your snips when you are trying to make a nice, even back is no fun. It also bothers your wrists and for people coming from a programming background, that is never a good thing.
  • Practice soldering! I have done cross stitch for over two decades, so I personally found soldering to be somewhat easy to pick up. I am used to patiently sorting through threads and inserting thin filaments through holes. Let there be no ambiguity on this point: Working with your hands is a skill. You can cultivate a skill by using it a lot. Just because you may not have a preexisting aptitude for manipulating small pieces does not mean that you should give up on doing electronics. I suggest buying a bunch of small soldering kits from Maker Shed and that you just get comfortable with touching and soldering pieces. My first project was a noise maker that goes in an Altoid tin. There weren’t a lot of pieces and it wasn’t super complicated, but just the process of sorting the components and touching the pieces and trying to figure out how they worked together was an invaluable introduction to electronics that made me eager to learn more and to bigger projects.
  • Organize your parts!!

    Organize your parts!!

  • Organize your work space. This is the single most important piece of advice I can give to anyone undertaking a hobby with lots of small physical bits. Again, I have a background doing cross stitch. I never got a project done until I started learning to organize myself. I separate each color thread, put them on an index card, and I catalog what each color is. I make a slot for each color along with its symbol before I need them. I got relentlessly organized with my threads and my tools and once I did that I was able to get things done. Keep your space clean and organized. Take care of your tools. Buy as many parts bins as you need and label each and every drawer. If you can, have a dedicated space for your electronics. I have a table in the basement that has my soldering iron and my tools. The projects are all in one place and everything is tidy.
  • Be patient with yourself. You might have a natural aptitude for this or you might not. I have found a lot of things I thought I had no natural aptitude for that I was able to learn through tenacity and stubbornness. If you want to learn something because you want to learn it, then don’t worry about how long it takes. If you can accomplish something you thought was difficult after failing several times, just think about how awesome you will feel.

One of my projects was putting together an Arduino shield with a bunch of attachments to things like motors and sensors. I need to spend some time figuring out how to get the Arduino to talk to the board and to make it do things. I got past my initial skittishness around touching and putting together the components, now I need to take the next step of figuring out how to make them work together.

Again, this is a hobby I picked up a few months ago. I would like to spend a lot of time over the next year pushing the boundaries of what I can do with this. I will try to be better about writing up each of my projects on this blog in case anyone finds this interesting.

My "completed" Arduino shield I need to learn how to hack.

My “completed” Arduino shield I need to learn how to hack.


One reason I decided to do this was because someone told me I had to have an electrical engineering degree to understand how a circuit board works. I don’t believe that. I believe I can learn anything I want to. I think there are a multitude of sources available out there for people with the time and patience to work with them and who have a little bit of money to invest in their hobbies.

I also think there is value in learning how to do something just to do it. I spent a lot of time learning how to cross stitch because I wanted to know how to do it. So far I have not earned a dime from my textile work, but the things I did to discipline myself to learn it have come in handy down the road while learning programming.

I love the smell of solder in the morning. It smells like lead poisoning!

I love the smell of solder in the morning. It smells like lead poisoning!

Let’s pretend that you want to master making pie. Pie crust is hard to master. You need to develop a good feel for when the dough is too dry or it has been over mixed. My mom has spent forty years mastering how to make pie and she is still experimenting with different things. Mom doesn’t sell her pies and will never make money off of them, but the process of making them and the joy they bring people make it worth it to her to keep trying to make them better.

I think that there is a lot of pressure to spend all of our time doing things that will make money or bolster our careers. I think its important to spend some time cultivating those things, but I am also very Zen in that I think people should do things for no reason other than that it makes them happy. You can’t spend all of your time worrying about whether you are learning the right things. Sometimes you have to follow a passion and do something that makes you happy and not worry about what the future will bring.

Functional Programming in Swift: A Chapter by Chapter Analysis

I preordered the book ”Functional Programming in Swift” shortly after it was announced. I got a chance to meet Chris Eidhof at 360|iDev, which was a really awesome experience. He really knows his stuff and he is a wonderful person.

However, I have found it has been a little difficult to get into the Functional Swift book. I know there is a lot of really important content in here that I think is vitally important for people to be aware of, but I feel like it is being presented in a slightly obscure manner. This is not a beginning programming book and it can be a little difficult to break into.

I am trying to write more technical posts on my blog. I wasn’t doing this for a while because I was working on my book ”iOS 8 SDK Development.” I was so stressed trying to learn all the stuff we were writing for the book that the thought of going and writing technical posts for my blog was a little discouraging.

Now that the book is pretty much completed and I don’t have any conference talks to prepare for a while, I would like to spend more time writing technical blog posts. One series of posts I would like to do is analyzing the Functional Programming in Swift book.

I was a beginner not too long ago and I know how incredibly daunting it can be to be confronted with a bunch of technical stuff you don’t quite grok yet. I know that Chris is passionate about functional programming and I hope that he will not be offended by my efforts to spread the word about his work and to try to sugar coat it a little for people who are not as far along as the target audience for his book was.

I am going to try to tackle a chapter every week or two. If I am slacking on this, please harass me on Twitter so that I know that people are actually reading and getting some use out of my posts.

If people have things they would like me to write about, please hit me up on Twitter about it. I am happy to go out and figure something out that people want to learn more about.

I hope that doing this analysis will open new people up to things in Swift that weren’t possible in Objective-C. I know that right now it is very hip to hate on Swift. I was rather unhappy about Swift when it was first announced because I was under the impression that many things we do were going to be abstracted away. I didn’t like Ruby on Rails because you could write three lines of code and have a functioning website without understanding anything going on under the hood. I am an incredibly curious person who wants to have a deep understanding of how things work. When I was able to shift my perspective on Swift I became very excited about learning a new way of doing things. I hope that other people will do the same when they become familiar with how to effectively write Swift.

If you want to know what my current long-term project is, check out this blog post from my boss, Brad Larson. So far, we have not found anything we have wanted to do that could not be done more efficiently in Swift. We have had to use a few work arounds with the compiler, but we have not encountered any show stoppers.

I have been disappointed with all of the people who are claiming that Swift is broken and that it shouldn’t be used for serious projects. If Brad and I can use Swift on the Mac to communicate with an electronics board through a serial port, you can figure out how to use Swift to communicate with an API. It is just a question of working with the language, not fighting against it.

I hope over the next few months I can help others learn how to work with Swift. I think that is is a promising language and I hope that people can learn to open their minds to new ways of thinking about how to program.

Doctor Who: Series One- Aliens of London

aliensOfLondonAh yes, we have arrived at the notorious “farting aliens” episode of Doctor Who. Many people who argue that the Moffat era is better than the Russell T. Davies era (who are wrong, by the way) usually point to this episode of a prime example of everything that was wrong with the way Davies ran the show.

Who are all of these people and why do we never see them again??

Who are all of these people and why do we never see them again??

Even though the aliens are the main attraction for this episode, there is actually a rather fascinating plot twist that Davies throws at the beginning of the episode. Instead of The Doctor bringing Rose home twelve hours later, he brought her home twelve months later. Oops.

Side note: How much control does The Doctor have over the TARDIS? Just last episode the TARDIS unilaterally decided to land a decade later in another part of the island than where The Doctor specified it to go. The entire Amy Pond mythos is built on her being The Girl Who Waited because the TARDIS was supposed to return in ten minutes but returned twenty years later. Is the TARDIS misfiring like the holodeck malfunction episodes of Star Trek? End side note.

Jackie

I think it’s hard to remember later in the series that Jackie has an excellent reason for disliking and mistrusting The Doctor. He is the reason that her daughter has been missing for the last year (which makes me wonder exactly when the phone call from The End of the World happened chronologically…).

Most awkward family reunion ever...

Most awkward family reunion ever…

There is a glorious writeup of Twilight from Bella Swan’s father’s perspective that isn’t too far off from Jackie’s perspective in this episode. Your daughter meets a strange man the day that all the mannequins come to life and disappears for a year. You have no idea what happened to her and she waltzes in a year later like nothing happened. No apology for the emotional agony you went through for a year thinking your daughter was dead but having no idea how or why. Additionally, Jackie already lost her husband, Rose’s father. That year had to be hellish for Jackie and it’s no wonder that she is actively hostile to The Doctor for a while after this.

When we watch the show, we tend to not think about the peripheral people left behind when the companion goes on her adventures. One of the weaknesses I have felt with the Moffat era is that he conveniently strips away these loose ends and doesn’t explore them at all. Amy’s parents get sucked into a crack in the Universe, so there is no one to miss her when she goes away. Clara conveniently has no parents or immediate family to notice she is gone. Rory Williams and Danny Pink get involved in the Doctor’s travels, so they aren’t around to worry about what happened to their girlfriends.

Hey, you know how I told everyone you murdered my daughter? Can we just forget about that??

Hey, you know how I told everyone you murdered my daughter? Can we just forget about that??

One of the reasons the J. R. R. Tolkien books are compelling is that they actually explore what happens to the characters after they get home from their grand adventures. Bilbo returns from his adventure with a trunk of gold to find that they are in the process of dismantling his estate because everyone thinks he is dead. He is forever changed by the experience and never feels quite at home with his fellow hobbits anymore. Frodo can’t go back to his normal life because of all he has experienced as the Ring Bearer, so he travels across the sea with everyone else. Only Sam is able to make a home and a family after his adventure and to continue to exist in the world after his experiences. He is the Martha Jones of the hobbits.

Those stories are compelling and worth telling and I have found the more recent seasons of Doctor Who rather soulless because they don’t do as much of this as they used to. I know that everyone is saying this most recent season went back to this idea with expanding Clara’s character and the fate of Danny Pink, but I don’t think Moffat’s strong suit is writing emotionally compelling characters and a lot of this season just didn’t do it for me for reasons I can’t articulate.

Micky

Oh Micky. Micky, Micky, Micky. I do not understand Micky. It isn’t that I think he is an unrealistic character. Quite the contrary, I think he is very realistic, which to me is rather tragic.

What do you say to your girlfriend who disappears for a year and whose mom tells everyone you murdered her?

What do you say to your girlfriend who disappears for a year and whose mom tells everyone you murdered her?

Micky witnesses his girlfriend jumping in a blue police box with a strange man, sees the box disappear, then becomes the prime suspect in his girlfriend’s murder. No one would believe hearing what actually happened and everyone believes he killed her. She comes back after a year and doesn’t bother to come see him. He finds out she is home because he once again observes the TARDIS disappear. We get an unnecessary slapstick moment when he runs into a wall trying to catch the TARDIS. She has no idea what trouble her decision cost him.

She feels kind of sorry, but she just doesn’t get it. Yet, in spite of all of this, Micky stays with her. Why? She did one of the most horrible things you can do to another human being, yet he stays and I don’t understand why. If anyone treated me half as badly as she treated him, I would walk away. I would want nothing to do with someone who was that thoughtless and who clearly had no regard for me, yet he doesn’t do that.

It’s nice that later in the series they actually evolve his character somewhat and give him a spine and let him be a bad-ass, but watching him in this episode is rather disheartening.

Harriet Jones and Toshiko Sato

The Gallifreycrumb Tinies. Look it up. You will be happy.

The Gallifreycrumb Tinies. Look it up. You will be happy.

Harriet Jones, MP for Flydale North/Prime Minister. Yes Harriet, we know who you are.

I have a special place in my heart for Harriet Jones. When I started going to more and more programming conferences I started feeling a bit like Harriet Jones. “Hi, I am Red Queen Coder!” “Yes, Janie, we know who you are.”

I empathize with Harriet’s attempts to make herself important and her idiotic nattering about the Flydale infirmary when the government is dealing with a lists because of the aliens. Sometimes it takes a little while for the gears to shift in one’s head.

It’s really cool to see how the experiences in this episode change her. She goes from a rather unimportant person to being the Prime Minister. When I was a kid my dad used to tell me that the difference between a lucky man and an unlucky man was that the lucky one jumps when the universe says jump. Harriet was given an opportunity, much like Rose was, of expanding and broadening her horizons and she makes the most of that opportunity. She also validates my own personal habit of being somewhat nosy and wanting to know everything. Usually nosy people wander into situations they aren’t supposed to be in and they get murdered. Seeing one actually posses vital information and being a story catalyst is somewhat gratifying.

Sorry Harriet, that isn't psychic paper. You don't have clearance to be here.

Sorry Harriet, that isn’t psychic paper. You don’t have clearance to be here. Yet.

It’s fun watching the actress, Penelope Wilton, trading barbs with Maggie Smith on Downton Abbey. It isn’t really apparent in her appearances, but the actress is actually quite capable of holding her own against actors with quite a lot of presence and it’s nice to see that later she gets to stretch herself a bit more than she does here.

This episode also drops another Torchwood breadcrumb with the first appearance of Toshiko Sato. In Torchwood Toshiko is a computer programmer and not a doctor, so there is a nice wink to this appearance in her last episode on the show where we discover she was taking the place of Owen Harper because he was too hung over to come and analyze the alien. Over the last two episodes we have indirectly met the vast majority of the components that will eventually make up Torchwood.

The Slitheen

Yes, this episode has farting aliens. Yes. they have incredibly bad alien design and costume construction. There is no doubt that the Slitheen and the “alien” are the weak points of this episode. If the other stuff wasn’t so good this episode would be unsalvageable. It’s truly unfortunate that this atrocity got grafted onto the good stuff in this episode.

Breadcrumbs

Squee! This is the episode where Rose gets a key to the TARDIS!! That is a big moment in any companion’s relationship with The Doctor.

This episode includes the first modern reference to UNIT, which I believe we see in person for the first time in the 50th anniversary special.

We also get our first mention of Bad Wolf, which will be a rather important plot point by the end of the season.

Conclusion

This fourth episode of the series brings things around in a fairly satisfying manner. Like my other blog posts have articulated, there are certain kinds of episodes you can only really tell once. We have had the progression from the initial meeting, going to the future, going to the past, and now coming home. From this point forward, we aren’t really going to see a lot of stories that can only be specifically told at the beginning.

One of the challenges with New Who was introducing a new generation of people to what Doctor Who is without annoying long-term fans. These episodes have done a wonderful job of building a foundation about not only what Doctor Who is about, but also what the Davies era will be like. The Moffat era has been categorized by puzzles and the Davies era is categorized by relationships and character progression. Unfortunately, specifically with this episode, we are seeing that the Davies era will also be defined by a lot of things that are done in poor taste.

The next episode of Doctor Who is the second part of this episode, which unfortunately won’t have the wonderful character progression to anchor it in reality. I foresee the next episode being among my least favorite because I don’t think they will get into any of the stuff I watch Doctor Who for. We’re stuck with the Slitheen for another few episodes this season. Fortunately they aren’t going to be like the Weeping Angels that will come back to haunt us for an eternity.

Until next time.

Zen and the Art of Analog Synthesizer Maintenance

2014: The Year of Magical Thinking

You can take a picture of something you see
In the future where will I be?
You can climb a ladder up to the sun
Or write a song nobody has sung
Or do something that’s never been done

Last week I was in Atlanta for CocoaConf Atlanta. That conference was the cap on one of the craziest years I have ever had.

Exactly a year ago I had dropped out of school because I was having a nervous breakdown. I knew I needed to find a programming job but I had no idea where or how I would do so. I was completely broken and I had no hope that anything would get any better. The only thing that got me through that period of my life was the faith that something would happen.

I spent a lot of my time in 2013 sowing seeds, hoping one or two of them would take root. I attended several conferences and met a lot of people. Two of the people I met were Jonathan Penn and Chris Adamson. Jonathan mentioned he was writing a book and wanted to know if I would tech review it. Being a tech reviewer is an unpaid task, but I like and respect Jonathan, as evidenced from this blog post.

The editor for Jonathan’s book is Rebecca Gulick, who also happens to be the editor of my book with Chris. When he was looking for a coauthor and he mentioned me to Rebecca, she already knew who I was.

Before I was approached about writing the book, I reached out to Brad Larson about learning OpenGL. I knew I wanted to be a graphics programmer, but that it takes a long time to learn, especially for someone like me who didn’t have any programming experience until two years earlier. My reaching out to him resulted in me having the chance to work with him on a contract project for Digital World Biology. Even though we were working on this project, I hadn’t met Brad in person.

I happened to meet Brad in person a week after I signed the contract to work on the book with Chris. I didn’t know it at the time, but the book I was working on used to be the textbook used for the iOS programming class at MATC. That definitely made an impression.

Six months ago, I had a couple of conferences that I knew I would be speaking at. I wound up doing twice as many as I thought I would. My first conference talk was less than a year ago. This year I spoke at ten conferences total.

Between writing a book, traveling all over the United States, and getting a job with one of the best programmers in the world working on robots, my head is spinning. There are so many things I thought I might get to do a few years down the road. I just wanted a job to get some experience so that maybe one day in like five years I would be able to work with someone of Brad’s caliber. I hoped that maybe I would be able to work on a book in three years.

I looked back at the goals I set for myself at the beginning of the year. No, I didn’t wind up starting a podcast or buying my MIDI wind controller (however that is on the horizon). I set out six long-term goals that I wanted to do in the next 3-5 years. I have knocked half of those off in 2014.

Depression

Oh brother I can’t, I can’t get through
I’ve been trying hard to reach you, cause I don’t know what to do
Oh brother I can’t believe it’s true
I’m so scared about the future and I wanna talk to you
Oh I wanna talk to you

I am going to be honest. I had absolutely no idea how to proceed from here. Part of being alive is to strive to go further and do better. Once you get to where you want to be, what do you do? I always feel a bit of a disappointment when I finish my cross stitching projects because I keep feeling like I will feel a sense of accomplishment, but it’s always a letdown. I enjoy the process of making the thing more than the joy of accomplishing them.

Part of my excitement about these long term projects was the anticipation of all the neat things I would get to do between then and now. I was really looking forward to all the neat stuff I would get to do and all the time I would get to spend working on my craft.

None of that happened.

Things happened so fast that I haven’t had a chance to enjoy anything I have been doing. I haven’t had a chance to stabilize the ground under my feet. I haven’t had a chance to really dig deep into something than interests me because I am running around like a chicken with my head cut off rushing to the next thing.

I have honestly been depressed. I feel like I shouldn’t be depressed and that I am a terrible and ungrateful human being because I got everything I ever wanted. Not only did I get everything I ever wanted, I got it way faster than anyone else. I have it made and I have no idea how to get up each day and deal with my life. Plus I feel like I can’t talk about it because I know that there is absolutely no reason for me to be unhappy.

I had a lot of conference talks lined up for 2015 and I was thinking about doing a lot more stuff because I feel like I worked my ass off sowing these seeds. I hoped that one or two would take root but twenty did. Last year I had nothing but my stubbornness and refusal to quit and now I have the situation of having too much. It feels wasteful to me to squander opportunities I would have killed for a year ago.

But I have to.

It has been a tremendously difficult decision, but I am not doing any conference talks for at least six months. I do not plan to attend any conferences during that time either.

I love this community. I have made so many friends in so many places. I spent a lot of my life feeling like a freak who never fit in anywhere. Being welcomed into this community and treated with respect has meant more to me than I can ever express. One reason it took me so long to make this decision is because this community means so much to me and I want to make sure other people like myself have a chance to join and be welcomed as well. The Klein family has changed my life and I can never express to them what their kindness has meant to me.

I feel like my life is moving too fast and I need to take a step back. I need to focus on getting my feet back under me. I need to focus on doing my job well. I need to focus on sharpening my tools. I need to find something that gives me back the joy and meaning I had in my life back when I was struggling to break through.

The Zen of Sound

Are you lost or incomplete?
Do you feel like a puzzle, you can’t find your missing piece?
Tell me how do you feel?
Well, I feel like they’re talking in a language I don’t speak
And they’re talking it to me

Last year I felt like I had to spread a wide net to catch one opportunity. I spread myself very thin doing a lot of different things to try and get myself enough exposure to find a job. I am pulling back on a lot of these things.

Looking back at my long-term goals, the half that were not fulfilled all had to do with audio programming. I love sound. I wanted to be a sound designer before I became a programmer. Last year I wanted to write a synthesizer app as a portfolio project, but I had too much noise in my life that I couldn’t focus the way I needed to for this project.

Now that I can pull back on a lot of the things that are taking up my time, I can focus my free time on projects that personally interest me without worrying if they will get me a job.

I spoke to Brad when I began to feel overwhelmed about what I should focus on for the next year or so. He advised me to think of something that doesn’t exist and to try and make it happen. He talked to me about taking an impossible task and breaking it down into small, discreet parts that can each be accomplished individually.

Audio affords me a lot of opportunities to explore things that interest me. I became interested in electronics after I began working with physical hardware at my job. I also became interested in math after I started working with GLSL. Additionally, Apple introduced not only Swift, but AVAudioEngine. There have been audio programmers on Twitter who do not think you can do audio programming in Swift because Swift is not built on C.

When I tried to tackle this last year, I had no idea what I was getting into. I also placed a lot of chips on me being able to pull this thing off that caused me a tremendous amount of anxiety.

I am not going to make that mistake again.

I know it isn’t necessary, but I want to build a physical synthesizer before I tackle a software one. I want to get a feel for how all of the pieces fit together.

I also want to spend more time making music with my tools. You can’t really create a piece of software for a group of people if you don’t understand how they are going to use it. I used to play around with this stuff all the time years ago, but it’s been too painful to work with until recently.

I am not going to disappear. I am going to catalog my journey here on my blog. I hope that I can figure out how to do some things that will be helpful to the community at large. I plan to take everything I am learning over this time and present it at NSScotland, which I am still going to speak at. I could not let down Alan Francis again.

I hope that anyone reading this can understand and respect my decision. I hope that I am not the only person who has felt this way and that reading about my depression can help someone else. I am in this career for the long haul. 2014 was a sprint. The journey is a marathon. I can’t keep going the way I am because I won’t make it to the end. I am going to miss all of the amazing people I have met over the last year, but I need to take care of myself and focus.

Thank you everyone for an unbelievable 2014. I am looking forward to coming out of my self-imposed isolation a happier and healthier person. God bless and keep all of you. Don’t have too much fun without me.

Doctor Who: Series One- The Unquiet Dead

smiling
You may or may not have noticed that I have somewhat dropped the ball on my recap/rewatch of the first season/series of Doctor Who. Not only have I been incredibly busy the last month or so, but I was also kind of dreading watching this episode.

The first time I tried to get through Doctor Who, this was the episode that derailed me. The first two episodes were weird but they were good. They had enough good aspects to endear them to me to the point that I was going to continue watching. When I got to this episode and they show a woman possessed by ghosts in the cold open, I was like, “Seriously, are you fucking kidding me!! I thought this was about aliens, not supernatural crap!!”

I quit watching and I had to try a few more times to get through this episode.

Don’t Know Much About History…

One thing that has struck me when I started watching this episode is that I can’t really remember the last time we had a decent historical episode of Doctor Who. In the many River Song episodes she mentions The Doctor taking her to different places and times on her many excursions out of prison, but we don’t have a lot of episodes where our team just travels somewhere in the past for no good reason.

seanceThe last episode I can remember where they went off on a happy excursion to the past was the Donna/Tennant episode where they visited Pompeii. Most of the Moffat-era excursions to the past had to do with whatever wibbly-wobbly, timey-whimey puzzle agenda he wanted to deal with at any particular point in time.

One thing I feel is kind of missing with more recent seasons of Who is this feeling of adventure, of just going to places because they are there. Every episode deals with some kind of universe-threatening crisis that must be solved and it gets kind of tiring after a while. I know in the last season with the Ponds they talk about going on adventures, but we never see them.

We always have the reaction shot of wonder from each new Companion when they realize the TARDIS is bigger on the inside, why did they have to do away with the sense of wonder that comes with having a machine that will take you anywhere in time and space?

I feel like this season afforded the writers one and only one opportunity to tell certain kinds of stories because they could only be told for the first time once. That was one reason I was so impressed that they chose to show the end of the world in the second episode. What impossible story do you tell when you can only tell the first impossible story once? What has significance and meaning? The destruction of the Earth and the realization that everything ends is rather interesting for the second episode of a new show.

Wait, I am off on a tangent about other episodes of this show, not the one I am watching. Sigh. Excelsior.

Gwyneth/Gwen Cooper

There are several actors who have appeared multiple times in different roles on Doctor Who. One of the best examples of this phenomenon is current Doctor Peter Capaldi. He first appeared in “The Fires of Pompeii”, then later in the Torchwood series “Children of Earth.”

gwen6Supposedly, I heard that eventually the series would address the fact that Capaldi has previously appeared on the show in some form or fashion. They may have already but I don’t know about it because I am still behind on the series.

It’s interesting to me to see how they deal with these continuity issues. I believe when Martha Jones was brought on as a companion she mentions having a cousin who died at Canary Wharf as a way to bridge the continuity issue of Freema Agyeman having appeared literally two episodes earlier as a different character.

Eve Myles is the first of three eventual Torchwood cross plants from the main universe. Her character here is named Gwyneth. In Torchwood, her name is Gwen Cooper. It isn’t a big stretch to believe that the Torchwood version of Myles was intended to have been a descendant of this character that she plays. I’ll address the other continuity characters when we encounter them.

Also realized that the weird alien fault line that Torchwood is built over is introduced in this episode. It’s interesting how many seeds for Torchwood are planted in this episode. It’s possible the writers just simply took a lot of stray pieces and repurposed them, but it’s fun to go back and see the trail of breadcrumbs that lead to Torchwood. I went into this episode feeling like it was something of a filler episode, but I am now realizing just how many things that became part of the Who mythos were introduced here.

I don’t think Who should cannibalize itself by only doing Weeping Angels episodes, but it would be nice to see more of the world building they did in the first few seasons where you get a character like Cassandra O’Brian coming back.

Charles Dickens

We can’t talk about this episode without mentioning our celebrity guest, Charles Dickens.

charlesDickensDickens is played by Simon Callow, who will forever be to me the theater owner from Amadeus who commissioned Mozart to write “The Magic Flute.” Interestingly, he also plays one of the idiotic theater owners in the miserable atrocity that was the film adaptation of “Phantom of the Opera.” The other theater owner was played either by Julius Caesar from “Rome” or Mance Rayder from “Game of Thrones”, depending on how old your pop culture references are. Yes, I watch entirely too much British media.

Callow interests me because I have seen him in a number of different things. He is well known for being the funeral in “Four Weddings and a Funeral.” He also published an incredibly comprehensive three-part biography of Orson Welles. He is a fairly well known British prestige actor who either plays characters from Dicken’s oeuvre or Dickens himself. He is just well known enough that everyone has probably seen him in something, but not so well known that you can think of him as being that one guy who did this one thing.

It’s good that Doctor Who got decent actors to play historical figures in the show. More recently, when it became a huge success, I can’t imagine it was hard to get well known character actors to appear, but I believe getting someone of Callow’s stature to appear in the first three episodes was something of a coup for the show.

Period Garb

periodGarbAnother thing I just noticed with this episode is that The Doctor makes Rose change into period-appropriate clothing before turning her loose on the town. Again, this is another thing that the show has kind of crept away from in most circumstances. Usually when the companions travel back in time, they get to wear whatever it is that they normally wear regardless of the time period.

I noticed that Rose has been wearing the same outfit for the last three episodes. I like the authenticity of the costume designer acknowledging that Rose never went home to change her clothes because she impulsively jumped in the TARDIS with The Doctor, plus the fact that most people wear things more than one time. That lends a bit of continuity to the episode. However, it probably has more to do with budget reasons and laziness than actually putting thought into the continuity.

It’s also a nice lampshade on the show for The Doctor to claim he has changed because he changed his shirt. The Doctor always wears clothes on the same theme even if certain aspects of the outfit like the color of the suit will change.

Girl Talk

There is a wonderful scene in this episode where Rose and Gwyneth talk about their jobs and how they hated school. There are a number of scenes like this one from various episodes in the Davies era. There was the one from the previous episode where she talks to the maintenance person and one where Martha Jones is trying to get The Master’s nurse to swear in front of her.

GwenCooperFor the most part these scenes don’t really drive the action forward very much, but they do serve a great purpose in establishing that no matter where or when you are, people are not really all that different. An alien at the end of time still has the same thoughts and feelings as a doctor in the twenty-first century.

These scenes can only be done with the companions because they are a very human aspect of the show that The Doctor just doesn’t fulfill. The Doctor will protect and save humanity, but there is never any doubt that The Doctor is not one of us. He is not human. He never will be. He can like and respect his companions as people without ever really being one of us.

When Rose changes into her period garb, The Doctor is shocked and tells her she looks beautiful, for a human. That kind of sums The Doctor up in a nutshell. He can enjoy the companionship of Rose in an aesthetic way without ever really feeling an actual, real connection to her on a human level.

I currently have my pug sleeping on my chest. I love her and enjoy feeling her fur with my fingers, but I never for one moment think that we are on the same level. It doesn’t mean that I don’t love and care about her, I just know that we are not the same and we never will be.

Nature of Humanity

I find the nature of the conflict between Rose and The Doctor to be fascinating. The aliens asking to use the bodies of the dead is an interesting morality question.

Our culture sees the defilement of dead bodies to be an atrocity. But, if you see it from The Doctor’s perspective, whatever made those people who they were is now gone. We throw away millions of viable organs every year because people need to opt in to organ donation programs and many times the organs are either unusable or the doctors are too worried about being sued to harvest them.

GwenGhostIf you look at things logically, it should make total sense for us to let these aliens inhabit dead bodies. However, on a basic human level, we see this as abhorrent. It seems like a cop out at the end when we discover that the aliens are actually horrible people and we can feel good about denying them access to the bodies.

I also wanted to address Gwyneth’s death. I am a sensitive person. I am hurt very easily by other people’s pain. One struggle I personally have is trying to separate other people’s pain from my own. I keep feeling like I can take their pain from them and that they will feel better, but you can’t do that. Everyone has to experience their own pain.

Gwyneth’s willingness to allow herself to be a conduit for these aliens spoke to me because I could totally see myself doing the same thing. I would feel like I was special, or chosen because I could help save these angels and I would allow them to destroy me. I have done that before. There is something intoxicating about feeling like you are the only person who can help someone that sets you up to be in a position of being damaged by forces you don’t control. Extreme empathy can sometimes feel like a gift, but it is a gift that brings destruction if you can’t learn to protect yourself from its consequences.

Assessment

This episode isn’t as bad as I remember it being. I was kind of dreading having to watch this episode after the great one we just had and knowing the great episodes coming up before the end of the season.

I guess the thing that kind of makes this episode for me is all the breadcrumbs that would be picked up for Torchwood. I know other people don’t agree with me, but I don’t feel like the past few seasons have had the same world building that these first few seasons have. Introducing Danny Pink to be Clara’s boyfriend and to set him up to be sacrificed at the end of the season is different than having a few recurring characters who show up over several seasons.

I had also overlooked the plot point where everything hinges on Gwyneth’s embracing of her destiny to be destroyed by the angels. As much as The Doctor and Rose disagreed about whether it was moral for the aliens to inhabit dead bodies, if Gwyneth had not agreed to be the conduit, the argument would have been moot.

This is a pretty solid episode. The writers probably did right by going back in time. These first few episodes lay the ground for everything that comes after it. I think writing a critical assessment of this episode gave me a better understanding of the emotional resonance of the episode.

Up next, we have “Aliens of London.” We get to see the fallout of Rose’s decision to jump in the TARDIS and follow The Doctor to the end of the world.

Impostor Syndrome

Was reading this article about being a beginning female programmer today and I began to feel incredibly depressed. This is something I could have easily written a year ago. I still write quite a lot about how incredibly difficult it is to break into the tech industry.

One reason I don’t necessarily talk about a lot of sexism in tech is because, back when I was starting out, I didn’t know if I wasn’t finding opportunity because I was a woman or because I had no experience. I had an acquaintance go on Twitter and ask why, whenever he posted a job opportunity, no women ever applied for it. I asked him if he would be willing to hire a woman with less than three years of professional experience. His response was a horrified, “Oh god, no!”

Many people enter the tech industry because we keep hearing the desperate plea of companies for more tech workers, but once many of us get here, we realize there is a giant ravine between us and the people who claim they want to hire us.

I recently wrote a blog post about the incredible dearth of opportunity from the various places that claim they can find no workers. I run a CocoaHeads group combined with an NSCoder group for student entirely to try to help them navigate their way to their first jobs. I am doing this because I am not too far removed from the period of my life where I had no fucking clue how I was going to break into tech.

I recently attended CocoaConf in Boston. I went there last year. When I went last year, I was asked by several people what I was going to do when I got home. I told them I honestly had no clue. Everything I had worked for that year was to make it to that conference to take the Core Audio workshop and maybe network with some people. But you know what, that conference was a catalyst for my career.

One of the speakers there, Josh Smith, got me invited to speak at CocoaConf in Chicago back in March. He also was willing to help me try and submit a book pitch to a publisher. I made friends with Chris Adamson there, so when he was looking for a coauthor for his book, he reached out to me.

I can be a sanctimonious prig and go on here and talk about how I worked my ass off trying to learn programming and how I earned/deserve all of my current success, but that isn’t entirely true. I had parents with enough money to help me pay for going to Boston. I got my husband to send me to the first CocoaConf I went to even though that one didn’t immediately pay off.

I have tried very hard to make opportunities happen for myself and I have done my best to exhaust each and every one that I have gotten. I have had a few opportunities that I have massively fucked up. I have tried my best to learn from those and hope that another one will come along that I won’t massively fuck up.

I see people who are given opportunities that squander them because they don’t really understand what they are being given. I scream in my head at these people. They make my brain hurt. They make me feel like crying. Not only are they wasting their opportunity, they are also training the person who gave them that opportunity to stop doing that because people flake out on them. It really sucks.

I wish I could just say that I leaned in and that I made the most of my opportunities and feel proud of how far I have come in the last year, but I have to acknowledge the uncomfortable reality that I got opportunities other people haven’t and I have simply followed through with them where other people have not. It’s a nice story to say I worked hard, but it isn’t right to tell other people that if they do the same thing that stuff will work out for them, because I am honestly shocked that it has worked out for me.

So, thank you to all the people who gave me a chance and lent me a hand. I hope that you will continue to do so for other people in the future and I pray that someday I will be able to do the same as well.

A Brief Analysis of Swift Structures and Classes

Now that I have cleared a few things from my queue, I have some time and mental energy to really delve into some of the things I left on my back burner. One of those things is to really dive deeply into Swift.

Yes, I know. I have my name on a book using Swift. That book isn’t a language book, it is a framework book. We are primarily getting people who code familiar with the Cocoa Touch frameworks that most people will use. We did not really dive deeply into the minutiae of the Swift Language because, honestly, very few people have. It is still in the process of changing and many people are still stuck in the mental paradigm that they are supposed to write it like they would Objective-C.

I knew when I was going to learn Swift that I really wanted to grok in fullness how best to use the language and to not write hacked, inefficient, and messy code.

One thing I am trying to get used to is the fact that a file does not have to have a class. I am so used to the idea that every file must not only have a class, but that the class must have the same name as the file that seeing it is possible to write a file without that and have it compile kind of blows my mind.

This begs the question in my mind of what do you, or should you, need to include in a file that integrates into your project. Right now I am focusing on three different structures: classes, structs, and enums. I want to explore what each of them gives you and what their limitations are. These are three very similar things and I am interested in exploring what situations each would work it.

This post will be on structures and classes and a future post will be on enums.

Class Versus Structure

Classes have all the same functionality that structures have, but this does not go the other way around. Classes and structures can both do the following:

  • Define properties
  • Define methods
  • Define subscripts to provide access using subscript syntax
  • Define initializers
  • Be extended and expanded
  • Conform to protocols

Structures are far more powerful here in Swift than they were back in the Objective-C days. Back in the day structures could pretty much just do the first thing in this list, define properties. Structures have taken on some of the heavy lifting that only classes used to do.

Classes, on the other hand, can do all of these things along with the following:

  • Inherit characteristics
  • Check and interpret the class type through type casting
  • Deinitialize resources
  • Allow more than one reference to the class instance

This kind of begs the question of why you would create a struct if you can get all the functionality of one for “free” by creating a class. What are the advantages of a struct? Why did the Swift development team think it was necessary to supercharge the struct type?

We would of course want to create a struct in the same situations we used to use them before. But if a struct can conform to a protocol, be extended, and define methods, then where is the line between a class and a struct?

One of the things in this list confused me somewhat: ”Define subscripts to provide access using subscript syntax.” I am perusing the Apple documentation and apparently this means that if you instantiate a struct in a class, you can directly set one property inside the struct. I didn’t use structs much when I was learning Objective-C, but I vaguely remember if you created an instance of a struct, like CGRect, you had to set both aspects of the CGRect. You couldn’t create a CGRect that was a square, change your mind, and just reset the length to be longer. You had to reset the height as well. Now if you wanted to do that, you could simply specify the parameter you want to change and reset it directly.

Value Types

Structures and enums are both value types, but classes are not. A value type is a type whose value is copied when you assign it or pass it around. I didn’t know this, but all the types that we use in Swift, like integers, Boolians, and strings, are all actually implemented as structures. I am so used to dealing with these “primitive” data types that I never thought about how they get implemented by the compiler. I find it fascinating that all the types we use in Swift boil down to structures.

I guess if you really think about what the code is doing, this makes total sense. We are not using C pointers in Swift. If you create a CGRect and then create a second one that is set to the same initial value as the first one, your second CGRect can change and mutate independently of the first CGRect.

Reference Types

Classes are reference types. This means that if you create an instance of a class then set another instance of the same class to the first instance, they are linked and what affects one will affect the other. This is a really important distinction between a class and a structure. If you have something where you will need to create a lot of instances of that object, but you want them to display slightly different behavior, you would want to use a structure. Likewise, if you want a lot of instances that will all change when one changes, you would use a class.

So When Do I Use A Structure?

Here is Apple’s advice about when you would want to use a structure. They advise you do to so if at least three of the following conditions apply:

  • You are encapsulating a few relatively simple data values
  • Your values must be copied rather than referenced when they are passed around
  • Any properties in the structure are value types, or if you are not storing instances of classes
  • The structure does not need to inherit properties or behaviors from an existing type

This list is…interesting…

The problem I am having here is that this is pretty much what you could do with structures back in C and Objective-C. What was the point of really increasing the scope of what they can do just to advise everyone to treat them like they did before. This puzzles me. I thought by exploring these differences that I would uncover something I hadn’t considered before, but I am left with my initial questions.

It’s possible I am reading too much into this. Being an Apple developer means sifting through everything Apple says to try and read the tea leaves of what direction they are going in next. Sometimes they leave a decent trail of breadcrumbs. Sometimes they don’t.

I am in the parallel process of learning Haskell along with Swift. I am going to keep these questions in the back of my mind to see if I can find any more answers to this question in other locations. I feel there is something significant here I haven’t gleaned yet, and I am looking forward to figuring out what it is.

Conclusion

I hope for this to be the first in a series of posts about the Swift programming language and how to work with it most effectively. I am probably not telling anyone anything they couldn’t figure out from reading Apple’s Swift book. I have found that writing things out as I am learning them is helpful to my own learning process. If my writing is helpful to you as well, awesome.

Janie’s Insanity Log: Saturday, November 8, 2014

Time: 7:45 am
Tea: Adagio 4 Seasons: Autumn
Current Music: Soundtrack to Revolutionary Girl Utena

Hello. Over the last month or so people ask me what I am going to do this weekend and I invariably say that I am trying to finish my book. I always get the same response: “Wait, you’re still working on that thing??”

Yes. I am still working on that thing.

I am tired of working on that thing. I want it out of my life and into the hands of people who will use it for its intended purpose of chaos and destruction.

Problem is that when I try to make myself sit down and write, I want to be anywhere other than in front of my computer. I start crawling the walls and try to gnaw my own arm off to escape.

So, I am going to the super counterintuitive thing of writing my thoughts down to avoid having to write my thoughts down. I am going to periodically write my mental state here over the next 48 hours or so so that I can share my psychological degradation with the rest of the world. Yay!

This will either be entertaining or it will be a disturbing, incoherent rambling mess. Or, if I am lucky, it will be both! Let’s see what happens.

Time: 7:55 am

I have realized that my chapter goals may have been overly ambitious. I have chosen three frameworks that could each justify their own book. This is a poor decision. I have removed one framework altogether and I am now figuring out how to adequately write the rest of the chapter.

I made the somewhat impulsive decision yesterday to go to CoocaConf Boston to spend some time with Chris working on the book. I started a job a few months ago where I can actually talk to another programmer about the issues I am having and it has increased my productivity tremendously.

One reason this has been taking so long is that life has gotten in the way. It’s been hard to say I am going to sit in front of my computer and write about something I am still figuring out when it has been nice and sunny outside and I would rather be doing other things. Having another person there to bounce ideas off of and who knows you are supposed to be working because they are in the same boat is an invaluable thing. We have been limping along this way out of necessity, but I really need to work with Chris in person, so I am sacrificing some of my royalties in order to make sure the project gets done the way I want it to be done.

Time: 8:00 am

Realized I am spending time I should not chatting on Twitter about what a cool idea this post is and all the awesome crap I am going to do with it. Gently directing my attention back to the task I have to do.

Time: 8:05 am

Reconnoitering the task at hand. I am trying to figure out the best way to proceed here. I have an idea about what I want to talk about and what project I want to complete by the end of the chapter. I know that some amount of the chapter is going to be structural stuff and the rest will be what Chris likes to call, “clicky-draggy” stuff of explaining how to set things up and show actual code.

I don’t want to work on coding the project by myself because I want to work with the person who has done a lot of the work on the code, which is why I am going to Boston. However, I don’t think I will get very much done if I don’t at least begin to explain some of the “clicky-draggy” stuff.

I found a project very similar to the one I want to explain by the end of the chapter. I am tentatively planning to throw code in the chapter that I will tag to remove when I replace it with the actual code I am creating for the project. This will give me a sense of how long this chapter will be. I will also have to account for screen shots that will be taken later when I get the project working.

I feel bad that I am having trouble doing a remote project by myself. I worked alone out of my house for a year and half while learning programming and I could self motivate for that. To be fair, I never completed a project that was released to the world when working by myself. Also, working with another person on code they primarily wrote is an entirely different skill set than just doing your own thing.

I am an inherently social person. I like talking to people about their code. I am not one of those solitary programmers who lives in the basement staring at a screen. If I don’t have anyone to talk to about things that interest me, I kind of wilt and get depressed. I had hoped to work more directly with Chris on the book, but we both had a lot of curve balls thrown at us and it is understandable why it wasn’t really possible to spend an hour a day chatting on Skype about the book. I am hoping that working on the project together in person will accelerate the process of getting the book done.

Time: 8:15 am

Oh! Student Council elevator song from Utena is playing!

Touga: If it cannot break out of its shell, the chick will die without ever being born.
Miki: We are the chick-
Juri: The world is our egg.
Nanami: If we don’t crack the world’s shell, we will die without ever truly being born.
Saionji: Smash the world’s shell.
All: FOR THE REVOLUTION OF THE WORLD!

Sounds about right. Probably shouldn’t be listening to mind fuck anime soundtracks. What else do I have? Neon Genesis Evangelion, Puella Magi Madoka Magica, and Attack on Titan. This isn’t a promising development…

Time: 8:25 am
On second pot of tea. Already driving Chris insane with my pestering. Will leave the poor guy alone. It must be nice to be an introvert.

Time: 8:30 am

Holy crap! I actually started writing something for the chapter!

Time: 8:45 am

Went looking for sandals. Floor is gritty and covered with various pug debris. Resisting urge to procrastinate by trying to clean my office. I am looking forward to deep cleaning the living crap out of this room when I get done with this thing.

Time: 9:00 am
Current Music: Soundtrack to Puella Magi Madoka Magica

Succumbed to the temptation to clean when I went to refill my tea and saw lots of dirty dishes in the sink with a dishwasher full of clean dishes. Feel slightly better that the kitchen isn’t a complete mess. I should probably eat at some point in the future…

Time: 9:30 am
Current Music: Soundtrack to Attack on Titan

I figured out something I was confused about and didn’t understand about the framework, so I actually got some stuff written. Now I need to determine if this is something Chris explains earlier in the book.

Also ate the other half of my leftover crispy chicken sandwich and french fries from yesterday. I am sad that this is probably going to be the healthiest food I eat this weekend. I am keeping a food log of all the horrible things I am going to put in my body to punish myself for not getting this done sooner.

Time: 9:45 am

Got sidetracked by an argument with a friend of mine online about whether the TV show Scorpion is offensive and stereotypical to smart people. My friend is on the autism spectrum and is thrilled to see people like herself on TV. I am annoyed that it is assumed that if you are a smart person you must be completely socially inept. Wait, I am supposed to be writing now, aren’t I? *grumble*

(But seriously, if one piece of your dialog in the pilot is the main character telling the young white guy with glasses in the back of the room that he is a programmer and the guy asking, gee, how did you know, and the main guy saying lucky guess, guess what?? THAT IS A FUCKING OFFENSIVE STEREOTYPE!!!)

Time: 10:05 am

Having an existential thought about whether or not what I am writing is correct and if it isn’t, would anyone ever know? Wondering how many tech books I have read where the author was completely talking out of their ass and doesn’t know what they are doing only to figure out like years later that something they wrote was completely wrong. I guess it doesn’t matter because anything written about Apple tech is inherently ephemeral.

Time: 10:20 am

Got slightly derailed by a flare-up of my involuntary muscle twitching. Beginning to wonder if it might be an allergic reaction of some kind. This only happens when I am at home. When I travel to conferences or I am at work I rarely have any issues. I hope I am not allergic to my pugs. That would suck to the extreme.

Time: 10:45 am

The Husband returned from his outings. He brought me hacker food. He brought pizza, a case of Mountain Dew made with real sugar, and french silk pie. My digestive system is about ready to strike and walk off the job in protest. This will be fun.

Time: 11:45 am
Current Music: Soundtrack to The Rocky Horror Picture Show

Crap. I got pulled into conversations with people on Twitter. Chris seems to have gotten over my annoying him this morning and we are talking about Revolutionary Girl Utena. Also talking to people I need to connect with in Boston while I am there.

I am making progress on the book. I have written quite a lot so far. I have mentally broken thing up and I am putting the pieces together. I had to spend some time doing a little research, but I am able to find the answers I need fairly quickly and not falling down too many rabbit holes. Also not stressing myself out too badly or crawling the walls trying to escape. Plus, it’s almost noon and I haven’t thought about how long it is until I can open a bottle of wine, so yay to that.

Sadly, getting to the part of the book I am going to have to hack somewhat because it involves code I haven’t written yet. I want to write some of the glue code about the process even though I haven’t done it yet. Sigh.

Time: 12:00 pm
Tea: Adagio Raspberry Black Tea

On my third pot of caffeinated tea. I might want to consider switching to something herbal in a little while or else panic attacks will happen. I wonder if I switched to Mountain Dew if that would still result in panic attacks because caffeine is caffeine. Should run experiments on the pugs.

Time: 12:30 pm

As I am writing the chapter, I am realizing I might be approaching the project incorrectly by trying to describe doing it before creating it. I am taking a bunch of notes in the chapter to try to come up with a list of requirements for the project so I can start working on it when I am in town with Chris. Also need to look over the code better to figure out how to integrate this into what we have so far.

Also, figuring out that I am hungry. Grabbed a random pizza from the freezer and preheating the oven. Also took a can of Mountain Dew and threw it in the freezer to get it cold quickly. I am mentioning it so that when I inevitably forget to take it out of the freezer and it explodes there will be foreshadowing of that event.

Time: 1:30 pm

Managed to collaborate on a plan of action with Chris so we can make the most of our limited time in the same physical plane of existence.

I am creating a set of software requirements for my sample code. I am also looking over all of the code we have thus far to strategize about the best way to approach the code and the organization. I might just stub out some space in the book where I describe what is going to happen in each place.

Also made pizza and switched from tea to Mountain Dew (no, I didn’t forget the can in the freezer and we had no explosions.). Haven’t gotten super hyper yet. Give it some time.

Time: 2:15 pm

I am approaching the end of what I can do on this portion of things by myself. I am getting an idea about how I need to approach my project, which is what I will do for the remainder of my day. I am planning to tackle another part of the project tomorrow. Hopefully I will be able to put together a software requirements package that will allow me to just sit down and code my project when I can collaborate with Chris and we can get this stupid thing done and shipped.

Time: 2:30 pm

Bah. Tired. Time for first bath. Normally I would read tech books in the bathtub, but I am trying to avoid contaminating my focus with any of my other hobbies. Will probably just read historical fiction book about Henry II and Eleanor of Aquitaine. Pondering whether I want wine or not…

Time: 4:00 pm

Took my bath. Got really sleepy. Was really hoping that I could take a nap. No such luck. I really miss taking naps. I haven’t been able to have one in a while because when I go to lie down the involuntary twitching comes back and I can’t sleep.

Today has been a fairly productive day. I am trying to spend what energy I have left outlining the things I need to figure out to implement the first part of this project.

Going to navigate away from my desk. My arm and leg are jerking so much that I am afraid of falling off of my ball. I need to go to bed or somewhere that I am not going to fall over and hurt myself.

Tentatively going to call it a day unofficially. Going to get up tomorrow and continue on my odyssey of writing. See you then!

You Kids, Get off my Virtual Realty!!

Over the weekend I was surprised with a gift I didn’t think I would ever get: New ports of a bunch of my favorite games from when I was in my impressionable tweenaged years. First among these games was “Sam and Max Hit the Road.” Closely following this cultural touchstone were “Indiana Jones and the Fate of Atlantis” and the “Legend of Kyrandia” trilogy.

I became acquainted with the point and click adventure game genre through my brother. When I was in junior high my dad bought my brother a computer for Christmas and bought me a wooden chess set. I am not bitter about this. Much…

Anyway, he was working through Day of the Tentacle. I would walk by and wonder what the hell it was he was playing. It looked weird and creepy. It is weird and creepy, but at the time it didn’t look weird and creepy in an endearing way.
Day_of_the_Tentacle_Founding_Fathers
One day I got curious and started asking him about what was going on. He was stuck on a puzzle in the game but he couldn’t explain to me what had happened up until then, so I went on the computer and started my own game.

Holy crap, this game was amazing! There are so many weird and surreal things going on this game that it may have irreparably warped my sense of humor. Possibly more so than it was warped before. A game with time traveling port-o-potties, a valley dude hanging out with George Washington, and a plot point that requires you to freeze and microwave a hamster is more than a little sick and twisted.

We worked in parallel on our game. One of us would make progress and we would share it with the other person. It took us a really long time to get through that game. It feels like it took months. It might have, I really don’t remember.

When an artifact comes along, you must whip it!

When an artifact comes along, you must whip it!


After polishing off Day of the Tentacle, we worked through Indiana Jones and the Fate of Atlantis. We thought there was only one path through the game and we had screwed it up by ditching Sofia halfway through the game. After working through the game a few times we realized that there were actually three successful paths through the game. That got us really excited to go through the game and replay it a few times to figure out how many different ways the game could be won.

I did want to make a brief mention of my bewilderment about the death of the Indiana Jones franchise. Fate of Atlantis proved that Indiana Jones could be a great franchise where you have a nice formula that is infinitely customizable without getting overly stale. I am saddened that the last few films felt like they had to do like character development or something. Indiana Jones totally could have been James Bond with archaeology. Such a missed opportunity.

The Tunnel of Love from Hell!

The Tunnel of Love from Hell!


It took us a lot longer to get through Sam and Max. There was a point in the game where you had to go into the Tunnel of Love and hit a specific place on the wall at exactly the right moment in order to find the Mole Boy who wanted pecan flavored candies. We went crazy trying to get past this point in the game. We knew something was there, but we never hit the wall at the right moment. I think we worked on this game on and off for months. I think we restarted the game just to be able to play the game up until that point because we enjoyed the twisted sense of humor so much. In fact, we replayed up until that point so many times that there is a full two thirds of the game I barely remember because I played it all the way through just once or twice.

I don’t remember which one of us got past that point or if we did it together. I do remember we were both elated that we could finally continue on with the game and we celebrated that moment together.

The summer between seventh and eighth grade I encountered two games: Myst and Legend of Kyrandia. Legend of Kyrandia was another SCUMM-based adventure game created by a company other than LucasArts. Our school had a summer enrichment program that many of us quickly realized meant that we could hang out at school and play computer games all day.
the-legend-of-kyrandia-screen-4
I don’t remember who found Legend of Kyrandia, but it very quickly became a favorite of everyone in the group of about ten of us. We were obsessed with this game. There is a point in the game where you get lost in these caves and if you don’t light them properly you get eaten by animals. We all worked together to piece together a map of the entire cave, along with all the objects that are hidden that you needed. When someone would make progress in the game we would quickly spread that new information to everyone else in the group. It took us a few weeks to work through the game and it worked as something of a bonding experience for all of us that immediately was forgotten when school started up again.

My experience with Legend of Kyrandia was vastly different than my experience with Myst. I had to work through that game alone. I played it a lot because I thought the graphics were pretty. Myst is in fact one of the things that got me interested in 3D graphics and texture mapping. I really wanted to know how the worlds were made. Unfortunately, I didn’t get as far into the game as I would have liked. I didn’t realize you could leave the island until I bought a strategy guide. I thought you were just supposed to wander around and look at all the pretty scenery. I couldn’t understand why everyone thought the game was so amazing. After figuring out you could leave, I was far more excited about the game.

At this point, you may be wondering why I am rambling on about my lost childhood gaming experiences. I have a point. If you read through this spiel, you will notice that not once did anyone ever check the Internet to see what to do when we got stuck. If we got stuck, we just didn’t progress in the game.

Pro tip: Don't stick your hand in a crack in the wall on an alien planet. Just don't.

Pro tip: Don’t stick your hand in a crack in the wall on an alien planet. Just don’t.


The only games I was able to get all the way through were ones that I worked on with at least one other person. I found a simulated version of Legend of Kyrandia and I tried working through it on my own, but I quickly got stuck in the caves, got bored, and just downloaded a map off the internet.

I find it mind boggling that my brother and I literally spent YEARS when I was a teenager working through these games. We would be stuck on puzzles for months. Yet we would sit there and just keep trying anything we could think of to get through the game.

When was the last time anyone ever spent a month working through a game? The last game my husband bought was Legend of Zelda: Skyward Sword. He spent about a week playing through the game, beat it, then threw it in a box and forgot about it.

Back when I used to work at Target I would bring my Nintendo DS to work. I had Lego Harry Potter to play on my breaks to blow off steam. I would only play that game when I was at work as something to help me get through my day without going insane. After I had been working on it for a month one of the back room guys came over and said, “Wait, you’re still working on playing that same game?!” It’s inconceivable that anyone would spend a month playing a game without either giving up or beating it.

I don’t pretend to be any kind of gamer, but are games easier than they used to be? It seems to me like people used to spend weeks or months working through games. I read a blog post by a guy talking about working through one of the first Zelda games by coming home from school and being glued to the TV for weeks.

Waiting for the smoke monster to show up with the polar bear.

Waiting for the smoke monster to show up with the polar bear.


I am kind of sad that I don’t really see games out anymore that take months to get through. I am also really sad that I don’t get to work through a game with other people anymore. That summer working through that game was a really awesome experience. I have felt rather isolated from my classmates in school. I always did group projects on my own. Having an experience where we all worked together on something that we were excited about was a gift.

I don’t have this experience of working through games anymore, but I have found that I can get something like it when I talk to people about code. Right now my boss is working through functional Swift programming using Haskell design patterns and syntax. Sitting with him looking at the stuff he is doing and trying to catch up so that I can help out is surprisingly emotionally fulfilling.

I wonder if people who grew up with the internet will ever get a chance to work through a problem with someone where the answer isn’t instantly available online. One reason I am finding working on the Swift problem so exhilarating is that there isn’t a “right” or “wrong” way to do things yet. Coming from a school background, I’m used to the idea that the person who knows more than I do has a right answer to the problem we are supposed to solve for class. Being in a situation where that answer isn’t known yet is somewhat freeing. It gives these things we are doing meaning. We aren’t just doing mind games or mental exercises. This is it. This is why I learned to code, to solve a problem.

Working through those silly adventure games really gave me tenacity to keep working at something that I knew there had to be an answer to, even if it wasn’t immediately available. It also taught me how important sharing knowledge and collaborating is. None of us would have gotten through the game in the time we did if we hadn’t worked together and pooled our knowledge.

Giving information to someone who doesn’t have it costs us nothing. Working together we can do things we couldn’t do separately.

I haven’t opened any of my games yet. I am afraid I won’t remember how to do anything and I won’t have anyone to play them with. Maybe I’ll find someone to play with. Maybe not. Either way, I’m sure they will be harder than I remember them being.

So are we, Bernard. So are we.

So are we, Bernard. So are we.