antipaucity

fighting the lack of good ideas

disdain things you cannot have: ignoring them is the best revenge – law 36 – #48laws by robert greene

Law 36

By acknowledging a petty problem you give it existence and credibility. The more attention you pay an enemy, the stronger you make him; and a small mistake is often made worse and more visible when you try to fix it. It is sometimes best to leave things alone. If there is something you want but cannot have, show contempt for it. The less interest you reveal, the more superior you seem. –Robert Greene, The 48 Laws of Power (review)

soup to nuts mirroring of centos

I run a CentOS mirror. Have for a couple years.

But I never stopped to see just how long it takes to start becoming a mirror.

In case you wanted to know, I created a quick DO VM and ran the rsync mirror job yesterday. The results? At ~2.5MB/s, it took just over 8 hours to download 79GB of CentOS repositories.

rsync-centos

Results came from running:
time rsync -azHv --delete us-msync.centos.org::CentOS /root/centos

Of course, if you want to mirror it “for real”, you should use ‘q’ instead of ‘v’ as an argument for rsync, and you should give it a better path than /root/centos.

You should also setup a webserver to offer the media out to others.

Now you know. And knowing is half the battle.

to wear a watch

I love wearing a nice watch.

Years ago, I would only wear a digital watch in 24hr mode.

Then I switched to using my cell phone.

Now I prefer an analog watch with metal band, and no numbers (ie hour indicators) on the face.

The one I wear now is a Pulsar with a silver (with gold accents) band, blue face, and stopwatch feature. Got it 5 years ago off Woot for under $50 (go go gadget Woot!). My next watch will be one with a black (or black and silver) band, and either a black, silver, dark red, or blue face. Perhaps a SEIKO Black Ion Chronograph Watch. Or maybe a Bulova Marine Star Stainless Steel Chronograph Watch (though I’d prefer a black band on it).

Why do I prefer analog to digital now? And why wear a watch vs using your cell phone?

Because analog clocks give a sense of class that digital just can’t offer, imho, and using your cell phone exclusively to tell time relies on knowing what timezone you are in (and if you’re on the fuzzy edges of two, knowing which tower you’re getting signal from (is it the one in Central, or the one in Mountain?)), and leads to the great potential for distraction to check email, text messages, Facebook, etc, etc, etc.

Watches don’t carry those potentials for distraction the way your phone does.

And they give whomever you are around the sense that you care about how look, but not [necessarily] in a vain manner: you want to pay attention to the time, but not look like the jerk whose ostentatious displays of timekeeping craziness (like the ~$5900 Rolex Explorer Black Dial Domed Bezel Oyster or the not-quite-as nutty-but-still-pricey Citizen Eco-Drive Blue Angels World A-T Stainless Steel Flight Atomic Watch). Wearing a watch gives the impression of focus on whomever you are interacting with, too … so long as you’re not constantly flicking your wrist to check time, of course 😉

Watch wearing is something I think needs to make a major comeback. Join me.

a public – or white-labelable – rfe service a la uservoice, but easier to use

I’ve seen some services that utilize uservoice to handle requests for features, functionality, etc.

And I have seen companies have formal Request For Enhancement / Enhancement Request / etc processes (generally culminating from support cases (hopefully from good ones)).

What I don’t see, though, is a way to either limit who can submit requests (uservoice, for example, allows anyone to register and submit ideas to different groups, so far as I can tell), or focus requestors into contributing / voting-for / etc previous RFEs (the way the SE family tries to prevent duplicate questions).

Corporate RFE systems tend to be completely blind from a requestor/submitter viewpoint to see whether something similar (or identical) has already been asked for.

The wide-open option uservoice provides has its own pitfalls: finding previously-asked items is hard (unless they’re already highly voted); getting a previously-refused request reconsidered is difficult (or impossible); the interface is less than desirable.

There needs to be a consistent RFE tool made and used so that filing RFEs for a VMware product becomes more-or-less identical to filing one for WebSphere, or Chef, or AutoZone, or Amazon, etc.

sending email in python with gmail

A Python nugget from Programming Your Home (review) I wanted to share from p97:

import smtplib
def send_email(subject, message)
    recipient = 'your_email_recipient@domain.tld'
    gmail_sender = 'your_gmail_account@gmail.com'
    gmail_password = 'your_gmail_password'

    #use tls
    gmail_smtp = smtplib.SMTP('smtp.gmail.com', 587)
    gmail_smtp.ehlo()
    gmail_smtp.starttls()
    gmail_smtp.ehlo()

    #login
    gmail_smtp.login(gmail_send, gmail_password)

    #message formatting
    mail_header = 'To: ' + recipient + '\n' + 'From: ' + gmail_sender + '\n' + 'Subject: ' + subject + '\n'
    message_body = message
    mail message = mail_header + '\n ' + message_body + '\n\n'

    #send
    gmail_smtp.sendmail(gmail_sender, recipient, mail_message)

    #close
    gmail_smtp.close()

master the art of timing – law 35 – #48laws by robert greene

Law 35

Never seem to be in a hurry – hurrying betrays a lack of control over yourself, and over time. Always seem patient, as if you know that everything will come to you eventually. Become a detective of the right moment; sniff out the spirit of the times, the trends will carry you to power. Learn to stand back when the time is not yet ripe, and to strike freely when it has reached fruition. –Robert Greene, The 48 Laws of Power (review)

setting-up etherpad in centos 6

To add to my tutorial collection, here’s how to setup EtherPad on CentOS 6 (x64). As in the IRC tutorial, I used a Digital Ocean VM for this 🙂

What is EtherPad? It’s an open-source collaborative text editor that works like Google Docs – ie, all editors/viewers can see changes from everyone else in realtime.

Here’s how I did it: (props to the EtherPad docs and this other tutorial on Node.js)

  • acquire a CentOS server – I used Digital Ocean
  • make sure you have enough swap space (if you use the smallest Digital Ocean “droplet”, you really need to give yourself 2-4G swap)
    • dd if=/dev/zero of=/swapfile bs=8192 count=524288
    • mkswap swapfile
    • swapon swapfile
    • add this line to the end of your /etc/fstab:
      • /swapfile swap swap defaults 0 0
  • run the following as root:
    • yum -y install gzip git-core curl python openssl-devel && yum groupinstall
    • yum -y install screen gcc gcc-c++ make wget curl
      • note – it’s not always called “gcc-c++”; make sure you use the correct package name for your platform
      • you can find out the correct package name by doing a `yum provides */g++` search
    • yum -y upgrade
      • bring everything up to date – it’s equivalent to `yum -y update –obsoletes`
    • adduser etherpad
    • su – etherpad
    • git clone git://github.com/ry/node.git
    • cd node && ./configure && make && make install
    • cd
    • git clone git://github.com/ether/etherpad-lite.git
    • cd etherpad-lite
    • screen bin/run.sh
  • load http://127.0.0.1:9001 in your browser (substitute the IP/DNS name of your server as appropriate – mine was http://107.170.150.57:9001)
  • for maintenance purposes, you should also do a `git pull origin` for EtherPad periodically

Some notes on the above:

  • if you already have swap space and/or don’t want to worry about it (though I recommend you do), you can skip it
  • I’ve put the `-y` option after every `yum` call presuming you really mean to run it, and you don’t care about dependencies
    • if you aren’t using a fresh server (EtherPad certainly doesn’t require it’s own), you may want to be a little more cautious about the `yum` commands 🙂
  • you should create a start-up script to ensure EtherPad is running if you need to reboot
  • the EtherPad docs have all kinds of further things you can do – this is just a “get it going and start using it” tutorial 🙂