blog


Songpen 3.0.0

June 25, 2015, at 07:21:58 PM

It has been nearly two years, but Songpen has finally been updated. A lot of bugs have been squashed and the app is more stable than ever. Some users reported some scrolling issues. Those should all be resolved now. I have also fixed a bug with the Flickr API code. If you were having problems pulling up images in the Inspiration screen, give it another shot.

Also added are some great new sharing features. Songpen now supports all of the sharing options that iOS can support. You can post your lyrics to any social media that allows you (Facebook, Twitter, etc). You can also send your recordings to Dropbox or Google Drive for safekeeping or easy downloading. My personal favorite is to make sure I archive all of my songs to Evernote so I can access them from a web browser if needed.

I hope you enjoy the app and find it better than ever. My own band, Scenery has been recording again and all of my song writing has been done in Songpen. I'm hooked!

Here is the link:


Songpen



-Troy (@troyharris)

Posted in: mobile apps  mobile apps  mobile apps  mobile apps  / Bookmark the article

Songpen. A Songwriting App for iOS 7.

October 02, 2013, at 12:33:28 PM

Songsmith has a new name and a new look.

I'm happy to introduce Songpen. Don't worry, if you already have Songsmith, it is a free upgrade.

Songpen offers a few great new features. It is now a universal app; it can be used on iPad, iPhone or iPod Touch. It is also designed exclusively for iOS 7. Content fills the entire screen and elements have a sense of depth.

One of the big features users have asked for is a way to access their recordings. You can now download your audio files onto your computer using the app file sharing option in iTunes.

I hope you like it. Give me a shout-out on Twitter and let me know your thoughts: @troyharris

Here is the direct link:

Songpen



Posted in: mobile apps  / Bookmark the article

Horder: Word Building Meets Gravity

September 26, 2013, at 08:38:41 AM

I'm happy to introduce the second app from Lone Yeti: Horder.

Horder is a word finding game with a twist. Letters fall from the sky and you must construct words before time runs out or the letters reach the top. Realistic physics and motion allow you to tilt your device to rearrange stacks of letters or influence where the next letter will fall.

Horder is a rogue-like game, meaning that if you fail on a level you have to start from the beginning. Games are quick and addictive. There are sixteen levels. Gamers can compete against each other's high scores via Game Center.

Since I've been turning this blog into more of a technical blog lately, let me get under the hood.

Horder is a Sprite Kit game. Sprite Kit is awesome. I know there is a bit of the Cocoa2D vs Sprite Kit debate out there and I have no insight into that; I have never used Cocoa2D. I can say that Sprite Kit is pretty great but it also has a lot of room to grow. 

Apple was always known for their intuitive interfaces and "it just works". In that regard, Sprite Kit is classic Apple. It is deceptively simple--almost too simple in places--yet, "it just works". I can't wait to see what Apple has in store for it. I may do a longer post about Sprite Kit in the future.

Anyway, if you have an iPad and iOS 7, give Horder a look:

http://horder.mobi

App Store

Posted in: mobile apps  / Bookmark the article

Introducing iosstyle.us

September 04, 2013, at 10:10:13 AM

A handful of days ago, I wrote about an Objective-C style guide project I've started, specifically for iOS developers. I have decided to give the project its own home on the web. You can find it at: http://iosstyle.us. This is hosted by GitHub Pages and is compiled with Jekyll. Any pull requests on the original GitHub project will get pushed to the website.

Take a look and submit a pull request if you'd like to add or change something.

Posted in: programming  / Bookmark the article

The Complete iOS Developer's Style Guide

August 27, 2013, at 10:44:17 AM

The title is a lie. It is not nearly complete. The goal is to make it complete.

Okay, let me start from scratch.

I have started an Objective-C style guide specifically for iOS developers. There are a few out there, such as The NYTimes Objective-C Style Guide. The goal of this style guide is to really be a community style guide rather than one that follows the convictions of one person or organization. I'm asking for other developers to get involved and make some pull requests. Add some missing sections or correct things that I have added. The determining factor for how code should be written and organized should come from either Apple or a consensus in the community.

