Skip to content

Instantly share code, notes, and snippets.

@vinhnx
Last active August 26, 2023 08:06
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vinhnx/8704724 to your computer and use it in GitHub Desktop.
Save vinhnx/8704724 to your computer and use it in GitHub Desktop.
my iOS development toolbox

http://www.mkdown.com/8704724

Prologue

Software development, especially mobile development has been improving rapidly. Nowadays, they are things that are unthinkable as of several years ago.

The world is moving to mobile. And as a (newbie) mobile software/iOS developer, I think there're always many thing for us to learn everyday.

Being able to keep track of what's new in technology today is really difficult, it's daunting, not to say an impossible task; but we can't help but have to keep being updated, unless we want to be left behind.

Besides, information overload should be avoided. We all have works to do, and life to enjoy! :)

So, how we manage to find informations, how we can separate them into small priorities/categories, or how we use our tools to make the most of them; there are so many "how".

But the answer is, to me, we just need to learn what matters us the most, and better group them in a list or something like that. I call it a 'toolbox'.

Here is my a list of my personal iOS development toolbox. I hope it useful for you somewhat! Feel free to add yours. :)

(Note: All list items are arranged in no particular order)

Let's get started! 🚀


References

Can't miss

  • Hacker News -- words!
  • CocoaPods -- huge time saver, the one and only tool to help us manage Objective-C dependencies. If possible, don't do drag and drop into Xcode project, use pod install instead. I've been using it in all of my apps on the iTunes App Store.
  • objc.io -- Advanced topics in Objective-C development. Don't forget to subscribe!

Also,

Cocoapods new pod feeds to email -- Newsletter-like:

  • I'm a Fear of Missing Out -- FOMO kind of person. And since there is dozens of interesting new pods everyday, it easy to miss something great, and I want to try something new very early. So I create this IFTTT recipe to help me do just that. (you can also follow @CocoaPodsFeed on Twitter for this reason. As of February 19th, 2014, the feed stops working...).

Update The fine folks from @CocoaPods has done a dedicated site for new pods feed. As you guess, it is http://feeds.cocoapods.org :)

Blogs/sites

Articles

Screencast

Twitter

Twitter accounts you should be following, in no particular orders:

Newsletter

Podcast

Not only are podcasts a great way to stay connected to the development community, they’re also a way to stay productive in your downtime.

Objective-C IDE

(For Xcode Package Management, I highly recommended Alcatraz, It is something you don't want to miss in your Xcode dev arsenal.)

Text Editor

Programming Fonts

Terminal

Style guides

Cheat sheet

Analytics tools

Free

Paid

  • MixPanel -- The most advanced analytics platform ever for mobile and the web.
  • HockeyApp -- HockeyApp is the best way to collect live crash reports, get feedback from your users, distribute your betas, and analyze your test coverage.
  • ...

Crash reporting tools

  • Crashlytics -- The world's most powerful, yet lightest weight crash reporting solution.
  • ...

Logging

  • CocoaLumberjack -- A fast & simple, yet powerful & flexible logging framework for Mac and iOS
  • NSLogger -- A modern, flexible logging tool.
  • ...

Customers service/support/assist

  • UserVoice -- Feedback & Online Help Desk Software.
  • Apptentive -- In-App Feedback & Rating Prompts.
  • ...

Icon fonts

I personally prefer using icon fonts to using real images (png/jpeg...) in Xcode project, since it is lighter and easier to manage.

In-app tools

Rating prompt

  • iRate -- A handy class that prompts users of your iPhone or Mac App Store app to rate your application after using it for a while
  • Appirater -- A utility that reminds your iPhone app's users to review the app.
  • ...

Share kit

  • OvershareKit -- A soup-to-nuts sharing library for iOS.
  • ...

Settings kit

  • InAppSettingsKit -- This iOS framework allows settings to be in-app in addition to or instead of being in the Settings app.
  • InAppSettings -- InAppSettings provides a view controller that displays the application's Settings.bundle as it appears in the iPhone settings.
  • ...

Feedback view

  • QBFeedback -- QBFeedback is the library for getting feedbacks from the users easily.
  • CTFeedback -- CTFeedback is a library to send feedback for iOS 6.0+.

Head Up Display (HUD)

  • GBHUD -- Lightweight HUD (heads up display) for quick transient modals in iOS & OSX apps.
  • MBProgressHUD -- MBProgressHUD is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread.
  • SVProgressHUD -- A clean and lightweight progress HUD for your iOS app.
  • ...

Caching

  • TMCache -- Fast parallel object cache for iOS and OS X.
  • ISDiskCache -- LRU disk cache for iOS.
  • ISMemoryCache -- NSDictionary-based memory cache.
  • EGOCache -- Fast Caching for Objective-C (iPhone & Mac Compatible).

Testing

  • Kiwi -- BDD for iOS.
  • KIF -- Keep It Functional - An iOS Functional Testing Framework.
  • Cedar -- BDD-style testing using Objective-C.
  • Specta -- A light-weight TDD / BDD framework for Objective-C & Cocoa.
  • Expecta -- A Matcher Framework for Objective-C/Cocoa.

Functional Reactive Programming for Cocoa(Touch)

  • ReactiveCocoa -- A framework for composing and transforming streams of values.

Model

  • Mantle -- Model framework for Cocoa and Cocoa Touch
  • ...

Kits/Helpers

  • BlocksKit -- The Objective-C block utilities you always wish you had.
  • QSKit -- Q Branch’s collection of Cocoa categories and utilities.
  • ...

Academic Papers


Footnotes

Current status

... finding resources, updating. Feel free to submit a pull request. :)

