www.IRC-Junkie.org – IRC News

All about Internet Relay Chat

amnesiac: a script for EPIC5 – Interview

After interviewing the author of EPIC5, this sort of could be called a “follow-up” interview. The interviewees are the authors of amnesiac, a modular EPIC5 script.

- First, please introduce yourself to our readers so they get an idea who you are.

skullY: I’m a long-time UNIX user and administrator who works for a Silicon Valley startup.


My day job involves hating software (mainly Linux, Apache and MySQL) and I relax in the evenings by writing software to be hated.


Most of what I write is to scratch an itch, but a few things (amnesiac, nboard) see a wider release.

crapple(Zak): I’m a long-time UNIX user/admin/programmer working at a telecommunications company in Canada.

My day job involves hating just about everything mankind has dreamed up (mainly Linux, MySQL,’programmers’, religion in the workplace) and I relax off work hanging with some friends and doing the occasional barhopping.

I do most of my programming at work and occassionally I do some fun programming at home (cut’n'pasting device drivers from other BSD distro’s to OpenBSD, finding documentation/specs for certain drivers on occasion).

I’m generally a very lazy person outside of work ;)

kreca: I am a Java/C++ developer living in Sweden.

Since the beginning of 2008 I have been running a company with a good friend of mine, focused on J2EE development.

We do product and consulting work.

- What was the reason for you to start writing on amnesiac?

skullY: Back when EPIC5 was still pretty new, but right around the time it went from unusable to usable (stability wise), Zak found out I was using EPIC4 with a home-grown script and started bugging me to help him make oblivion into an EPIC5 script.

Eventually I gave in just so he’d stop bugging me. ;)

Zak: I was a longtime C-Toolz/ScrollZ and occassional BitchX user back in the day.

void had an EPIC4 script called oblivion and I was being curious about EPIC. EPICs scripting language was very different compared to ircII/ScrollZ as it was almost C-like in some ways.

Eventually I started doing some cleanups to oblivion for void, seeing that he is as lazy as I am and nothing was really getting done. He dissappeared from IRC and I did the last 3 oblivion releases that friends and people who knew where to look at could grab.

I was using EPIC5 pretty much since it was born and modifying oblivion to work on it was a request I had seen in #obv frequently. Basically, it got renamed to oblivion 2.0 for EPIC5 and eventually I managed to get kreca to join on the project as BitchX was going nowhere.

We made about 6-8 releases on oblivion 2.x until it started forking away from oblivion and we decided on a script name change to amnesiac. We generally just kept the cosmetics, so oblivion users will probably feel at home with amnesiac.

EPIC5 was way faster than any other IRC client I have previously used and so I did more rewrites and cleanups to amnesiac more or less for my own benefits – not so much for the userbase at that time.

Eventually our userbase started contributing difficult cosmetic work/formats/code etc. and I was really surprised about how many loyal amnesiac users we had. adam, violence, sirko – to name a few – really helped with adding functionality and cosmetic work that noone of us really wanted to do.

That’s probably when I started paying more attention to our userbase and their feature requests – after all, they helped make amnesiac the script that it is today ;)

Though, I still pawn requests off to skullY and kreca when I win my guilt trips against them as I’m really lazy ;)

kreca: I met Zak on EFnet and got into ircII scripting by submitting a few patches to cypress which was the predecessor to oblivion for BitchX.

Since development stopped and I realized how powerful the EPIC scripting language is, I’ve switched over to oblivion and started developing for that.

- So there are 3 scripters working on amnesiac – how do you coordinate development and what role does each one have?

skullY: Coordination might be too strong a word there. ;)

We pretty much work on whatever strikes our fancy. We’re all pretty lazy, and the work tends to happen in spurts and bursts, so normally there’s not more than one of us working on the codebase at any given time anyway.

Periodically one of us, usually Zak or kreca, takes something from TODO-BUGS and works on it. We keep all known issues and things we want to change in there.

