Tag Archive: xcode

Los Angeles, Again

Apologies for my absence from the blog for the past few weeks; I spent the time immersed in Udemy, getting my new course ready for publication. It’s submitted for review now, waiting only for an image before it gets set live. I’m super-excited and will let you know more when it’s released.

I’m spending the winter in Los Angeles.

I promised myself last winter, as I was freezing in my NYC apartment with the heat cranked up to max and my poor tree actually leaning away from the window to escape the polar vortex (who knew trees even DID that?), that if I actually went ahead and pursued this plan to travel and learn and find a new path, I’d spend the winter someplace warm.

I chose L.A. I’ve lived here before, for four-plus years in the early 2000s, and I know where to go, where to avoid, where to relax, where to hike. Most of all, I have friends here who I’m looking forward to spending time with, making the city feel more like a village hamlet or a reunion than a sprawling sprawl.

I’m already feeling the pull of L.A.’s unique rhythm, the blend of seasons into endlessness, the no-hurry mornings and the bright blue perfection, though now I am uniquely qualified to fight it with productivity. I spent the last seven years in New York, where busy-ness is a way of life, even when it’s fabricated.

I remember traveling around L.A. when I was working in journalism, wondering as I passed by cafes in the middle of the day, “Who are all these idle people?”

Now I am one of those people. But I’m not idle. In the past month I’ve doubled down on my (now-working!) Xcode plugin, signed up to present it at a SXSW breakfast, added new capabilities and started planning a standalone software product; created a Udemy course to teach basic programming concepts to would-be programmers, non-technical co-founders, and parents and teachers; and fixed major bugs in my flashcard app that were preventing progress. I’ve spoken with a lawyer about creating a company and am prepared to move forward.

I expect to launch all of these projects by the time I leave in March, along with an organic food finder I prototyped last summer. It’ll be an interesting couple of months.

Then I’ll see what sticks.

In the meantime, I’ll enjoy being productive in the midst of laid-back L.A. I’m also trying to get back on track with my organic, hack-your-health lifestyle, which I decided a few years ago was non-optional if I wanted to live an optimal life. It’s super-successful for me when I’m on-board with it, so I’m back on board and ready to enjoy my (non)-winter.

73 degrees. I love it. Lots of work to do.

FacebookTwitterGoogle+Share

GitHub Fails and Lessons Learned

I messed up my Xcode plugin yesterday. GitHub failed me, or rather, I failed GitHub. Then I fixed it and implemented better practices.

This blog post is an open, transparent attempt to share my mistakes and solutions.

For non-GitHub users, GitHub is sort of like Google Docs for software. It allows multiple software developers around the world to work together on software (relatively) seamlessly. So, if a software developer in Dubai makes a change, and another software developer in France makes a different change, those two changes can be merged into a single version of the software without significant hassle.

One Branch to Rule Them All

My first mistake was that I had only one GitHub branch: master. Initially, this worked well for me, because I used one laptop for development and pushed changes frequently from my local machine’s master branch to GitHub’s remote master branch.

Yesterday, I decided to push changes from a second machine, a test iMac with OS X Yosemite and Xcode 6 GM installed (for stability of the plugin, my laptop is still running Mavericks and Xcode 5/Xcode 6 beta. This turned out to be a good idea, at least until quirks are worked out).

Using the test iMac, I added the UUID (unique identification code) for Xcode 6 GM to my plugin. I did some limited testing (MAJOR MISTAKE) to verify functionality, pushed the code to GitHub’s master branch from the iMac, published a few more minor commits, and then pulled the new master version onto my laptop to make sure it also worked there.

Spoiler Alert!

The plugin did not work on my laptop. Previously functional commands produced no output. One command to create a for loop actually executed the Undo function instead! (If you’re not a software developer, just know that this is a bad kind of bug.) Most of these commands had worked fine on the test iMac.

Baffled, I decided to test every single command on the iMac (maybe I should have done this the first time, hmm?). I quickly discovered that with only one exception (of course, the one I’d tested before) my conditional-statement methods crashed Xcode. Some of the other methods that had produced no output on the laptop worked perfectly on the iMac. And entering slightly non-matching commands, which should produce no action, also crashed Xcode.

Clearly, my program now had crossed wires — and this crossed-wires version was the master branch on GitHub and the working version on my iMac and my laptop.

It was time to revert.

