Skip to main content

Mobomo webinars-now on demand! | learn more.

Earlier this month we brought our expertise in mobile development and design to MobileUXCamp in DC. This BarCamp event gave us the opportunity to interact with other motivated and creative mobile enthusiasts. We facilitated discussions around several topics including one on how mobile design standards have influenced web design; we also talked about our UX process, and even delved into consulting strategies.

We enjoyed listening to Matt Forr, of MindGrub, speak on the differences between the mobile and desktop experiences and how to display content to the user in his Responsive vs Redirect talk. He raised interesting questions such as, "should all content be available to the user"; this is something we're all thinking about right now as more companies are deciding between creating mobile versions of their websites or optimizing their existing sites for mobile.

Mobile development is new enough that best practices for design and development are constantly in flux and the future is being created now. MobileUXCamp provided an open forum to join mobile experts in dialogue on the topics that are relevant and pressing in the mobile space today.

You can view the slides from our presentation on Slideshare and pictures from the event on our Flickr page.

We're always interested in talking shop about mobile design and development practices so feel free to start a conversation with us in the comments below or hit us up on Twitter.

Categories
Author

Several of our designers and developers spent this past weekend attending sessions on art and technology and talking to people about Intridea's methods at Betascape. The event pulled together artists and technologists from various industries and demonstrated what is happening on the bleeding edge of that intersection - from robotics to personal fabrication to data visualization.

The most popular session among the Intridea contingent was Kyle Fritz's talk, "Computers Suck, The Internet Rules: How to make networked stuff that interacts with the real world." Kyle touched on ways to virtually control your home stereo, locks, lights, and other household objects that can be remotely manipulated with just a simple working knowledge of electronics and a bit of hacking. It was a great example to our designers of how advanced technology can be accessible and useful to them.