Eventually, as the guide becomes more complete, we can think about changing formats or hosting it in a different way. Its all up to the community.

So take a look, fork it, make some changes, etc. I look forward to what we can come up with.

The Complete iOS Developer's Style Guide (github.com)

Posted in: programming  / Bookmark the article

Things That Irk Me in Software Engineer Job Postings

July 24, 2013, at 10:32:49 AM

I'm not currently looking for a new job, but I do run across many postings through recruiters and on various blogs and aggregators such as Hacker News. Here are things that would turn me off from wanting to apply.

Use of the Word "Hacker"

I hate that word. It implies you're looking for a kid and not an adult who wants a serious career in software development. It's a desperate way of saying, "Hey look, we're hip!" While you're at it, search for "geek" and "nerd" and replace those as well.

Familiar/Cute Talk

Don't tell a cute story or make jokes or try to be amusing. When someone applies for a job they are making a huge, life-changing decision. They don't want a clever essay about the founder's life philosophy or random facts about polar bears. Explain the job and the requirements. When you write something that looks like a bad Lena Dunham blog post, you're giving the impression that your company doesn't take itself seriously. 

Casual Workplace Bragging

It appears we are in an arms race for the most casual office. "Come to work in your pajamas!" "Bring your dog!" "Drink free beer!" 

Hey, I like good perks and a casual environment as much as the next person. I love wearing t-shirts to work. Things have gone too far, though. I'd rather hear about how you're going to provide me a comfortable workspace and the equipment and software I need to do my job. I want to hear about how supportive management is. I want to hear you brag about your efficient project management procedures. 

Things you can talk about are other perks like public transportation passes, free lunches, vacation days, etc. 

These three things are basically summed up as: act professional. I don't know of any of my friends who would consider staking their professional life on a company who appears to not take itself or its employees seriously. In the reverse, ask yourself this: Do you really want to hire an employee who calls themselves a hacker geek, gets excited about pajama time, drinks on the job and spends half the day playing with the office dogs?

Posted in: programming  programming  programming  / Bookmark the article

Introducing THGridMenu

May 20, 2013, at 03:02:00 PM

I'm working on a new iOS project. This is the first project where I am saving myself some time and energy by implementing some cocoapods (http://cocoapods.org) for custom iOS controls.

I figured it's only fair to give back to the community. In my project, I needed a grid type menu (think of the album selection on the iPad music app) but with items that expanded depending on device rotation. I wrote a little something called THGridMenu and you can check it out on the project's GitHub page.

It's just a small thing but it turned out useful for me. It was fun to go through the process of creating a podspec. My next goal is to go through Songsmith and see if there are any of my custom classes that others might find useful.

Posted in: programming  / Bookmark the article

Electronic Musicians: Promote Your Town

April 11, 2013, at 03:22:02 PM

Electronic music is a unique genre. An artist like Burial can sit in his house, fiddle with Sound Forge, create a masterpiece of emotion and nuance, and release it out to the world without ever showing his face. I doubt he’s rich off of his music, but if you know electronic music you’ve heard of Burial.

Recording and composing have become dirt cheap. Money and resources are not part of the equation anymore; one only needs talent.

It comes as no surprise that electronic artists have global aspirations; the goal is distant but not unachievable. In reality, though, most artists’ work will never see the outside of their Facebook and Twitter circles. They forget one rule. It’s a rule any rock, punk or country band knows by heart: Conquer your own town first.

Selfless Promotion

I read a blog article recently by Marcus Taylor from The Musician’s Guide on Music Clout the other day--Why it Pays to Replace Self-Promotion with Selflessness. He touts the advantages of becoming genuine and gaining credibility by talking about other artists you love. This is great advice.

The key here is that you are being selfless. That means that you are not expecting anything in return. You’re talking about things you love because you really love them. You are building up a tangible social karma by being positive and encouraging.

Think about the town or city you live in; there are probably things you love about it and things you hate. Think about the things you love: that coffee shop you go to several times a week, that bar that knows your favorite drink, your favorite music venue, the best falafel place in town. Think about your favorite local blog, the black and white ‘zine you always read, and local band you love seeing live.

Talk about these places. Mention them on Twitter, link to them from your Facebook Page, write a blog post about one of them. It literally costs you nothing to do this. The time it takes is measured in seconds or minutes. The people you are promoting will love you and the people that follow you will respect you.

Your Town is Looking for You

Go to Soundcloud and type in a genre name. You’ll receive countless hits (Really, countless. Soundcloud stops counting at 500+). Now type in a genre name and the town you live in: much more manageable. There is simply too much music being made for a no-name act to have a chance at being noticed on a global scale.

People want to know you. They want local artists to make it big so they can say they knew them when they were small. Here in Phoenix, nearly everyone I know that has been here for years has a Jimmy Eat World story. They’ll tell you about seeing them play in a cramped storage unit or Modified Arts. Your own town is rooting for you to succeed. They just need to know about you.

Promote your town: events that you’re going to, businesses that you frequent and bands you love. Tell people about the little record shop where you buy your vinyl or the local soap that you buy. Get involved with groups and attend community meetings. Go to music shows and art openings.

The Best Validation

One time, a Mexican blog wrote a little review of Scenery’s music that I had to use Google to translate. I thought that was pretty cool because I have no idea how they found us. I still have one memory that won’t be topped, though.

I was sitting in a restaurant in the small Arizona town I grew up in. It was 2005. I was in a band that had just released an album on CD. A young woman came up to me and asked if I was in The Green Revolution. Yup, I was. She told me that the last track on the album meant so much to her and had gotten her through a hard time. This wasn’t a nameless person a thousand miles away. This wasn’t another play count on Myspace (2005, remember). This wasn’t a blog post from a stranger in a different country. This was a flesh and blood person from my hometown that was affected by my music.

Winning over your town is the best validation. Hearing your song come on at your favorite coffee shop or having a local blog interview you is what makes it worth it. Win over your town by promoting it. Be positive and helpful. Social karma always finds a way to repay. 

Posted in: music  / Bookmark the article

The Three Act Myth: Your Novel is Not a Movie

April 10, 2013, at 04:28:37 PM

Read any book about how to write a novel and you’ll probably be admonished to divide your plot into three acts.

Taken in the most basic form, this isn’t bad advice. Your story will probably have a beginning, a middle and an end. It’s not very helpful advice, though, to tell someone to start a story, have things happen and then end a story. No, these how-to books break down exactly how these three acts should go. You should have a major plot point at the end of act one that thrusts your hero into her journey. You need to have rising action through act two and bring the hero as far away from the beginning of the story as you can. You need to end act two on a major, major, plot point and propel the story to act three and the climax. Quickly ease the story out with the denouement and the end. Sounds like a good action movie, right?

Where do the three acts come from? Drama, originally, and now movies. Screenwriters learn the three acts like the Israelites learned the Ten Commandments. I’m not a screenwriter, but I guess it works for them. A movie holds an audience captive for two hours with no breaks. It needs to get to the point quickly and cut out any fluff.

Novels are not movies. The length of a typical novel is more akin to one season on a television show--Game of Thrones is a good example of this. There is more subtly to a novel, more natural storytelling. A novel shows us the lives of characters for a certain amount of time. Sure, plot and story are important but the longer arch gives you more options than the screenwriter has.

We’ll look at a few example novels and see how they fit in with the three act structure.

On the Road

I’ve seen a few people try to pigeon-hole this into a three act structure, but it’s really grasping at straws. This book tells us of three road trips, and some divide it along those lines. That doesn’t really work dramatically, though.

