Skip to main content

Mobomo webinars-now on demand! | learn more.

 

snap 1

Modev started in 2008 as a Meetup group and over the years they have led the industry by organized conferences,strategic initiatives and provided executive leadership coaching to ensure those we engage with operate at peak performance.We were thrilled to have the opportunity to speak at the fifth annual Modev Conference on December 10th. Adam presented on the Ionic HTML5 hybrid mobile framework, where he talked about the framework’s background, as well as provided a quick dive into Angular.js, the popular javascript framework it’s built on.  

 

snap 4

Be sure to visit http://withinsight.github.io/modev-ionic/ to see the full presentation 

Categories
Author

Alt text

You know that phase where reality sets in, things get extremely frustrating, and your framework “commitment issues" begin to creep up?

It's that moment where your once beloved framework is doing more harm than good? And you find yourself overriding everything and changing core components--leaving you with a wonky hybrid framework/complete mess!

At this point you have two choices; love it or leave it.

It's a scary move and you have to be ready for it. However, thanks to a little site by Intridea, called Plenty of Frameworks, you don’t have to go it alone! Whether you’re ready to jump ship or are in the market for a new framework, Plenty of Frameworks is here for you.

As a framework matchmaker of sorts, it’ll show you your ideal framework, based on series of criteria such as role, language, and support.

Right now, we’re focusing on UI frameworks, but hope to expand to other types, like JavaScript, in the future. If you don’t see your favorite framework please suggest it and we will be happy to add it.

In the meantime, have at it! Your perfect (framework) match is out there!

Categories
Author

heart

With a plethora of frameworks readily available to choose from, sometimes it can be a bit overwhelming to choose one that is right for you.

Here at Intridea, we tend to gravitate towards Bootstrap as a base for our projects such as Humanprogress.org; even this site has some traces of Bootstrap in its core! Using Bootstrap works because it’s easy to get started, gets the job done, and with tools like Divshot, we can get a prototype off the ground in no time.

Frameworks help get things out the door quicker, but sometimes as the project expands, you start to experience growing pains and the technical debt starts to pile up. Not only that, but let's face it--not every project is the same and they all have their own specific requirements and surprises.

In many instances the framework can’t always handle such elements. Thus, there are usually three inevitable phases that come along when using a framework...

Note: These may not always apply to each framework.

Phase 1: The Honeymoon

This is the phase where everything usually just works and you can’t find any faults. Everything about the framework is perfect and you don’t second guess the decision to use it for every project no matter how big or small. You start to really fall in love with the framework and things can’t get any better….

Phase 2: The Challenge

This phase is where reality sets in, things can get extremely frustrating, and your framework “commitment issues” begin to creep up.

Your beloved framework is doing more harm than good. You find yourself overriding everything and changing core components-- leaving you with a hybrid framework or complete mess!

You begin to realize that your markup is starting to look like its been through a blender and it’s tightly coupled and it’s going to be a nightmare to maintain! At this point, you also start playing the questioning game, second guessing your "new love" and wondering if this was a huge mistake...

Phase 3: Road to Recovery

When you reach the breaking point, you tend to go into survival mode, seeking all viable options...

Questions that come to mind are:

  1. How much of the framework am I actually using?
  2. Is it too late to try something else?
  3. Should we scrap this and start over?
  4. How can you prevent yourself from making the same mistakes again?

Well lucky for you, we've run into these issues before and thus embarked on creating a solution...we call it: The Commitment Analyzer! It’s a simple bookmarklet that scans the current page and gives you insights as to how committed you really are to that framework.

This is useful because you might determine that you are using very little of that framework, or that you are in deep. If the framework has a build tool like Bootstrap this can help you pick and choose which components to include, that way you only have what you really need.

The bookmarklet currently has support for Bootstrap 3 and Foundation 5 with more coming down the road. The biggest caveat is that you have to run it on a page by page basis but nonetheless, it beats doing a find all in your project for each class name.

Let us know if you have any suggestions or if you want to add a framework head over to the Commitment Analyzer.

Drag this to your bookmark bar, navigate to the page you want to analyze, open up the console and run it.

♥ Commitment Analyzer
Categories
Author

