5 Best Practices Beginner Mobile Game Developers Must Know

Entire Post Here

Introduction

For those who don’t know what Cocos2D is, it is the most popular game engine on iOS and was around before Sprite Kit (the official Apple Framework), and Sprite Kit also takes a lot of ideas from Cocos2D. What is great about Cocos2D is that it is open source, and with company called Portable it is also possible to write the game on iOS and then port it to Android.

A couple of great games were also have been made by Cocos2D, a great example being Badland, which won Apple’s design prize for games. It is definitely a very popular and well-maintained game engine.

Another tool that we’re using a lot is SpriteBuilder. If you used Unity before, it is very similar to Unity but it’s for 2D games where it allows you to create great game content, to create levels, and to do all that visually without writing code for the game content part. This means when you’re building games with SpriteBuilder or Cocos2D, you’ll get a nice separation between your content (e.g. levels, menus, etc.) and your core game mechanics.

Not all of the points here are iOS-specific, but one thing you should have realized when you started game development is that it’s pretty platform-agnostic. A lot of content also apply to PC games and web games.

#1 Don’t make assumptions about the screen size

When starting out with game development, a lot of people will use constants for the screen work. In the past, the only resolution for any screen size we had was 480 x 320 on the iPhone 4. That means people could make assumptions about the size of the screen, and you could code in constants and use them to position things on the screen.

After the iPhone 5 came out with a different screen size, all of these inexperienced developers’ games needed an entire redesign for the new screen sizes.

So, now with the current state of the platform, even for iOS where we don’t have that many different devices, we have enough different devices that you definitely can’t make assumptions about how big the screen size is. We should always place things relative to the screen size and not make hard code assumptions about the screen size.

let screenWidth = 320 
myButton.x = screenWidth - 50

We have constants for the screen width, and you calculate the position for an object on the screen based on that…this is usually a very bad practice. Instead, you have to think about what width to write while you basically correspond to the screen size like this:

// cocos2D example 
myButton.x = self.contentSize.width - 50

In Cocos2D, for example, that would be the content size property on the scene. So each scene has a content size property, and if you, for example, have a full scene and that content size property will be the full screen size.

But it’s also possible to have your scene smaller than the full screen. Either way, if you press the button relative to that scene, then you should calculate the position based on the content size.

That’s just a very simple example where you shouldn’t use constants for width and height. Calculate the things based on scenes or whatever is relevant to your specific example.

This is really important to keep in mind. That would save you a lot of time from redesigning your game for every different devices type (e.g. iPad, iphone6, iphone5, etc). The good news is that SpriteBuilder and Cocos2D have some good support for such relative layouts. This makes things pretty easy once you start thinking about how to implement a flexible design.

Beyond that very basic rule, there is another thing to think about and that’s basically I would like to divide the things I show on the screen into two categories. One for UI components, such as buttons or the HUD (Heads-up-Display) that shows current points in the game, and the other one for actual gameplay.

Entire Post Here

The Future of Work

Are You Ready for the Future of Work_.png

Full article here

The future of work is one of the hottest topics on the Internet. From McKinsey to Forbes, everyone has an opinion on the future of work and what it means for the working population. Before we delve deeply into the future of work, though, let’s talk about what it is.

Is the future of work the rise of freelancing and the gig economy or, as what McKinsey suggests, where technologies like automation, robotics, and artificial intelligence are shaping how we work, where we work, and the skills we need to work?

If you answered both, you’re right! The future of work, its implications for the gig economy, and its potential impact on software development are big. Whether you’re a developer or an employer, you should be interested in what the gig economy and technologies like artificial intelligence as the future of work might mean for you.

As an employer, are you ready to embrace the future or work — if not, how should you prepare? As a developer, how can you be competitive in the gig economy? Whether you believe the future of work is coming, already here, or just hype, read on to see what you should do to be able to capitalize on it.

Full article here

iOS App Development with Swift - Summary

Open_source_Swift.jpeg

Full article here

