Advice

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

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

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

How I Get Huge Social Media Growth with Crowdfire

Why did I upgrade my Crowdfire account from free to Plus?  What does Crowdfire offer that other platforms don't?  Why do I rely on Crowdfire as a key tool for managing social channels?

I'm here to explain...

Why is Social Media Critical to Your Business?

Social-Media-Graph.jpg

With 30% of millennials saying they engage with a brand on social at least once a month, your strategy can’t be only about existence.  Whatever your industry, segment and audience, a substantial portion of your customers and leads are on social. A recent Pew Research Center study found that 68% of American adults are Facebook users. Among 18 to 24-year-olds, 78% use Instagram and 45% are on Twitter.  Even among Americans 65 and older, 37% are social media users. 

Search engine crawlers know which pages are consistently earning traffic and which are just floating out there, forgotten and ignored. Although your killer content strategy is the most important factor in your search rankings, driving traffic to your optimized pages will cause them to climb much faster.

By investing only a few hours per week, over 91% of marketers claimed that their social marketing efforts greatly increased their exposure. There is no doubt that by simply having a social media page your brand will benefit, and with regular use it can generate a wide audience for your business.

Beyond a marketing tool, social media engagement helps to build connections with industry leaders and influencers., providing great stories for reporters, top notch products for promoters and interesting topics for experts to share with their followers. Over time, you’ll become more than a brand — you’ll be a part of a community.

If you’re a salesperson, one of the most powerful things you can do is look into your prospects’ eyes with a firm handshake. If you’re a marketer, one of the most powerful things you can do is engage with prospects and customers on social media. What do they have in common? These tactics allow you to relate to your prospects. People buy from people, and engaging with them allows the prospect to experience your culture and establish a relationship.

What Is Crowdfire?

I use it to curate content for all my social network channels to both retain my current audience as well as grow followers.  Crowdfire helps you discover and schedule content, and manage all your social accounts from one place.

My favorite part of Crowdfire is that it allows you to curate.  Many others are more "Set and forget".  And while it is tempting to use those - there is a big risk in polluting your social streams with topics that are not a fit or downright offensive.  Crowdfire gives you the tools to share what you decide to share and when you decide to share it.  And you can do so on the web or on mobile.

That's another big plus with Crowdfire.  The mobile app is sleek, easy to use, and has the right feature set for managing social channels on the go.  This includes the ability to share curated articles, post images from other sources and your own, re-post your posts, share articles from RSS feeds that you define and curate, and view analytics to help up your social game.

What Can Crowdfire Do For You?

it can automagically customize your posts for all your social profiles, taking away the headache of crafting separate posts for each individual social network.  You can schedule all your posts in advance and publish them automatically at the best times or at times chosen by you, saving you tons of time and effort.  Further it allows you to keep an eye out for updates from your website, blog or online shops and create quick, beautiful posts for every update to easily share on all your social profiles.

One thing I really love is the content automation that presents me with items I can choose to share.  With Crowdfire you can discover articles and images your audience will love, so you can share them to all your social profiles and keep your timelines buzzing.

And for Twitter, it can be extra valuable with help following the right people, unfollowing inactive accounts, engaging with your fans and followers and keeing an eye out on your competitors' followers.  You can follow your competitors' followers with ease and still curate for full control.

Which Social Networks Does Crowdfire Connect To?

socials.jpg

 

  • Facebook
  • Twitter
  • Instagram 
  • Pinterest
  • Linkedin
  • YouTube
  • WordPress
  • Shopify
  • Etsy
  • Twitch
  • Vimeo
  • 500px
  • Any blog with an RSS feed

I Also Love Crowdfire Because it is Reasonably Priced and Packed with Features

They offer a free plan that is fantastic for getting started and might be all you need.  The Plus plan, currently at $5.99/mo, that I currently use includes:

  • Two accounts (if you need more than one person managing your social)
  • All of Crowdfire's supported social networks
  • Scheduling and Publishing
    • 100 Scheduled posts per account
    • Chrome extension to share articles

    • Custom Posting Schedule

    • Video Posts Support

  • Content Curation
    • Unlimited Article Curation: Unlimited articles recommended for your topics
    • Image Curation: Unlimited images recommended for Instagram and Pinterest growth
    • Curate content from your own Blogs, Youtube videos and Shopify/Etsy shops
    • Up to 5 RSS Feed Connect
    • Hashtag Recommendations
    • Support for multiple image posts
    • Autotailored posts for each platform with preview before posting
  • 30 Day Social Analytics

And They Offer More Than Just a Tool

I find the Crowdfire Blog to be super helpful in navigating the social media waters.  Recent blog topics include:

  • What to Post on Facebook, Instagram, Twitter, LinkedIn and Pinterest
  • Instagram IGTV: 3 things you should know about Instagram’s New Video Platform

  • A Guide To Twitter Algorithm And How To Increase Your Reach

  • An Essential Guide to Instagram Stories + 5 Ways they will benefit your business

  • Top 3 reasons why Content Curation should be a part of your Social Media Marketing Strategy

This One Crowdfire Blog Post Saved Me Hundreds of Hours

It is titled "How to Repurpose Blogs Into Social Media Content".  This post covers 5 keys to leveraging your existing blog so that you don't have to always be creating new content.  A big time and money savings!  

It is written by the CEO and Founder of Rankwatch which is a platform, which helps companies and brands stay ahead with their SEO efforts in the ever growing internet landscape

Summary

You can try Crowdfire for free and see how it works for you.  It is one of my most indispensable tools for maintaining and growing my social marketing strategy.

Very helpful iOS Toolkit for 2018

Hello folks, I would like to update some of my toolset for 2018 that I use for iOS development tools, cloud service, websites, repos, libraries and some miscellaneous that I am still currently using.

This article will continue to be updated all year round. Some tools can be deleted, some others not. You can find some of the updates from my 2017 toolset and some new advice with the reasons behind.

I will also be in WWDC 2018. Hope to see some of you there :)!

Cloud Service

I use Macbook Pro 2015. It is fair enough but there is a problem with the compiling time. When I started my current job, I can not estimate project size and compiling time details. Also there is not another alternative such as iMac or Hackintosh for working faster with big projects. One day, while talking with my friends they asked me why I do not use cloud Apple hardware. It was a missing tool in my list that supports developers who don’t want to run development and testing in house. MacStadium services fit very well with developers, dedicated iOS build infrastructure quickly when they can’t afford to purchase hardware.

Also, they are about to roll out a program offering free dedicated Mac minis to open source developers!

Read the entire article here

The Mistakes I Made As a Beginner Programmer

I found this a very thoughtful piece

Here is a preview:

Let me make one thing clear first. If you are a beginner programmer, this article is not meant to make you feel bad about the mistakes that you might be making but rather to make you aware of them, teach you to spot signs of them, and remind you to avoid them.

I have made these mistakes in the past and learned from each and every one of them. I am happy to have formed coding habits to help me avoid them. You should do too.

These mistakes are not presented here in any particular order.

1. Writing Code Without Planning

Read More . . .