Zak: I pretty much try to pawn off feature requests to kreca, bugfixes to Zach, and THEN I modify the TODO-BUGS to remind myself of something that will probably not get done anytime soon, at least from me, as I find amnesiac to be very mature as IS.

Most of the feature requests we get are pretty complicated and not really something I care about, IE: userlists (That’s what IRC bots are for is my lazy excuse ;p).

We don’t really have any specific role and we just work whenever we want to.

skullY & kreca pretty much have the same ideas and goals of amnesiac as I do and if it’s something I’m not a fan of I can just revert the CVS commit if needed – which I have not had to do yet and probably never have to.

The reason why I like having 3 of us with CVS access is due to the fact I got tired of all these one author IRC scripts over the years. They never last long as the author usually has a life or moved on to another project so that the script gets unmaintained/stale.

With 3 people having commit access, chances are that it will more or less be maintained. I know that me and kreca have been busy the last 6 or so months and skullY was around to fix bugs.

I may like to add another person in the future as a backup for those times when noone of us is around ;)

I think this is one of the main reasons why amnesiac has been around from 2003-Present. I don’t think many EPIC4/5 scripts have really been maintained for a number of years like amnesiac has – or that I’m aware of.

kreca: I would like to mention that we have two mailing lists set up aswell.

hackers [at] ircII.org – Code discussion / feature request
amnesiac [at] ircII.org – All commits are sent here for review and can be discussed aswell.

- How much time has each one of you spent on developing the script and how many lines of code did you contribute?

skullY: LOC is a really poor measurement, especially in our case.

We started with the oblivion script several years ago, which gives us a few thousand lines of code head-start.

However, amnesiac doesn’t really resemble oblivion anymore and the majority of it has been rewritten.

I’d say my LOC count is negative, if you don’t include the modules I added. Mostly I simplify and remove code or fix bugs when I’m not adding modules.

As for time, I can’t really say. Maybe 10-20 hours/year, except for the occasional burst. For example, I think I spent a total of 80 or 90 hours implementing remote.m. I’ve put in less than 2000 hours total over the last 3-4 years I’d say.

Zak: LOC really is a poor measurement, especially in an IRC script sense as we tend to borrow, rip, improve various code from the EPIC5 scripts source and from other scripts that we have permission of the author to do so.

In fact, I don’t think programmers really do much in the sense of LOC, I think we’re more or less cleaning up/rewriting functionality/code moreso than adding code – LOC for me is pretty much negative.

I have contributed *maybe* 10-20hrs/year, however I have a habit of going in spurts so that 10-20hrs might be done in, say march of 2009, and nothing else really happens from me [for the rest of the year] – except for the occasional bugfixes and adding patches users have contributed.

kreca: Not much to be added here. The last few months have been slow since I’ve had a lot of work to do.

- What made you use EPIC in the first place since there are plenty of other clients out there?

skullY: Back in my day, we only had two choices for IRC: ircII or EPIC. I was learning how to write annoying IRC scripts and using PhOeNiX.irc, and EPIC provided more and better aliases and functions, so the choice was obvious.

In those days we sent humorous messages in response to CTCP pings, as was the fashion. Dang kids, get off mah lawn!

I continue to use EPIC because other clients haven’t been able to be “better”.

I used BitchX for a while, but it was too crashy and that drove me back to EPIC. I’ve never been able to get along with GUI clients.

The new kid on the block seems to be irssi, but between misbehaving clients from irssi users and the fact that it uses PERL for scripting I’m pretty turned off by it.

Zak: Adapting to a new client is a pain in the a**.

I started with ircII/ircII based clients and I can’t see myself using anything else. I tried to show IRC to a friend a couple of years ago in mIRC.

That was so difficult that I added him a shellaccount and showed him the basics of EPIC5/amnesiac – He still uses it today after failing to like a number of GUI IRC clients.

I tend to use the tools that suit me and EPIC5 has a lot of nice features and functionality for my tastes. And if I need something fast, chances are I can script it up quickly or evaluate something in EPIC – it’s more than enough for my tastes.