Wouldn't it be a privilege to get your app found on iOS App Store? The store puts your creativity at display in front of over 1 billion iOS users worldwide. So the moment you are there, your business prospects get multiplied manifolds. However, it takes real hard-time to create app that can outpace the competition of 2.2 million apps. Indeed, you have to be at your best while pursuing iOS app development. Here is a guide for aspirants as how to get started with.

Create Your Apple ID (If you don’t have any)

  1. Open “iTunes.” Make sure that you have the latest version.
  2. Navigate to the top of the iTunes window, choose “Account > Sign In”. Then click “Create New Apple ID”.
  3. Read and accept the “Terms and Conditions” and “Apple Privacy Policy.”
  4. Complete the form to create your new Apple ID. The email address that you use becomes your new Apple ID. To make account recovery easier in future, it asks about security questions and optional rescue email ID.
  5. Fill the form, click “Continue.”
  6. Enter your credit card and billing information, then click “Continue.” The entered information can be removed or updated later.
  7. Check verification email received, and click on the link therein.
  8. Your Apple ID is ready.

B. Set up Xcode

Full article here

Mistakes I used to do as a iOS programmer

StockSnap_RV67YHDRI8.jpg

Read the entire article here

I've worked 3 years within the Sustained Engineering Team at Fiserv, a mobile banking company based in New Zealand. Even with 4 years of experience under my belt, I was amazed about the things I actually didn't know and over the time I realized there were a lot of small things I was doing totally wrong.


What I'm about to write is not the holy truth and I might not cover everything but I hope by sharing my amusing own experience, you'll avoid my mistakes.

Getting comfortable

I worked on a Stat tracking app on iPad, called StatEdge. The whole idea of the app was to track numbers, save it locally and being able to synchronize with a distant database.
Because in the past I wasn't used to work with CoreData but a sqlite3 database, I decided to stick to it ; needless to say it was a pure nightmare. The client needs changed every day and so was the database structure. At that time, Parse was still recent, and I never heard of Couchbase and other NoSql solutions yet.

Read the entire article here

Understanding Async Programming with Starbucks

Helpful post to get a better understanding of Asynchronous programming.

Full article is here

coffee.jpg

've worked and trained with many developers over the years, and I found that many people struggle to get their head around asynchronous programming. Asynchronous structures like Futures, Promises and Blocks are literally everywhere now. Yet, they're still difficult to understand, so I thought I can help you wrap your head around it with some help from Starbucks. That said, grab your Pumpkin Spice Latte and get ready for a Caffeine-fueled adventure through the world of Async programming ☺

Pre-Starbucks - The Synchronous Model

