Skip to main content

Mobomo webinars-now on demand! | learn more.

MacRuby In Action, a new book that teaches Ruby developers how to code OS X applications in Ruby, was released this week through Manning Publications. Jerry Cheung, a senior engineer at Intridea authored the book alongside Brendan Lim and Jeremy McAnally.

In the book you'll explore key Cocoa design patterns, along with a few twists that MacRuby makes possible. You'll also pick up high-value techniques including system scripting, automated testing practices, and getting your apps ready for the Mac App Store. It was written for Rubyists by Rubyists and no previous experience with Cocoa, Objective-C, or Mac OS X is required!

I asked Jerry what inspired him to work on this book:

MacRuby in Action bridges that gap between two great development communities: Mac desktop development and Ruby. If you're a seasoned web developer using Ruby on the web then MIRA is a gentle intro to the Cocoa runtime and Apple's development tools. If you're a veteran Mac developer, then MIRA shows you the dynamic and fun nature of Ruby. Macruby gives you the full power of the Cocoa framework to help you build native desktop apps that are indistinguishable from their Objective-C counterparts.

The Ruby community prides itself on test driven development, and the same practices can be applied to MacRuby. The book also cover gotchas and other tips to watch out for when bridging between these two technologies. The examples showcase commonly used components and help you get your feet wet in practical development while showing key development concepts.

You can get your eBook copy of MacRuby in Action today or preorder your pBook version now through Manning! After you've had a chance to digest some of the content, we'd love to hear your thoughts on the book. Leave your comments below or let us know on Twitter!

Additionally, let us know in the comments why you want to learn MacRuby and get a chance to win a free MacRuby in Action eBook today!

Categories
Author

Demosphere, a leading provider of web-based administrative tools for youth sports organizations approached our mobile development team to help give their users mobile accessibility. For some time, they have provided an IVR interface to youth sports organizations to phone in results of soccer matches via cell phone voice commands. Demosphere wanted to break into the mobile app space because they knew that's where their users were; so, they asked us to assist with creating custom mobile applications for Android and iOS devices.

One of the primary directives was to give the mobile apps functionality and aesthetics similar to the system Demosphere users were already accustomed to. Our team worked closely with Demosphere to define a look and feel that would mimic the experience offered by the already popular voice system. We were able to utilize the structured interactions of that system to quickly and elegantly develop an Android and iOS solution that provided the same login and interaction system as the voice interface, coupled with a familiar and stylized input system.

The UX team worked directly with the client to create blueprint documents that covered the use cases and interactions that would be most straightforward for their users. Following that phase, they worked with their marketing department to define a UI that was on target with their brand.

In working with our vision for the user experience, German and Yincan engineered the development of the Android and iOS applications.

We employed a Kanban agile process for design and development; this lean development practice allowed us to consistently deliver in-process working versions of the applications and adjust to Demosphere's feedback as we developed. Following a few short weeks of development, Demosphere recently announced PhoneItIn for Android and iPhone.

PhoneItIn™ is Demosphere's revolutionary score reporting system. Rather than reporting scores in front of a computer, you can now report scores on the go from your mobile device. For those with iPhone or Android devices, a free app allows easy score reporting with no phone call required!

Ashley Ralph, Demosphere Blog

The whole process went smoothly thanks to utilizing web-born development practices and a tight feedback loop. Congratulations to the Demosphere team on penetrating the mobile app market!

Categories
Author

Here at Presently we understand that the key to staying connected is mobility so we've been working hard to improve our applications for all of our mobile platforms! In last week's announcement on the new Presently Desktop app, we promised you an update for Presently Android, and we're here to make good on that promise! Starting today you can uninstall the old version and visit the Android App Marketplace to download the new version of Presently.

Improvements

We've made several critical improvements from the previous version, including:

account-settings.png

Preferences.png

Preview

Work Continues

We hope that the new Presently Android app helps you stay connected to your network no matter where you are, and we're confident you'll be happy with the update! Our developers have been busy this year and we're not slowing down. An update to our Blackberry application is on the way, and our iPhone app was updated last week, so be sure to tell your coworkers to grab whichever application suits them! As always, if you have any feedback about the app, or need any help please don't hesitate to shoot an email to support@presently.com or visit and search our knowledgebase for more answers.

What is Presently?