Don’t Cross the Streams

I researched how to revert GitHub commits. I wanted to roll back to a canonical, stable version that had worked with Xcode 5, and then go forward from there in a more measured way.

It turned out there were many ways to do this, many of which seemed complicated. The simplest way, doing a hard reset, was utterly bad practice (see: rewriting history) and I didn’t want to go there.

I found a Stack OverFlow answer that solved my dilemma. A poster there recommended doing this:

git revert –no-commit #######..HEAD (where ####### is the ID of the commit)
git commit -m “Commit message explaining what I just did”

This approach would revert all of the commits at once and re-create the state that had existed after the target commit. But it would not rewrite history by entirely removing old commits. Perfect.

Executing the Plan

First, in case something went wrong, I created a new branch with the old commit that I considered to be stable:

git checkout -b xcodestable #######
git push origin xcodestable

Then, reassured that I had a stable version stored on a separate branch, I switched back to the master branch and rolled it back to the old commit using the “git revert –no-commit” solution from Stack OverFlow:

git checkout master
git revert –no-commit #######..HEAD
git commit -m “Commit message explaining what I just did”
git push -u origin master

This seemed to work beautifully. But when I tried to run the plugin on my laptop, I encountered the same problems as before.

Into the Logs

Stymied in all other ways, I dealt with the situation I had in front of me and started logging messages to the console. I stepped through each process to see where things were going wrong.

To my surprise, the main problem appeared to be that many commands, after detecting the correct start point, were jumping into a method that adds items to an array. That method started with the word “Put “.

I had added case insensitivity to the plugin recently. That meant any text containing “put ” also would trigger the add-items-to-array method. For example, if the word “input” appeared anywhere in the code or comments, that would be a trigger. Whoops. I wasn’t sure why the case-insensitivity feature had worked perfectly when I first implemented and tested it, but it was breaking now.

I cleaned that up by making the command start point more specific (“Put item “) and built the program again. This time everything functioned. I tested every piece of functionality and then pushed it to the master branch:

git add –all
git commit -m “Functioning version”
git push -u origin master

Since everything was working, and the prior “stable” snapshot actually had not functioned correctly, I created a new stable branch from the functioning master branch:

git checkout -b xcode5stable2
git push origin xcode5stable2

Then I deleted the old, non-stable-after-all snapshot branch:

git push origin –delete xcode5stable
git branch -d xcode5stable

On to New Frontiers

At this point, the master branch functioned on my laptop and I had taken a snapshot (branch) of this stable state.

I still wanted to update the plugin for Yosemite and Xcode 6 GM functionality.

Unlike the last time, I decided not to do that on master. I created a new branch for testing new functionality, with the goal of merging it into the master branch once it verifiably worked on Mavericks and Yosemite:

git checkout -b newyosemite

Using the laptop, I opened the plist file as source code and added the Xcode 6 GM UUID. Then I built, re-tested every piece of functionality on the Mavericks laptop, and then pushed to the newyosemite branch.

git add –all
git commit -m “Now compatible with…”
git push -u origin newyosemite

Next Steps

The next step is to test this seemingly functional version on the test iMac with Yosemite. I’ll do that this weekend. I’m not sure if it will work, but I believe I found and fixed the major bug behind the wacky, unpredictable functionality. I also think I figured out what is causing another bug and have several ideas on how to make the code more robust.

My major takeaway is that no matter how small a project, better Git/GitHub practices are worthwhile. Specifically:

  • Preserve stable versions before major changes in a separate branch;
  • Make new changes in a separate branch before merging those changes into master; and, possibly most importantly:
  • Test ALL pieces of functionality before pushing or merging anything to branch master. Don’t just do spot tests.

 

Hacker School Gratitude Journal

I’m grateful for everything about Hacker School and this summer.

I’m grateful for the people who made this experience possible. I’m grateful for the programmers who shared their knowledge and welcomed me to share mine. I’m grateful for the friends I made, and the hours I spent in deep concentration, and for the fact that these two things were not mutually exclusive.

I’m grateful for the chance to attend this magical place.

I’m grateful for the community that extends beyond Hacker School and makes the motto, “Never graduate,” a real thing, so I can keep growing and learning and sharing and participating in different ways over time.

