Skip to main content

Mobomo webinars-now on demand! | learn more.

Our developers tend to have interesting conversations throughout the day in Socialspring Stream, our communication and collaboration application. It occurred to me today that it would make sense to take some of the useful tidbits of information that surface there and share them with the rest of the development community! After all, the conversations are captured already - all I need to do is bundle up the relevant bits of information and serve them to you via our blog; in other words, expect more quick posts of tips and tricks here!

Fast Project Searching With Ack

You can set ack to be grep within vim, in order to make searching within your project faster and more effective. It’s a great programmer search tool. Here’s how:

  • Install ack (instructions found here)
  • Then in your .vimrc file “set grepprg=ack”.
  • Then whenever you “:grep ” vim will use ack instead of grep!

Why would you do this? Because its so much faster! BetterThanGrep cites these reasons (among others) in this list on their site (full list here):

Top 10 reasons to use ack instead of grep
  • It's blazingly fast because it only searches the stuff you want searched
  • ack is pure Perl, so it runs on Windows just fine. It has no dependencies other than Perl 5.
  • Searches recursively through directories by default, while ignoring .svn, CVS and other VCS directories.
  • Ignoring .svn directories means that ack is faster than grep for searching through trees.
  • Which would you rather type?
    • $ grep pattern $(find . -type f | grep -v '.svn')
    • $ ack pattern
  • ack ignores most of the crap you don't want to search
    • VCS directories
    • blib, the Perl build directory
    • backup files like foo~ and #foo#
    • binary files, core dumps, etc

Today's Vim tip was brought to you by Adam Bair, who was giving another developer advice on grepping over a project directory. Check back often for more tips, or follow us on Twitter for timely notifications about similar tips and tricks!

Categories
Author

Last week, I packed my bags and headed for Norfolk, VA to speak at the Mid-Atlantic Developers Expo. I've spent the better part of the past year traveling the country, speaking about Geospatial Programming using Ruby and Rails. As a long-time lover of maps, the topic has been a joy to introduce to the community of Ruby developers, at both small regional conferences like MagicRuby or MountainRuby, and at major national conferences like RubyConf 2010 and RailsConf 2011.

MADExpo, however, was a different kind of conference. MADExpo is primarily a conference attended by Microsoft .NET developers. I was nervous about how my talk, primarily aimed at Rails developers, would be received by "the other side." What could I possibly tell a bunch of .NET guys about doing Geospatial apps if my expertise is Rails?

As it turns out, quite a bit. I was genuinely surprised by the interest, attention, and questions I received during and after my session. Most folks were genuinely interested to learn how Rails developers are doing GIS apps, and had insights to offer about how certain problems are solved using .NET.

One of the main points of my speeches on Geospatial Rails is that "we should draw inspiration from outside our bubble of knowledge." Old-school desktop GIS has a lot to teach web developers about what is possible, what is useful, and what is realistic. MADExpo made me realize that there's another piece of this argument that I had been missing. Not only should we be looking at what desktop GIS can teach us: we should be looking at what users of other web stacks can teach us as well.

The slides from my presentation are available on Scribd. I welcome feedback and ongoing conversation about the future of Geospatial programming, and I'm looking forward to bringing a modified version of this presentation to the fifth annual Lonestar Ruby Conference in August this year! Hope to see many of you there. In the meantime, feel free to leave your comments below or ping me with questions on Twitter!

Categories
Author

In April, I announced GemNotifier, a new Intridea SparkTime project. GemNotifier is a web app I created to send notifications to users when the gems they subscribe to are updated.

Open Source Announcement

Today, I'm excited to announce that we are open sourcing GemNotifier. At Intridea, we have a long history of support for open source development, and we make every effort to open source tools and projects that can be of use to the greater development community.

The code for GemNotifier is hosted at Github. Anyone who might be interested in contributing to the project can fork it from Github and make pull requests. You can also submit any issues you encounter, using Github Issues.

Improvements

Before open sourcing GemNotifier, I took the feedback I received from users and made some key changes to the UI and overall functionality. The most requested feature was to be able to subscribe with Gemfile, which I added recently. GemNotifier also now has 100% test coverage and uses SASS.

What is GemNotifier?

If you missed the detailed post about GemNotifier in April, you can read it here. But for a quick rundown:

GemNotifier is a notification service that updates users when the gems they have subscribed to are updated. Rubyists can subscribe to their favorite gems (now using their Gemfile!) and they will get timely email notifications when those gems are updated. The service helps to keep you informed of changes and updates to the gems your projects are dependent on.

I'm looking forward to more feedback on the app from the community, so please share your thoughts below!

Categories
Author