Maybe the first act is really short and is just the introductions and exposition in the beginning, the second act is the first two road trips and the last act is the Mexico trip. That’s better. Really, though, you can split any book up any number of ways you see fit. We could make this a four act or a five act book if we thought hard enough about it.

On the Road is a great book with no acts, just events that happen and characters that change. The recent movie adaptation of this book wasn’t very good because the director and screenwriters were too faithful to the book’s structure. Two hours isn’t long enough to tell a story like this and still ramp up our emotional investment.

A Farewell to Arms

This is a classic three act book, except then there’s a fourth act.

The first act is the introductions, the flirtation of Fred and Catherine, and Fred’s injury. The second act is his recovery, the romance, his being sent back to the front and defection. The third act is his reunion with Catherine and escape to Switzerland where they live happily ever after. Except… Act four.

The final part of Hemingway’s book is poetic, sad and masterful. It does not fit into a three act structure.

I recently watched the 1932 film adaptation and the fourth act is mostly cut and tacked on to the end of the third act. Hollywood needed a more defined three act structure for the movie.

A Catcher in the Rye

I suppose you could try to divide this into three acts. The school would be act one and act two would go up to the meeting of his sister. Do you think Salinger was thinking about three acts when he wrote this book? I doubt it. The story structure is almost like The Odyssey. Holden goes from one situation to the next, getting more depressed after each. Could you imagine how awful a movie version of this book would be? There’s no structure and no resolution.

Just Tell a Story

Setup, conflict, resolution, repeat: That is all you need. Create your characters and tell their story. Start it at a good point and end it at a good point. Have something unique to say. Write good prose.

Stop thinking about how movies tell their stories. You have an older and more powerful platform: use it.

Posted in: writing  / Bookmark the article

Humdrum by Scenery

March 28, 2013, at 04:24:26 PM

Hello all!

I'm going to start using this blog more. I really am! I've been doing a lot of writing so I will probably be doing a few posts on the finer points I've learned. 

In the meantime, I noticed that I haven't posted about my band's new album, Humdrum.

I'm in an electronic music group named Scenery. We have been around since 2009 and this is our fourth album. You can listen and download here. It was released in the In Rainbows model of "name your own price" (including free).

Scenery is an interesting group because all of the members are full-fledged producers in their own right. We have a system: every song is owned by one person. All of the members contribute what they can to the songs but the owner has the final say in the end result. This makes our music eclectic and diverse. Aron loves post-rock and shoegaze music and that shines through in his song, Godish. Zach loves clean production and mellow, melodic music; Mirage is his baby. Seth loves big beats and epic sounds; opener, Years of Gold, was obviously his project.

The result we shoot for are albums that are assembled a bit like Abbey Road. Different genres and sounds are stitched together into something that is cohesive--we hope, at least.

For Humdrum, we came up with a concept of songs about memories, nostalgia and dreams. A small manifesto was written at the beginning of the writing and recording process with creeds such as: "Don't be afraid to get personal" and "Let the music breath; space is OK". I think it is the best thing we have done. I hope you agree. Below is links to all of the websites and social media Scenery is involved with.

Scenery's Website
Bandcamp
Facebook
Twitter
Soundcloud

Posted in: music  / Bookmark the article

iTunes Match: Why Does Apple Hate Its Own Product?

October 03, 2012, at 10:51:27 AM

I took a business/personal trip to Flagstaff and the Grand Canyon last weekend. This was my first out of town trip with iOS 6. Maps was pretty awful on the trip. Most of the restaurants we wanted to try had inaccurate locations marked which caused a lot of confused walking. Also the recommended route to the Grand Canyon kept changing even though we stayed on the initial recommended route.

But the failure of Maps has been well documented so I won't pile on anymore. I'm actually not concerned about it. The UI is great, it looks beautiful and I think once the data is accurate it will be a big improvement. 

The big failure of iOS 6 was the new music app. Specifically, iTunes Match.

iTunes Match: The Early Days