I’m grateful for idealism winning out over realism, and making reality more ideal. I’m grateful that my Xcode plugin worked. I’m grateful that I didn’t overthink the idea before starting to try to figure it out. I’m grateful for the help I got from people in and around Hacker School. I’m grateful for brainstorming sessions, the comfy couch to sit on, the amount I’ve learned, and the feeling of being surrounded by lots of motivated, curious people.

I’m grateful for the lovely apartments I had to stay in, the noise of trains over the Manhattan Bridge reminding me that things are always moving and shifting, reminding me to keep pace and keep pushing and change things.

I’m grateful for my roommates and the wonderful experiences I’ve had with them, and I’m grateful that I took the chance to push out of my comfort zone and into the world of adjusting to others. I’m grateful for the occasional privacy that balances out my experiment in living more cooperatively and nomadically.

I’m grateful for the awesome people in my life, and for serendipity.

I’m grateful for my health. I’m grateful for the great food I eat every day and the opportunity to try anything. I’m grateful for New York City and its never-ending options, and I’m grateful for my ability to focus.

I’m grateful for persistence and creativity, which are only good together and have allowed me to do all of this — everything I’ve done for the past few years, leading me to this point of creating and exploring and learning and enjoying the world.

I’m grateful for the tough weeks and the easy weeks and the mistakes and the things done right, and the amazing summer that all these things combined to create. I can feel that I will look back on this summer with utter thankfulness, probably when I’m tired and stressed-out and working hard and struggling to sleep enough. So I thought I’d start now and say

Thank You.

Day 89: Victory

I cannot begin to describe how happy this makes me:

Terminal output from Xcode voice recognition plugin

And this:

Xcode voice recognition plugin

I went back to the voice recognition plugin. I thought about it differently. And it works.

It’s not perfect. Far from it. But the key bottleneck is broken. This basically means everything I want to build, from a functionality perspective, I’ll be able to build.

I’ve never actually experienced this in coding before. I always just had someone help me through the hard parts, which was good for productivity but meant I never really learned to work through a tough problem in code. It’s awesome.

Referencing the “Day 89” in the title of this post, it’s Day 89 since leaving my job. Day 31 of Hacker School.

Say What? My Voice Recognition Dilemma

I tried Mac Dictation this week. My goal was to get a few simple sentences to appear in a text editor. Initial experiments were not successful. The full sentences I attempted were garbled beyond recognition when they appeared on-screen, so I fell back to word-by-word communication.”Make.” Made. “Maaaaaake….” Mate. No. Try again. “Maaaaaake….” Made. No. “Create….” Create. Aha. Victory is mine! “An.” In.

I progressed word by word, slowly and carefully, and my text editor dutifully showed the words on the screen with numerous errors. This was not production-ready. No one wants to talk as if they’re scolding a recalcitrant pet.

To be clear, I’m not a marble-mouthed mumbler. I’ve recorded books on tape for Recording for the Blind and Dyslexic (now Learning Ally), and I know I can enunciate well. But Dictation couldn’t understand my voice.

I knew that if I couldn’t get text to appear on-screen, I couldn’t complete my project. I’ve started coding the next part and it’s feasible, so I really want this to work!

So, I Googled for my options:

1.) Try to improve Dictation’s performance by improving my computer setup;

2.) Buy Dragon Dictate and hope it runs on my underpowered 2011 MacBook Air and has better accuracy than Dictation.

3.) Abandon OS X entirely and do the project in a Windows virtual machine with Dragon Naturally Speaking for Windows.

4.) Try using OpenEars to build an iOS app that does the same thing.

Only the first two options really get me to my initial goal; the last two are pivots that require adapting to different platforms and approaches.

So, tomorrow I’m buying a USB headset to eliminate ambient noise and provide a clearer dictation experience. I really hope this improves Mac Dictation’s performance by leaps and bounds. If it does, I’ll be off to the races. If it doesn’t, I’ll be installing Dragon Dictate on a machine not made to handle it.

I’m heartened by the discovery that once I get the text on the screen, my goals can be accomplished. I’m discouraged by how difficult it is to actually get the text on the screen. But discouraged does not mean “gave up.” It means I’m thinking hard about the options.

Hacker School, Day 3: Xcode Plugins and C

Kicked off this morning by writing an Xcode plug-in that loads correctly and sets a custom menu item. The next step is to make it function, and I fully realize the hard work lies ahead. I like that the goal of the plug-in is increased accessibility.