A good user experience is well-known in the tech industry as a necessity for getting optimal adoption from users. If you don’t take the user into consideration when designing and developing a product, then in turn, there is a good chance that the user won’t take your product into consideration either. This piece of knowledge is rarely thought of in the grand scheme of things. No one ever thinks of UX as playing a pivotal role in the brand equity of companies, or the even bigger picture of their market value. Market value can be related directly to the overall stigma about a company’s user experience.

Sure, the stock price of a company has many forces pulling and pushing it; macro economics, outcomes of quarterly statements, and even natural occurrences. Even with all of these factors and variables, we can still spot trends and extreme differences between companies that exist in the same space and make the same type of products.

Ah, the storied, time honored tradition of comparing Apple to Microsoft. We’ve all heard it before, and we’ve all (well most of us) have touted that Apple products are better designed and engineered than Microsoft’s counterparts. People like using them better, people like the way they perceive themselves while using them. We could go on and on about the differences in the perception of both brands. A fact that is somewhat obvious but rarely bridges between creatives and business folks, is that this subjective divide in UX between these two brands can be quantitatively measured in market value. Microsoft’s stock has remained stagnant over the past 10 years, fluctuating between $20-40 per share; while Apple’s has grown over 3000%.

Let us not forget Google, who just came out with the widely acclaimed Google + this past week. They seem to have hit the UX bullseye in the eyes of tech experts (most of us at Intridea are pretty psyched about it, as well as these other blogs: need to add). This stock has risen almost 10% in the past week. Granted, the markets are making a bullish run right now, but still 10% is nothing to sneeze at.

Considering how users respond to products, maybe it is time to assess product releases and redesigns right next to quarterly reports as indicators on whether or not to pull the trigger on buying stock.

- Look into Target
- Johnson & Johnson
- Braun
- Nike
- Burton
- MySpace.com
- Need to define UX
- Bloomingdale's

Categories
Tags
Author

Earlier this week we gave you some updates on the RefactorMyCode project that we took over from its creator, Marc-André Cournoyer this April. When we made the announcement that we were taking over RefactorMyCode.com, we let everyone know that we intended to open source the project eventually. That day has come!

The Great Open Sourcing

We planned to open source the project once we converted it to Rails 3 and made various other improvements. Thanks to the work of a few of our developers, notably Andy Wang and Paul Ostazeski, RFMC is now running on Rails 3, has significantly improved test coverage, and has undergone several rounds of refactoring.

The RFMC History

RefactorMyCode is a community for - you guessed it - refactoring code. Marc-André came up with the idea in 2007 when he became frustrated with the way Wordpress blogs handled formatting of the code and the comment structure. Since its creation, RFMC blew up on Reddit, Digg and other niche sites. When Marc-André put out a call for someone to take over management of the site we were thrilled to rise to the occasion. We had a small team of developers that jumped on the chance to work on RFMC as their SparkTime project, and they've been working diligently to get the code cleaned up and ready for open source.

We're excited to make RFMC available to developers to hack on. At Intridea, we believe strongly in the philosophy and culture of open source development (see our list of open source projects on Github). The repo is on our Intridea Github account, and we encourage contributors to make pull requests and submit issues using Github Issues. Of course, we're happy to answer any questions and get feedback on the project!

Happy coding!

Categories
Author

A few years ago, I found RefactorMyCode.com by accident while searching for programming tips. I registered on the site right away because I liked the way it fostered sharing code with other programmers. It was a strong community that I wanted to be a part of.

Three months ago when I began my career at Intridea, I was prompted to select a SparkTime Project to work on in my spare time. At Intridea we are encouraged to work on interesting projects as often as we can. The SparkTime initiative allows us to organize our efforts and team up to accomplish things more efficiently. I was surprised when I found that RefactorMyCode was on the SparkTime list, so I signed up happily to help out.

About RefactorMyCode

One of my colleagues, Jon, talked about the RefactorMyCode project two months ago in a blog post. It was originally running on Rails 2.0.2, which was really out of date. Thus, I decided to upgrade it to Rails 3.0 before open-sourcing it.

What's new with RefactorMyCode in last few months?

RefactorMyCode.com

Upgrading from Rails 2.0.2 to Rails 3.0 has been time consuming since there is a two year gap between the two versions. The main difficulties have been to fix routes and ajax related issues. In this situation the rails_upgrade plugin has really helped out.

In our case, it helped to cancel some of the ajax requests and refactor them as direct requests for more flexibility. We removed the old will_paginate and used kaminari as the new pagination solution. Similar updates included upgrading to acts-as-taggable-on and syntax highlight functions with coderay.

We also refactored the existing authentication solution with omniauth, so the new Rails 3 version will allow you to login to RefactorMyCode via more third party services, such as Github, Twitter and LinkedIn etc.

Is It Ready for open source?

The answer is, YES! Or, yes, almost!