Let's take a moment to picture yourself in line at your favorite coffee store, where they can process only one transaction at the time. You get to the counter, what happens next?

  • You put in an order for a quadruple espresso (it's going to be a long day ahead)
  • You pay the extortionate price (when did coffee get so expensive?!)
  • You stand still...
  • While you stand your server goes and crushes some beans;
  • You stand still...
  • The barista turns some handle's, bangs a big metal thing loudly, steams, froth;
  • You stand still...
  • Everyone behind you stands still...
  • The barista holds the little paper cup under the coffee machine as it pours your drink in;
  • Everyone behind you waits, checking their phones/watches, wondering who the awkward person ordering a quadruple espresso is;
  • Finally, the barista gives you your coffee;
  • You grab your drink; add any additions of your choice and leave;
  • Now the Server moves on to the next person, who orders a single bottle of water they've been holding the entire time, they pay and leave immediately!

Welcome to the world of synchronous programming! You ask a function to do something and you wait until they've done it. And if someone else wants to do something that could be much quicker, they have to wait!

Read the rest here ...

A Collective Searchable List Of APIs Organized by Topic

See this link for more

Just some examples:

  • BestBuy
  • Amazon
  • Bing
  • Box
  • BrainTree
  • Business.gov
  • Eventful
  • Facebook
  • Flickr
  • Foursquare
  • Google App Engine
  • IBM Watson
  • Last.fm
  • Netflix
  • Product Hunt
  • Stripe
  • Twillio

See this link for more

Swifter Swift - an absolute must repository

Swift-Logo.jpg

Link here

SwifterSwift is a collection of over 500 native Swift extensions, with handy methods, syntactic sugar, and performance improvements for wide range of primitive data types, UIKit and Cocoa classes –over 500 in 1– for iOS, macOS, tvOS, watchOS and Linux.

List of All Extensions

  • SwiftStdlib Extensions
  • Foundation Extensions
  • UIKit Extensions
  • AppKit Extensions
  • CoreGraphics Extensions
  • CoreLocation Extensions
  • MapKit Extensions
  • SpriteKit Extensions
  • Misc. Extensions

How cool is this?

SwifterSwift is a library of over 500 properties and methods, designed to extend Swift’s functionality and productivity, staying faithful to the original Swift API design guidelines.

Link here

Bad UX Roundup #17: Rain, Information Architecture, and Ergonomics

1_renPtFYaWW4qwiEZj-12Cg.png

Read the entire article

Another week, another assortment of atrocious design worthy of MOMA. In the interest of variety, I have added a few newcomers to this issue. One is a piece of architectural design and the other is a brand I have never featured before. Of course, I have also included the requisite examples from big brands like Facebook and Apple, because those companies are bad design factories. All in all, it’s a good haul this week.

If you’re wondering what gravity has to do with all of this, you’re just going to have to keep reading.

Important lessons

  • Know your user and the circumstances in which they will be using your product.
  • Sometimes simpler really is better.

Read the entire article

Junior Programmer Job Advice

StockSnap_KG40JUP28N.jpg

Read the entire post here

A few years ago I conducted one of the most interesting interviews to this day. And, it came with a big twist in the end.

We were looking for a junior AngularJS developer. Writing basic directives, simple two-way data bindings, clean code - yes. Deep understanding of the digest loop, interceptors, XSRF protection, fancy design patterns - no, not necessarily.

Then out of the blue, THE MOST gorgeous candidate applied.

Strong background with not just Angular but plenty of backend frameworks as well, he had even coded mobile apps in his spare time. Had that slightly arrogant half-smile going on, as if to say "Don't know why you even bother, dude, I'm your man."

Here comes the twist, though.

For 20 minutes of intro talk, we barely spoke about Angular. Such was his urgency to showcase all the various assets of his skill set that what I really wanted to hear was a sentence and a half about some dull directive he wrote one time.

Then came the technical part. In the next 30 minutes, I could actually see his confidence evaporating from the room, although I was trying to be as friendly as possible. Turned out his Angular knowledge was shallow, the tip of the iceberg, "I saw that in a tutorial once" type.

Although he was presenting himself as a senior developer, he was a mere junior level for this position.

Expectedly, he didn't get the job. We hired a quite younger girl with less overall experience but much more focused on what we needed.

See, not that he wasn't smart - he was. I'm sure he would have caught up eventually.

His problem was different - he didn't have a niche. He hadn't picked a thing. He was ok for everything but good for nothing.

 

This is your #1 Junior Developer Mistake - not picking your niche early.

Read the entire post here

33 awesome GitHub lists for iOS development

awmleer-401721-unsplash.jpg

Read full article here

Looking for interview questions & answers? Need to find iOS chart or animation library? Or maybe you are just curious to check new open-source apps, free courses, coming conferences or people to follow on Twitter. Whatever you’re looking or need, you will find that on GitHub :)

There are really a lot of iOS gems done by the community! We made our research and collected the most useful repositories for you. For sure, you will find there a bunch of practical resources and a lot of inspiring ideas. 
Check it out!

Read full article here

Clean Swift Architecture - an alternative to MVC

 

Read the entire article here

A couple of years ago, all of the iOS apps were small containing less than 10 screens. The codebase was small, storyboards were working excellent, and it was easy to maintain your project. From an architectural point of view, MVC was doing a great job.

How about today?