Kyle's talk inspired Charles and Ted to help out on the screenhead project. So they partnered with Jonathan Julian of 410Labs, forked Kyle's project, integrated the Google Street View API and the Tropo API. These additions allowed users to send a text with instructions like "name + map" (to open the recipient's browser and bring up a Google street view of the person's geographical location) or "name + image" (to open the recipient's browser and display a Google image search of the given name).

Overall, the presentations focused on the interactivity of art and science and the advantages gained from fluid, collaborative relationships between artists and technologists. We enthusiastically supported this event because we understand the intrinsic value of the relationship between art and technology. This is why we employ agile methods in both design and development, ensuring that our UX and Development teams work together closely throughout the entire cycle of design and development. Our goal is to create applications that are both visually stunning, usable, and technologically sound. We achieve this goal project after project by joining our designers with our developers in every step of the process. Design and development don't happen asynchronously on our teams - they happen congruently, and the results are always incredible.

When the two teams work closely together to create working systems an interesting thing happens: the designer begins to understand the mind of the developer and can intuit their feedback. This helps the designer work more effectively. Additionally, the developer begins to understand the mind of the designer and begins to think of their code with visual form and clarity.

A French composer understood what could come of the innovator and the creator working together:

I dream of a collaboration that would finally be total, in which the librettist would often think as a composer and the composer as a librettist.

Jacques Ibert

We've learned a lot from working with each other and through cultivating a mutual appreciation for the idiosyncratic talents we all bring to the table. That is why we enthusiastically support events like Betascape and it's why we're always happy to talk about our process and strategy with others. We're interested in hearing how others are working collaboratively with art and technology, so please add your thoughts to the comments below!

Categories
Author

This weekend we'll be supporting the innovation that happens when artists and technologists collide, through our sponsorship of Betascape 2011.

Last weekend, we sponsored and presented at MobileUXCamp in DC to discuss the ways in which mobile devices are reshaping our interactions with the web. This weekend we'll be in Baltimore, supporting the incredible work that happens when artists and technologists focus their combined talents.

Betascape is an annual event in Baltimore, aimed at involving designers and developers in ground-breaking work though informative sessions and interactive workshops. Participants come together in groups on the final day to explore the new ideas that emerged over the course of the weekend and create small projects that will be judged and awarded based on their level of innovation.

Betascape's theme and purpose is analogous with our method of design and development at Intridea. Our design process isn't detached from our development process; our designers don't work independently from our programmers. Rather, they work together closely from initial discovery to prototype to the finished product (and beyond).

Designers and developers at Intridea explore our client's needs together, and when the final design is approved and sent to our development team, the designers stay involved throughout the process to ensure that the UI/UX adapts to any architectural changes that are made during the development process. This ensures that when a product is complete the application is both aesthetically and structurally optimal.

We understand the value of the relationship between artist and technologist and we're looking forward to talking about our process at this weekend's neoteric event. Join us in the Interactive Lounge to talk shop or even just to say hello and grab some fancy die cut stickers! If you won't be at the event, be sure to follow us on Twitter for live coverage of the happenings over the weekend.

Categories
Author

This year we're proud to be a Platinum Sponsor of Mobile UX Camp DC, a mobile technology themed BarCamp. The event is supported by other leading technology companies and will be attended by mobile application developers, content writers and marketers, and others that want to gain an understanding of entrepreneurship and innovation in the mobile space.

Intridea has been developing elegant mobile solutions for high-profile companies like Mashable, Oracle and Mitsubishi for the last several years. We work closely with clients to create meaningful, intuitive, and seamless experiences for their mobile users. We have gained insight and experience into the cutthroat world of mobile development. That's why our UX/UI and Mobile Engineering teams will be at Mobile UX Camp this year to participate in the event and share their experience.

Mobile UX Camp is sold out, but you can still sponsor the event (or get added to the waitlist). If you're already attending the event, be sure to swing by the Intridea Room to say hello throughout the day. You won't want to miss our 45 minute presentation starting at 3:00pm:

You got Mobile in My Desktop: How Mobile Devices are Changing our Interactions With the Web

Modern mobile devices (smartphones and tablets of course) have been teaching users new ways of interacting with data. For the first time since the introduction of the point and click interface 30 years ago, users are interacting with a computer in a brand new way. The mouse is becoming an artifact, and so its usage patterns are going the way of the dodo and the light pen. Hear about how the computer in your pocket is informing the computer on your desk, and why the days of designing for one or the other are rapidly coming to a close.

From our open source development, speaking at conferences, teaching classes, and sponsoring local and national user groups and tech conferences, we are always looking for ways to support the community that we live, work and play in. We're excited to be at Mobile UX Camp this year to interact with the mobile community as they explore new ways to push the mobile space forward.

Categories
Author

In previous posts in this series we talked about how outsourcing your development needs to a Rails shop can make more sense than hiring an internal development team. In this post, we are focusing on startups specifically, and how they are in a unique position to benefit from relying on a Rails shop to build their web applications.

Startups have distinctively different needs from established companies when it comes to launching a product. A startup is trying to penetrate the market as a new player, without a preceding reputation and without any history of success. Additionally, your startup needs to prove its ability to compete quickly after launch, in order to appease those that have gone out on a limb to invest time and money into your product. The startup world is cutthroat and austere – there is little room for mistakes and stagnation.

In a recent Fast Company post on “Ten Tips to a Successful Startup”, getting to market fast was listed as one of the top 3 tips and is one of the “lean startup principles” from famed startup advisor, Eric Ries. When you’re trying to launch your product, you need a team of expert developers to get your there faster.

Don’t Go To Market Alone

By hiring an experienced Rails shop to handle the development work, your startup can leverage these advantages:

  • Lower risk – Whenever you contract with a consultancy you are entering in a lower risk situation than hiring your own employees. With a Rails shop you will enter in a mutually beneficial contract and statement of work.
  • Assembled Team – Assembling a team of developers, project managers and designers takes time. Especially in the Rails world in which the demand for Rails developers is high, but the supply continues to be low. But it’s easy to find a reputable and quality Rails shop, and they will have a team ready to start on your project right away!
  • Control costs – When you work with a Rails shop you have a clear understanding (through your statement of work) of how much the project will cost. This makes it easier for your startup to budget for development work.
  • Scheduled Deliverables – Since you’ll be working with a veteran team of developers, you can expect to know when each milestone of the project will be delivered. This helps you plan launch dates and milestones with your investors.
  • Proven track record – Hiring individual in-house developers can be tricky, and you never know what you’re really getting or how well your assembled team will work together. With a Rails shop you can be assured that the teams already know how to work together and deliver successful projects on time. Rails shops work diligently to meet deadlines and keep their clients happy, because their good reputation is so vital to their existence.
  • Extra Promotion – When you use a Rails shop, you can often expect the benefit of having some free promotion. Rails shops care about their clients’ success, and thus will usually take steps to promote them through word of mouth, social media, blogging, and other avenues. And when you’re new to a market, you can never have too much promotion!

Success Stories

At Intridea we have years of experience working with startups. In one particular case we were approached by Visual CV, a startup that wanted to revolutionize the online resume market. We quickly assembled the ideal team of developers, designers and project managers for their project. In their case it was critical to get something to their users as soon as possible, so we sat down with them to determine which features were necessary for a minimum viable product. Once we understood their vision and their specific needs we went back to our offices and within just two weeks we had a working prototype that was polished enough to deliver to their users. Then we stayed on board to deliver more complete iterations of the product and to help them hire and transition an internal team of developers to carry on future development.

When EarthAid approached us to architect a complete solution to help people track and lower their energy costs and consumption costs, we knew we would need to work quickly and intelligently in order to help them launch their product in a new market. In addition to the design and development process, our architects made sure they built a system that would scale with the EarthAid's needs as their user base grew over time. We were able to get them to market quickly and efficiently. Shortly thereafter, they attracted venture funding and today EarthAid is a thriving business.

Where Are The Good Programmers?

One of the toughest challenges for any entrepreneur is hiring good programmers to execute on their vision. If you’re not already a programmer, knowing how to identify good programmers can be nearly impossible. In this situation it makes more sense to consult with an experienced Rails shop for your development needs. A Rails shop will already have assembled a good team of programmers, designers and project managers.

If you’re running a startup, you won’t likely have time to worry about all the details of putting a team together. When you hire an internal team you need to set aside a lot of time for things like:

  • Finding good programmers (and making sure they are actually well qualified)
  • Making sure the team you hired is working well together
  • Paperwork - setting up your new employees takes a lot of effort. You'll probably want to provide them with benefits, possible relocation if you couldn't find all the talent you needed locally, and make sure they're adjusting well to their new full-time position.

All of that takes time and distracts you from your more time-sensitive business objectives. When you hire a Rails shop to handle your development, you bypass the complications of hiring an internal team and allows you to focus on your business strategy, your market, your customers, and all the mission-critical aspects of launching a venture. Once you've launched your product and penetrated the market, the Rails shop can often help you hire your own internal team and help them learn the codebase, ensuring a smooth transition.

Why Rails?

If you aren’t already familiar with the benefits of using Rails to build your web applications, check back next week! In the next post in this series we’ll be talking about why Rails is a smart choice for development when you need to get your product to market! Follow us on Twitter or subscribe to our RSS feed to get updates on future posts.

About Intridea

We create custom web and mobile solutions for businesses large and small across a range of industries – from Healthcare, Government, IT, Education, Arts, Real Estate, Insurance and more. Our team of designers, architects and developers can work with you every step of the way to bring your vision to life on the web. Contact us today to find out more!

Categories
Author

In the second post in the series on “Why Your Company Needs a Rails Shop”, we’re talking about the “first-mover advantage" and how outsourcing your development to a Rails company can get your product to market quicker.

What’s The Big Idea?

You’ve got a great idea. You know it’s great because you’ve done objective market research, talked to your target customers and made an effort to understand your competition. Now you need to get your product some legs of its own. Getting your product to market as soon as possible can be critical to the success of your initiative. The web is rich with the innovations of passionate people; the landscape is competitive. You have no time to spare.

Advantages of being first to market:

  • Monopoly – Not the game, but rather a temporary monopoly of the market share. Being first to market in your niche means that you have the early advantage of being the only (or one of the few) players in your field, allowing you to capture a market share advantage.
  • Good Looks – Being the first implies that you are innovative and proactive. You were smart enough to detect an opportunity and adept enough to act on it quickly. Getting to market quickly saves you from the “me too!” reputation that your future competitors might garner when they penetrate the market with a similar idea or product after you have paved the way.
  • Experience – By getting to market first you get a head start on building experience with your customers, the technology, the feedback, and engagement of your product or service. This early experience is valuable when you use it to fine-tune your product and continue to release new versions or features. The early experience gives you the opportunity to foster exclusive and meaningful relationships with your target audience before anyone else.

Who You Gonna Call?

A Rails shop! When you need to get to market quickly, go with the pros. In last week’s article in this series we talked about how difficult it is to penetrate the competitive Rails market to find good talent. When you need a web application created quickly and professionally it makes even more sense to rely on an experienced Rails shop. Spending weeks or months trying to build an internal team will only delay your product launch.

Trying to hire your own team can be costly and time consuming when you consider this:

  • Finding good Rails developers and verifying their experience level is no easy task. Ruby is a young language and Rails an even younger framework. This means that most Rails developers have only a few short years (sometimes months) of experience under their belts. Additionally, you might not know what to look for in a Rails developer, whereas Rails companies have experience vetting good programmers.
  • It can take 2-3 months to hire experienced individual Rails programmers and assemble a small internal team of developers.
  • Even after you’ve hired a good internal team, you won’t necessarily have an expert Project Manager on hand who is skilled in Rails to lead and direct the team.
  • Assembling a team from scratch means that you don’t know how the new team members will work together. You have to allot time for personality and workflow differences as the team adjusts to working together.
  • Hiring a team internally leaves you with the added cost and concern of providing benefits and having additional employees on your books indefinitely. In hiring a Rails shop you negotiate a straightforward contract for work and then you have a choice of keeping them on retainer for future maintenance if needed.

As a Rails shop that’s been around for awhile, we’ve learned a few things about hiring Rails developers, working with clients efficiently, and delivering projects on time. Rails shops are living in the Rails world every day – we understand the ecosystem, and can easily identify a talented Rails programmer. When you outsource your web application development to a Rails shop you’re inheriting the combined experience of a large team of experts. And when you need to get your idea to market, you need the power of experts to help take you there.

Full Service

Most of the popular Rails shops in the U.S. today offer a range of services to meet all of your application development needs. This mean that when you hire a full-service Rails shop you’re getting an entire team of experts to manage your application every step of the way:

  • Designers – A team of experienced designers who are adept at listening to clients and transforming their vision into beautiful design and optimal layout.
  • Developers – Expert Ruby on Rails developers who have been building web applications in Rails for years, and have key knowledge of the newest technology and advancements in the industry.
  • Project Managers – Someone to oversee and direct the development process of your product, ensuring that deliverables are defined and met on time, and that the team is meeting client expectations every step of the way.
  • QA Engineers- Skilled software testers that put your application through rigorous testing before it ever goes live, ensuring that the final product is secure and ready for users.

Rails Company + Your Product = Win

We all want to win. And it's easier when you partner with people that have a track record for success. Taking your vision to a reputable Rails company means that you get the assistance of a team of seasoned Rails developers, designers and project managers – all ready to listen to you, understand your intent, and breathe life and form into your vision. Having a Rails shop to work with ensures that you can get your application launched sooner. Plus, you’ll have a team on hand that is already experienced with your product when you need to work on the next iteration to keep you competitive and fresh.

About Intridea

We create custom web and mobile solutions for businesses large and small across a range of industries – from Healthcare, Government, IT, Education, Arts, Real Estate, Insurance and more. Our team of designers, architects and developers can work with you every step of the way to bring your vision to life on the web. Contact us today to find out more!

Categories
Author

In this new blog series, Why Your Company Needs a Rails Development Shop, we’ll discuss why it makes sense to turn to a reputable Rails development company for web application development. In a new market saturated with Ruby and Ruby on Rails buzz, it can be hard to determine who the experts are and where to find them. We hope this series unveils some of those challenges and how using a Rails development shop can alleviate some of the headaches in making decisions about development.

In this first article of the series we’ll focus on the current climate of the Rails job market and how it complicates the process of finding and securing talented developers.

First, A Brief History

Since its release in 2005, Ruby on Rails has forged an incredible legacy for itself. Rails has been widely adopted as an ideal framework for creating web applications by companies large and small, and has been supported by a uniquely driven development community. Apple’s announcement that Ruby on Rails would ship with OSX v10.5 in 2006 helped to solidify the future of Rails in the business world.

Thanks to those early adopters and evangelists, Rails is now a legitimate and successful framework that is being put to use by some of the most prestigious and highly-trafficked web sites around the world, including Scribd, Groupon, Twitter, Amazon, NASA and more.

Growing Need For Rails Experts

As Rails has become more mainstream the demand for Rails developers has increased significantly. Today there are thousands of companies looking for expert Rails developers to help bring their ideas to the web quickly and efficiently. Trend analysis from Indeed.com shows just how radical the shift in the Rails job market has been in the last 5 years:

ruby on rails Job Trends

Ruby On Rails jobs

Rails allows you to build robust, scalable and competitive web applications quickly – of course you want a Rails app. But the task of assembling a team of expert Rails developers is a complicated process.

Advantages Of Hiring A Rails Company In A Competitive Rails Market

With an increasing number of companies realizing they need Rails development to keep them competitive, and an almost equivalent number of new Rails developers looking for work, how do you make sure you hire the right expert to develop your web application? Here’s a hint: Hire a Rails Development Company. This may seem like an obvious solution, but we’ve worked with enough rescue projects to know that oftentimes companies try to bring Rails developers in-house before they turn to a Rails company.

Turning to a seasoned Rails development company to build your web application can give you certain advantages over hiring your own Rails developers directly:

  • Rails is young: It’s hard to evaluate Rails developers – after all, the framework is only a few years old, which means that unlike Java and C developers, Rails devs won’t have years of experience to consider. And programmers aren’t studying Ruby on Rails in college, so their experience will be limited to recent projects. A Rails company has a better understanding of the language and how to vet the developers.
  • Rails developers are in high-demand: The quickly growing Rails market, combined with a lack of traditional education in Rails means that Rails developers are hard to come by. The demand for good Rails developers is incredibly high (as illustrated by the graph above). A Rails company is continually scouting for the best Rails talent and has managed to secure top-notch developers in the Rails landscape.
  • The Community: The Rails community is a forceful and dynamic ecosystem. The community drives and supports the framework, works to nurture and teach incoming developers, and evangelizes best practices. In order to hire expert Rails developers to build your application it helps to be immersed in that community. The top Rails companies, including Intridea, understand the ecosystem and are an integral part of it. This makes it easier for us to distinguish the talented developers from the fledgling Rubyists. We know how to find and hire the best Rails developers out there, so you don’t have to.
  • Depth of experience: If a Rails company has been around long enough, you can bet that they’ve been solving lots of complex problems. At Intridea, our Rails developers have worked with hundreds of clients and every day they architect new systems, solve new problems, and think critically about design and implementation. By relying on a Rails shop you’re getting more than just a talented team of developers – you’re getting the aggregate real-world experiences of a large team of experts. These experts would be harder for you to find on your own in this competitive Rails market!

Rails shops already know how to find top Ruby on Rails developers – you don't have to spend time interviewing, hiring, and training a new team of Rails developers to create your web application when Rails companies have already done the work to assemble teams of bright and talented developers.

Summary

When you need to take your product to the web, find a reputable Rails development company – and have the peace of mind in knowing that your application is being architected, designed and deployed by a team of developers that was handcrafted and optimized for excellence. You can’t afford to trust your application to unknown variables. The Rails community is saturated with varying levels of programmers and the culture is close-knit and potentially difficult for an outsider to navigate; finding the right talent for your project can be difficult. In the words of Stephen King:

“Talent is cheaper than table salt. What separates the talented individual from the successful one is a lot of hard work.”

It’s not enough to trust your application development to someone talented. You’ve got to have a team of developers that work hard, value quality code, are efficient, and care deeply about their work. By outsourcing your application development to a Rails shop you’re tapping into a pool of successful, proven Ruby on Rails experts.

In future posts of this new series, Why Your Company Needs a Rails Development Shop, we’ll talk about additional advantages to contracting your application development to reputable Rails shops, and why relying on experts is so vital in this fierce market.

About Intridea

We create custom web and mobile solutions for businesses large and small across a range of industries – from Healthcare, Government, IT, Education, Arts, Real Estate, Insurance and more. Our team of designers, architects and developers can work with you every step of the way to bring your vision to life on the web. Contact us today to find out more!

Categories
Author

When I was developing the Presently Android client I ran into an interesting problem. If a user is in the main timeline activity and a new message comes in, the active timeline just needs to update with the new message. However, if the user is in another activity stream, (like viewing @ replies or DM's for example) and a new message comes in to the main stream the application should not only update the main stream but should also show the user a notification so they can be aware that new messages are coming into another activity.

In this post I will show you how I solved this problem.

There is a background service to pull new messages from the server. When the service receives a new message, a broadcast will be sent:

Then, we have a BroadcastReceiver in TimelineActivity to receive the broadcast.

Now, when new messages come in the user can see the messages update to listview and get a notification in the status bar. But there is a small problem: it only works in TimelineActivity, because when the user opens a new activity or presses the Home button, the BroadcastReceiver is unregistered in the onPause() method.

So I tried to put the register/unregister operation in the onCreate()/onDestroy() methods. This fixed the problem of new messages and notifications not showing in other activities. But then there was another problem: in TimelineActivity, the user receives an additional and unnecessary notification. So I set out to fix this particular problem.

The first question I asked myself was, “Can I only use one BroadcastReceiver?” The answer was “No!” So, I used two BroadcastReceiver(s) to fix this problem.

In this code there are some key points I want to outline:

  • Broadcast the new messages with sendOrderedBroadcast() instead of sendBroadcast(). It will be passed one by one unless you stop it by abortBroadcast().

  • Register/unregister RefreshTimelineReceiver in onResume()/onPause(), and RefreshTimelineAndNotifyReceiver in onCreate()/onDestroy(). This makes certain there is no RefreshTimelineReceiver in other activities.

  • Give FILTER_HIGH_PRIORITY to RefreshTimelineReceiver and FILTER_LOW_PRIORITY to RefreshTimelineAndNotifyReceiver. In TimelineActivity, RefreshTimelineReceiver receives the broadcast first.

  • AbortBroadcast after showNewMessages() in RefreshTimelineReceiver. Don't pass the broadcast to next receiver.

And this is how I solved the problem of notifying a Presently Android user of new incoming messages to the main activity if they are active in a separate activity stream. Hopefully this might help someone else out who might be working through a similar problem!

Categories
Author

It’s been nearly a year since the release of the iPhone 4, and much to the dismay of the tech community, it’s still the only product in the Apple lineup with a high pixel density ‘Retina’ display. While the much-hyped feature drew universal praise when the device was unveiled, some were wondering the following:

  • Would consumers see this as a compelling feature?
  • Would competitors follow suit, establishing critical mass for high PPI displays?
  • Would Apple eventually launch a Retina display for iPad or Macbook Air? Or would another manufacturer release an ultra-high resolution tablet or laptop?

In a little over 10 months time, high PPI displays are currently everywhere in mobile. Walk into any carrier retail store, and chances are that the featured smartphones already feature high-resolution displays. Those that don’t have them likely will within an iteration or two.

Retina display for Mac will be here sooner rather than later. Apple’s yet-to-be-launched OS X Lion includes built-in support for the Retina display, along with ultra high-res desktop wallpapers and icons. It’s a decent bet that we’ll eventually see some variation of the Retina display across the entire product line. And of course, as happened in mobile, the rest of the industry will follow Apple’s lead, effectively eliminating the concept of a default dpi standard.

How can designers and developers prep for this change?

Embrace resolution-independent design practices for the web, not just mobile. Up until this point, designers and developers who haven’t worked in mobile have been able to avoid the extra hassle of prepping content for high PPI displays. But with the classic notion of the ‘pixel’ fading away, it’s a good time to reiterate the importance of resolution-independent design practices across the board. Specifically:

  • Minimal use of bitmaps (reserved for photography, video, and illustrations)
  • CSS3 for buttons, gradients, shadows, and lines
  • HTML5 canvas and SVG libraries for complex and interactive graphics
  • @font-face for custom type
  • Vector graphics for interface elements

Start to use Scalable Vector Graphics (SVG) on the web. With Internet Explorer 9 finally getting onboard with the basic SVG feature set, it’s time to adopt vector graphics on the web (for real this time). Unless you are designing for a specific audience using certain browsers (in which case you may need fallbacks), now is a great time to consider using SVG for:

  • Icons
  • Background images
  • Custom type treatments
  • Logos and mastheads

Get comfortable with Adobe Illustrator. This advice was doled out around the web when the Retina display was first introduced, and one year later it rings more true than ever. Photoshop is still the industry standard for producing web graphics, but as the web steers towards resolution independence, so should the toolkit.

Photoshop users: keep all of your source files in vector format for as long as you possibly can. If you must use Photoshop (full disclosure, we love it and use it daily at Intridea), it’s a good idea to create your interface elements as vector Smart Objects, or import them directly from Illustrator. This way, your elements can scale when you resize the source files without effectively losing resolution.

For time being

The current process of designing for high PPI displays is a bit of a hassle, but it’s hopefully transitional. Designing for the Retina display with targeted CSS and high-res bitmaps is already intensive. Throw in the eventual release of high PPI displays on tablets and laptops and it’ll be painstaking.

There are a number of established design practices for supporting high PPI displays. Many of the tutorial articles written soon after the iPhone 4’s launch are still relevant (here’s a great list of some key takeways).

Categories
Author

No matter what level of developer you are, at some point you will have the underrated joy of inheriting a legacy software project. And since we're fortunate enough to work in such a fast-paced community and ecosystem, "legacy" really encapsulates any piece of software more than a month or two old. Often though, we don't have time to appreciate how our ancestors used to write Ruby back in the days of Rails 2.3, or even (gasp) 2.1 — we need to get right to work. It's at this point that the nefarious Jabberwocky method can rear its ugly head.

The Jabberwock in the Room

When we first adopt a project, some of the language may seem like gibberish. Let's say we encounter this snippet of code in some controller:

@sword = VorpalSword.new @sword.snicker_snack! 

Looking at this code, we might expect to open up the VorpalSword model and find:

def snicker_snack!    Jabberwock.destroy_all end 

Unfortunately, in this all-too-contrived example, the VorpalSword class simply doesn't have that method!

The Jaws That Bite, the Claws That Catch!

Stuff and nonsense! Now we'll have to dig through and see if we can find a way to uncover this method. Let's start doing some sleuthing...

  • Maybe there's a method_missing in the VorpalSword class

  • Does VorpalSword inherit from anything?

  • Hmm...does it include or extend any modules?

  • It's probably just a plugin. Let's check the vendor/ folder...

  • Okay, maybe not. How about something under the lib/ folder...

  • Is "snicker_snack!" a gem?? Who would name a gem "snicker_snack!"

  • Did someone overwrite method_missing in ActiveRecord::Base?!

  • That's it, I'm switching to Scala!

Final Uffish Thoughts

Abstraction is a fantastic technique - we love to keep our software DRY and happy, but occasionally it can lead to code obfuscation. So before you go galumphing back to your project, take a few minutes and follow these suggestions to keep your code readable, and avoid those Jabberwocky methods:

  • Using modules is a self-documenting way to extend the functionality of your classes. If you do decide to use a shared library to cover some functionality, try to use modules rather than re-opening classes.

  • Be very careful when you use metaprogramming techniques like method_missing, or dynamic code creation. Writing a lot of crafty methods using a few lines of Ruby can be lots of fun, but sometimes a little bit of duplication can improve the readability of your code tenfold.

  • Lastly, documentation and tidy code is important. Try to organize your methods, and definitely drop a comment into the class if you know a shared library will be mutating it down the road.

Be sure to keep these tips in mind, and you'll find whoever inherits the code after you will chortle in his joy.

Categories
Author
Subscribe to Development