I was on the ground floor of Match. I joined the initial beta offered to developers. Apple was very generous with the word "beta"; it was more like an alpha release. We were warned several times to back up our iTunes Library and they weren't joking. I restored from backup several times. The iOS portion of it rarely worked for me. Each beta release of iOS 5 and iTunes made it a little better, but you could barely call the service usable. When it was finally released (missing its initial "October" promise) in mid-November, customers were met with all of the bugs the beta group had been fighting with as well as overloaded servers. iTunes Match got a bad reputation right from the starting gate.

I stubbornly stayed with it. The upside was just too good. I switch between three computers (one Windows, two Macs), an iPad, an iPhone and an Apple TV. All of my music available on any device to download? My old early 2000s albums I had stupidly ripped at 128k now in high quality? The option to store less music on my phone and download music where ever I was at? Apple will get it right eventually, I thought.

The Golden Era

Apple did get it right. Sure, there were some bugs. My Windows computer had issues connecting to the service sometimes. All of my computers made me go into the App Store to sign out and back in on an annoyingly frequent basis. I'd have occasional streaming problems on the Apple TV. Verizon 3G never seemed up to the task of streaming songs in real time to my iPhone. You couldn't load music directly from your computer onto your phone if you were using Match.

I had gotten used to the nuances and the pros outweighed the cons. Sometime around the beginning of 2012, Match had gotten rock solid on iOS 5.1 (besides the streaming issue mentioned above, but I figure that was more of a carrier thing). My only complaint was that to switch between seeing only music on the phone to seeing the entire Match library required drilling down in settings. An annoyance but no biggie. 

iOS 6

My test for iTunes Match on my mobile devices is always how it functions when going out of town. Pre iOS 6, it had been wonderful. I'd load up some music I want to listen to on my phone before I leave and if I got the urge to hear something I forgot to put on my phone I could always download it via wi-fi or 3G. I started telling everyone who would listen that they must use Match. 

I skipped any iOS 6 beta testing. I was too wrapped up in developing Songsmith. I didn't really pay attention to any iTunes Match related things with people running the iOS 6 beta. I should have. Imagine my surprise when I learned the following things before and during my trip:
  • No more cloud icons to show which songs are already on your device and which need to be downloaded. That is weird. Wait that means...
  • Yup. You can't download individual songs anymore. Only whole albums or playlists. It gets worse...
  • You can no longer delete songs off of your phone! (iOS 6 will automatically delete songs from your device using some unknown algorithm)
  • Actually you can delete songs off your phone, but you have to turn off iTunes Match, delete the songs and turn it back on. A major pain.
I have no idea what Apple was hoping to accomplish with this update, but it completely wrecks using iTunes Match with iOS. I've seen workarounds like "create single song playlists", the above deleting fix, etc. All jury rigged solutions. I just don't understand what Apple is thinking. They are only taxing their servers more by forcing people to download entire albums and pushing streaming rather than downloading. Maybe they are out-thinking themselves by managing our storage space for us and deciding what music can be removed from the device and what should stay.

"One More Thing..."

Think about this: iTunes Match was the final thing Steve Job's introduced. It was his "one more thing..." on his final keynote. It was an amazing idea and something many people had been waiting for. It seems like a simple task. Every piece of music I own available on any device I own if I have an Internet connection, otherwise local copies of music I've downloaded to that device. Apple, stop hating your own product. Fix it. Make it work. 

Posted in: random babbling  / Bookmark the article

iOS Programmers: Don't Use Core Data over iCloud

September 27, 2012, at 09:17:34 AM

A few people have e-mailed me and friends have asked when they will get an iPad version of Songsmith. My standard response has been, "I'm going to roll out iCloud support and universal app at the same time". 

Songsmith was written as a SQLite app so the first change in my 2.0 branch was to change the back end to Core Data and write the code to move any existing user data from SQLite to Core Data. This part went well and I did enough testing to feel confident that my code was sound. Next up, iCloud support. This is where things started to break down.