Today, we are facing big technological advancements and an insane app market growth. In other words, apps are becoming big and complex. We are working on projects that contain 20, 30 or even 40 screens making it impossible to be maintained with MVC.

As technology moves forward, so should we (developers).

Recently, I really got tired from MVC and started looking for a new architecture. After a short research, I have noticed the Clean Swiftarchitecture and instantly fell in love with it! This architecture was exactly what I was looking for. 🚀

About the Clean Swift Architecture

Clean Swift (a.k.a VIP) is Uncle Bob’s Clean Architecture applied to iOS and Mac projects. The Clean Swift Architecture is not a framework. It is a set of Xcode templates to generate the Clean Architecture components for you. That means you have the freedom to modify the templates to suit your needs.

In an MVC project, your code is organized around and grouped by models, views, and controllers. In Clean Swift, your project structure is built around scenes (or screens). Here is an example how does one scene looks like. In other words, we will have a set of components for each scene that will "work" for our controller. These are the components:

  • Models
  • Router
  • Worker
  • Interactor
  • Presenter
  • Configurator

Read the entire article here

The good and the bad of learning Swift

With more than 1 billion devices in use as of January, 2016, iOS is the world’s second most popular mobile platform. In some regions, including the USA, the UK, and France, Apple devices continue to outperform Android in smartphone sales numbers. That is why so many businesses focus their software products primarily and sometimes solely on the iOS platform as a key investment opportunity and strategic benefit.

If you are one of those smart business owners following the iOS app development path, probably the most important decision you will make is choosing the right tech stack for your product. If you decide to go for native development instead cross-platform solutions, you still have to decide which language to use: the good old Objective-C or brand-new Swift.

Read more here

How to optimize swift and iOS build times

Here is a FREE opens source repository that can help speed your builds

Includes:

  • Type checking of functions and expressions
  • Slowly compiling files
  • Build active architecture only
  • dSYM generation
  • Whole Module Optimization
  • Whole Module Optimization for CocoaPods
  • Third-party dependencies
  • Modularization
  • XIBs
  • Xcode Schemes
  • More

Here is a FREE opens source repository that can help speed your builds

Why Learn Swift?

Did you know that Swift Programming Language is today regarded as one of the fastest growing programming languages in the world? It was first introduced as an alternative to the Objective-C language at Apple’s Worldwide Developers Conference (WWDC) in June 2014. In less than four years, Swift is already there amongst the top 10 programming languages as also revealed by a recent RedMonk Programming Language Rankings. Even in the 2018 StackOverflow Developers Survey, it was found that Swift emerged as the sixth most loved programming language even ahead of JavaScript.

Read more here

16 Ugly Bugs Snap Didn’t Bother To Fix For Snap Kit And Lessons They Teach

snapchat-2480953_1920.jpg

Read the original on Medium

Snap has many business problems, including the poor rollout of Snap Kit SDK.

I’m an iOS Hobbyist developer using Swift 4 and iOS 12 and have been working with Snap Kit now for many months. With over 10 Medium posts, I have been chronicling my struggles and victories with the SDK. I have run into a number of problems.

Snapchat Snap Kit SDK Primer

Snap Kit is Snap’s attempt to go beyond its primary app offering. To grow and stay relevant, Snap login must be as prevalent as Facebook, Twitter, or Google’s authentication on Apps. GIFY has inserted itself into many other apps and Snap has the opportunity to do the same thing with AR content, Stories, Lenses, and Filters.

Snap Kit SDK is Snap’s attempt to become sticky.

The bugs described are purposefully written in “Bug Style” with the hope that each will actually get filed against Snap Kit SDK for Snapchat App

Some of the bugs documented below are nit-picky, however, Snap is in no position to allow even the slightest developer friction to occur. Snap’s future is partly riding on the success of Snap Kit, and the business has very little wiggle room to get things wrong. Winning over the developer community is paramount to Snap Kit SDK adoption.

Also, some of these could be considered feature requests, documentation requests or things that are “not bugs”. As someone with 20 years of software industry experience, I say these are “FAILURES” that need to be addressed (aka Bugs).

