I haven't got much to say other than that I wanted to post because it's February 29th
Apparently you're supposed to propose to someone on the leap day but unlike the past couple of years I have no obviously suitable candidates so if any girls are reading this would you like to marry me? I'm housebroken!
world's biggest pillow fight
Haven't they got anything better to do?
Let us waste some time by writing a couple of map reviews
I have all but finished replaying Vilecore by doing each map from a pistol start. Memorable maps included
- 13 and 15 for being huge firefights
- 32 for sheer quantity of archviles; it's a very good map once you know how to approach the trickiest bits, and provided you can force yourself not to care about resurrections fucking up your kill percentage
- 28 for having the longest most boring lift ever, in spite of the rest of the map being a cornucopia of well-lit, high-ceilinged techbase rooms
- 6 and 20 for being boring and full of tunnels
- 29 for the same reasons as 6 and 20 only they were half-height tunnels (i.e. paths) so you could get shot from long distances, and having a cyberdemon in a really awkward place, and having three archviles which were quite difficult to contain
- and lastly 30 because I think it's damn near impossible without quite a lot of luck, two cyberdemons at once in a room that small is just frustrating.
Overall, while not the best map set ever, it is excellent for a 32 level set made by a lone author. I would recommend it. A redesign is in progress to which I am looking forward.
Libr.wad is yet another library for Doom 2. Library maps for Doom 2 are common because all the necessary textures are present in the IWAD. However it turns into a disjoint series of areas in a mixture of themes. It's like an old school map but designed with the kind of detail which modern map editors make easy. It was quite boring to play and required the player to find secret doors to make any progress, which I find distasteful.
Finally I have done a small amount of work on elixir. This is the map I decided to volunteer for the CC2 project, in order to try to motivate myself to finish it. Unsurprisingly this endeavour has failed spectacularly. Now I'm too scared to go back to Doomworld and find out I've been kicked off the team for inactivity.
void *black_hole(void);
is the worst computational astrophysics joke ever
matrix_invert
It starts with the following innocuous remarks
16/02 14:08 - 16/02 14:10
<Timberwolf> Thankfully, with rotation matrices, to invert a rotation all
you need to do is transpose the matrix, not invert it.
<RjY> write a generalised matrix inverter you lazy faggot
<EvilHRF> fazy laggot?
<Timberwolf> I tell you what.
<Timberwolf> You write it.
<Timberwolf> Then I'll put it in my project.
So about a day later there you go. It was doable because I understood the algorithm from doing it in Linear Algebra back in the day, and I was able to visualise the structures and functions necessary for the calculation instead of sitting there for an hour going "uh what do I do now guys help"
So anyway what you do is this
- Matrix *M = matrix_new(N); to create a matrix of size NxN initialised to zero
- Fill it up with elements using matrix_set_elt(Matrix *M, int i, int j, Real v) where 0<=i,j<N. There is a matrix_get_elt as well. Apparently it's better to have functions to do this rather than fiddling about with the data structure in main memory, although I am very lazy when it comes to writing error checking so whatever.
- Then you can call matrix_det(M) to get its determinant (recursion, whee) and finally Matrix *N = matrix_invert(M); will create a new matrix containing the inverse. Don't forget to matrix_free(M) when you've finished using it.
- There are a few other things you can do; for example, the pleasantly trivial function that makes a copy of a matrix. Also you can do addition, scalar multiplication, matrix multiplication, dump a matrix to stdout for debugging, and so forth. Obviously all of these are in matrix.h.
There is an example main.c supplied which reads a matrix off the command line. Unpack it somewhere, type "make", then you supply the size, then the rows one after the other, as follows.
rjy@baron:~/src/matrix_invert$ ./matrix_invert 2 1 2 3 4
Let M be the matrix
( 1.000 2.000)
( 3.000 4.000)
with determinant -2.000000
Therefore M has inverse N
( -2.000 1.000)
( 1.500 -0.500)
Check that MN is the identity: MN =
( 1.000 0.000)
( 0.000 1.000)
It's not very fast or efficient because it uses the determinant-adjoint method. A faster implementation would use the Gaussian method, but that's harder to code. I might still do it but I don't know. Please download it and see what you think. I've never written object-like code in C before; the interface design, which I pretty much made up off the top of my head probably having been roughly inspired by things from the GLib documentation, might be a whole load of crap.
The code is placed into the public domain. Do what you like with it but don't come crying to me when your shit gets fucked up later.
In conclusion, I learned a valuable lesson about the difference between a 2d array double x[10][10]; and a pointer to a pointer double **x; Furthermore "Timberwolf" has to put my shitty code in his final year project, as well as
16/02 14:10 - 16/02 14:10
<Timberwolf> And we can have a credits screen that flashes in all-caps,
blue and yellow, "MATRIX INVERTER BY RjY!!!!!"
I will not celebrate meaningless milestones
I will not celebrate meaningless milestones
I will not celebrate meaningless milestones
two years of
I will not celebrate meaningless milestones
shitty
I will not celebrate meaningless milestones
I will not celebrate meaningless milestones
updates
That was supremely fagtastic but I'm leaving it in
not more crap with fans
About a month ago I was swapping my CDROM drives around again. When I rebooted baron, its CPU fan was making an awful racket. It quietened down again pretty quickly but it wasn't right. We decided it was probably wearing out, even though I don't think it's anywhere near the mean time before failures or whatever they call it.
I thought, what the hell, I'll get a replacement. At the same time I noticed they were selling Duron processors at 1.4, 1.6, even 1.8GHz now which confused me because I thought they only went up to 1.3GHz or so. I bought one of the 1.6GHz ones more out of curiousity than anything else, although I tried hard to make sure that it would work.
Anyway I performed the upgrade today and it was fine, so I've doubled the CPU speed of my machine and put in a nice quiet 80mm CPU fan. It was the easiest fan to put on that I've ever done, I hardly had to press down at all.
It means I have a spare 800MHz duron, unless I put that into my server, then I have a spare 600MHz duron. Who knows, sooner or later I might have enough bits to make up another machine! Okay maybe not but you know.
PS The BIOS reports the fan speed correctly as around 2600RPM half the time, and the other half of the time reports it as zero(!)
We're all loved-up here at ntlworld.com this month
more like "we're all on exctasy at ntlworld.com this month" Kiss! Kiss! X.
Enthusiastic innocence used for evil
Everyone hates spam. Not just email spam but the through-the-letterbox kind as well. Now in order to send out such unpleasantness into the world you'll probably need a machine that can put thousands of letters in envelopes very quickly. Today, I met the one up at the university.
I appreciated the way it'd suck in an envelope and an A4 piece of paper, fold the paper, put it in an envelope and seal the envelope, then spit it out with not inconsiderable force. Indeed it didn't go nearly as wrong as all the horror stories I've heard about it would suggest, provided I didn't put too much paper into it.
But as I used it to prepare about five hundred nasty letters addressed to people who owe the university money, on the machine - or one very much like it elsewhere - that could have been used to prepare the university credit card mass mailing I thought all I was doing was helping to raising the level of low-grade nastiness over quite a large area of the country.
In other news I said my lines, got out of the thing I didn't want to do and didn't get fired. So much for all that shit then. In before the next horrible thing goes completely wrong.
The Union's Premiere Dance Event
I went to Quench with people from the internet. If that doesn't give you a sense of dread, it should. There were also people there with whom I lived in 1997, and their friends. Still no sense of dread? You are a stupid moron, with a big butt, and your butt smells, and you like to kiss your own butt.
Anyway we sat in the graduate for a while, talking the kind of stupid nonsense I described as "typical Warwick student, you start with something absurd and take it as far as you can using pedantry and twisted logic" and having drinks. I didn't know they served scrumpy up there.
Eventually we somehow got into the cooler. They wouldn't accept my ancient university card(!) so I had to pay full price. I knew I should have made myself a fake ID but there you go. Various people bought me more drinks. I did the usual thing, flirt with girls I know I have no chance with, tell other girls that they're ugly because their hair is too short, dance like a maniac wearing a stupid hat, be asked if I have any drugs for sale, get into a hilariously screwed up conversation with these two morons going "I KEEELLLL YOOUUUUU", spend half an hour crying my eyes out for no reason and at one point decide to lie on the floor.
Gods that was stupid.
MORE IRC DRAMA OH ISNT IT THE BEST OH MY GODS OH
Just after I uploaded the previous entry I was banned for a day. It was boring and stupid and then just like a moron who cares too much I got back in and proceeded to argue the point. I failed to take heed my own oft-spoken mantra "stop taking shit so seriously you idiots"
Still it's all worked out in the end. In before shit starts up again.
snow more like NO!
in after it taking an hour and three quarters to get home and we were lucky! People only like snow because they remember it fondly from their childhood and the pictures on Christmas cards.
IN BEFORE BAN
Stop the presses. I am issuing the following statement about events surrounding the mass kick from the QuakeNet #warwick this evening. YES FASTEN YOUR SEATBELTS IT'S TIME FOR IRC DRAMA!
- I was arguing my case for banning FDave from, well, everywhere, in #warwick on Astrolink.
- From things I said it was inferred that I should "kick all of the other #warwick [the QuakeNet one] then"
- The guy who "owns" the Astrolink #warwick suggested that his brother, hereto referred as "DangerDude" would be able to do this more efficiently, as he knows one of the QuakeNet IRC operators, a guy called Ferg.
- For "shits and giggles" DangerDude asked his friend if he would do it, but Ferg initially refused.
- I changed the topic in QuakeNet #warwick to "HI FERG! GO ON! YOU KNOW YOU WANT TO!". This extra persuasion caused Ferg to change his mind and kick everyone. DangerDude and I laughed heartily.
Everyone else failed to see the funny side, which is why I decided to write this. Let's be fair, there were probably no more than three people (out of a couple of dozen) who knew anything about this until they were unceremoniously removed. But still, once again the humourless morons take the shit way too seriously and get all annoyed.
Coding by idiots for idiots
First of all I had a program that connected to port 19336 on primrose (if I had remembered to run nc -lp 19336 initially), sent the string "FAG" to it and then segfaulted. Now I have a program that connects to port 19336 on primrose and sends "FAG" to it four times and doesn't segfault.
This is what they call progress, I guess. GNet proved useful. It's all very well doing everything yourself but really I know nothing about this crap and I think it would probably be better to start off more high-level.
As an indirect result of this recent spate of coding for cretins, there has been progress in my seemingly never-ending quest for a unix text editor anywhere near as good as Zap on RISC OS was. I installed the following potential wastes of disc space:
- Zile: I never got on with Emacs. Not only was it impossible to learn, every keypress doing something unfathomable, but it was bloated as all hell. Zile appears to be Emacs with a lot of the crap removed. It's okay but it only has syntax colouring for C/C++ and shell scripts and I'd like it to be able to do perl as well (though shell script mode sort of works for this)
- Vim: If Emacs is bad vi is probably worse. Like many, my only experience of it has been trying to remember how to quit when for some reason I have been unceremoniously dropped into it. However for some reason I have found Vim to be usable. Its syntax colouring is very good. Its C mode is frankly superb; it does all the indenting just as I want it to. Like Emacs it has myriads of commands and keypresses that I don't understand, and in particular the constant swapping between insert and command mode is really annoying. While not as heavy on disc space as Emacs it's still fucking huge. But in spite of this I have yet to uninstall it; in fact this update has been written using it.
I should also mention the current and past stalwarts; Nano, which is good for text files and emails but rubbish for source code; NEdit which would rate highly if didn't require X (recall I discarded XChat for Irssi almost entirely due to the latter being a terminal program) and, Jove, the only excuse for which was that it was way back in the day while I was still a student and I didn't know any better.
THREE HUNDRED DAMN LINES
Session 16, Voucher 2000. The UW11 credits voucher. Man that took all week to put on. In fact on Monday it felt like I had a day's worth of work off five or six different people. It pretty much worked out that way as well.
Hopefully this week I will be able to say something along the following lines:
- No, I haven't done it and I don't intend to either
- Numbers, yes; typing stuff in, yes; crap with horrible Microsoft products; okay; even filing, yes; dealing with people? No, and not just no I haven't done this before so I might get stuck, I mean no I'm not doing this.
- I thought, yeah, but what's the worst thing you'll do? Fire me? Oh well! Bye!
There's shit you say you can't do because you've never tried before and you can't therefore say "yes I can do this" in case you let people down, and then there's shit you know you're incapable of. And I don't think they'll fire me because if they were going to they'd have done it already.
Fuck it. If I do get fired, quite frankly, it'll be a relief. I've been getting more and more sick of the place for two or three weeks now.
Moon2000
It's about time I mentioned Doom again. Moon2000 is a single map for Doom 2 running on MAP06. It is a fine example of oversized architecture. That is, it's really, really huge. There's not so much detail but you don't notice that due to the size of everything. High ceilings, massive rooms, wide-open outdoor spaces with mile-long lines of sight, everything is about four times the size of similar objects in more normal-sized maps. As such, it takes a while to traverse and suddenly it no longer seems like the player can run around at ninety miles an hour.
It's epic. The sky texture is blue and beautiful. The gameplay is rather uneven, sometimes you're running and fighting for your life and others you've been running full pelt for ages and have hardly seen a single monster. The secrets also vary, ranging from id-quality setups to "push at the correct place on this unmarked wall" crap.
In summary it has that sense of space, largeness and atmosphere that I really like in a map, and although it's not perfect in some departments I would highly recommend it.