From the Framework Programming Guide

  • Frameworks group related, but separate, resources together. This grouping makes it easier to install, uninstall, and locate those resources.
  • Frameworks can include a wider variety of resource types than libraries. For example, a framework can include any relevant header files and documentation.
  • Multiple versions of a framework can be included in the same bundle. This makes it possible to be backward compatible with older programs.
  • Only one copy of a framework’s read-only resources reside physically in-memory at any given time, regardless of how many processes are using those resources. This sharing of resources reduces the memory footprint of the system and helps improve performance.

Now that we've got a handle on what frameworks are let's set about building one. Open up Xcode and create a new project. We'll use the "Cocoa Framework" template which can be found under the "Mac OSX" group.

Our framework will return a random Cary Grant movie quote so we're going to name it "CaryGrantQuotes". This framework will have only one method which is defined in Quotes.m. Since it's such a simple framework, we can remove all of the frameworks listed under "Linked Frameworks" and "Other Frameworks" save for Foundation.framework.

Next, expand the "Targets" group located in the sidebar and expand "CaryGrantQuotes". Drag Foundation.framework to the group labeled "Link Binary With Libraries".

Header files are important because they tell an application what methods they can access. Headers that will not be directly accessible can be marked as "Project" but any header files that can be imported by an application need to be set to "Public". Since our project has only one header file, we'll need to set it to "Public". Under the group labeled "Copy Headers", right-click on the header files, select "Set role" ? "Public".

We'll need to modify our build settings so that the framework can be loaded properly by the enclosing application. Without getting into the gritty details of Xcode-specific environment details, the only ones you need to know about for getting this to work are @rpath and @loader_path. These will expand with the framework being loaded to point to the location on disk where the framework is located relative to the binary. Right-click on the CaryGrantQuotes item under "Targets" and select "Get Info". Adjust your settings to match those shown below.

Project settings

Your CaryGrantQuotes project should now match the image below.

Sidebar visual

Let's quickly build a Mac OSX application to embed our new framework in. We'll call it "MyProject" and all it will do is output a random quote to the debug console.

In the root of the newly-created MyProject directory, create a directory called "Frameworks" and open that directory using Finder. Tab back to the CaryGrantQuotes project in Xcode and build it.

Underneath the "Products" group, there should now be a "CaryGrantQuotes.framework" item listed. Right-click on that item and select "Reveal in Finder". Drag the newly-created framework into "MyProject/Frameworks" as shown in the image below.

Drag frameworks directory

We still have a few more tasks to perform before we can use this awesome new functionality. Under "MyProject", expand the "Frameworks" ? "Linked Frameworks" groups. Right-click on "Linked Frameworks", select "Add" ? "Existing Framework". This will take a few seconds to load as by default Mac OSX apps recursively search for all frameworks.

Since we are using our own framework, click on "Add Other…" on the bottom of the dialog, browse to the "MyProject/Frameworks" directory and select "CaryGrantQuotes.framework".

Next, expand "Targets" and right-click on "MyProject", select "Add" ? "New Build Phase" ? "New Copy Files Build Phase". Select "Frameworks" from the dropdown and close the dialog.

Now drag CaryGrantQuotes.framework from the "Linked Frameworks" group into this newly-created group which should be labeled "Copy Files". Then take this same group and drag it to a spot above "Link Binary With Libraries" (which should now contain the CaryGrantQuotes.framework item too).

MyProject sidebar visual

Nearly there! Now we need to let "MyProject" know where it can find this new framework. We do that by modifying the "Runtime search paths" value which will expand into @rpath when the binary is built.

MyProject rpath setting

Now all that remains is to add #import <CaryGrantQuotes/Quotes.h> to the top of MyProjectAppDelegate.m and we can use it how we see fit. To output a random quote to the debug console, stick this statement in applicationDidFinishLaunching:.

NSLog(@"Quote: %@", [Quotes randomQuote]);

Your debug console should now output a random Cary Grant movie quote, quite a useful feature. If, however, you receive the dreaded "Library not loaded; image not found" error, I suggest you get familiar with the command-line utility otool. Run the following command from the root of the "MyProjects" directory.

otool -l Frameworks/CaryGrantQuotes.framework/CaryGrantQuotes

The -l option shows you what libraries the framework is linked to as well as the path settings. The value of name under LC_ID_DYLIB should be @rpath/CaryGrantQuotes.framework/Versions/A/CaryGrantQuotes.

The entirety of the CaryGrantQuotes project can be found on github. Additional links and resources on embedding your own framework are listed below.

Categories
Author
1
Subscribe to Framework