Displaying prepared code with syntax highlighting on Android

I’m a fan of giving code snippets together with working demonstrations. I’m much more likely to trust code if I can see it and watch it work, as opposed to just reading it and hoping it still works. Has it been deprecated since it was written? Will it throw warnings? Did the author write this from memory, perhaps never even trying it? With a simple demonstration these questions disappear.

When I was asked to explain some Android features to my colleagues, I planned to compose demo apps with prepared, read-only code snippets. But as you can imagine, just dumping Java code into a TextView was a mess. The formatting was all wrong and (at least for me personally). Reading code without syntax highlighting is a pain. Fortunately, there is a way to fix this.

Read More

Using message queues in cloud applications

You can consider message queues as a way to achieve parallel computing in an application. In this post, we dive into the different message queues out there and how to implement a message queue in an application.

Read More

Speeding up SSH session creation

Establishing a new SSH connection usually takes only a few seconds, but if you’re connecting to a server multiple times in succession the overhead starts to add up. If you do a lot of Git pushing and pulling or frequently need to SSH to a dev server, you’ve probably felt the pain of waiting for SSH to connect so you can get back to doing work.

One of SSH’s lesser known features is the ability to reuse an already-established connection when creating a new SSH session. This means you only have to pay the connection overhead once, making future sessions incredibly quick to start.

Read More

Scaling horizontally: Handling sessions on the open cloud

Wayne Walls wrote a great article on the Rackspace Blog around horizontal scaling, a pillar of cloud application design. When designing applications in the cloud, typically you need more than one server performing specific tasks.

{% tweet https://twitter.com/DEVOPS_BORAT/status/274366602252804096 align=‘center’ %}

These groups of servers or roles or tiers are sometimes load balanced or exist as a pool of servers polling a message queue for work.

Read More

Using a custom kernel with the Ubuntu Installer

EDIT: This blog post has been edited! As it turns out, the preseed was stored in a location that didn’t always work. Instead, we now decompress the initrd.gz, and add a preseed there. This is a better location, because the Ubuntu operating system installer always looks for it there, even if not told to. We also moved installing the new kernel to the end of the preseed, to be sure it runs all the postinstall scripts. We changed how we remove the 2.6 kernel to specifically catch the version before removing it.

Here at Rackspace on the Cloud Monitoring team, we use Ubuntu 10.04 LTS. We recently purchased some new Dell Poweredge R720 (our older standard hardware wasn’t offered anymore) and we found out the new hardware is not supported by the 10.04 default kernel!

Our original workaround was to build the new drivers against the 10.04 2.6 kernel, and load them at install time. At the end of the install, we would then manually install the new kernel, remove the 2.6 kernel, and then reboot. This worked, but it took an awful lot of time.

Therefore we set out to build an Ubuntu 10.04 installer that runs on, and installs, a more recent kernel.

Read More

How I learned Ruby On Rails

Bret McGowen is a software developer at Rackspace, designing and building RackConnect, which lets customers have the best of both traditional and cloud hosting.

For most of my professional programming career I have worked with the .NET framework. However, a recent side project prompted me to learn the open source Ruby on Rails framework. As you might imagine, there are some major differences between Ruby and .NET, but there are some compelling reasons to learn Ruby on Rails. Through my journey, I found some great resources for learning Ruby on Rails, and whether you are a seasoned developer or simply taking the first step into learning the framework, here are some of the ones that I found extremely helpful.

Read More

Python magic and remote APIs

This is a guest post by Jesse Keating, a Racker working on DevOps for Rackspace’s Cloud Server products. You can read his blog at http://raxcloud.blogspot.com/ or follow @iamjkeating on Twitter.

I’m a pretty big fan of Python as a programming language. It allows me to program by discovery, that is poke and prod at things until the work. Not having to compile an entire program every time I change something is pretty fantastic, as is the ability to insert a debug statement and be able to break a program at that point, then run arbitrary python code within that context. Pretty indispensable to how I write software.

Another thing I like about Python, which some may not, is the ability to do magic things. Not quite so magic as xkcd would like us to believe, but fun stuff indeed.

Read More

Protect your infrastructure servers with bastion hosts and isolated Cloud Networks

This guest post was contributed by Mr. Brandon Philips. Brandon is part of a small team of Rackers getting the Rackspace Cloud Monitoring Agent ready for launch. The Agent helps customers monitor the internals of their servers and application. You can check out his site at http://ifup.org, find him at local San Francisco meetups and check out his code on Github.

The public internet can be a scary place for servers. Log files of servers attached to public addresses shows regular port scans and URL snooping. These log entries are the inescapable reminder that your hosts are always one misconfiguration away from disaster.

This guide teaches you how to create a bastion host and an isolated cloud network, so you can reduce the number of servers that have to encounter these threats.

Read More

Rate limiting with Repose, the restful proxy service engine

Chad Lung is a software engineer on the Rackspace Cloud Integration team and is the maintainer of Atom Hopper. Be sure to check out his personal blog at http://www.giantflyingsaucer.com/blog/ and follow @chadlung on Twitter.

I recently wrote an article introducing Repose, which is a sponsored open-source project that is built to scale for the cloud. Repose is used within Rackspace as a a key element of our internal OpenStack.

Read More

OpenStack for Windows Users: Installing Linux

This is a guest post by Duan van der Westhuizen. Duan works at Rackspace in Enterprise Product Development and has been a Racker for almost 6 years. Duan started in our EMEA office where he also had roles in Business Intelligence and Customer Support. He has over 15 years of technology experience across various fields from technology strategy, engineering, development and database design. Duan is a tech at heart who is passionate about leading edge technologies and finding ways to solve market problems through new and innovative solutions.

In this second post of my blog series about learning to deploy my own OpenStack private cloud, I tackle the installation of the operating system I will use to run OpenStack. I had to do quite a bit of groundwork to understand the basic installation and configurations to ensure I ended up with a running system. Below I document my steps, as well as outline the similarities with Windows Server and other Microsoft technologies.

Read More