Thursday we’re opening the doors to the San Francisco office and hosting a casual gathering for our fellow geeks. Want to see what other developers are working on or who’s using the latest and greatest gem/practice/database/etc? Do you have a side project or open source framework that you’re contributing to (or just using) that you want to show off, lightning-talk style? Do you want to see what success others are having with agile development? Want to learn how to make a wicked macchiato on our Italian espresso machine? It’s all fair game!
We’ll have a room with a projector dedicated to lightning talks and the rest of the space will be free for mingling and socializing. There will be beer and food. Doors open at 5:30 and we’ll stick around until 7ish; if people are still hanging out we’ll migrate elsewhere for more drinks. Carbon Five is located at 171 2nd Street Floor 4 (map), above the Tempura House.
Lightning talk topics on the docket thusfar:
- Alon will demo C5 Story Mapper
- Corey will discuss http-pulse, a node.js application for monitoring http
- Alex will discuss Wrong – a minimal assertion library for Ruby
- Christian discusses the outcome of a recent MongoDB development spike
- Jon discusses the Mission Artists United website
- Jonah will discuss an iPhone widget he built over the weekend at the iphone deve camp
Please RSVP below if you’re coming.
See you Thursday!
Next year will be the third time Carbon Five visits Austin for SXSW Interactive. We’ve proposed some hands-on, take-away focused sessions that we ourselves would enjoy and think you would too.
For example Embracing NoSQL – Your First Cassandra Project is an extension of the talk Mike gave at the Los Angeles NoSQL meetup a couple of months ago. The ultimate goal of the session is to NOT just “digg” (pardon the pun) into why many real-time social sites have started using Cassandra and other non-traditional storage systems, but to have you walking out with code to bootstrap your own projects with.
Similarly, in Get Your Act Together: Build Better iPhone Apps, Jonah plans on demonstrating the agile iOS development patterns he’s been documenting here on our blog. You’ll learn how you can continue to rapidly deliver (and have Apple approve) builds of your app while meeting the higher quality expectations of the maturing app marketspace.
Finally, Alon is bringing to Austin the quite literally interactive session of Play at Work: Agile Games for Productive Teams, which he presented earlier this year in San Francisco. By having you actually play through games we use every day such as “Planning Poker”, you’ll get a much better sense of how they can be incorporated into your own agile development efforts than any simple presentation could provide.
Of course, we don’t just want to talk about our experiences, but want to hear about yours too, either at the sessions or over a drink later that day! So if you’re interested, please click the links above and vote for our panels, as your voice is an important factor in SXSW’s panel selection process.
And if you see any of us at Austin next year or sooner, don’t hesitate to say “Hi”; we’ll take you up on those drinks!
Carbon Five has been using TeamCity as our continuous integration server for most of our recent projects, including our iPhone work. Out continuous integration environment monitors the git repository used by each project, runs the project’s tests each time a change is pushed to the repository, and can automatically produce an ad-hoc build of an app each time the tests pass.
Continue reading ‘Continuous integration for iPhone projects in TeamCity’
Previously I discussed our TeamCity configuration using RVM and mentioned that we often use git to deploy projects. Today I’ll share an example of how a TeamCity build agent can trigger deployments of a application hosted on Heroku and some of the challenges I found.
Continue reading ‘Deploying to Heroku from TeamCity’
We have been using TeamCity to manage the continuous integration, testing, and deployment of many of our recent projects. We have also been using RVM on all of our recent Rails projects to allow us to install multiple ruby versions and create isolated gemsets for each project. RVM proved to be particularly useful on our TeamCity build agents where it allows a single agent to build many projects without the fear that we will see gem or ruby version conflicts between projects or introduce dependencies on gems installed on the build server but not enumerated in the project. Here’s the configuration I have used to get our build agents to use each project’s RVM settings.
Continue reading ‘Using RVM on TeamCity build agents’
Alon and I will be giving an hour talk about agile development next Wednesday at the SFRuby meetup:
Agile software development provides a number of discrete practices to help you be a better programmer and a great provider of programming services to your clients, internal or external to your business. The continuous daily rigor of testing, refactoring, pairing and integrating is a great path to producing quality software. The process of defining short development iterations with regular delivery and review with your client encourages collaboration and ensures that you are defining and meeting expectations along the way. We’ll describe the agile development and planning practices that we have found to be most effective in our work over the last 10 years and hope to hear from the group what is working for you.
The event is full, but there’s a waiting list… go ahead and sign up if you’d like to join us. Hope to see you there!
Updated! Slides…
I’ve had a long-standing interest in taking client-side programming beyond display logic and input validation. The new HTML 5 technologies are making full-scale application development in the browser increasingly practical. Unfortunately, the needs of Carbon Five’s clients generally exceed the capabilities of purely client-side solutions, so I don’t get to spend as much time developing JavaScript as I’d like. Consequently, I challenged myself to solve as many of my day-to-day issues as possible by writing applications that require only a single HTML page and a modern browser to run. So far, this has resulted in five applications; they’re available — with some additional thoughts on this style of development — below the fold.
Continue reading ‘A few experiments with HTML 5 applications’
We’re growing our team in both the San Francisco and Los Angeles offices (yay!). We’re looking for bright, passionate developers who love to learn and work with their peers. We’re writing a lot of Ruby and JavaScript these days, but there’s also a fair bit of Objective-C (iPhone) and some Java as well. We’ll cross-train awesome candidates in the technologies they don’t know. Are you an awesome Java developer who’s Rails-curious… perfect!
Check out our jobs page (http://www.carbonfive.com/jobs) for additional detail.
Last week, Mike Wynholds presented at the inaugural Los Angeles No SQL meetup. The movement to these non-traditional data storage systems has exploded in the last year, and we had a chance to use Cassandra in one of our client’s projects. Cassandra is a column based datastore developed within Facebook, and open-sourced as a top-level Apache project. It is being used by its creators as well as Digg, Twitter, Reddit, Rackspace, and many others. For the meetup, our presentation covered what is Cassandra’s structure, how we used it, the challenges we faced, and the lessons learned. You can watch the presentation below, or you can grab the presentation with this PDF, and from its original Keynote file. And feel free to ask questions and leave comments below!
All UIViews have frame and bounds properties which define their dimensions. The similarity of these properties can cause some confusion when attempting to determine which property to use to calculate view sizes or reposition views.
The frame of a view is given in the coordinates of its superview so a view controller’s view’s frame will include offsets for the status bar, navigation bar, or tab bar. The bounds of a view are given in the view’s own coordinate system which does not include these elements.
In addition the frame property’s values are undefined if the view has any transform other than the identity transform. Rotating a view into landscape mode applies a transform to the view so it is not safe to rely on frame values for an app in landscape mode.
When a transform is applied to a view it does not apply to any subviews. A UIViewController or custom UIView subclass is therefore free to adjust the frames of its subviews to reposition them regardless of the device’s orientation. For example a UIView class can change the frames of its subviews within its layoutSubviews method no matter what transform might have been applied to the parent view.
Each view’s frame will position it relative to its parent view so an origin of (0, 0) will always place a subview in the top left corner of its parent view.
See the images below for examples Continue reading ‘UIView Frames and Bounds’