Our DEVOPS team manage a NetApp FAS2020 filer for a customer, and recently our network monitoring systems began reporting an issue connecting to the device’s BMC (Board Management Controller). This is the independent processor that provides the lowest level access to the system. In theory, if everything was to break and the machine was to blow up, we should be able to log into the BMC and find out what is going on. It’s an entirely separate computer tasked with providing a (secure!) back-door to the system in case of catastrophic failure.
Even though NetApp has a phenomenal reputation – at a technical seminar last year, a sales engineer said that no NetApp customer has ever lost data due to a hardware failure – I still don’t feel comfortable without access to the BMC.
Access to the BMC (on other NetApp devices the LOM controller is called a Remote Management Controller, or RMC) is via SSH, using naroot as the username. From here you can move “up the chain” to a system console, and use CTRL-G to move “down the chain” back to the BMC.
mlambie@prime:~$ ssh naroot@ilca-netapp-bmc
naroot@ilca-netapp-bmc's password:
=== OEMCLP v1.0.0 BMC v1.2 ===
bmc shell ->
bmc shell -> system console
Press ^G to enter BMC command shell
Data ONTAP (ilca-netapp.thefrontiergroup.net.au)
login: root
Password:
ilca-netapp> Mon Mar 12 11:40:27 WST [console_login_mgr:info]: root logged in from console
ilca-netapp> <ctrl g>
=== OEMCLP v1.0.0 BMC v1.2 ===
bmc shell ->
The filer also allows management via SSH directly, and not through the BMC. I used this shell to restart the BMC.
ilca-netapp> bmc help status
bmc status
- Display status for a Baseboard Managment Controller (BMC).
ilca-netapp> bmc help reboot
bmc reboot
- Reboot the Baseboard Managment Controller (BMC)
ilca-netapp> bmc reboot
ilca-netapp> The BMC rebooted successfully
It looks like the SSH daemon was simply hung (it had an uptime of 270+ days prior to the reboot) and restarting the BMC through the management console in this way corrected the issues the monitoring systems were reporting.
If you’re looking for an engaging and interactive way to learn Ruby, I’d recommend Ruby Koans by EdgeCase. I think that the koans are especially interesting if you’re coming from another programming language like PHP or Java, because they rely on some basic programming knowledge, but don’t presume any Ruby-specific abilities.
The Koans walk you along the path to enlightenment in order to learn Ruby. The goal is to learn the Ruby language, syntax, structure, and some common functions and libraries.
By manipulating and building upon Ruby’s TestUnit framework, the EdgeCase developers have created a step-by-step process for teaching Ruby through the practice of “Red, Green, Refactor.” They’ve added some simple game mechanics too, by showing your systematic progression through the 270+ challenges (puzzles). Reaching enlightenment results in a pretty ASCII graphic, and a legitimate sense of achievement.
Before you start with the koans though you’ll need a working Ruby installation. I recommend you take a look at the excellent rvm project, which will allow you to install multiple rubies (1.8.7 and 1.9.2 for example, alongside each other) and multiple gemsets in your home directory. Former Frontiersmen and 2011 Ruby Hero Award winner Darcy Laycock was heavily involved in this project as part of the 2010 Ruby Summer of Code, so we really like rvm at TFG.
Lastly, if you’d like to have a play with the koans before diving in too deep, they’re available online through your web browser at Ruby Koans Online. This is a no-risk way of trying out Ruby (hint: team them up with why’s Try Ruby project) in your browser.
The Frontier Group is a boutique software development company based in West Perth. We have a strong focus on web software, and utilise Ruby on Rails and JavaScript to build web applications, and Objective-C for our iOS projects. We’re looking to take on experienced iOS and Web Developers and also a Development Manager (at TFG that means you’re a part-time project manager who also writes code).
Is this you?
You understand the difference between websites and web applications, and you want to write apps that matter for people that care about them.
You’ll have a track record of working on completed projects, and if you’re a Development Manager, you’ll have delivered some of these projects personally. You’ll have a few years commercial experience, probably working as part of a team doing solid but under-appreciated work. You will have experience with Mac, Linux or UNIX, but it might not be your daily environment. Similarly you will have an opinion about vi vs. Emacs or Python vs. Ruby, but you’ll understand that they’re just opinions.
You’ll care about your tools and will take real, genuine pride in the quality of the code you create. You won’t consider automated testing and continuous integration as optional components of a project, and will appreciate automated deployment procedures too. Learning new programming languages and getting more out of the languages you already know will excite you. Efficiency will be important too, and you’ll be looking for ways to automate your workflow and push the repetition off to a script.
You’ll be confident in your programming ability, regardless of the language you prefer, yet humble enough to seek guidance when needed. You’ll know how JavaScript can be used to enhance the web, and will have demonstrated experience with a leading JavaScript library. You might even care about SASS and HAML, if you’re really cool.
Using the right tools is important and we realise that. We don’t have a parent company dictating how we do things or what our “standard operating environment” is – you’ll get to make those decisions with us. We all use MacBook Pros for development, but you might want a new iMac, for example. You’ll keep up to date with current trends and care about using modern techniques and practices, as well as tools and technologies.
What we give you
Variable salary, dependent on position (Starting at $63,000 on probation)
9% superannuation (on top of salary)
A MacBook Pro with SSD (yours to keep, replaced every two years) ~$3,500
$1,000 travel allowance per year (parking, bike servicing, public transport)
Internet and mobile allowance ($80 each per month)
Current and relevant books, training, tools and gear
Opportunities to work from home/flexi-time
Pay reviews every 6 months with no ceiling on earning potential
Freedom to grow your role with our organisation
What you give us
Agreed units of production (standard working week)
Your creative genius and passion
How to apply
Send a short email to jobs@thefrontiergroup.com.au and reference your Github and Stack Overflow accounts, along with any Open Source projects you’re involved with. Include a resume if it’s three pages or less.
I was part-way through submitting an answer on Stack Overflow when the initial question was deleted. The developer was having an issue with Rails thinking that the singular of “faxes” was “faxis” when in fact it should be “fax”.
I thought it was an interesting problem, so here’s the answer I prepared:
You can overwrite or set Rails’ singularizations and pluralizations (properly called inflections) in config/initializers/inflections.rb
As you can see below, Rails now understands how to count “faxes” correctly. One fax, two faxes, three faxes, and so on. You can test that from within the Rails console:
We use Cucumber-Nagios at The Frontier Group to monitor live web applications and web sites. It’s the natural extension to the integration testing we conduct on our applicaitons as we develop them, and it gives us a deeper insight into an applications real-time availability and responsiveness… or so I thought.
Due to an oversight on my part, the Cucumber feature that we use to search this blog was failing “in real life” but passing according to Cucumber-Nagios. I was searching for a text string that should have appeared only after conducting a successful search of the articles, however it was also appearing in the list of popular articles on the sidebar. Whoops!
After the test started failing for real, because the blog post was no longer referenced in the sidebar, I dug deeper in an attempt to find the problem.
In the end Aaron did most of the hard work, and tracked the problem down to webrat not submitting the form properly. As such the response data that was being parsed was incorrect.
The trick that we used (and it is a nasty hack, to be sure) is to fool webrat into operating in “Rails mode”, whereby it POSTs the form properly. I added the last four lines to features/support/env.rb and it’s done the trick.
So if you’re having a problem with webrat posting data, maybe this will help you. Alternatively, if you have a suggestion on how this could be fixed in a cleaner way, please leave a comment.