Presently is the perfect microblogging solution for businesses. Communicate and collaborate in real-time, in a secure Twitter-like environment built for the enterprise. If you're not using Presently yet, let me give you a few reasons to check it out:

  • Empower your employees - increase productivity and creativity through collaboration via Presently.
  • Enable your employees to easily share files and media.
  • Easy solution for groups or departments to collaborate on projects.
  • Track ongoing conversations with threaded view and inline reply options.
  • Past information is available in an instant through Presently's search tool.
  • Our Desktop, Mobile, and Web applications give you the flexibility you need to access Presently anytime, anywhere.

So try it out today and see what the power of real-time collaboration and communication can do for your company. You'll wonder how you ever lived without it!

Categories
Author

Today, we're releasing some updates for Presently's Chrome Extension. Current users on version 0.0.4 will notice a few changes in version 0.0.5. Here's a rundown of the update:

  • Utilizes full-host accounts. This means that you'll need to enter your full url, including protocol.'
  • Doesn't allow updates to be submitted with empty text.
  • Maintains threading relationship during inline replies.

If you're not already using the Presently Chrome Extension", give it a try today! It gives you full access to your Presently network, letting you view and post updates and stay up-to-date throughout the day. The small notification icon that sits next to your address bar is unobtrusive yet distinctive enough to offer you a gentle reminder that you have unseen updates waiting for you.

Here's how to get started:

What is Presently?

And if you're not using Presently yet, well that's just crazy! I mean, have you heard of microblogging at all? Twitter? Presently is the perfect microblogging solution for businesses. Try it out today and encourage real-time collaboration and communication between your employees. You'll wonder how you ever lived without it!

Categories
Author

Twitter’s Streaming API is one of the most exciting developments in the Twitter API in some time. It gives you the ability to create a long-standing connection to Twitter that receives “push” updates when new tweets matching certain criteria arrive, obviating the need to constantly poll for updates. TweetStream is a Ruby library to access the new API.

Installation

Installation of TweetStream is simple, it’s available as a gem on GitHub and Gemcutter.org. To install it from GitHub:

gem sources -a http://gems.github.com gem install intridea-tweetstream

To install it from Gemcutter:

gem sources -a http://gemcutter.org gem install tweetstream

Usage

TweetStream creates a long-standing HTTP connection to Twitter, so unlike other Twitter libraries you don’t simply run it once and deal with the results. Instead, you provide a block that will be yielded to with each new status that arrives. The most basic example is:

require 'rubygems' require 'tweetstream'  TweetStream::Client.new('user','pass').sample do |status|   puts "[#{status.user.screen_name}] #{status.text}" end

This will provide you with a small sample snapshot of all of the updates being posted to Twitter at this moment and print them to the screen. There are also methods available to track single-word keywords as well as the updates of a specified list of user ids (integers, not screen names). You can do that like so:

# Track the terms 'keyword1' and 'keyword2' TweetStream::Client.new('user','pass').track('keyword1', 'keyword2') do |status|   puts "[#{status.user.screen_name}] #{status.text}" end  # Track users with IDs 123 and 456 TweetStream::Client.new('user','pass').follow(123, 456) do |status|   puts "[#{status.user.screen_name}] #{status.text}" end

Handling Deletion/Limit Notices (Updated in 0.1.4)

Sometimes the Streaming API will send messages other than statuses.
Specifically, it does so when a status is deleted or rate limitations
have caused some tweets not to appear in the stream. To handle these, you can use the on_delete and on_limit methods. Example:

TweetStream::Client.new('user','pass').on_delete{ |status_id, user_id|   Tweet.delete(status_id) }.on_limit { |skip_count|   # do something }.track('intridea') do |status|   # do something with the status like normal end

Daemonization

One of the most useful features of TweetStream is its built-in daemonization functionality. This allows you to create scripts that run in the background of your machine rather than taking up an active process. To create a daemon script, you simply use TweetStream::Daemon instead of TweetStream::Client. Here’s an example:

require 'rubygems' require 'tweetstream'  # The third argument is an optional process name. TweetStream::Daemon.new('user','pass','tracker').track('keyword1','keyword2') do |status|   # Do something like dump the status to ActiveRecord   # or anything else you want. end

If you were to place the above code in a file called tracker.rb you could then run ruby tracker.rb to see a list of daemonization commands such as start, stop, or run.

TweetStream is a simple wrapper on the Streaming API, but with built-in daemonization provides powerfully flexible means of accessing the Twitter Streaming API using familiar Ruby tools. More complete code documentation is available at rdoc.info.

Update: I overlooked the deletion and rate limit notices when I wrote the initial version of the gem. As of version 0.1.4 these are handled properly.

Categories
Author
1
Subscribe to Release