After coming from a C-Toolz/ScrollZ environment the scripting language for ircII is a bit gothic and sometimes difficult. I’m quite turned off at irssi mainly because of PERL and [...] the license wasn’t something I wanted as well.

kreca: hop (Jeremy) is putting a lot of work into EPIC and has made a lot of improvements with EPIC5. He’s always open for feedback and feature requests.

This makes it a lot easier as a scripter when you’re stuck in a corner.

- What, in your opinion, is the advantage of the ircII scripting language over PERL/Python/Ruby/TCL and maybe even mIRCs scripting language (MSL)?

skullY: What’s the advantage of a shell script over those other languages?

It’s not only something you can type into interactively to test ideas (Python has that) but it’s something that you actually do type into interactively, every day.

This imparts a familiarity that simply can’t be matched.

One of the languages I used before I learned “real” programming was ircII. It was easy, I just type commands into a file!

As I learned and grew as a programmer, I found that ircII/EPIC kept up, allowing me to use the advanced concepts I was learning, even though the syntax was pretty wonky.

Today, however, EPIC5 has taken that to the next level. I find now that as I grow, EPIC5 is growing with me.

It has shed much of the earlier syntax and functional wonkiness that came from ircII and is now what I consider the UNIX users ideal IRC client.

Writing EPIC5 scripts feels more like C to me than anything else – with less bookkeeping. ;)

Zak: Nothing to add here ;)

kreca: There has also been work in bringing in other languages to script in EPIC – which I believe is still in the experimental stage.

- How is your script “better” compared to the others available for EPIC and what do you consider a “major selling point” of amnesiac?

skullY: Right now, we’re basically the only complete and maintained script for a user who wants to use EPIC5 without writing their own script.

I’d like to think it’s because we’ve made all the right choices to keep users happy so no one has felt the need to write a competing script. :)

We’re also very modular and customizable. Our goal is to provide functionality to the user, but otherwise let them make things look how they want.

For example, my preference is for my client to basically look like a stock EPIC4 client, so I go through some pain to make it look and behave that way.

This work translates into better theme support all around, which benefits everyone.

Zak: A lot of our users are european, so if someone likes various cosmetic formats within reason (which are not too spammy colour-wise and wish for ISO-8859-1 friendly themes/formats on EPIC) – it may be worth trying out.

This was surprisingly one of the hardest things we had to do: to try adding various cosmetic work with colour that would not interfere with their terminal or make it look ugly as heck.

Recently hop mentioned adding UTF-8 support into EPIC5 via iconv(), so this way may pave the way for better UTF-8 support in the future – though we do have a module for UTF-8 support.

But that is only good for joins, parts, msg, notice and publics at this time as far as I can recall (I actually never tried it myself – one of our users kindly let us add it into amnesiac).

kreca: Yes, theming really is a strong point of amnesiac. This has been completley rewritten from oblivion.

- Is there a way to get involved with developing amnesiac and how could one contribute to the script?

skullY: Like most open source projects, we’re always happy to receive patches.

For people who can’t code, we could use bug reports, better documentation or just basic evangelism to get people using the script. :)

Zak: I agree with the above ;p

kreca: Same here.

- Do you or have you used any other clients besides EPIC and if yes, why?

skullY: I currently use something called “Rooms” on my phone, mainly for testing and using the remote module, but I wish there was something better.

I have in the past used ircII, BitchX and ScrollZ, but never for very long.

Zak: I have always used some sort of ircII based client. I was using C-Toolz/ScrollZ for a number of years before switching over to EPIC.

I’ve also used ircII and BitchX but not for very long.

kreca: BitchX and mIRC in the beginning =)

- Development aside, what do you use IRC for in your leisure time and which networks do you frequent?

skullY: I mostly hang out on EFnet. Sometimes I’m on freenode to ask questions.

I wouldn’t really say I use IRC in my leisure time. It’s more a background thing while I’m doing something else.

Zak: I mostly hang out on EFnet and a network me and some friends made awhile back – which is still young (ErrNet).

