Tuesday, September 22, 2015

Data Modeling and the Specter of Scope Creep

It's time for one of my favorite steps in the design phase: data modeling.  Much like the UI design exercise in my previous post, this process is a way of realizing the requirements and starting to visualize how things will actually work.

We'll also see how easy it is to fall into the trap of scope creep.


Let's start with that data model.

Sunday, September 6, 2015

AWS IAM for Developers

Here's a quick break while I work on the next entry in my app creation series.

The Office of Information Technology at Notre Dame is fully invested in migrating our data center to the cloud using Amazon Web Services.  On Twitter, we call it #NDCloudFirst.  Earlier this summer, we started the Michiana AWS Meetup in conjunction with local AWS consultant shop Trek10.  

Last Thursday, I took the group on a deep dive into AWS' Identity and Access Management.  This talk isn't a guide on writing IAM policies; rather, it illuminates how common scripting and web development tasks are influenced by IAM policies, and what steps developers can take to work with them.  Concepts include:
  • handling multi-factor authentication requirements using Simple Token Service (CLI and Ruby)
  • passing roles to EC2 instances
  • assuming roles (CLI/Ruby) -- how and why
  • role trust relationships
  • s3 bucket policies (restricting a bucket to a role)
Slides are here.  It took me a while to understand the many nuances of these concepts, so hopefully the ideas are clear.
Have questions?  I'd love to talk Cloud Ops with you!  Just tweet @BrandonRich anytime.

Sunday, August 30, 2015

Drawing Inspiration

Today I pulled out a blank sheet of paper and a pencil and started designing a user experience.  Some people might say I'm putting the cart before the horse here, thinking about UI and process flow before I've created a data model or class diagrams.  To those naysayers, I say: nay!  How do you like that?!  

This process is not only an extremely useful lead-in to those other design exercises, but it's also a perfect opportunity to refine our requirements.  Plus, sitting down and imagining what users will actually see (and touch) when they use the app is a great way to get motivated. 

So let's look at what I've got here.


Thursday, August 27, 2015

The Name Game

Naming stuff is hard.  If you're like me, you can't start an RPG until you've stared at the "name" input on the character creator for at least an hour.  We've got to call this app something.  I managed to name two actual humans, so how bad can this be?  



Today, we're going to talk naming strategies and App Store Optimization -- how to tailor your name to get the most out of App Store search results.


Monday, August 24, 2015

Whatever Scopes Your Boat

Before you can build something, you have to know what you're going to build.  This is obvious and hardly bears saying out loud, but it doesn't mean I've never fired up an editor and started coding with only the vaguest semblance of a plan.

For this app, and specially for this blog, I want to be a lot more deliberate.  We're going to follow the software development life cycle, and that means defining our scope by doing some requirements gathering.

These boats appear to be floating.  And come to think of it, probably are.


Saturday, August 22, 2015

Inception

I'm going to build an app.  Specifically, an iOS app.  This process will be my way of reacquainting myself with iOS programming and learning Swift, setting me up to teach mobile development for Notre Dame this spring.  So I'm going to build an app, and if you want, you can follow me as I go.

If I look half as cool as this kid by the time I'm done, I've won

I've spent the last four years teaching Android; iPhone development has been an afterthought.  At some point I dabbled in Objective-C and even published to the App Store, but still, it's been a while since I worked with iOS.  Since then, Apple has released three major versions of their operating system, introduced heterogeneous screen sizes, and created an entirely new programming language for developers to use.  I guess there's a watch now, too.  

I'm going to have to speak at least somewhat convincingly about iPhone development in four months.  It's time to get back in the game and get ready to teach.  So how do I decide what to build?