Business Lessons

For each of the bugs, I have added advice on improving the business approach to software release

Bugs

1 — Single Point Of Support

Steps To Reproduce

  1. Go to https://docs.snapchat.com/docs/

  2. Note the text

Feedback?
 We regularly update our documentation to give you everything you need for creative, easy integrations. If something’s not working for you, please report it to 
snapkit-support@snap.com.

Automated response text says:

Hi there!” Learn more about Snap Kit by visiting support.snapchat.com/news/snapkit. If you have further questions please reach out to us at support.snapchat.com/i-need-help. Thanks!

There are a few issues with the automated response:

  • Tells the customer who is seeking customer support to look at the news blog. The news blog is not designed as a customer support tool.

  • Tells the customer if they need further assistance to go to “I need help”. This part of the Snapchat website is not designed to deliver developer nor customer facing support for Snap Kit. A look at that URL will show that there is no way to report a specific Snap Kit SDK issue and the user will feel like anything they report there will end up in a black hole.

  • The automated response does not say that anyone will actually read the email the customer sent nor help. It only talks about where to go and what to read. It is far from customer friendly.

Suggested Mitigation

Reword the automated response:

Thank you for contacting Snap Kit Support. This automated response is to let you know we received your request and will be reaching out to you shortly

Business Lesson

When introducing a product that is outside current offerings, review all customer engagement vectors. Staff appropriately. Involve Quality Assurance and Technical Support from the start (involve all stakeholders)

Worst Software Learning Advice

I agree that a lot of advice I see is not that great.  He sums it up well and makes it funny.  I don't have a degree and I learned most everything through informal methods like online tutorials and videos.  

Pros and Cons of Swift

With more than 700 million iPhones currently in use, iOS is the second-most popular mobile platform world over. While Android may be at an advantage worldwide market-share wise, in regions, like the US, France and the UK, Apple devices continue to dominate the market. This is why, so many businesses focus solely on iOS platform for their software products, as they see it is as their key investment opportunity.

If you are one of those businesses looking to follow the iOS app development, then you have a critical decision to make. That is of choosing the right tech stack for your product. What are you gonna go for? If it is the native development instead of cross-platform, then which language will you use? The good ole Objective-C or Swift?

Let’s take a look at the pros and cons of using Swift iOS development language.

Read more here

Perks of learning Swift

Those who are already engaged with the iOS app development, there are no divergent ways to the fact that they already know the benefits. But on the contrary for the newbies still looking out to build their career might not exactly know. For quite a long time, Object C was the sole language used developing iOS apps. Objective C is the subset of C with added benefits of dynamic runtime and object-driven features. Well, the perspective of iOS app development was shaped in a different manner with the launch of Swift by Apple. The newer programming language was referred to as objective C being devoid of C.

Now, Swift was accepted with an open heart by the iPhone developers as it was safe, easy, modern and easy to learn and use. Also, Swift allows a great level of interactivity in the development process. The features in Swift simplifies the common patterns that are used in Objective C. Generics, closures, and type of interface used in Swift are comparatively easier to use. Swift is a combination of both C and objective C eradicating the hurdles that are tagged along with both of them. The attractive part is support of Cocoa Touch and Cocoa which clear outs the understanding of app development for Apple devices. If you are anywhere thinking to indulge in iPhone training and become an iPhone developer, learning Swift is mandatory.

Read more here

Build your first iOS App

Introducing Snapchat Snapkit DIY Docs

Part 3 in a continuing saga of working with Snapchat Snapkit for iOS/Swift

I have been chronicling my attempts to use Snapchat Snapkit. Now, I’m putting my GitHub where my Repository is ;)

Introducing Snapchat Snapkit DIY Documentation and Best Practices

Are you looking for plain English instructions for Snapkit? Do you find the current documentation inscrutable? Are you interested in building a community of developers for Snapkit?

Please come by Snapchat Snapkit DIY documentation and best practices