irc.ircII.org, irc.deathwish.net and irc.slipgate.org – to name a couple of servers.

I’m generally more active on EFnet when I’m at work, else I’m usually on ErrNet – though it’s more of a background thing when I’m doing something else.

kreca: I hang out on EFnet and ErrNet aswell. Occasionally I log on to freenode.

I use it to keep connected with friends and ask development questions when it comes to specific subjects.

- There are numerous topics, polls and postings about a possible decline of IRC – what do you think about that and where do you think is IRC heading in the long term?

skullY: I haven’t gone anywhere and neither have most of my friends. ;)

Seriously though, I’m not really worried. I’ve been hearing about how IRC is dying the whole time I’ve been using it. First it was ICB, then ICQ and AIM – and now Jabber (hah) is going to kill it.

In 20 years, when the kids are using their new-fangled ThirdLife MMOIRC, we’ll still be seeing topics, polls and blag postings about the decline and fall of IRC.

Zak: I think IRC has been dying since ’93 – or so I keep hearing ;p

I don’t think IRC is going anywhere anytime soon – I know I’m not going anywhere and this really isn’t something I’m worried about ;)

kreca: Nothing to add here.

- What are your future plans for amnesiac? Are there any nice feature enhancements planned for the future that one would want to know of?

skullY: In the development tree (and latest snapshot) I have a new remote module which lets you connect to your main EPIC client using another IRC client.

I need to finish it still and it has some limitations, but I’m using it a few times a week and the basic functionality seems to be working well.

Combine that with the relaysmtp module and your mobile provider’s Email -> SMS gateway and you have a complete solution for using IRC from your phone – including offline message notification.

In the future there is a lot of cleanup and under-the-hood improvements to be made. In particular, I’d like to merge our formats with EPIC5′s /set FORMAT_* support so that we can easily exchange formats with other scripts.

I believe that would also cut down tremendously on the number of /on’s we need, which means a lower memory footprint all around.

Zak: I would possibly like a better working userlist or another rewrite of it, though it’s not really something of my interest – it’s one thing some of our users frequently ask about(namely Xavier).

So I may get around to having a working userlist sometime this year or better – one i can rip^H^H^Himprove ;p

Hopefully there soon is an official first release of amnesiac 2.0 as we haven’t had a real release in a couple of years now. Although snapshots are semi-active, some of our users really don’t upgrade unless there’s a new release or a bug that’s fixed in a snapshot.

kreca: I have plans to make the tab completion more modular for users to define their own use patterns.

This would make it easier to add complete command tab support for EPIC aswell as users could add their network-specific commands for tab completion, like ChanServ and NickServ commands.

- Is there anything you want to add?

skullY: For anyone that’s new to EPIC in general, but EPIC5 in particular, they should know that while we (EPIC5 developers in general, not just amnesiac devs) keep everything as up to date and modern as we reasonably can, most of us take a longer view towards releases.

We try to code for long-term use so our users don’t have to upgrade very often and so that when they do upgrade things don’t break.

This helps to create stability in our software.

As an example, my main client right now is still running EPIC5 0.3.7 because I haven’t wanted to restart it. I’m running the latest development version of amn on top of it, which I can reload/upgrade without restarting my client.

This combination has been running for 156 days nonstop (since the machine last rebooted). Uptimes of more than a year are not unheard of.

You don’t get this kind of stability releasing every week or even every month.

Zak: I’m very sarcastic, cynical and lazy – just FYI ;)

- Thank you very much for the interview

skullY: You’re welcome. I hope your readers enjoy it.

Zak: Welcome ;)

Thanks for the interview (and sorry for taking so long to edit & publish it i might add) :)

Interview with the author of EPIC5

After being 5 years and 11 days in the making, there was the first production release of the ircII fork EPIC5, now being at version 1.0, in the end of December.

For readers that don’t know the project yet, the website explains a little of EPIC’s history:

EPIC is an irc client project. The EPIC software was forked from ircII-2.8.2 in fall 1994. There have been 5 generations of EPIC, of which the newest two (EPIC4 and EPIC5) are still supported and in development.

