kingmakers by karl ernest meyer and shareen blair brysac

Karl Ernest Meyer and Shareen Blair Brysac present what should be a fascinating history of the modern Middle East in their recent book Kingmakers: The Invention of the Modern Middle East.

I have been interested in Middle Eastern history (ancient and modern) for many years, and so was excited to see this book as I was browsing my local library recently. A couple years ago I read Gideon’s Spies. And I have read various articles, books, and treatises that either focus on the Middle East, or reference it in less-than-passing ways over the years.

Sadly, like so many other books I’ve read in the recent past, Kingmakers stays too academic to read comfortably. I couldn’t get through more than a couple chapters before deciding I would learn more about Middle Eastern history from Al Jazeera and Wikipedia than from this book.

April 23, 2014 · antipaucity · No Comments
Tags:  · Posted in: books, history, politics, review

setting up an unreal irc server on centos 6

Ever want to run an IRC server? I recently set one up at irc.datente.com using a Digital Ocean VM running CentOS 6.5 x64.

Here’s what I did, if you want to replicate the process for yourself (full documentation available from Unreal’s website):

  • acquire CentOS 6.5 x64 server (as I mentioned, I used Digital Ocean)
  • `yum -y install screen wget gcc`
  • `yum -y upgrade`
  • `adduser unreal`
  • `su – unreal`
  • download Unreal to your server (http://www.unrealircd.com/downloads/unreal/source – `wget http://www.unrealircd.com/downloads/Unreal3.2.10.2.tar.gz`)
  • `tar zxf Unreal*.gz`
  • `cd Unreal*`
  • `make clean`
  • `./Config`
    • answer prompts – most can be left default
  • `make`
  • `cp doc/example.conf unrealircd.conf`
  • edit unrealircd.conf (use your editor of choice)
    • see sample config file below for what I did (minus passwords / emails)
  • if all has gone well, start Unreal
    • `screen ./unreal start`
  • create a startup script to ensure Unreal launches on reboot as user `unreal`

That’s it. Thankfully, while the config file isn’t pleasant to play with, it’s a lot better than it used to be.

loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";

me
{
        name "your.irc.server.tld";
        info "Your IRC Server";
        numeric 1;
};

admin {
        "Your Name";
        "yournick";
        "your@email.tld";
};

class           clients
{
        pingfreq 90;
        maxclients 500;
        sendq 100000;
        recvq 8000;
};

class           servers
{
        pingfreq 90;
        maxclients 10;          /* Max servers we can have linked at a time */
        sendq 1000000;
        connfreq 100; /* How many seconds between each connection attempt */
};

allow {
        ip             *@*;
        hostname       *@*;
        class           clients;
        maxperip 25;
};

/* Passworded allow line */
allow {
        ip             *@255.255.255.255;
        hostname       *@*.passworded.ugly.people;
        class           clients;
        password "f00Ness";
        maxperip 1;
};

allow channel {
        channel "#WarezSucks";
        class "clients";
};

oper youroperatornick {
        class           clients;
        from {
                userhost bob@smithco.com;
        };
        password "yourpassword";
        flags
        {
                netadmin;
                can_zline;
                can_gzline;
                can_gkline;
                global;
        };
};

listen         *:6697
{
        options
        {
// uncomment this line if you chose to compile Unreal with SSL support
//              ssl;
                clientsonly;
        };
};

listen         *:8067;
listen         *:6667;

/* not linking to any other servers right now
link            hub.mynet.com
{
        username        *;
        hostname        1.2.3.4;
        bind-ip         *;
        port            7029;
        hub             *;
        password-connect "LiNk";
        password-receive "LiNk";
        class           servers;
                options {
                        /* Note: You should not use autoconnect when linking services */
                        autoconnect;
                        ssl;
                        zip;
                };
};
*/

ulines {
        services.roxnet.org;
        stats.roxnet.org;
};

drpass {
        restart "I-love-to-restart";
        die "die-you-stupid";
};

log "ircd.log" {
        /* Delete the log file and start a new one when it reaches 20MB, leave this out to always use the 
           same log */
        maxsize 20971520;
        flags {
                oper;
                connects;
                server-connects;
                kills;
                errors;
                sadmin-commands;
                chg-commands;
                oper-override;
                spamfilter;
        };
};

alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };

alias "identify" {
        format "^#" {
                target "chanserv";
                type services;
                parameters "IDENTIFY %1-";
        };
        format "^[^#]" {
                target "nickserv";
                type services;
                parameters "IDENTIFY %1-";
        };
        type command;
};

alias "services" {
        format "^#" {
                target "chanserv";
                type services;
                parameters "%1-";
        };
        format "^[^#]" {
                target "nickserv";
                type services;
                parameters "%1-";
        };
        type command;
};

alias "identify" {
        format "^#" {
                target "chanserv";
                type services;
                parameters "IDENTIFY %1-";
        };
        format "^[^#]" {
                target "nickserv";
                type services;
                parameters "IDENTIFY %1-";
        };
        type command;
};

alias "glinebot" {
        format ".+" {
                command "gline";
                type real;
                parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";
        };
        type command;
};

files
{
        /* The Message Of The Day shown to users who log in: */
        /* motd ircd.motd; */

        /*
         * A short MOTD. If this file exists, it will be displayed to
         * the user in place of the MOTD. Users can still view the
         * full MOTD by using the /MOTD command.
         */
        /* shortmotd ircd.smotd; */

        /* Shown when an operator /OPERs up */
        /* opermotd oper.motd; */

        /* Services MOTD append. */
        /* svsmotd ircd.svsmotd; */

        /* Bot MOTD */
        /* botmotd bot.motd; */

        /* Shown upon /RULES */
        /* rules ircd.rules; */

        /*
         * Where the IRCd stores and loads a few values which should
         * be persistent across server restarts. Must point to an
         * existing file which the IRCd has permission to alter or to
         * a file in a folder within which the IRCd may create files.
         */
        /* tunefile ircd.tune; */

        /* Where to save the IRCd's pid. Should be writable by the IRCd. */
        /* pidfile ircd.pid; */
};

/*
tld {
        mask *@*.fr;
        motd "ircd.motd.fr";
        rules "ircd.rules.fr";
};
*/

/* note: you can just delete the example block above,
 * in which case the defaults motd/rules files (ircd.motd, ircd.rules)
 * will be used for everyone.
 */

ban nick {
        mask "*C*h*a*n*S*e*r*v*";
        reason "Reserved for Services";
};

ban ip {
        mask 195.86.232.81;
        reason "Delinked server";
};

ban server {
        mask eris.berkeley.edu;
        reason "Get out of here.";
};

ban user {
        mask *tirc@*.saturn.bbn.com;
        reason "Idiot";
};

ban realname {
        mask "sub7server";
        reason "sub7";
};

except ban {
        /* don't ban stskeeps */
        mask           *stskeeps@212.*;
};

deny dcc {
        filename "*sub7*";
        reason "Possible Sub7 Virus";
};

deny channel {
        channel "*warez*";
        reason "Warez is illegal";
        class "clients";
};

vhost {
        vhost           i.hate.microsefrs.com;
        from {
                userhost       *@*.image.dk;
        };
        login           stskeeps;
        password        moocowsrulemyworld;
};

set {
        network-name            "Datente";
        default-server          "irc.datente.com";
        services-server         "irc.datente.com";
        stats-server            "irc.datente.com";
        help-channel            "#datente";
        hiddenhost-prefix       "rox";
        /* prefix-quit          "no"; */
        /* Cloak keys should be the same at all servers on the network.
         * They are used for generating masked hosts and should be kept secret.
         * The keys should be 3 random strings of 5-100 characters
         * (10-20 chars is just fine) and must consist of lowcase (a-z),
         * upcase (A-Z) and digits (0-9) [see first key example].
         * HINT: On *NIX, you can run './unreal gencloak' in your shell to let
         *       Unreal generate 3 random strings for you.
         */
        cloak-keys {
                "aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
                "aaAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
                "aeAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
        };
        /* on-oper host */
        hosts {
                local           "locop.roxnet.org";
                global          "ircop.roxnet.org";
                coadmin         "coadmin.roxnet.org";
                admin           "admin.roxnet.org";
                servicesadmin   "csops.roxnet.org";
                netadmin        "netadmin.roxnet.org";
                host-on-oper-up "no";
        };
};