I also made slight progress in understanding C, which may be helpful since the iOS stack of Swift, Objective-C and C likely will coexist for a while.

I came home and researched Xcode plug-ins, Sublime Text, and iOS note-taking apps for hours. I know where I want to go, and I’ve specced out functionality, so it’s a matter of figuring out implementation details. I’m enthused and have a plan for tomorrow and Friday.

And I really do intend to learn C somewhere along the way.

I’m not tired at all, but it’s time for sleep anyway.

My Big Nerd Ranch Diary

I took vacation to attend the Big Nerd Ranch iOS Bootcamp last year. It was my favorite vacation ever. That’s when I knew I was on to something.

Today, I start Hacker School. I’m taking this moment to look back and share my Big Nerd Ranch diary. Every night in rural Georgia, I came back to my cabin in the woods and wrote my impressions of the day. Here’s what happened during that week:

Friday

I’m in my cabin after Arrival Day at Big Nerd Ranch — I’ve been anticipating this trip for about a year but wasn’t sure what to expect. I’m impressed so far.

First, the staff at Historic Banning Mills are heroic. Although I grew up camping as a Girl Scout and once could survive on Mountain Dew and Skittles, I am a city girl at this point in my life and had a health crisis that scared the Skittles right out of me. The thought of spending a week in the woods eating hush puppies from the lodge kitchen didn’t thrill me.

When I asked about food, Big Nerd Ranch staff said they would ask the kitchen at Banning Mills what they could do. The kitchen said if I could ship food direct from a provider to them, they would cook it for me. That scored about 1,000 points right there. I used Boxed Greens, which ships organic food nationwide overnight. The food arrived a few hours before I did.

THEN the kitchen staff kind of got into the idea. They said they wanted to buy more food to complement the contents of the box. They’ve considered offering an organic option for students, so I think they viewed this as an experiment. In return for their awesomeness, I gave them carte blanche to create whatever seemed interesting to them. My first meal, this evening, was delicious: a kale/peach/cucumber salad, followed by salmon over lentils with kale, tricolor peppers, and onions. (The regular food also looked tasty — salad and then herbed chicken over mashed potatoes with asparagus.)

Now I’m in the cabin, relaxing. Speaking of the cabin, it is huge and gorgeous.  More good things about today — the wonderful shuttle driver at the airport who did not leave anyone behind, and my fellow classmates, who are friendly. I’m looking forward to spending a week getting to know them better while my brain gets a workout in the class. It’s a challenging (grueling?) schedule, but I’m ready and plan to make the most of this opportunity.

Which means I’m going to sleep soon. More tomorrow.

Saturday

Class today was surprisingly easy and doable — but I am so glad I worked my way through the BNR Guide to Objective-C Programming last year! Struggling with this book over four months helped me rush through half of it today. We cover the other half tomorrow. If I’d walked into this class with no programming experience at all, I’d be in trouble on Monday, when we dive into iOS apps.

I still may be in trouble on Monday. The reviews I’ve read say the pace picks up fast then, so the fact that I’m finishing challenges quickly puts me somewhat at ease, since I may be able to keep my head above water on Monday and Tuesday. After that it’s anyone’s guess, because at some point we will start covering material beyond the point I’ve reached in my BNR iOS Programming Guide self-study. Then I’ll be learning entirely new stuff. And that takes longer, but we’ll still be flying through the material. I’m hoping that by getting the basics down well in this weekend intro, I’ll be able to survive through the week with some understanding and real ability to get the most from the class.

Also, I learned that there is an advanced book for the advanced class! It is, sadly, not available on Amazon or in any bookstores. Another reason to possibly take the advanced class later this year or next. I’m hoping that between now and then, I can dive in and create some real apps for free on the app store, just to test the waters and see what happens.

Anyway, more tomorrow. I was surprised not to find myself tired or burned out by 9:30pm, when I came back to my cabin. Maybe it’s a good sign, but I’ll wait and see how tomorrow goes. Food was delicious, as it was yesterday, but I am afraid my statement that, “I eat fish,” was received as, “I eat fish at every lunch and dinner.” In truth, I eat fish a couple of times a week. If fish continues to appear at every meal, I may have to say something — but what can I really say, anyway? They are preparing custom organic meals for me! Today some little potatoes and wax beans appeared — I think they are shopping for me, to supplement the stuff I sent in the box. Amazing kitchen, amazing place so far.