However, I am still adding RSpec test code to the Rails 3 version and I am also on the hunt for a better (pure Ruby) syntax highlighting solution. So far it seems that Albino will end up working well for this. The project will be open sourced very soon (in the next 1-2 weeks), and we'll make an announcement about that here on our blog and our Twitter account. We are looking forward to involving the community in this project!

Categories
Author

Today and tomorrow, Intridea will have a presence at MADExpo (Mid Atlantic Developer Expo). Not only are we sponsoring the event but Pete Jackson, our Managing Director, will be giving a presentation on the geospatial web, entitled "Location Matters. The world of Geospatial web and mobile applications."

Description:

Location-based applications are everywhere, yet most modern web developers haven't ventured far beyond superimposing a few locations on a Google Map. In this talk, developers will learn about the many spatial programming possibilities within the web and mobile development landscape, including non-location-based applications, geographic applications using custom imagery, answering difficult questions using spatial queries, Moving Beyond the Dot-On-The-Map, and how to get started with Geospatial Programming today.

You can catch Pete's presentation in Room 106 on Friday at 1:30pm. And if you're there, Intridea Senior Partner Chris Selmer and VP of Client Services, Marc Garrett are at the event today and tomorrow so be sure to track them down and say hello. Intrideans enjoy opportunities to talk about anything tech related, so don't hesitate to hit us up for conversation.

If you aren't at MADExpo this year keep an eye on our blog next week for Pete's debriefing of the event and slides from his presentation!

Categories
Author

When you work as a (mostly) distributed team you depend on really efficient communication and collaboration software to bridge the distance between developers, designers, writers, and managers. At Intridea we're accustomed to working together - apart, and productively so. We depend on a mix of solutions we've built ourselves (like our new Socialspring suite) and trusted apps from others (like Hipchat, Highrise and Skype). This week Michael Bleigh introduced a new app, Turntable.fm to the Intridea team that has nothing to do with productivity or communication, but has a whole lot to do with camaraderie.

For the past two days Intrideans have been hopping in and out of the Intridea room on Turntable.fm and taking turns DJ'ing and listening to each other's music. It's so simple, and yet it's a powerful tool that allows us to feel like we're in each other's offices, hacking together, eating lunch, consuming caffeine, and rocking out. And since we're all busy coding away and working hard to meet deadlines, it's a nice way to feel connected to the people that we're working so closely with. It offers a sense of permeating presence, despite the physical distance between all of us.