set {
        kline-address "your@email.tld";
        modes-on-connect "+ixw";
        modes-on-oper    "+xwgs";
        oper-auto-join "#opers";
        options {
                hide-ulines;
                /* You can enable ident checking here if you want */
                /* identd-check; */
                show-connect-info;
        };

        maxchannelsperuser 10;
        /* The minimum time a user must be connected before being allowed to use a QUIT message,
         * This will hopefully help stop spam */
        anti-spam-quit-message-time 10s;
        /* Make the message in static-quit show in all quits - meaning no
           custom quits are allowed on local server */
        /* static-quit "Client quit";   */

        /* You can also block all part reasons by uncommenting this and say 'yes',
         * or specify some other text (eg: "Bye bye!") to always use as a comment.. */
        /* static-part yes; */

        /* This allows you to make certain stats oper only, use * for all stats,
         * leave it out to allow users to see all stats. Type '/stats' for a full list.
         * Some admins might want to remove the 'kGs' to allow normal users to list
         * klines, glines and shuns.
         */
        oper-only-stats "okfGsMRUEelLCXzdD";

        /* Throttling: this example sets a limit of 3 connection attempts per 60s (per host). */
        throttle {
                connections 3;
                period 60s;
        };

        /* Anti flood protection */
        anti-flood {
                nick-flood 3:60;        /* 3 nickchanges per 60 seconds (the default) */
        };

        /* Spam filter */
        spamfilter {
                ban-time 1d; /* default duration of a *line ban set by spamfilter */
                ban-reason "Spam/Advertising"; /* default reason */
                virus-help-channel "#help"; /* channel to use for 'viruschan' action */
                /* except "#help"; channel to exempt from filtering */
        };
};


April 22, 2014 · antipaucity · No Comments
Tags: , , ,  · Posted in: code, technical, tutorial

conference connectivity

My friend Trent posted last week, “[m]eeting organizer Protip: select a location that gets cell phone service.”.

I am fairly certain I disagree. I disagree with Joel Spolsky on this, too.

If you are organizing a meeting, conference, or the like, there should ONLY be connectivity if you want your attenders to ignore the meeting – whether they ignore it by live-tweeting, or by playing Angry Birds, having access to the internet (or your cell phone) during meetings is bound to end poorly.

If you’re 100% OK with attendees missing >90% of what is said/shared/taught, then go ahead and have ensure connectivity. If the purpose of the event is primarily a networking and socialization one, and the presentation content is only to help enable those other two activities, then by all means ensure your attendees can get online.

But if your intent is for attendees to remember what they hear and use it later, you’re far better off ensuring they cannot get online easily (if at all).

April 21, 2014 · antipaucity · No Comments
Tags: ,  · Posted in: insights

35 great questions, part 3

Part 3 of 5 in my condensed reprint of Inc’s article, “35 Great Questions” from the April 2014 issue. (part 1, part 2)

  1. Are we changing as fast as the world around us? –Gary Hamel
  2. If no one would ever find out about my accomplishments, how would I lead differently? –Adam Grant
  3. Which customers can’t participate in our market because they lack skills, wealth, or convenient access to existing solutions? –Clayton Christensen
  4. Who uses our product in ways we never expected? –Kevin P Coyne & Shawn T Coyne
  5. How likely is it that a customer would recommend our company to a friend or colleague? –Andrew Taylor
  6. Is this an issue for analysis or intuition? –Tom Davenport
  7. Who, on the executive team or the board, has spoken to a customer recently? –James Champy

April 20, 2014 · antipaucity · No Comments
Tags: ,  · Posted in: reprint

print-at-home plans

Someone needs to start a business selling print-at-home furniture/home-improvement plans that include parts lists (and, ideally, costs) from their local Lowes / Home Depot / TrueValue / Ace / etc.

Most folks who want to tackle small projects don’t want to buy books or magazines that may (or may not) include what they’re interested in – but which will definitely include loads of stuff they’re not.