5 years and 11 days – What caused that kind of delay?

I became curious and messaged the author of EPIC, who goes by by the nick hop on IRC, and we agreed on an interview – read on below…


Please introduce yourself to our readers so they get an idea who you are. How did you get into programming in the first place?

I’m over 30 years old and I live in the USA.

I had never really programmed as a kid.  I had a commodore 64, but basic was pretty unsatisfying and assembly language hurt my brain too much.  When I went to university as a wannabe engineer, I learned about higher level languages like FORTRAN and really took to them instantly.  There was just something effortless I found about coding that I had not realized was there.

I had gotten addicted to irc in my freshman year in university, and by the middle of my sophomore year, I realized that I could start fixing all of the things about ircII that annoyed me.  So I taught myself C and dove in.  For the most part, epic is just a client that I maintain for my own benefit, and I am happy to share it with everybody else who is interested in it.  Even if there were not one other epic user in the entire world, I would still maintain it, if for no other reason than I’ll always need an irc client.  But there will always be epic users, and I hope to have the opportunity to build friendships with all who are willing someday. =)


Is EPIC actually a real acronym or “just” a backronym?

EPIC is a deliberate and malicious backronym. At the time, it was common for groups to come up with an acronym and then make up some retarded way to spell it out. For example, STAR might stand for “standing tall against racism” which is a fine and noble thing to do – but you know that they came up with “STAR” before they came up with what “STAR” should stand for.

So to make fun of groups like that, i had said we should do the same thing, so we came up with EPIC and then we threw out ideas for the most retarded over the top “meaning” for it. Alas, in the end, because of our lack of imagination, we came up with something retarded, but not retarded *enough* to be seen as satire.


Was there a specific reason to fork ircII back in 1994 and if so, which?

Back in 1994, there was really only one client being used, ircII, and they had a definite notion of controlling the users by limiting what the client could do. Some of us had gone off and formed the undernet and we were looking to expand the potential of irc, rather than keeping the status quo, so there was a slight culture clash when the maintainer of ircII (who is a perfectly upstanding gentleman, I must say here) reviewed my changes and found them generally unsuitable.  So for those of us who felt that we had new ideas, it fell to us to develop (and run) our own servers and clients.  And that’s pretty much what we ended up doing.


How many core developers are working on EPIC5 and how do you coordinate development?

It depends on what “core” means.  EPIC is two things — a core software client and a script pack that completes your experience.  As far as the core software goes, that’s pretty much a one-man-show, as everyone seems content to let me do what I do.  Sometimes people will help me for short periods of time on small projects, but it’s pretty much left to me to push things along.

There is more activity in the script world.  I try not to be a “Microsoft” where I want to dominate both the operating system and the applications. I deliberately stay out of the script world and am content to just work on the core software and make other people’s lives easier.

The development of the core software product is done through CVS and there are four people who have write access.  Development of script packs is handled by the users themselves, although I provide CVS access to those who need it.


As can be read in your EPIC5 1.0 announcement, it has been over 5 years in the making – what caused such a long delay before the code was labeled “production” quality?

I never really know what it means for something to be “production”, so I often butt heads with people who think that I am too deliberate about saying something is ready for production.  Those people are probably correct.  I don’t think about versions so much as package maintainer do, but I would say that
any release of epic is “production quality”, even the alpha releases, but the main issue is how people perceive version numbers.

EPIC5-1.0 was released because the authors of amnesiac (the biggest epic5 script) said that adoption of epic5 (and their script) was being held back by people who were afraid of anything that wasn’t called a “production release”, so it was decided just to wrap up all the loose ends and put something out and
call it “production”, for whatever that is supposed to mean.


How many lines of code have been written for EPIC5 and how much of the presumably old ircII codebase is still in it?

