iOS Dev Tools

Uncategorized

chef-logo

Developing for iOS, you end up finding some really nice tools to help make your life easier as a developer, and also that make a faster, more efficient developer.  Here’s some tools that I’ve used that have helped me tremendously.

1. Masonry

Masonry is a great tool to use for AutoLayout.  AutoLayout has some pretty frustrating aspects about it.  Masonry helps curb some of these issues.  Check it out here.

2. Cocoapods

If you’re not familiar with cocoapods yet, I pity you.  This is a must use for any iOS developer.  Here’s their description of what they do.

“CocoaPods is the dependency manager for Objective-C projects. It has thousands of libraries and can help you scale your projects elegantly.”

It’s so easy to add libraries with cocoapods.  Definitely a must have.

3. Test Flight

Pushing beta apps to your testers used to be such a pain!  Test Flight makes it so easy you’ll feel like your cheating.  Another must have.  All you need to do is upload your .ipa, which is a no-brainer, and then push it to your testers.  It’s epic!  Check it out for yourself if you haven’t yet.

4. Jenkins

With Jenkins you can run your unit test, archive, and push to Test Flight all with a few keystrokes, if you use the CLI, or with a few clicks of the mouse.

5. Chef

Chef is an automation platform that transforms infrastructure into code.” –

What does this mean?  This means that now you can write in code the set up that you desire of your server, and then create as many servers as you want all with the same set up.  It’s a pretty awesome tool.  What used to take days, can now be done in minutes.

If you use just these four tools, you’ll notice that you save tons of time on things that used to take so much longer.  Less time equals more money, for less work!

Let me know any tools you like to use personally.

There’s some good tools for Mockups in another post I wrote here.

When is the App is Ready?

Uncategorized

When working with clients, and working for yourself, it can be very tough to know when the app is ready to be put on the app store. Why is that? Well as Fueled.com puts it,

“Building an app is a little like raising a child: first you bring it into the world, and then you help it take its first steps, watch as it learns to talk, and revel in parental pride at every little milestone along the way. It’s a great feeling. But then that scary moment arrives when it’s time for them to leave for school.”

And this is where it gets tough. You love the app, but the last thing you want to happen is for the app to go to school, aka the App Store, and fail miserably. So what do you do? Do you wait forever, making sure that every little detail is perfected to the highest levels of awesomeness. That can be easy to do, but often times not the wisest decision. Put simply here’s what you should keep in mind when deciding when the app is ready.

1. A beautiful app is a process. The likelihood of you getting it right the first shot is slim to none. Instead of wasting your time spending hours tweaking every small non-essential detail, why not get a good looking product that functions as it’s supposed, then put it on the app store.  Then you can add features, and enhance it later.  If you do this it will help you too…

2. Test the waters out – See if first of all, anyone even wants an app like this. That’s the greatest advantage of putting the app on the app store early. As you see what people are saying and their view of your app, it will allow you to make tweaks as you go. (Just make sure people know that the initial release is the beta version.)  By doing this you can answer the question…

3. Should I even be doing this? – There is a possibility that the app you’re working on is not really needed, nor wanted. It would be horrible to find that out after 1 1/2 years of working on the app. By following the steps above, you can find this out earlier, and save yourself time and headaches.

Well, I hope this helps some people. Just remember: A beautiful app is a process, test the waters out, and answer the question early, “Should I even be doing this?”

Most of this post came from Fueled.com, which is an awesome Mobile Development company, check out their blog post!

http://fueled.com/blog/how-to-know-when-your-app-is-ready/

Design in Time

Uncategorized

There’s something very interesting about design that’s very unique to software development, and that is its subjectiveness.  The interesting thing about graphics is that beauty is really in the eye of the beholder.  What one person may think is amazing, another may think is okay.

Now there’s nothing wrong with this, but it can become an issue when developing an application.  Why?  Because it’s hard to figure out what is in the mind of your customer, and therefore it is hard to give them just what they want without having to make a million changes during the implementation phase.  Now how can you make sure that the customer gets what they desire, but that you still finish the project in good time.  Let’s look at a few very important things to keep in mind in order to finish your designs in time.