Having a simple webstore that offered complete build instructions, parts lists, and approximate costs (both dollars and time) would be awesome.

I’m thinking something like an on-demand version of eMeals, but for your workshop.

April 18, 2014 · antipaucity · No Comments
Tags: , ,  · Posted in: ideas, modeling

why nations fail by daron acemoglu and james a robinson

I first came across Why Nations Fail at my local Half Price Books. After seeing it on the shelves a couple times, but still being unsure about whether I really wanted to read it or not, I reserved it at my local library.

Now I wish I had bought it (and likely will) – Daron Acemoglu & James A Robinson, while sometimes slipping into an academic, journalistic tone, present a fantastic historical, economic, cultural, and international view into the similarities, and differences, of “national” failures around the world over the last several centuries.

They spend a great deal of time expounding on the differences of countries that succeed and those that don’t – and offer insights into how failing nations could, potentially, turn themselves around.

Interestingly, the factors that play-into national success and failure are similar throughout history – critical junctures, inclusive/pluralistic political and economic environments vs extractive/exclusive political and economic structures, empowered citizenries, overbearing rulers, literacy, economic incentives (positive and negative), etc.

The Iron Law of Oligarchy:

the overthrow of a regime presiding over extractive institutions heralds the arrival of a new set of masters to exploit the same set of pernicious extractive institutions (p366)

My recommendation? Buy it. Read it. Share it. The background and conclusions this book presents and reaches should be required reading for anyone who wants to see their nation “do better” – politicians, businessmen, citizens, NGOs: all would benefit from applying what is demonstrated in this excellent work.

  • Quality of writing: 4/5
  • Quality of content: 4.5/5
  • Historicity: 5/5
  • Educational value 4.5/5
  • Overall: 4.5/5

April 16, 2014 · antipaucity · No Comments
Tags: , , , ,  · Posted in: books, commentary, education, history, insights, politics, review

35 great questions, part 2

Part 2 of 5 in my condensed reprint of Inc’s article, “35 Great Questions” from the April 2014 issue. (part 1)

  1. What counts that we are not counting? –Chip Conley
  2. In the past few months, what is the smallest change we have made that has had the biggest positive result? What was it about that small change that produced the large return? –Robert Cialdini
  3. Are we paying enough attention to the partners our company depends on to succeed? –Ron Adner
  4. What prevents me from making the changes I know will make me a more effective leader? –Marshall Goldsmith
  5. What are the implications of this decision 10 minutes, 10 months, and 10 years from now? –Suzy Welch
  6. Do I make eye contact 100 percent of the time? –Tom Peters
  7. What is the smallest subset of the problem we can usefully solve? –Paul Graham

April 15, 2014 · antipaucity · No Comments
Tags: ,  · Posted in: reprint

you don’t need ideas – you need questions

Paul Graham asserts that startup ideas aren’t what’s important – and, in fact, think you need an “idea” is a major roadblock.

Convert your thinking from “idea” to “question”, and you have a potential curiosity to explore, tweak, develop, and deliver.

Your best work is going to come when you’ve thought about the problem but didn’t know you were thinking about it.

So stop trying to get an idea – ask questions, and chase them down.

April 14, 2014 · antipaucity · One Comment
Tags: , ,  · Posted in: ideas

discover each man’s thumbscrew – law 33 – #48laws by robert greene

Law 33

Everyone ahs a weakness, a gap in the castle wall. That weakness is usually an insecurity, and uncontrollable emotion or need; it can also be a small secret pleasure. Either way, once found, it is a thumbscrew you can turn to your advantage. –Robert Greene, The 48 Laws of Power (review)

April 13, 2014 · antipaucity · No Comments
Tags:  · Posted in: books, commentary

don’t blog

to “compete” with others.

There are great reasons to blog – but there are also lousy ones to do it.

If you’re writing because you’re trying to ‘keep up with the Joneses’, so to speak, you’re doing it wrong.

Don’t blog because others do. Don’t blog because others do it better. Blog because you want to. Blog because you have something to say. Blog to learn.

But don’t blog to compete. It’s a game you’ll never “win”.

April 11, 2014 · antipaucity · 2 Comments
Tags: ,  · Posted in: commentary