Using a very rough estimate, about 25,000 lines of old code in EPIC4 were replaced with 32,000 lines of new code in EPIC5.  The forked version of
ircII was 2.8.2, which had 44,000 lines of code.  Of that, 40,000 lines of old code have been removed and replaced with 89,000 lines of new code. Nevertheless, the lines of code that were retained are some of the most critical parts, so no matter how much old code is replaced with new code, epic will still always be an ircII client.


How much time do you spend and have spent on developing your client?

It is impossible to guess, but probably a rough ballpark figure of “at least 10,000 hours” would be about right.


What sets EPIC5 apart from other clients?

I do not like to compare EPIC to other clients, because EPIC is not a competitive project, so I will dodge the question by answering what is different from EPIC5 than EPIC4. ;-)

One of the major forces behind EPIC5 is making things simpler.  I’ve always been averse to breaking backwards compatability without a really good reason, but at some point you have to just say that something is not done the way you want it to be done and go in a new direction.

In EPIC5, many features which have been around since the very beginning of ircII were removed, and some were scripted and provided as a /load you can use for backwards compatability, and some things went away.  But these things we removed were things that made the client slow, or complicated.

One example which everyone runs into immediately:  In ircII (up through epic4) it’s always been permissible to create alias shorthands:

alias m msg

which behaves exactly the same as if you did:

alias m {msg $*}

and the client has to actually handle this internally, at runtime, with an observable performance penalty.  Plus, let’s say you don’t want the $* to auto-append:

alias e echo This is a test

and then you do:

/e booya booya

It will do:

This is a test booya booya

Then you’re left wondering, “why did it output booya booya?”  Because you don’t think about how auto-append-of-$* is always there, ready to pounce, even when you don’t want it.

So in EPIC5, auto-append-of-$* has been removed, and if you want $* to be included in your alias, you need to put it there.  This is fully backwards
compatable because

alias m {msg $*}

works in all ircII clients, going back as far as you want.

By not having the auto-append-of-$* feature to support at runtime, the internal code of epic5 is much simpler and that allowed me to optimize an observable speedup in the overhead of running an alias.

This is just one example.  Put altogether, epic5 is faster and less complicated than epic4, and that makes it much easier for me to avoid writing buggy code that leads to crashes.


Since there are other ircII forks like BitchX and ScrollZ in active use what sets EPIC5 apart from those?

IRC is a communication medium which has really clicked with IN personality types (MBTI personality sorting).  IRC won’t ever really be mainstream since
IN personality types are rare in the public, and most people who use irc will say they “don’t get it” and they move on to yahoo or aim or whatever.

Each irc user has a unique experience, and it is that experience that keeps them coming back.  Some people just want to talk to others, some people want to wage war on a massive scale, and others want to tinker around and learn stuff.  EPIC offers a “some assembly required” experience, presenting you with a giant toolbox of toys to play with and inviting you to sit down and learn about them and see what neat things you can do with them.  And it’s great fun that there are people to talk to while you’re tinkering.

For those who need an out of the box solution, epic isn’t really appropriate so they tend to gravitate towards the other clients that give them the experience that they need to make them happy.


Have there been any specific criteria that made you keep the ircII scripting language and not change it to something more “popular” like PERL, Python, TCL?

The ircII language is tightly bound up with every facet of the ircII experience.  When you start up an ircII client, you’re presented with an input line, but what you don’t understand at first is that it is an ircII command line.  When you start writing your first script, you realize that you just put in stuff that you normally type at the command line.  Then you realize that everything you might put in your script you can type at the command line.  There is a harmony and congruence to the experience.  Your script(s) and the input line are part of one large indivisible whole.

Other clients that are based on other scripting languages often have a duality about them because you don’t interact with them at the command line in the scripting language.  They have one personality when you type at the command line and another personality when you write a script.  Depending on the type of person you are, this is either great, or it’s off-putting. Each person gravitates towards the client that provides them the experience that they are looking for.

EPIC supports other programming languages by “shelling out” to them using ircII commands.  You can run ruby code doing something like:

/ruby {

}