1.  Ask! Ask! Ask! – I’d say that the most important thing to do when trying to come up with the design for a customer’s application is to ask them enough questions to gather a good idea of what they want the application to look like.  When a customer explains an application the first time, very rarely will you have enough to build a mock up.  But you have to remember, often times, a mock up is the first thing that a customer wants to see.  So how can you make sure that you have enough information after the first few conversations, preferably the first.  Ask questions like these?

  • What style best represents this company?
  • What conclusion about your company do you want people to come to after viewing this application/website?
  • What application/website do you feel has the most similar feel to the application that you want built?
  • What do you want the overall feel or atmosphere of your website to be?

2.  Mock it up – The previous step will give you a general idea of where to start. Once you have a starting point, you can actually do a few quick and simple mock ups.  Make them not too specific, and don’t spend too much time on them.  You can do this in black and white.  The purpose of this mock up is just to get the ball rolling.  Chances are the finished product won’t look anything like the initial mock ups, but it will give the client some direction to go in.

3.  Consult with the customer – This step is extremely important.  This is where you speak with the customer, and you really start to get the full idea of what the end product will look like.  The customer will most likely have a million changes that he wants.  It’s very important that you write down each and every change that they want.  Remember though, at this point you haven’t actually started building out the actual UI.  You’re still doing all mock ups using some sort of an illustrator.  Remember, DON’T ACTUALLY START IMPLEMENTATION YET.

4.  Make the changes – Make every single change that the customer asks you for.  Make sure that the mock up is beautiful and looks almost like a finished product.  Now show this to the customer.  If the customer wants changes, make sure you make the changes only to the mock up.  At this point still do not actually start implementing the UI.

5.  Finalize the mock up – Once you’ve got the actual mock up looking just right, ensure that the customer wants no more changes whatsoever.  Make it known to the customer, that this is exactly how the end product will look.  Once the customer has agreed, and he is fully aware that after this there will be absolutely no more changes, start implementing.  It’s important that the customer understands that there are to be no more changes because making changes to UI once you’ve begun implementation is a real drag and slows things down tremendously.

6.  Start implementing – Now that you’re done with the mock up.  Implement the UI.  

That was simple, wasn’t it?  It’s important that you have definite steps with something like UI, because otherwise you will be working on it forever, and both you and the customer are bound to get irritated.  So don’t forget these six simple steps and you’ll have your DESIGN IN TIME.

Get More Work Done When Working Remotely

Uncategorized

When beginning to work remotely, your initial reaction is, “THIS IS GREAT!!!”  You get to work when you want, and when you are working, you’re in a comfortable environment, your home.  But there is quickly one problem that you run into.  How do I make sure that I’m productive?  This can be difficult.  For most likely your entire life, you have gone somewhere to work, and people there push you to make sure that you’re doing your job in a timely manner.  Now all of a sudden, that motivation falls upon you.  So how can you make sure that you get more work done when working remotely?  Here are three things that have helped me to be more productive when working remotely.

1) “The plans of the diligent ones surely lead to success.”

Planning ahead is essential to being successful in getting work done.  When you already have in mind a good idea of what you want to accomplish in the day, you will find that you actually do more, because you’re guided by something.  What I do is I use an app called “Simple Daily ToDo List” created by none other than yours truly (sorry for the self-promotion).  But honestly, the reason why I wrote and use this application is so that I can have a very simple way of writing out what I want to do for the day, and then check off what I accomplish as I finish things.  I would actually recommend you getting it, or another app of your choice of course.

It’s a fact that when we write out what we want to accomplish we actually decrease our stress levels because now we don’t have to juggle a lot of things in our minds, and also, once it’s down in writing, you’re more apt to finish it because you have a plan that you can continually refer to which lessens the chances that you deviate from that plan.  Also, it’s very good to be able to see what you accomplished at the end of the day, which is why the app keeps finished tasks there until the next day.  You feel better about yourself when you can look at list of everything that you did.

todolist

Simple Daily ToDo List

Another app that you may want to check out is “Asana”.  Asana is good because you can write out tasks for an entire project.  Asana coupled with Simple Daily ToDo List will make you more productive instantly.  The great thing about this app is it also has a web interface, so you can use web interface on the desktop and it will sync automatically to your phone.

