Technology

IV. Tactical Dispositions
1. Sun Tzu said: The good fighters of old first put themselves beyond the possibility of defeat, and then waited for an opportunity of defeating the enemy.
2. To secure ourselves against defeat lies in our own hands, but the opportunity of defeating the enemy is provided by the enemy himself.
3. Thus the good fighter is able to secure himself against defeat, but cannot make certain of defeating the enemy.

This section brings to mind the common phrase, “low hanging fruit,” which is often used in business and political circles to refer to easy targets for adding new business or reforming policies. What is often missing from those discussions, however, is the question, “How high are we capable of reaching?”

When cutting the budgets of time, resources and money for a project, the goal can quickly get out of reach. As the time allowance shrinks, you leave less room for planning which can cause a higher margin of error — thus requiring more time to fix. As resources shrink, either more time will be needed or more resources will need to be brought in near the end — most likely at greater cost. As funding is removed, the ability to respond to unforeseen issues (hardware failures, natural disasters, personnel issues, etc.) is greatly diminished and will result in the need for emergency funding.

Keep in mind, too, that the height of the low hanging fruit is relative to your own capabilities and the capabilities of your competition. Do not take on a project which, once initiated, could easily be taken over by a more capable competitor. At the same time, be on the look out for smaller competitors who have taken on more than they can handle.

The fruit which hang low today may be out of reach tomorrow. Be prepared to reach as high as you can, but hold back the temptation to reach too high — even if the project is just within your range.

Sun Tzu wrote:

III. ATTACK BY STRATAGEM
18. Hence the saying: If you know the enemy
and know yourself, you need not fear the result of a
hundred battles. If you know yourself but not the enemy,
for every victory gained you will also suffer a defeat.
If you know neither the enemy nor yourself, you will
succumb in every battle.

We assume that we possess an accurate understanding of our own skills and capabilities. Many people, however, tend to overestimate their own performance, skills or capabilities. When they do, they make a fatal mistake which guarantees they will never see success.

Take some time out of your busy schedule to assess and re-assess your own skills and capabilities. An excellent way to do this is to review and update your current resume at least once a year. That will represent your view (however accurate) of yourself. Once you’ve updated this document, make sure to seek honest feedback from your colleagues. Hand them a red pen and request they be as brutally honest as they dare. Promise to take their feedback seriously and without retribution. Their honesty (should they wield it) will certainly be difficult to swallow and could possibly shatter your self esteem, but you will be better off for the experience.

Next, be sure to obtain as much information about potential projects and teams with which you work. If your skills do not benefit the team or will not advance the project, you should bow out. You will have only a 50/50 chance of success and may end up damaging your standing with others. Beware that some people may misrepresent the scope or requirements of a project. Be sure you always set up an exit path to avoid those sorts of situations.

With a solid grasp of your own capabilities and enough research prior to taking on any project, you will succeed far more times than you fail.

Here are some hints and tips for those who are new to using ssh/OpenSSH for Linux system administration. Most of these tips have come from my recent work with a large number of Linux servers hosted on a VMware ESXi 4.x server farm.

Password authentication VS ssh key authentication

  • If you are administering only a few systems on a closed network (i.e. accessible only locally or by a secure VPN connection), then password authentication is probably OK, but you should consider using ssh keys anyway.
  • If your network needs to allow ssh access directly from the Internet or you are administering a large number of systems, then you should definitely use ssh keys.

Ssh-agent, scripting and cron

  • ssh-agent can save you typing in the password to your ssh key every time you need it.
  • This site gives a good overview of ssh-agent and includes some code you can add to your .bash_profile script to ensure your keys get added upon login.
  • Although there are hack-ish ways to get ssh-agent and cron to work together, you are probably better off setting up special keys to use with scripts that must be called via cron. Just keep in mind that keys without passwords are a security risk.
  • If you cannot risk using keys without passwords, consider running those cron scripts locally on each system. Utilize shared file space or e-mail to collect the results.

Bash one-liners and ssh with ssh keys

  • I’ve become a fan of using bash “one-liner” scripts to keep abreast of server stats such as load averages, available patches and disk usage.
  • Keep an up-to-date list of hosts in a file called hostlist.
  • Run your one-liners while ssh-agent has your ssh keys cached.
  • Here’s a template one-liner which checks uptime on each host listed in the file hostlist:

for e in `cat hostlist`; do echo $e; ssh $e "uptime"; done

  • In the above example, you can replace uptime with just about any command which exists on the remote host.
  • You can also synchronize some of the configurations under /etc with the above by utilizing either scp or rsync instead of ssh in that one-liner.