More tomorrow.

Sunday

My brain is starting to get tired. We rushed through many topics today, and while I understood most things, they are starting to jumble together in my mind. I’m hoping my mind can sort it out by the end of the week, and that I don’t end up dreaming all night about coding, because that would be about 20 hours of coding per day, which is a lot more than 12, which is what we are essentially already doing.

Today we finished the Objective-C book and I reviewed the documentation for NSArray, NSMutableArray, and NSDictionary. Tomorrow we dive into iOS Cocoa Touch programming.

I am loving the class, despite my brain-whir, and found myself wishing I could attend for two weeks or a month and really delve into more and more advanced topics. We’ll see how I feel on Thursday and Friday; if I still feel the same, this may be amazing for me.

The classroom is light, bright, and free of awful bugs. There were some small winged creatures on my desk this morning, but I let them be and they flew away (or my neighbor squashed them while I was in the bathroom).

More good conversations with other people who are here to learn; I love being in a room full of people who are mostly there by choice, since the attitude is amazingly good and therefore so is the experience overall.

Organic food from the kitchen continues to be good, although also salty; today I learned that this is not limited to my dishes. All of the food is very salty/spiced. I keep drinking water; can’t bring myself to complain about it. Lunch was shrimp escabeche — over red cabbage with a tomatillo sauce (I’m not sure what was in the tomatillo sauce, but it was awesome). Some delicious cauliflower with dinner, and nicely cooked yams, plus more fish. I don’t know if I will eat fish for a while after I get back.

It rained today so there was no nature walk. I did see zip-liners breezing past through the pouring rain.

More tomorrow.

Monday

Day 4 of my adventure, Day 3 of class. This is where the blogs I’ve read have dropped off, and now I see why. We covered a prodigious amount of stuff — nearly 200 pages of the iOS Programming Guide. I am getting a better understanding of some things that confused me the first time around, but I still wish I had an extra day to put it all together — the basics, the new techniques — but we just keep steamrolling forward. I don’t have time to do all of the Challenges in the book, and I really wish I did, because I’m learning a lot and I’d learn even more then!

I think I’m keeping pace reasonably well. A few people are behind me, some people are ahead of me who have a lot of coding experience, and some are about on pace with me. I think this is a marathon and not a sprint so I’m okay with it.

I do feel gratified doing something for my own self-improvement that is also productive and useful, potentially, for others who might use my apps someday. I hope I can build a lot of productive and useful apps upon returning home. I certainly feel like I’ll have a running start.

This is a good environment for learning. I have almost no time to myself, which is weird, but I’m getting a lot done and reminding myself that this is temporary and necessary. What I am getting is time to concentrate, even among others, which almost never happens. I forgot how much I enjoy super-focused days.

The food remains delicious — and today it was not salty, since when they asked me what I wanted to eat, I said I would eat anything they made for me but please to go light on the salt. It was a great food day.

It was a great learning day. I wasn’t tired at 10:15 and only left because I knew I had to get some sleep to keep up the pace for the remaining days here. I found a centipede in my bed when I came back, so I called to ask the front desk if it was poisonous. They said no and also sent a nice staff guy to pick it up and remove it from the cabin. It was a nice little creature, I guess, if I were used to creatures.

More tomorrow. Bedtime if I want to get a full 7 hours of sleep. (First night: 9. Second night: 8.5. Third night: 8. I see the pattern. It stops now.)

Tuesday

Unbelievable amount of learning happening today. I’m starting to connect the dots, and know why I need to make a change. Even when I make a mistake I understand what the mistake was after it’s pointed out to me. I still make mistakes nearly all the time; but I also do some really cool things, like find a method the instructor didn’t know about, and try to figure out how to make it work; or set up new functionality to make things more efficient — and it works!

I’m a little bit on overdrive and finding it hard to sleep, but it’s good — it reminds me that it’s still possible for me to feel alive when contemplating work tasks, and to concentrate hard on something for several days at a time. I spend most of my regular workdays so interrupted by multiple tasks that I feel like I never get anything done. This is a refreshing change. At 10pm tonight when I still wasn’t physically or mentally tired, I realized that this is something that’s been missing from my life for a while.

I’m going to sleep now so that I can function tomorrow morning. I want to hit the ground running — again.