and since /ruby is an ircII command, and all it does is runs the inside of the {} in a ruby interpreter, you can use it anywhere.  You can even use it to run ruby stuff at the command line!


How can the community around EPIC5 get involved and what kind of support are you looking for?

EPIC is like every project and needs three things all of the time:

1) Those who are willing to write scripts or script packs
2) Those who are willing to do work on the core client
3) Those who are willing to write documentation

but participation has never been mandatory to be part of the “community”,  because we’re all just friends and it’s enough just to be friendly and chat with us.  IRC is about socialization, and sometimes, that’s enough.


Will there ever be versions of EPIC5 for other operating systems such as Windows or MacOS or is that completely out of scope?

EPIC5 should compile right out of the box for cygwin (windows) and MacOS X. But what it won’t ever be is a graphical program, which is probably what you
were really asking.  You will still have to run epic in a command shell or terminal emulator, no matter what the operating system.  There are very fine graphical clients out there, and ircII isn’t trying to offer that experience.


How secure is your code? At least BitchX had (and according to Wikipedia still has) security vulnerabilities that can at least lead to a crash?

Everybody measures ‘security’ differently.  Back when I started, I wrote crap code because I didn’t know what I was doing.  But now I’ve learned what does work and doesn’t work, and it’s hard to write insecure code when you know what makes code insecure and you don’t write it that way.  I run epic under
valgrind and bounds checking gcc and use all the warning flags I can find, and I avoid all use of “unsafe” functions.  These are just patterns of success, not guarantees of invincibility.


Do you or have you used any other clients besides EPIC and if yes, why?

Since EPIC is exactly what I want in my irc experience, I don’t usually try to run other clients, because that would just remind me of how they are only
approximating what it is I already have.  I actually prefer to talk to people who use other clients, and ask them what they like about that client and what they don’t like about epic, and then go about making those changes.


Looking back at your developmental progress, are there any decisions you would take back if you could?

Well, looking strictly from hindsight, there are always decisions you make that limit your options in the future. But it is only by stepping out of my boundaries and trying to do new things in new ways that I learned how to write good code.  So mistakes are to be expected, and rather than a source of shame and frustration, they’re opportunities for personal growth.  So no, I wouldn’t want to change anything, all my mistakes have been fortuitous.


Or something that you would have perused more?

If there is anything that I have never been accused of being, it is being too hasty to make decisions. ;-)


If you could change something in the IRC protocol itself, what would that be?

I actually have always been very happy with the simplicity and elegance of the irc protocol, and I’ve always been one of those guys who wished that people would stop trying to “fix” things that aren’t broken. ;-)

But in seriousness, there have been times I wished it were easier to track responses to requests with their responses.  This would eliminate the need for the server to treat all traffic as a strict FIFO,  But this is a very minor thing.


Development aside, what do you use IRC for in your leisure time and which networks do you frequent?

I use EFnet and Undernet primarily.  The main epic channel is on EFnet and has been there continuously since 1997.  We have an emergency backup epic
channel on irc.epicsol.org just in case something happens to EFnet.  I also visit wasteland on undernet, mostly because I know many people there.


There are numerous topics, polls and postings about a possible decline of IRC – what do you think about that and where do you think is IRC heading in the long term?

I think IRC will always have a place because it is an open system that is uniquely suited to certain types of people.  As long as there are two people who want to use irc (and I’ll be one of them), there will always be an irc. Whether other people don’t want to use irc any more is no biggie to me because I can’t ever expect to make friends with millions of people, but I tell you that the probabilities are a lot higher for me on irc than off irc.


What are your future plans for EPIC5?

The immediate project is to try to add support for unicode/utf8 so people can talk to others on channels where they use utf8. ircII clients have always assumed that everybody uses 8 bit code pages, which is a relic of 10 years ago. Sometimes it’s hard to break with the past.


Thank you very much for the interview – any last words to our readers?

Remember, irc is meant to be enjoyed, so just have fun and don’t lose perspective on things!

Many thanks to hop for this really insightful interview and also thanks to Zilog for the tip regarding the EPIC release!