2) “There is benefit in every kind of hard work, But mere talk leads to want”

One of the most difficult things when working remotely is dealing with the fact that your family wants your attention.  The fact of the matter is though, when you’re at home working, it’s the same as working in an office it’s just that you’re at home.  So everyone in the home must understand that when you are working, unless it’s an absolute emergency, you can’t be bothered.  It’s just like when you’re in an office, if someone needs something, or just wants to talk, they have to call you, and they’re probably not going to do that unless it’s absolutely urgent.  So make that known.  Let everyone know that you’re working, and that means you can’t be bothered for trivialities.  This can be tough though (especially if you have kids), so how can you make it a little easier on yourself.

Close the door when you’re working, and tell people that you’re working so please don’t bother you.  You’ll find that this will help you tremendously in getting work done because we all know that when you’re in the groove, the last thing that you want is to be bothered, because once you’re out the groove, it can take a while to get back into it.  Also, one thing that I do is I put on some noise cancellation headphones, and play some music, typically a Pandora station.  This helps you stay relaxed, and it also helps keep out outside noise which will most likely always be there depending on how many people you have in your home.

3) “Better is a handful of rest than a double handful of hard work”

Make sure that you take some time to rest.  I know that sounds obvious, but you have no idea how hard this is.  Generally you want to just beast through a full day, and you realize at the end that you never took a break.  The fact of the matter is you’ll actually accomplish more if you just get up every few hours and do something.  Doesn’t really matter what it is; just give your mind a rest.  This especially is important when you’re stuck at a problem that you can’t solve.  If you walk away for a few minutes and come back, you’ll notice that you feel so much better, and you’ll probably find a solution to that problem you couldn’t solve.  So remember, rest actually helps you to work better.  Don’t overdue this though.  If you rest too much, you’ll get nothing done, but I don’t think I need to tell you that. So there’s a few tips that I hope will help you out.  If you have any other ideas then comment and let the world know what you do.

3 Tips for Simple, Elegant, iOS Design

Uncategorized

As an iOS Developer, you fully one understand one absolutely essential aspect of marketing.

“The apps that are beautiful…sale!!”

The thing is though, not everyone has a limitless supply of funds to pay designers.  And not everyone knows a designer who if you pay him, will actually deliver a quality product.  So the question is, how do you make sure that you’re design is one that will make the end user go…wow!  I’ve put together three simple tips and principles to think about when designing.  In the future, I’ll add more.  Hopefully this will help you in your endeavor of creating beautiful UIs.  At the end of each tip, I’ll show you an example of what I mean for each tip.

Tip 1 – “Imitation is the greatest form of flattery”

It is a fundamental truth that there are many apps out there that are stunningly gorgeous.  When you are going to create an app, why not look at some designs of others.  Here is what I do.

  1. I do a search on the app store for an app similar to the one that I’m about to make.
  2. Then I look at the first say 20 of them, and I narrow it down to about 3 that I find most beautiful.
  3. Then I just analyze the three apps and try to determine what makes them so elegant.
  4. Then I read the reviews and see what others are saying about them.   (Customers know what they want and they’ll be honest if they want to see something different.)
  5. After all this, I generally have an idea of what I want, and I begin my mock up.

The great thing about this system is that you have an idea of what others have already done that worked and that did not work.  Also, I find it easier to build something after I’ve seen something that I can kind of build off of.  Now this isn’t copying, it’s simply imitating.  Eventually you’ll be happy that others are imitating your app designs.

So let’s see an example.  Look at the Yahoo Weather.  What makes this so nice?

yahooweatherapp

1)      Beautiful background pictures?

2)      Fonts are easy to see on the pictures because they make sure the images they use have dark areas where there is text?

3)      The icons are very consistent, and very simple?

4)      They utilize Flat UI?

5)      The font selections are perfect?

So then you would strive to imitate this screen, of course not an exact replica, but strive to use beautiful background pictures with well-placed fonts with good font selections, and Flat UI.

Tip 2 – “Keep it simple Socrates”