I am in nerd heaven. I think I may have tapped into something really important for me — other nerds.

Wednesday

Today was the first day I felt tired, and I struggled to keep up. We were on a rushed pace to try to make up some time, since we’d fallen behind by about one lecture. By day’s end, we were caught up — but that meant about an extra 2 hours of time. Lectures ended at 8:15 and I wasn’t caught up until 10:30. Lots of other people were there too, and we were kicked out of the learning room around 10:40 (after a few well-deserved games of Typeracer).

There was one point in the afternoon when we were implementing an involved piece of code that only worked on a single image thumbnail and only on the iPad, and I just realized that if I spent time to understand what I was doing I would never get to the *really* cool stuff — Core Data and touch gestures — so I just started typing. Type type type. I implemented the thing, realized I might need to look back at this someday, and moved on.

At points during the day I could hear the instructor talking but couldn’t focus. Maybe it was just an off day for me; but I think my head is so chock full of new iPhone programming knowledge that it needed a bit of time to process it all.

I’m going to bed now to give myself the best chance of recovering and hitting the ground strong tomorrow. I’m still keeping up with the class, but I don’t feel the sense of mastery that I felt yesterday (and yes, I realize that mastery is a good way away — but I was putting all the pieces together yesterday).

Thursday

Back on track today. We went at a slower pace, I absorbed nearly everything we covered, and I was able to implement some pretty cool apps, especially one that allows drawing. I now have the skeleton of something I actually want to implement when I get home. Exciting!

Class was fun but I can feel the pace winding down. I’ll miss my fellow classmates but have enjoyed the opportunity to spend a week with other nerds doing one of my favorite things on Earth — learning.

I’d love to be back for the advanced course in November, but we’ll see how the year goes. Will I use these skills in the next six months to build apps? Will I push through the frustration when I can’t make something work, and figure out how to persevere, work through the syntax and search the documentation (and Stack Overflow) to find solutions?

We’ll see. More tomorrow — and the next day, I hope.

I’m ready to go home but also not ready. I did better in this class than I expected when I walked in the door. I want to put my new skills to good use and produce apps that are productive for users and for me.

I’m a Big Nerd.

Friday

Back home. We had class until 12:30, then lunch and then quickly piled into the shuttle back to the airport. I spent a few hours waiting for my flight there and then got home around 9:30.

I expected to feel mentally drained and tired, but I feel mentally turned on instead. This is awesome. It says to me that I did the right thing, and I love feeling this way. I’m going to keep working on the programming at home, and see what I can struggle through and make in terms of apps. I feel like the BNR class gave me the tools I need to keep learning on my own, and to work out problems when I run into them, because I’m starting to understand the underlying patterns and logic of programming.

Starting to understand. That’s key. There’s a lot more work to do — but I think I’ve got a running start. Now I just need to keep going.

Day 22: Concentration and Its Discontents

I take work less seriously when staying with family.

This is an inconvenient truth, because I love spending time with my family and intend to do so again.

But this week, given all the time I needed, I accomplished fewer goals. I appeared to be working intensely for 12 hours a day, since I toted my computer around the house, hoping to be productive.

In reality? I worked for about 4 or 5 hours each day.

Here are the major goals I accomplished:

  • I read 275 (not 200) pages of the NASM textbook.
  • I worked on my flashcard app, making useful additions and cleaning up the user interface.

Here are the major goals I did not accomplish:

  • I did not do any work to build out my flashcard app’s back-end question database.
  • I did not read any of the Swift programming guide.

I made myself feel better about this by procrastinating productively:

I realized, somewhere between surfing Hacker News and watching House of Cards, that when I pay rent like I did last week, stakes are higher and my productivity is correspondingly higher. When I’m with relatives, not paying rent, stakes are lower and my productivity drops.

Like I said, I’ll keep spending time with family because I love them. But I need a plan to establish momentum for future visits. So here it is:

1.) Wake up. Open Xcode. Every day. (Virtual guarantee of a productive day.)
2.) Work in the office room, not on the couch.

It’s not a complicated plan. I start tomorrow.

Major goals for this coming week are:

1.) Build out my flashcard app’s back-end question database and finish the user interface.
2.) Finish last 75 pages of the NASM textbook.
3.) Read 200 pages of the Swift programming guide.

* I activated my Facebook account in March. I came late to social media and am trying to figure it out as I go.