Turn your one-liners into scripts

  • If you find yourself using the same one-liner over and over, it is time to save yourself some typing and turn it into a script.
  • I like to keep these sorts of scripts under ~/bin. I also like to add that to my $PATH and create a simlink ~/scripts.
  • Some one-liners are good candidates to be turned in to cron scripts. Just keep in mind the risks of using ssh keys without passwords, and include logic to detect conditions you want to monitor. For example, you can run /proc/loadavg through awk to isolate one of the three figures and send yourself an e-mail if that average is too high.
  • Meeting topic was “graphics”, but we pretty much had a free-for-all discussion.
  • Last night I complied this list of graphics-related links. We really didn’t talk about this list all that much.
  • Dave Weis from Internet Solver had swag to hand out (spiffy tees) in celebration of being recognized in the Business Record as a Best Of
  • I brought some miscellaneous electronics and books to give away.
  • We met at Raccoon River Brewery around 7 PM.
  • The Iowa State Fair Parade was going on, so traffic was pretty bad getting in to downtown.
  • Microsoft Server 2008 with Hyper-V R2 is coming out soon. Sounds like there are going to be some Hyper-V improvements.
  • Debated security vs. business models for low-rate Web hosting. Many Web hosts do not pro-actively scan for security issues, adopting a strictly reactionary strategy. While economical, this can result in widespread outages if a vulnerability lands large numbers of hosts or entire subnets on black lists.
  • Several members are busy gearing up for VMWorld 2009

CHDK – Firmware hack for Canon point-and-shoot cameras

  • TJ reviewed the installation procedure and discussed some of the extra functionality to be gained.
  • Installs to a CF card (must be under 4 GB).
  • Booting to it does not replace anything on your camera, so camera’s firmware remains un-touched (read: you won’t void your warranty).
  • CHDK Wiki

Linux-y stuff

  • It does help to connect an antenna to your internal wireless card.
  • What happens when you send /dev/null to /dev/null? How do you get it back?

Social Media

  • Origins: USENET and IRC. MUDs, MUSHes and MOOs.
  • Photo sharing sites such as SmugMug, Picasa, Flickr, Shutterbug, PhotoBucket, etc.
  • OpenID use with sites.
  • Facebook, MySpace, etc.

After-meeting at Raccoon River Brewery

Introductions

Group organization

  • Discussed various ideas for how to organize.
  • Competitions?
  • Teaming w/ local educational orgs?
  • Start with the basics and work up? Arduino, Parallax, MindStorms?
  • Age groups? Any age is welcome.

Skills inventory

  • Lots of programmers/developers.
  • Not too many mechanical/electrical engineers.
  • No venture capitalists.

Projects?

  • Build something for a competition?
  • Build a CNC machine which can be used for future projects? There seemed to be a lot of support for this idea. Agreed to continue discussion on the mailing list (http://groups.google.com/group/iowarobotics).
  • Bring your own and share/seek assistance?

Matthew Nuzzum demo’d his VEX r/c platform wheeled robot.

  • Controller from http://www.vexrobotics.com/
  • Aluminum body with two drive motors and 4 wheels.
  • Uses tank-style steering.

Gentleman from the Twin Cities Robotics Club (sorry, arrived late and didn’t catch his name) brought his ~70 pound robot

  • About 30 pounds of the weight is battery.
  • Has a sonar array and Web cam for sensors.
  • Plans to put an on-board Linux computer.

Some links to Web sites brought up during the meeting:

Theron Conrey demo’d Nexenta Systems, an enterprise storage solution built on top of an OpenSolaris kernel with ZFS, an Ubuntu user space and some proprietary elements for managing the storage. Check out Theron’s take on this storage solution.

Theron built a Nexenta storage array within a VM on his laptop — probably the first time such a feat has been performed at Raccoon River Brewery.

Also held a long discussion about Virtual Desktops, SunRays and their adoption by businesses of various sizes. We pondered why this cool technology isn’t getting adopted as quickly as it should and where the ROI “cut off” is in terms of business size.

We are working on lining up Impromptu Studio for next month’s meeting. Stay tuned to The VUG for details.

Sun Tzu wrote:

II. WAGING WAR
6. There is no instance of a country having benefited
from prolonged warfare.

Avoid becoming involved in open-ended projects. Always insist on clear conditions or goals that indicate the project is considered completed. Make sure that deadlines and milestones are realistic and attainable.

No one wants to be involved in a project that is languishing. When deadlines pass and milestones are never reached, those involved in the project become demoralized. This is similar to laying siege. In Sun Tzu’s words from this chapter:

2. When you engage in actual fighting, if victory
is long in coming, then men’s weapons will grow dull and
their ardor will be damped. If you lay siege to a town,
you will exhaust your strength.

So, too will your team lose their enthusiasm and have their creativity become dulled when a project turns in to a siege. One way to combat this is to break a larger project into a series of campaigns with clear objectives which advance the overall goal. Be sure to celebrate the small victories along the way to assure morale stays high.

If you find yourself pulled in to an endlessly mired project, there is only one thing to do. Retreat! There is no advantage to be gained by soldiering on if the end conditions are not clear. Retreat, re-group, re-evaluate and create a new plan which contains clear, achievable conditions for victory.

I didn’t take any notes during the meeting itself, so these are the high points as my memory serves:

The focus of this meeting was Security, and we didn’t stray too far off that core topic.

InfraGard is a partnership between the Federal Bureau of Investigation and the private sector.

Some of the interesting security tools or concepts discussed at this meeting:

  • netcat is literally THE Swiss Army Knife of IP tools.
  • port knocking and webknocking involves sending patterns of traffic to a server to trigger it opening ports and services to your IP address.
  • MetaSploit Framework automates the exploitation of the latest vulnerabilities.

After the meeting, a large group of us walked over to Raccoon River Brewery for dinner, drinks and discussion.