“Wisdom is with the modest one.”  What does that mean?  It means you have to understand your limitations.  If you’re not a graphics designer, don’t try to make some epic design with all kinds of rotating images and parallax scrolling, with particle affects.  All that’s going to happen is you’re going to have a jumbled up bunch of nonsense.  Instead, focus on simplicity.  Instead of having 20 things on the screen that are all kind of just thrown together, have 3 things done beautifully.   A good example of this is an app made by Fueled called Elevatr.  Look at the app screenshots below.

elevatr

Do you notice how simple the first screen shot is?  There’s nothing fancy at all about this.  It’s simply a static picture with some text, but it does its job.  The second screenshot, is extremely elegant but simple, it’s simply just a table with some text.

Look at the 3rd screenshot.  What makes this screen so elegant?  Notice the user of colors makes the app very pleasing to the eye.  The way they have the information compressed in the boxes, and when you want to view all the information you SIMPLY click on the plus sign.

Now what makes all this so nice though, it’s well thought out colors, a well thought out image, and well thought out font selections and locations.  That’s it!!  Nothing fancy!!

Now ask yourself.  Could I do this?

The answer is an emphatic YES!!!

That’s what makes this so awesome.  It’s not overly complicated.   Simplicity is often better then complexity.

Tip 3 – “What we see depends mainly on what we look for.”

If you want to have good designs, it is very important that you keep your eyes open for good designs in everything that you see.   What do I mean by that?  Well, it’s interesting how everything that we see, really has some sort of design, you just need to keep your eye open for it.  For example, when I went to CES in 2014, I was taking pictures of everything from cars to the carpet selection.  Why?  Because hidden there was design.

mustang

Look at this picture of a mustang interior.  Now, this looks like a beautiful interior, right?  Why not use these colors for a color scheme of an app?  Metallic silver, yellow, black, with maybe some ribbons of red and white.  You’d be amazed at how something like that could look!

Do you get the idea?  Use designs that you may have not thought of to give you ideas for an app.

So these are just a few tips that I wanted to share to help people to get some killer designs for their apps.  If anyone has any good links to their own designs, or to some cool tips, just leave a link or something in the comment.  Hope that this helps everyone who reads it.

Atomic vs Nonatomic

Objective-C

It’s funny how often when a person is learning iOS development they simply write atomic or nonatomic for their properties, though having no idea why.  I have to laugh because I myself did the same thing.

But what is nonatomic, and what’s atomic?  What’s their differences?  Here’s a simple explanation.

Atomic and nonatomic have to do with how to handle multithreaded environments.  With”atomic”, the synthesized getter and setter methods will always make sure that you receive a whole value.  So for example, if you’re running a multithreaded application and the getter method is called by multiple threads (which should rarely ever happen), if the property is set to atomic, a whole value will be returned, but this value can either be the last value before the setter was called, or the value that is being set by the setter, and there’s no way to tell.  This is not thread safe because you can’t be sure what value you’re going to receive.

Nonatomic is basically the opposite.  Nonatomic doesn’t care whether or not the setter is being called while another thread is trying to get the value of the property, it simply returns whatever it has, whether the return value will be “whole” or not.  Nonatomic is considerably faster then atomic.

To illustrate, say you have a box that you’re putting car parts into, and a man inside the box, puts the car parts together, and then hands them back to you outside the box when he’s finished.  Now if say this box was atomic, if you put some parts inside the box, but the person inside is not finished putting the parts together, he’ll simply give you back whatever completed part that he has, but it may not be the completed part that you want.  However, if this box was nonatomic, he would return to you whatever he already has inside of the box to you, whether he’s finished putting the pieces together or not.  This would work perfectly for you though, if you were the only one putting in car parts, because you could put in the car parts and wait until he’s finished, before asking for the completed car part. Make sense?

This is why you mainly use “nonatomic” for your properties, because when you’re only using a single thread, the application will not be able to call the getter and the setter method at the same time, therefore, the compiler must wait until the setter has finished setting the property before it can ever call the getter method.

It is of note though that this only applies if you are @synthesizing the method implementations, that is, having the compiler generate the getter and setter methods for you.

In review:

Atomic

  • Always returns a whole value
  • Is not thread safe

Nonatomic

  • Does not always return a whole value
  • Is thread safe
  • Much faster than atomic

If anyone has anything to add, or if I’ve presented this correctly, feel free to leave a comment.