Every now and then you come across an app that you never knew you needed. For the music junkies at our company that are always using Mounce (Music Announce, a command-line script that Adam wrote to update Presently chat with the name of the song you're currently listening to), Turntable.fm has become a fun source to share our musical tastes live-action style.

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

Today we launch a suite of social enterprise solutions that will change the way you do business. Introducing Socialspring: business software, humanized. We've reimagined how social enterprise software should work and our tools are rooted in the modern tenets of social interaction to engage, empower and strengthen your employees in the areas of productivity, company culture, process, and workflow.

Web-based consumer software has drastically changed what employees expect out of the tools they use to get work done. Yet business software has not kept pace. This is why Socialspring applications have been designed with a focus on real world behavior for easier and more natural collaboration, communication and sharing.

Socialspring launches today at the Enterprise 2.0 Conference in Boston. The Enterprise 2.0 crowd is a diverse mix of thought leaders, small and large business owners, forward-thinking CTO's, and game-changing innovators. It makes sense to unveil Socialspring among this crowd and we're excited to engage with people in various markets to show them how our software can open up dormant lines of communication, expose hidden resources within their companies, and give their employees the emerging tools necessary to collaborate and innovate in today's enterprise world.

To kickoff this big launch we're announcing the first three Socialspring applications: Answers, Stream and Links. All Socialspring applications will be accessible via Passport, our custom single-sign-on system that simplifies and amalgamates the process of switching between multiple business applications within one environment.


Answers is a knowledge sharing solution for the enterprise that puts the expertise of your entire company at your fingertips. With Answers, stop repeating efforts and missing opportunities with mass emails and start building a foundation of knowledge for your company.

  • Spend less time searching for information. Answers helps to centralize relevant and frequently requested information - information that is often stifled or lost through traditional email or phone conversations. Ask questions and get answers from your own in-house experts. Answers can be tagged for quick search and retrieval, ensuring that you can always find what you're looking for without fuss. It's information management for employees, departments and entire organizations.
  • Build A Network of Experts. Information trends will naturally surface in Answers. You'll be able to easily identify experts on subjects within your company and expand your own expertise.
  • Allow information to unfurl. Your employees need access to information - whether it be about your benefits programs, protocol for sales inquiries, standard procedures for interviewing candidates, current marketing strategies, guidelines for implementing a new design process, best practices for development and more. Liberate this beneficial information from antiquated two-way communication systems and make it available to anyone that might need it today, tomorrow, or a year from now.
  • Strengthen your company culture. Your employee's lives are abuzz with emerging social mediums. Answers brings social information sharing to your company in a way that is engaging, intuitive, and rewarding. The fun badge and karma system ensures quick and easy adoption and continued, worthwhile participation by rewarding your employees for exchanging information and building reputations as experts.


Stream is the secure, communication and collaboration platform for today’s enterprise. Your employees have great ideas. Stream unlocks those ideas with a platform designed to foster collaboration, communication and engagement in your company.

  • Better ideas, faster. The best ideas are a result of collaboration among bright people. You've hired the brightest thinkers, innovators and strategists to lead your company; now, empower them to work together and exchange and develop ideas in real-time. Stream gives your experts the competitive edge to innovate quickly and dynamically; harness the advantage of group-thought within your company.
  • Persistent Awareness. Communication is everything in the enterprise. Stream allows your employees to stay connected to the lifeblood of your company anywhere they go. Available on all major mobile, web or desktop devices, Stream provides a method for immersion whether you're at your desk, walking to lunch, in a meeting, at the gym, driving to client sites, or trapped in a server closet. Never miss a discussion around your project or announcements about product launches and press coverage. Stream keeps you persistently aware.
  • Centralize the important conversations. Your employees are always thinking, creating, and pioneering. Some of their best ideas will come to them in the lunch room, around the water cooler, driving home at the end of the day, or with a peer after work at the local wine bar. Stream acts like a virtual water cooler that brings everyone together to share and develop those bright ideas in one distinct space that is accessible any time of day or night. It provides a direct solution for exchanging ideas, collaborating on projects within groups, and relaying valuable information to specific departments, teams, or organizations.
  • Invoke passion. Nothing sends the message that you want your team to go forth and create like giving them a social collaboration tool that was designed for today's active enterprise. Giving your employees the tools to thrive creatively and professionally will result in higher levels of enthusiasm, loyalty and commitment.
  • Share media. Share pictures, audio, video, text and other files easily with Stream. Upload a design mockup and get instant feedback from your teammates. Share a screencast or new product ad and gauge interest. Collect opinions on website content before it's made live. Stream gives you the interactive platform to deliver information to the people that need it.


Links is the ultimate link sharing application for the enterprise that saves you time and space while producing valuable data. It's a simple yet powerful and secure URL shortening tool that tracks what is being shared and detects trends across departments or your entire company.

  • Protect Your Information. Your employees share hundreds of links a day to private information. Protect sensitive information with Links by setting passwords on shared URLs and creating a viewing time frame with expiration dates. Enjoy the security of knowing that shared information doesn't have to be freely accessible to just anyone; with Links it can be safeguarded so only the right people get access.
  • Social Minimalism. Encourage beauty, simplicity and function through internal link sharing. Shorten nonsensical, endless links and share them effortlessly with co-workers. They'll appreciate your succinctness.
  • Gain insight. Analytics improve our understanding of behavior and help us to form smarter strategies. With Links you can detect link sharing patterns and act on them. Track which links are clicked on to see how many people have viewed your links. Detect which types of links receive more clicks. Use the information to improve your strategy for delivering information, garnering views and calculating the optimum time of the day/week to share the information.

Safe. Secure.

In order to facilitate meaningful adoption, measurable success and immersive participation we knew that Socialspring had to be safe and secure. We're not only giving your company a way to engage, ignite and reward your employees through social collaboration and real-time communication - we're making sure all of those exchanges and innovations (and all the information that's produced as a result) are kept safe. We offer a Software As A Service (SaaS) option or a Behind-The-Fireall (BTF) option for installation for the highest level of security.

Pricing

Socialspring is comfortably priced to accomodate the budgets of companies large and small:

  • Socialspring Answers - Powerful Enterprise Knowledge Sharing: $2/user/month
  • Socialspring Stream - Enterprise Strength Status Updates: $2/user/month
  • Socialspring Links - Internal Link Shortening with Analytics: $1/user/month

Forging Our Own Path

We've talked to hundreds CEOs, CTO's, designers, developers, business strategists, and business owners and one thing was clear: business software needed to be rethought. That's why we took our own team of innovators and solutionaries and together we built the most robust and complete suite of social enterprise applications. We understand the needs of your users including your project managers, marketers, sales staff, HR professionals, board members and engineers.

Do not follow where the path may lead. Go instead where there is no path and leave a trail.

Ralph Waldo Emerson

You can depend on Socialspring to change the way your employees engage, create, and interact. Call, email, or signup to receive more information about how Socialspring can benefit your company. We're humanizing business software. Join us.

Categories
Author
Subscribe to