Anyone who wishes to read my thoughts on many random topics are welcome to go to my blog. Be warned that Perl only gets occasional mentions.
Note:This page is theoretically undergoing a complete rewrite.Material will slowly be organized and move from old stuff to here. Unfortunately the operative word is definitely slowly...
Also there are many links, both here and in the posts that I reference, to sites that may have moved or died. If you cannot follow a link, please try The Wayback Machine. I will not try to fix all of the broken links in my posting history, there are far too many.
Let me start with an outline of the newer part of this page:
- What is this?
- Useful Snippets
- Musings on learning
- Politics and Religion
- Thoughts on Communities
- Programming Considerations
- My modules
This is the home node for Ben Tilly. Who is that? Well I am a Perl programmer. I have been active in a number of online communities over the years, including very prominently perlmonks and IWETHEY. On perlmonks I have become fairly prominently placed in Saints in Our Book. What that means is that I have been here a long time, said a lot of things, and many people liked some of what I said. This does not mean that I'm necessarily right. In point of fact I'm frequently dead wrong.
I can prove to most people that I can be dead wrong very easily. I just have to state some of my beliefs: I am a very liberal atheist from Canada who believes that capitalism is the best known economic system for encouraging productivity. Unfortunately capitalism does a horrible job of allocating resources for public goods, hence we need to have governments forcibly reallocate resources through taxation. I admit that governments aren't very good at it either - they just happen to be better than private enterprise. Incidentally one of the problems that needs resolving is the growing inequality of wealth - if that is not addressed then I'd not be surprised to see civil war in the USA by 2015 or so.
That should be enough to convince most people that I'm dead wrong about something. :-)
But note that I do my best to have a coherent set of beliefs. For instance Politics and Religion attempts to demonstrate that the beliefs that I just stated are not as unreasonable as you might think.
The rest of this page contains links to things that I think are interesting or informative. (To be honest, its real purpose is to let me find things that I look up repeatedly.) Most of the time I stick to things that people are more likely to agree with. Some of them might even be interesting or informative!
Here are some small pieces of code that I find useful.
- Put name and password in URLs (works with all protocols, except that some browsers now ignore it because of spoofing attacks)
- RE (tilly) 3: Get default login environment (sometimes useful in cron jobs)
- Re (tilly) 2: passing subroutine arguments directly into a hash (one way to process arguments)
Musings on learning
I am very interested in the process of learning. Mostly because I like learning, and want to understand what is needed for the process. Here are some of places where I've put down thoughts on the matter.
- The Six-Lesson Schoolteacher (John Taylor Gatto's well-known essay on what school is really about. The lessons are perfectly intended, and in his other writings there is plenty of documentation of that from the people who founded the school system.)
- The path to mastery (foundations matter!)
- Re (tilly) 1: Discipline (how I did well in math)
- What you refuse to see, is your worst trap (get your ego out of the way)
- Have you worked to get it? (the value of elbow grease)
- Re (tilly) 3: A little problem (my opinions on homework)
- What do you know, and how do you know that you know it? (applied epistemology)
Politics and Religion
As indicated in What is this?, many disagree with my views on politics and religion. If you think that you're among those people, you may wish to skip this section. In any case, many of these topics I'll not discuss on perlmonks because they are offtopic and tend to get heated.
- Yes, I really am an atheist. That means that I lack all belief in God or gods. No, that does not mean that you should try to convert me - the odds are good that I long ago heard any argument that you're likely to try. It didn't convince me then, and it is not likely to convince me now. Besides, do you see me trying to convert you?
- Christians in particular shouldn't try to convert me, since I don't understand forgiveness. The idea of a sacrifice redeeming humanity makes no emotional sense to me, and so I cannot subscribe to a belief system founded on that notion.
- Re: Religion in the Monastery. has my observations about the (non)correlation between religious affiliation and programming ability. I have long observed that religion (and politics!) tends to involve self-reinforcing belief systems. Accepting one system or another does not seem to be so much a question of how smart you are, but rather has to do with how the beliefs we start with cause us to view the same facts differently. Two longer essays of mine that touch on this point are A Priori vs A Posteriori and What do you know, and how do you know that you know it?.
- The Talk.Origins Archive is an excellent resource for discussions of Evolution versus Creationism. Please do not try to discuss this topic with me on perlmonks, I'll refuse. At one point I debated the subject extensively online. I long ago reached the point where I could recognize virtually all Creationist arguments and knew exactly what was wrong with them. Somewhere after that I got tired of correcting the same arguments all of the time. If you doubt that Evolution is a fact and want to argue it, please go to talk.origins. If you absolutely must argue it with me in particular, get an account on IWETHEY and argue it there.
- The Logic of Collective Action is a fascinating book for anyone who has wondered why often nobody does what everyone agrees that someone really ought to do. It is the classic presentation of the economic theory of groups. If you're too lazy to buy the book, you can read this online summary instead. Incidentally the theory presented in this book explains why private enterprise is bad at providing public goods.
- Wealth and Democracy is one of the most depressing books that I've ever read. I also highly recommend it. Its author, Kevin Phillips, has a proven track record of spotting potential political trends when they still seem ridiculous. For instance Nixon credited him for the Southern Strategy that overturned generations of wisdom that, The South will never vote for the party of Lincoln. And Bill Clinton can thank Phillips for the strategy that moved George Bush Sr from a 90% approval rating to losing the 1992 election.
Incidentally this book is the source for my comments about wealth disparity. The possibility of a civil war that I mentioned is based on the fact that in 2 of the last 3 times that a world economic power has faded (Spain and Holland), there was a civil war 15 years after its apparent apogee. In the third example (Great Britain) there was civil unrest, but that was pre-empted by WW I and we can only speculate on whether the unrest would have escalated if WW I had not happened. Phillips places our apogee in 2000, and does not think that we can indefinitely maintain economic dominance in the face of increasing trade deficits supported by mounting debt levels.
This does not mean that I think a civil war will happen. I have no idea. But I think that it is possible. So if one does happen, I will not be surprised.
- The Pentagon's New Map is the most lucid explanation that I've seen of our current military thinking. Needless to say I don't necessarily agree with that thinking... (In particular I doubt our ability to sustain that strategy.) I notice with interest that it has been expanded into a book that I have not read.
- Signs of fascism is an interesting essay. Yes, I really do feel that that glove fits when we are talking about George Bush Jr.
- http://www.blackboxvoting.com/ raises another issue that genuinely concerns me - how do we know that our votes really are being counted fairly? They don't appear to be.
- http://selectsmart.com/president/ is an excellent resource for anyone who wants to know how the stated positions of candidates for US president fit with your personal values. At the moment it shows me as having 55% agreement with Kerry and 9% agreement with Bush. That site has been around for a couple of elections, so you may want to bookmark it for later reference.
- Moral relativism is hard, it certainly isn't (at least if you're intellectually honest) what people often think: an opportunity to pick a convenient morality or a wishy-washy excuse to call every value system OK. Rather it is a situation where you have to accept that you cannot necessarily justify your personal convictions to anyone else.
Thoughts on Community
Many of my posts touch in some way on community dynamics. I plan to gather several of the more interesting ones here.
- Re (tilly) 1: P5EE ... get involved! (my thoughts on why the p2ee project didn't go very far)
This section is for articles on things that you have to think about when programming (other than programming, of course).
- Random thoughts on programming (Various pieces of good advice.)
- Re: size on disk of tied hashes (Example of sanity checking a design's feasibility with heuristic considerations. This example involves handling a lot of data on disk.)
- Short routines matter more in OO? (Discussion of how to reconcile research studies indicating that it is good for subroutines to be 100-150 lines with my intuition that short methods are generally good things.)
- Loose vs. Tight Coupling inspired by Re: Random quotes in the top left corner. (When should you ignore common advice on loose coupling, and why?)
- Re (tilly) 1: What does "efficient" mean?!? (Aiming for maintainability is usually good, no matter what you need to optimize for.)
- Are debuggers good? (Very good people disagree on this, make up your own mind.)
Here is a list of the handful of CPAN modules that I've authored. I sometimes wish that the list was longer, but then I get sidetracked and answer another question on perlmonks...
- ReleaseAction. Do things when you go out of scope. The original version is at ReleaseAction. The idea was to demonstrate exactly what reliable destruction mechanics (which Perl 5 has and Perl 6 may not) could be good for. This is similar to Abigail's End and I wouldn't have released if I had known about that, but my current version has some useful features that his does not.
- Math::Fleximal. Do arithmetic in any base representation that you want. The original version is at Math::Fleximal. Written to distract me from being sick, besides I've always wanted to write arithmetic from scratch. Rather slow for serious use, but I've received reports that it has been sighted in production.
- Text::xSV. Parse and write character delimited files. The original version is at Text::xSV. It has a complicated personality all its own, but some like it.
- Tie::Static. Create what in the C world are known as static variables. The original version is at Tie::Static. It was created to give people fewer reasons to abuse the bug that I talk about at my $foo if 0; is a bug. Speaking of which, never write stuff like my $x = $z if $y; because if $y is sometimes false, it does something very unexpected.
- Class::AutoloadCAN. Don't write AUTOLOAD, write CAN and let me take care of making it work with UNIVERSAL::can and inheritance. Created to address the problems that I discussed at Why breaking can() is acceptable.
This is a new section to acknowledge people who have made suggestions on the new version of this page that I have taken. (More made good suggestions that I haven't gotten around to, and I'm sure that I am missing quite a few.)
- gaal pointed out a typo ("thing" where I meant "think")
The Unix-Hater's Handbook interesting.
I also detest Lotus Notes. Therefore with glee I present its wing in the Interface Hall of Shame.
But whether I like or dislike something, I like to see good criticism. I firmly believe that blind enthusiasm does nobody any good.
Anyways, about my online life. Well I met the internet in grad school. (I studied math.) Basically I met Usenet, liked, and the rest is history. Then my wife went to med school, so I got a job, began working with computers, and actually began making money for a change. (Making me a, "profitably displaced mathematician.." :-) Well I still couldn't avoid being online, and the following will do as a symbol.
The picture above has a long history. It became the unofficial signature of the people populating the forums at InfoWorld Electric. After every bonehead move we would chastize them and insert that sign. You can get a sense of what we were like from a selection from the archive. That copy of the picture is hosted at aaxnet, which is run by another former member of our group.
If anyone is interested, I recommend following those links. When you look closely at that group of people you will find some interesting people. For instance Nick Petreley is very well known in the Linux community. The author of the hilarious Ubersoft comic shows up. Ed Curry used to. He was the man who got NT 3.5 (Service pack 3 IIRC) through the C3 certification process. After Microsoft moved the GUI into ring 0 in NT 4.0 he told them flat out that they would not get 4.0 to pass, they told him to lie, he refused. That archive does not document it, but they destroyed his life. He died November of last year from a stress-induced stroke. (BTW right now we are building up a record of his story. Here is a first pass.) Etc.
Well read the discussions for yourself and remember when those conversations took place. That was before the big database vendors announced ports. Before Netscape said that they would release source code. Before Linux was anything other than an academic joke.
Anyways those forums finally closed shop when the management at InfoWorld made the boneheaded move of changing forums because of Y2K issues (in the process turning down offers of new forums created by the members of their community, including an offer from yours truly) and so we moved to, IWETHEY. Ironically enough that forum software was originally written by yet another member of our community. FWIW the servers it runs on handles an order of magnitude more traffic than slashdot.
(UPDATE: A year and a half later that company has run into typical dot-com issues. What is left of that community has moved to zIWETHEY. I need to rewrite this later.)
Here are some of my favorite links (in need of an overhaul, which I am going to do slowly - send me a /msg if I have a link that you think should be included that is not):
- Professional Employees and Works for Hire Information that I wish I had been very clearly aware of much earlier.
- The SSSCA considered harmful
- After reading a summary of the design of .NET, I had some thoughts...
- Simpler alternative to modules (instructions for writing simple modules, also see Re (tilly) 1: What are Modules for a similar example)
- Choose the most powerful language
- Re (tilly) 1: Certification Foo
- Ability to research and teach are not the same
- Re (tilly) 6: Code Critique (On how to do templating in practice)
- Re (tilly) 1: Happy Birthday Perl!
- Re (tilly) 1: Larry vs. Joel vs. Ovid (I am always amazed at how often I tend to disagree with Joel, even though others like him a lot.)
- Re (tilly) 1: Run arbitrary UNIX commands on webserver without telnet
- Re (tilly) 1: Management that just doesn't understand
- Re (tilly) 1: Efficient Looping Constructs
- Re (tilly) 1: (OT) Rewriting, from scratch, a huge code base (Are rewrites sometimes justified? Read the whole discussion with chromatic for discussion of whether Perl 6 is jusified. Also I note that, again, I wind up disagreeing with Joel Spolsky.)
- Re (tilly) 1: Teaching Perl Idioms
- A Cat's eye view of OO
- Any interesting philosophy of programming articles to recommend? (mainly for the links that others gave)
- Re (tilly) 1: What if you are not a genius?
- Re (tilly) 1: On programmer schedules and productivity
- Re (tilly) 2: Why Closures?
- Re (tilly) 2: .NET is made of people! It's people!
- Please approve AM questions
- Re (tilly) 5: Changing owner of files: Windows vs Linux
- My opinion on Microsoft's Hailstorm.
- Re (tilly) 1: Voting on Anonymous users?
- Re (tilly) 1: Why Use Perl? (Pure advocacy. :-)
- Re (tilly) 1: Perl Commercial Entities? (Yes, I am a fan of OSS for a reason)
- Re (tilly) 1: An exercise in "That's not the way I'd do it" (TNTWIDI)
- Perlmonks Navigator
- Re (tilly) 2 (disagree): Another commenting question, (follow the discussion but realized that behind the scenes we were more friendly...)
- Stay aware of security
- This is not a flame It may be heated, but I think I said some important things that deserve a wider reading.
- Re (tilly) 1: How to write long programms?
- Re (tilly) 1: Perl is psychic?!
- Re (tilly) 1: Nested Classes
- Do not flock dbm filehandles!
- Re (tilly) 1: How does strict work?
- Re (tilly) 1: Flex, converting regexes, and other Interesting Stuff.
- Post 1000, /o vs qr//
- Re (tilly) 1: 5x5 Puzzle
- Silly code reviews and shift
- Re (tilly) 4: Calling subroutine in a package from other perl sub.
- Re (tilly) 1: is I/O checking worth it?
- Re (tilly) 1 (perl): What Happened...(perils of porting from c) (short functional programming example)
- Re (tilly) 1: Code Smarter
- Re (tilly) 1: When do you function?
- Why is 'our' good?
- Re (tilly) 1: Code that writes code
- Re (tilly) 1: Favorite Descriptive Variable Name
- Vice to virtue and back again
- About white shoes
- Continued Fractions
- RE (tilly) 3 (disaster): Java vs. Perl from the CB
- RE (tilly) 3: redeclaring variables with 'my'
- Spooky math problem
- How to present spoilers :-)
- People don't think like you think they do
- Versioned modules
- RE (tilly) 2: Warning our Fellow Monks
- Why I like functional programming
- Threads vs Forking (Java vs Perl)
- Run commands in parallel
- RE (3): BrainPain-Help (looking for better explanation, any donations welcomed...Much later I think I have a better explanation at Re (tilly) 9: Why are closures cool?. At the least I have a code example that illustrates that there is no good resolution of the naming issue.)
- RE (tilly) 2: Handling cascading defaults (abstraction is great!)
- JAPH at the firing range
- RE (2): Filehandle Filter
- Simple Locking
- The Six Lesson Schoolteacher is an excellent sample essay from John Taylor Gatto about what we really learn in school. For more of the same go here.
- The economics of networks, A series of good articles on said topic. Dee in particular Content is not King.
- My opinions about Microsoft security nicely summed up. (See the note on the last page.)
- Why The Professor Can't Teach - an excellent book on why math education sucks by Morris Kline. A sample response from one mathematician is, "This book is my biography." Now available online thanks to his widow.
- Re: Two-arg open() considered dangerous aka "Don't Parse"
- When to use Prototypes?
- Big Ball of Mud
- Who makes money from software?
- What is a BSOD? (thanks to mothra)
- Re: Questionable Quality Questions (I hope this AM gets a real account...)
- Flow-based programming
- Do you remember the 70's?
- DBI is OK (by chromatic)
- How HR departments work
- Pure evil (Note the ID on tye's later response.)
- Dirty tricks from Microsoft.
- Unix as Literature gives an interesting view into who Unix will appeal to.
- Steve McConnell is one of my favorite authors on the art of programming. Visit his site to find out why.
- Programming Ruby
- Why late-binding is a good idea
- Select your technical argument
- Making Skepticism a Design Criterion
- Incompetence and confidence often go together.
- Increasing Performance of mod_perl/CGI/MySQL programs
- Guess my opinions on Evolution and Religion...
- Napster, or killing the goose that laid the golden eggs
- A good site for wordlovers
- You think you can pronounce English? This is in the same vein as, but worse than, the infamous, A rough-coated, dough-faced, thoughtful ploughman strode through the streets of Scarborough, after falling into a slough, he coughed and hiccoughed.
- Re: typeglobs and filehandles (thanks mkmcconn for pointing it out)
- How to be Evil (amusing)
- History of US politics explained (Skewers sacred cows on both sides.)
- Supersplit (See the design discussions starting here, and don't miss the part continuing here with tye.)
- Why the Pentium 4 sucks (long and detailed, but good)
- Linux kernel on debuggers (Various discussions.)
- Global Trends 2015
- Intro to programming languages
- Bad advocacy
- Avoid symbolic variables Read parts 2 and 3!!!
- Gregory Chaitin's home page. (Just in case you thought that computing could be understood.)
- MJD's home page. (Just in case you thought you understood Perl.)
- Mathematical Biographies
- Proportional Representation FAQ
- Top 10 security problems
- Global Warming Controversy (Hey, I am interested in lots of things.)
- Code Complete on Optimization (Code Complete is a classic, read this.)
- On reinventing the wheel
- Are there questions to basic?
- Uptime Comparison
- Vinton Cerf's view
- A Brief History of the Internet
- The C10K problem (Recommended to anyone interested in learning about scalability.
- Why you don't want programmers (Dunno if I really agree, but I was amused and that counts for something in my books.)
- The Mathematical Atlas
- (jcwren) RE: RE: why i may have to leave perl...
- Latency (why you really don't want compression)
- Linus on Unix design (WARNING, flames galore.)
- Linus on portability
- Google (of course)
Some posters you might miss skimming the site that I think are worth looking at. (I need suggestions for this list. Not dead obvious people like merlyn, I am looking for people who could easily be overlooked but shouldn't be.)
- paco - first "real" user. Apparently left when nobody answered the question fast enough. :-)
- Bugbase Stats - is this listed in the stats? We may never know...
- pschoonveld - First real user to stick around for a while.
- BBQ - Seems to have been the first person to sign up when the site really opened. Still around. :-)
- Mail Me a Password, Cowboy! - Apparently chromatic forgot his password once, and that is why "Mail me my password, Cowboy!" exists now.
Well I finally posted Spooky math problem, which is the craziest problem I know. So I need a new problem. The new problem is one of the more interesting paradoxes.
An advanced being shows you two boxes. In box A there is $1000. In box B there is $0 or $1000000. You are allowed to take either box B or both boxes, but the being will put the million in box B only if it thinks you will only take box B. Assuming that you have never seen the entity make a mistake on this problem, what should you do to make as much money as you can?
The amusing thing is that there is no well-defined answer, but virtually everyone is convinced that there is. But different people are convinced of different answers! If you are curious, I suggest searching for "Newcomb's Problem" for more on this oddity.