Turning off iCloud on a device for a short amount of time and turning it back on created havoc. Data was just lost. Devices would completely stop syncing. An article on Drew McCormack's website best described what was happening. It was also my first red flag.

I did something I hate doing; I started scouring the Apple Developer forums (The Mos Eisley of developer forums). Things did not look rosy. There were a lot of questions but very few answers. I was on the verge of scrapping iCloud completely. I decided to ask reddit. I listed four points of contention:

  • Core Data over iCloud works fine in an optimal situation but things like turning iCloud off and on, a device that stops syncing for a while, uninstalling and reinstalling the app, having the user delete app data can all really muck things up and cause data loss or errors while syncing. There does not seem to be a great solution for some of these issues

  • Its nearly impossible to foresee and plan for everything a user might do that could corrupt his/her database or break future syncs. At some point data loss is likely for at least a very small percentage of users

  • iCloud takes a lot of time to code and especially test. That time could be better spent adding other features to the app or making new apps (I'm not as concerned about this, I've just seen it come up multiple times)

  • Finally: Core Data over iCloud is just not ready for production yet and should be avoided


The responses were unanimous: Yup. Don't use it.

Hope is not lost, though. Document sharing over iCloud seems to be pretty stable. No transaction logs that only get sent once, no needing to wipe out local copies of files. Ray Wenderlich has written an awesome tutorial on setting it up. I am currently testing a new solution that stores data in XML plist files that use UIDocument to sync to the cloud. My test app is running great, although the performance hit of using text files is noticeable. I'm creating a small API to make using plist files over iCloud a breeze. I'll stick it on github when its good enough for an alpha release.

Also, iOS 6 is supposedly much better with Core Data over iCloud. I cannot speak to this as I did all of my testing on 5.1. As someone pointed out in the reddit thread, its a moot point because we have to support iOS 5 in the foreseeable future.

tl;dr: Don't use Core Data over iCloud. Use UIDocument over iCloud or offer your own client/server solution for multi-device data sharing. 

-troy

Posted in: programming  / Bookmark the article

Music to Code to Part III

September 25, 2012, at 01:00:29 PM

On my old tumblr blog I did a couple of "Music to Code to" posts. These were usually nine or ten tracks that I currently had in my programming playlist. Most  —  not all  — were instrumental.

If you're looking for the older versions: Part I, Part II

  • Tiny Tortures - Flying Lotus
  • Familiar - Nils Frahm
  • Disco from a Space Show - Guitar Red
  • Raven - Actress
  • Creeps Crouchin' - Blockhead
  • Ashtray Wasp - Burial
  • Maze - Actress
  • Wouh (Original Mix) - Nicolas Jaar
  • Excerpts from Autumn - Jeff Phelps
  • Break Yr Heart - oOoOO

Posted in: music to code to  / Bookmark the article

Songsmith

August 08, 2012, at 01:50:30 PM

Lone Yeti's first app has been poked, prodded and ultimately approved by Apple. It is now available on the app store.

I present to you- Songsmith!

Songsmith is a songwriting journal for iPhone. It allows you to quickly enter lyrics and ideas as you think of them and then use those to create full fledged songs. Each song allows you to enter lyrics, chords, ideas, key, tempo, time signature and even record audio to link to the song. 

I am in a band that takes part in the RPM Challenge every year (in which participants attempt to write and record an entire album in a month). I used an early version of Songsmith to write every song for our 2012 album and it was an invaluable tool.

My favorite feature is probably its simplest. Using the inspiration feature, you can get a random tip, saying and image off of flickr (or how random is it actually? hmmm). I based this feature off of a private inspiration website I had created for my band and a few friends. It is possible to write entire songs just from the information and picture displayed.

Anyway, I will take off my sales guy hat. Welcome to the Lone Yeti blog. Of course we will be promoting our apps, but I also hope to post a lot of great development and programming stuff in here as well.

-troy

Posted in: mobile apps  / Bookmark the article