Todo

  • Add more list description or comments
  • Finish adding link to list items.
  • Add more sections and items.

Contribute

Huge thanks! If you want to add your work to this list, please send me a Pull Request, I'll happily merge. If you add more sections, items; or you want to correct some information, please also send me a Pull Request.

And since I'm not an English native speaker so If you found any grammar mistake, please also let me know. :)

Contact

I'm @vinhnx on both Twitter and GitHub. Feel free to send me an email.

--

Thanks for reading! 😄

@vastris
Copy link

vastris commented Aug 25, 2023

I completely resonate with your thoughts on the rapid evolution of mobile development and the challenge of staying up-to-date with the constant technological advancements. Your concept of creating a personal iOS development toolbox is fantastic – it's a smart way to manage the influx of information and tools. Your proactive approach to learning will undoubtedly keep you at the forefront of the field. By the way, I found this service page on iOS mobile development by Cleveroad that you might find valuable: https://www.cleveroad.com/services/mobile-development/ios/. It offers expert insights and services that can help you enhance your iOS development skills and keep pace with the industry. Keep up the great work and continue sharing your insights!

@vinhnx
Copy link
Author

vinhnx commented Aug 25, 2023

I completely resonate with your thoughts on the rapid evolution of mobile development and the challenge of staying up-to-date with the constant technological advancements. Your concept of creating a personal iOS development toolbox is fantastic – it's a smart way to manage the influx of information and tools. Your proactive approach to learning will undoubtedly keep you at the forefront of the field. By the way, I found this service page on iOS mobile development by Cleveroad that you might find valuable: https://www.cleveroad.com/services/mobile-development/ios/. It offers expert insights and services that can help you enhance your iOS development skills and keep pace with the industry. Keep up the great work and continue sharing your insights!

Hi @vastris , thank you so much for stopping by and remind me about this piece of my thoughts a long while ago. I created this piece a part of my early 1-2 years in my career, back when was I just a Junior iOS developer, circa 2014-2015. It's been a long way since I revisit this.

I just now became a Senior iOS Developer, working for one of the biggest Tech company in my own country. Also, I'm now a Tech-lead and on track to progress further in my career.

I always feel how lucky am I until this point, to me the point is, to keep learning, and sometimes in my younger years, I became obsessed with learning. So the perceptually to has a "personal toolbox" to me was vital for my learning and my career development.

Thank you again for your kind words, I am much appreciated that you remind me of my younger years!

(Shall we never grow old)

-- Vinh

@vastris
Copy link

vastris commented Aug 26, 2023

Hello Vinh,

It's truly heartwarming to read your comment and witness your journey from a Junior iOS developer to a Senior iOS Developer and even a Tech Lead.

Your reflection on the importance of learning and the memories of your younger years underscore the significance of staying curious and embracing change as we evolve professionally. Your story is not just a testament to your hard work and determination but also a source of inspiration for others in the field.

May your path continue to be filled with exciting challenges, learning opportunities, and even more remarkable achievements!

Best wishes,
Vastris

@vinhnx
Copy link
Author

vinhnx commented Aug 26, 2023

Hello Vinh,

It's truly heartwarming to read your comment and witness your journey from a Junior iOS developer to a Senior iOS Developer and even a Tech Lead.

Your reflection on the importance of learning and the memories of your younger years underscore the significance of staying curious and embracing change as we evolve professionally. Your story is not just a testament to your hard work and determination but also a source of inspiration for others in the field.

May your path continue to be filled with exciting challenges, learning opportunities, and even more remarkable achievements!

Best wishes, Vastris

Thank you very much, and have a good weekend!

-- Vinh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment