stephenbrooks.orgForumMuon1GeneralComments on the new Linux client
Username: Password:
Page 1 2
Search site:
Subscribe to thread via RSS
huraxprax
2002-09-26 14:28:25
first thanks to Ronny for mastering the chaos and porting the client smile

some suggestions: create a option to create the usename and team.  Most users want to have their contribution running under their own name.  The best solution would be to have it asked on the first startup like other projects do, or at least write some documentation for it.

Stephen: Why did you post it as a .zip file?  zip is not a common standard in the Unix world, and it does not preserve file attributes like executable.  You have to fix that manually.  tar.gz like on the original file is the most common, tar.bz2 should now be common too.

I think a good distribution methos would be once just the binaries and the additional files as one file, and a source archive as additional.

Sorry for my bad English...

huraxprax (rechenkraft.net)
Stephen Brooks
2002-09-26 14:35:18
There is also a .TGZ file from Ronny's own site.  I posted it as a .zip file because I don't have any archive utilities for other formats - in fact at home I don't have any Linux machines - there's just a dual boot one at work, but I finish there tomorrow.


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
pben
2002-09-26 16:11:32
Thanks for the Linux client!  Distributed.net finished up their RC5 project today and I was wondering what I was going to do with all the spare CPU cyces when I run SuSE.  big grin
Hannibal
2002-09-26 16:33:04
Hi, Stephen

quote:
Originally posted by Stephen Brooks:
... I don't have any archive utilities for other formats ...



You may search DJGPP DOS compiler page for gzip (.gz) and tar packers.  You find there also DOS gcc, perl, emacs, awk, bash and many more linux native exe.  And it's absolutly free (GPL) smile.

Hannibal
pben
2002-09-26 18:39:05
The Linux client seems to work but there are a few problems.  I could not get the source to compile, I couldn't even get the ./configure to work confused

The good news is if you add exec permission to the linuxmuon binary in the zip it does run.  The supplied bin doesn't use the second CPU even if you change the config.txt

A good start.  How do you send in the results?
Bluumi [SwissTeam.NET]
2002-09-27 00:20:58
a) you need to send the results from a windows Client
b) in the readme.txt is writen "no multithread support"

cya
[Muon.FG]7F4
2002-09-27 01:19:41
Hi all!

Please remember, the Linux-Client is just a alpha version, I finished yesterday (after about 11 hours of hacking) so i couldn't do a lot of testing.  After running it over night, i guess there are still some problems, because all my results (about 10 on 3 pc) are around 0.2 % with a results.dat of the current top50.

Maybe it's a problem with file read (results.dat or other textfiles).  It would be nice when you report, where your results are going (maybe it was just random ... big grin)

Meanwhile i will check the code!

Ronny
[ARS]odessit
2002-09-27 07:24:29
I have results between 0.1 and 0.2
and I am using top1k file

Intel P3-M 866 MHz
Duron 1000 MHz
XP 1600+ @ 2000+
[Muon.FG]7F4
2002-09-27 07:54:17
I've checked it with the parameter of a topresult (2.97%) and get just 0.002%, so I think there is something wrong. 

Stephen and I are working on the problem.  So I hope we find the failure soon.  Any additional help would be nice.

Ronny
pben
2002-09-27 10:25:42
Sorry, I didn't see the readme.txt I was looking at the How-To in HTML.

The weekend is here may be I could poke around in the source when I get home, but I am a lot better at drawing pictures than programming.
[Muon.FG]7F4
2002-09-29 04:29:48
Hi all!

The Linux client work now, you can download it from my HP: index.htm

Ronny
Stephen Brooks
2002-09-29 06:06:23
There is now a link to that download page on the main muon page.


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
px3
2002-09-29 06:11:10
Hi,

if someone trys to compile under another *nix system and receives an error, simply in the tools.cpp replace the
#include
with
#include

I recompiled the code on solaris 8 and ran into this error.

Regards,

Rolf
PX3
px3
2002-09-29 06:12:00
oki.. seems as if the brackets had been interpreted as html-code..

replace string.h with strings.h
Stephen Brooks
2002-09-29 06:16:03
I guess you could create a file called "string.h" that contained the one line
#include <strings.h>
big grin


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
px3
2002-09-29 06:23:42
HI Stephen,

no that won't be possible cause both files exist.  so i needed to change the #include.. doesn't matter to me, i only posted this as an information..

Regards,

Rolf
PX3
maverick
2002-09-29 06:42:52
Theres an uploader for Linux available:
It works, my Stats are up.
putresults
You can run it from a cronjob, if you want to have it automated.

Theres also a small stats tool:
showstats

Both are Shell Scripts, written by me, under BSD Licence.  Please give me feedback, if you have some wink
Stephen Brooks
2002-09-29 11:02:43
px3, if "strings.h" does what "string.h" does, then what does "string.h" do?  confused big grin

Maverick, that's some impressive shell programming... I'm not ac expert on Linux, but will that sort of thing work with Bash or does it need Csh or something else to run?


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
maverick
2002-09-29 12:18:05
Well, putresults should run under any sh-compatible shell (the most common one on linuxes is bash).  But showstats was written with some zsh specifics (the zsh is also sh compatible, but contains some enhacements).  A rewrite should be trivial for anyone who knows how to work with bash (i dont).
I would consider both, putresults and showstats a _REALLY_ dirty hack after all.
Hannibal
2002-09-29 12:26:47
Hi, Stephen

quote:
Originally posted by Stephen Brooks:
Maverick, that's some impressive shell programming... I'm not ac expert on Linux, but will that sort of thing work with Bash or does it need Csh or something else to run?



You should look for line with #!  in the begining.  The path after that point to shell wich be use to interpret that script.  In Maverick's scripts we have:
#!/bin/bash in putresults ( so bash is enough to run it)
#!/bin/zsh in showstats ( you need zsh shell frown )

But not only shell you need to run this scripts.  Also you should have sed, grep and other external commnads used by them, installed on your linux system.  But don't panic big grin, you probably have it.

Hannibal
[Muon.FG]7F4
2002-09-29 14:51:04
Beta 2 with manualsend script is available

Ronny
maverick
2002-09-29 22:36:42
Hmm.  Some comments on your Modifications:

1. Why do you delete signal.dat after downloading?
That does not make any sense to at least me.

2. On Line 52, Username should be in light quotes "$username"
Because there are, for example, usernames containing [ ], which are normally interpreted by the Shell.  This is _not_ what we want.

3. You check for ncftp.  We do not use ncftp, we use ncftpget and ncftpput.  In some really strange conditions, you could have ncftp, but not ncftpput or ncftpget.

I made the script a pit prettier, and added some more sanity checks.
Please, have a look at it.
manualsend

Additionally, your Packages are called .tgz, but are bzip2 compressed tarballs.  so tbz2 or .tar.bz2 would be correct.  The Version number in the README hasnt been raised, but that is purely cosmetic.

As a comment:
Do _NOT_ compile linumuon with -O3 and/or -march/-mcpu.  It causes corrupted results.

[This message was edited by maverick [SwissTeam.NET] on 2002-Sep-30 at 6:13.]
[Muon.FG]7F4
2002-09-30 02:51:18
Hi maverick!

1.just to hide the warning that the local and the remote file signal.dat are the same

2. you're right (I guess), i'm not a shell programmer

3. normally you use the package ncftp which contains ncftp & ncftpput/get, but checking for ncftpput/get is better

I'll use your manualsend (nice modifications!)
Also I'll rename the archive-files to tar.bz2 (I forgot),

When I updated my HP I decided to call it Beta 2 (the archives was created already) so the wrong version number in README and in the program itself (still prints Beta 1 on screen) appear

>Do _NOT_ compile linumuon with -O3 and/or -march/-mcpu.  It causes corrupted >results.

Where did you get this information? 
1.
I've checked the program with results calculated in windows (get the same results, sometimes with statistical deviation caused by random decay)

2.
-O2 -m486/-mpentium is normally used in distributions, optimization with __MORE__ then level 3 are unrecommended because they can create some failure

But I can change it if requested (-O2 [-mpentium] ?)

Ronny
maverick
2002-09-30 03:11:45
1. You deleted signal.dat _after_ downloading the new one wink
And, the warnings no problem.  Bandwith will get spared, because the file isnt needed to get downloaded again.  We could circumvent the warning with 2>/dev/null, but i dont think that we want that.  (Error Reports?)

3. Yes, thats right.  But for example, i have two machines that only have a statically linked ncftpget & ncftpput, but no ncftp binary itself.  This is not common, but its better to be cautious smile

About compilation problems:
I compiled it with -O3 and -march=i686 -mcpu=i686. Every score calculated got 0.00000. I think this may either be a bug in gcc, or your port.  Although, i think its safe to assume that everybody uses -O2 -march=i686 -mcpu=i686.
Stephen Brooks
2002-09-30 04:36:11
Just for your background information, the reasoning behind what I do with signal.dat is as follows:

  • If no contact with the FTP server could be made, there will be no signal.dat downloaded, allowing Muon1 to recognise when you are offline (thus there should be no old signal.dat left over when the send process starts).

  • The more obvious use for signal.dat is that it contains on the first line the version number of the current stable version (allowing users to be notified when they should upgrade) and on the second line a brief description of the changes made in that version (allowing users to know WHY they are upgrading).


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
[Muon.FG]7F4
2002-09-30 06:01:02
Hm, i686 for optimization, thats the question , some people uses pentium or older amd, maybe I still should compile the binary with -O3 -mpentium

on the other hand, the sources are available, so everyone can chose his own optimization level and get the last piece of speed, if they want!

your -O3 -march=i686 -mcpu=i686 problem sounds interesting, perhaps I'll check

Ronny
[Muon.FG]7F4
2002-09-30 06:20:44
@maverick uuencode wasn't installed on my suse8.0 -> so the filename couldn't be created correctly, perhaps we should check for all used programs or for errors, while creating filename

Ronny
maverick
2002-09-30 07:03:12
sanity check added, commited to cvs.
maverick
2002-09-30 07:08:21
BTW: 7F4, are you interested in a mailinglist for development?
[Muon.FG]7F4
2002-09-30 08:25:15
mailinglist for development : of course (seems to be necessary -> the tread is 2 pages now ...)
[ARS]odessit
2002-09-30 10:46:41
quote:
Originally posted by [Muon.FG]7F4:
Hm, i686 for optimization, thats the question , some people uses pentium or older amd, maybe I still should compile the binary with -O3 -mpentium

on the other hand, the sources are available, so everyone can chose his own optimization level and get the last piece of speed, if they want!

your -O3 -march=i686 -mcpu=i686 problem sounds interesting, perhaps I'll check

Ronny


What steps would I need to take to compile linuxmuon from source?
Is there is a FAQ on what optimisations would I use and how to use them?

Thanks!

Intel P3-M 866 MHz
Duron 1000 MHz
XP 1600+ @ 2000+
maverick
2002-09-30 11:49:10
So, i setup two mailing lists:

muon@lists.projectdream.org

For all users of muon, for open discussion.  Subscribtion is open.
Subscribe through an empty mail to:
muon-subscribe@lists.projectdream.org


muon-dev@lists.projectdream.org

For all those who develop muon, or are interested in the Development.
_not_ for users that arent interested in development.
Subscription is open too, send an empty mail to

muon-dev-subscribe@lists.projectdream.org

@Stephen:
Could you write this on the muon webpage too?
Stephen Brooks
2002-09-30 12:24:19
I'm not interested in having a general Muon mailing list because that is what this bulletin board is for (and it's rather more user-friendly than a mailing list).  I could start another forum-section if you wanted.

Probably the most appropriate place to put this information is on 7F4's site with the Muon1 Linux downloads, and I'll put a link to there saying that it is the place to go for Linux tools and development too.  There's been a few other tools developed (e.g. Rechenkraft's Muon Monitor) and the place for them isn't really on this site, although I can link to them.


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
maverick
2002-09-30 12:43:30
As an old Usenet-User, i really disklike Web-Boards.  Well, just my personal opinion.
About User-friendliness, i think its far better to use a mailing list (Well, talk about lkml and such, they arent using web boards too).

But this is your project, not mine, so do as you wish.
[Muon.FG]7F4
2002-09-30 12:51:46
a own forum section would be nice (for general discussion)

for development maybe a mailing list, but are there so many developers ?

@maverick: I can place the information on my site, if you want!
maverick
2002-09-30 13:00:38
Well, a mailing list has more meaning, because anyone who wants to join development, can join the list.  While a 1:n E-Mail has some limits.
So, i will delete muon@lists.projectdream.org (as stephen wishes so).
Stephen Brooks
2002-09-30 13:12:29
As there seem to be about 2 developers of this, you could just e-mail each other and post public releases and information on your website?  Or use a mailing list just for yourselves.

Interestingly, this board's "PopIt" tool allows updates to particular threads to be e-mailed to you in various formats.  It's just that there's no send-post-by-email option yet.  If the latter were implemented (and I'll suggest it to the Infopop users forum), the web-board and mailing-list interfaces would be interoperable.

Really a small mailing list is conceptually closest to a long single thread on this board (and they are paged, so that doesn't get unwieldly).
maverick
2002-09-30 13:21:00
Well, all this Web-based Stuff is ``to new'' to me.  Iam a bit of old-school when it comes to that.
But a Gateway between Web-Board an Mailinglist would be a nice Idea.  Maybe the Guys from Interpop do it, or perhaps i will try to do this myself (if i have the time). 

I would consider a mailing-list to be a better[tm] thing than 1:1 emails, because with a mailinglist, anyone interested can join development.  And thats the idea behind free software, methinks.

Hmm, by the way, this brings me to another question:
Under which License is the Source Code of muon?  I didnt see anyone, so iam asking this out of curiosity.
Stephen Brooks
2002-09-30 13:34:54
No license whatsoever.  I go under the assumption that if I put something on the web, people will do as they please with it and there is little I can do to stop them.

The only bad way in which people could mis-use the source-code is by compiling a version that returns incorrect results, but in v4.22 (which I am meant to be debugging now, but I'm away from home for 3 days soon so that will have to wait) there is a checksumming source module that I do _not_ release to the public.  This way, I only give this module to certain trusted individuals, and if I suspect serious 'cheating', I change the checksum algorithm and re-release.


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
maverick
2002-09-30 13:46:11
Hmm.  This is a Bad Thing imo. 
You should put the code you release under a License like GPL or BSD.  Or make it Public Domain if you wish so. 

To the checksumming thing:
This is not good.  At least iam only using muon because the source is accessible (although not (yet?) free software).  I do not want to offend you, but i strongly believe in free software, and what it means to the community.  Security through obscurity does _not_ work.  So by just hiding the Source to the checksumming code, you will miss some people who would otherwise participate.  If someone wants to cheat, he still can.  (Thats done over and over, just compare how those pretty simple cd keys are exploited everywere).

Proprietary Software does not work.  Iam really sorry if you are going to make muon a closed source project (or parts of it). 

Science means Freedom to develop, not to hide what you do from others.  You dont have the possibility to make people not cheat.  Even Hiding the source code does not help.  (Microsoft does this, but Microsoft Software has far more flaws than any of the open unices). 

Well, after all its your decision.  I would be very glad if you would release the complete 4.2 (including checksumming, which is still good to detect corrupt results!) with either GPL, BSD Licensing, (or another free software license that you may like), or even as Public Domain.  However, you may choose to not do that.  I would be really interested in your reasons if you decide to not do so.

Currently, everybody who has downloaded the source did something thats illegal.  Thats not good after all.
Stephen Brooks
2002-09-30 13:48:13
quote:
But a Gateway between Web-Board an Mailinglist would be a nice Idea.  Maybe the Guys from Interpop do it, or perhaps i will try to do this myself (if i have the time).


Do I see the opportunity for the ultimate wget/grep/sed shell hack here?  smile

I suppose a mail server could receive the e-mails and then carry out the appropriate webpage-loads in order to PopIt-subscribe the users to a particular thread (with, say, immediate notification) and then for a different e-mail subject line it could instead post a message.  The thing I can't immediately see how to do is getting the data into this "reply-box", which is then sent via HTTP POST (I think) when the button is pressed.
maverick
2002-09-30 13:56:46
about mail->webboard:

I think sending a direct POST request would be best.  But for that, i will have to understand how UBB works, at least at some point.  I will have a look it, but i dont promise anything wink
Stephen Brooks
2002-09-30 13:57:03
quote:
Currently, everybody who has downloaded the source did something thats illegal.  Thats not good after all.


No, with no license it is impossible for anyone to do anything illegal.

Muon1 is (trivially) free software because people can download it without being charged for it.

I will maintain my position on keeping the checksumming code 'secret' from version 4.22 onwards.  I will give it to people who show a serious interest in porting the code, so for instance you could set up a CVS archive for the Linux port and then when you decide to release a new binary you can do this because you have the relevant module.  Most contributors will not be interested in the checksumming code anyway (after all, there would be little point in modifying it).

I agree that security by obscurity can often be cracked, but it can be a useful deterrant to people who consider "what if I just recompiled it with the main loop short-circuited". It makes it _harder_ to cheat, which is enough to reduce the likelihood of it happening.


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
maverick
2002-09-30 14:03:04
It is.  The Code is copyrighted to you (automatically, because you wrote it).  And you didnt allow anyone to download it. 

Please know: Free Software is not Free Beer.  Just because you can download something without having to pay for it, it isnt free as in free speech.

So, you said that security through obscurity will not work.  I strongly agree on this.
This also means: If someone wants to cheat, he can cheat.  Period. 

Basically, you're doing the same as distributed.net, which caused me to not participate in RC5-64. I dont want non-free software on my machine. 

Maybe you dont like the free software philosophy.  Iam fine with that.  But iam not fine with the matter that you think non-free software will prevent cheating.  (If thats your only reason to make Software non-free).
Stephen Brooks
2002-09-30 14:37:34
quote:
Originally posted by maverick [SwissTeam.NET]:
It is.  The Code is copyrighted to you (automatically, because you wrote it).  And you didnt allow anyone to download it.


So why is there a link saying "Muon1 source code" on the download page?  wink

quote:
This also means: If someone wants to cheat, he can cheat.  Period.


Dependant on the persistence and skill of the user.  The thing about DC projects is that they are not just a matter of one person having software on their machine: the information they produce is used for something else and must be reasonably reliable.

quote:
Basically, you're doing the same as distributed.net, which caused me to not participate in RC5-64. I dont want non-free software on my machine.


It seems that you have had this same discussion before with RC5, in which case I see that it is inevitable you will not use my program from version 4.22 onwards.  All I can say is that RC5 had reasons for what they did, which I see as valid ones.

quote:
But iam not fine with the matter that you think non-free software will prevent cheating.  (If thats your only reason to make Software non-free).


I want to stop the 'casual' cheater: the guy who knows a _bit_ about programming and just wants to increase his stats.  There will also be more-skilled cheaters who will be effectively unstoppable in any DC project.  You should recognise that reducing cheating (although not eliminating it) is better than not doing anything.

If you know any practical way to stop cheating that does not involve a non-open-source module (for instance, some other form of encryption) I would be interested to know about it.


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
maverick
2002-09-30 14:55:25
1. This Link does not allow anyone to download it.  This is a pretty interesting topic.  You have to put it under a Free License, or make it Public Domain that anybody could download it.  Yes, you can sue me, because i downloaded it.  (This it not good, methinks)

2. After all, you must trust users that they dont cheat.  Period.  Theres is no technical way to prevent users from cheating.

3. I didnt discuss this with the RC5 People, i didnt even join the project.  Theres never a reason for security through obscurity, because it simply does _not_ work. 

4. If cheaters are unstoppable, so why make your program non free?

Let me make this clear:
I think i know your position.  But your way is wrong.  It does not solve the problem, yet it makes your software non-free.
Theres only one way to prevent cheating, you should chosse this., because it prevents cheating, no matter how good the one was that cheated:
Good results are recalculated, for example all top 1000 results are getting recalculated by persons whom you trust.  Or you could, for example, recalculate every 100th result.
Sure, it is time expensive.  But this is the only way to have trustworthy results. 
Iam pretty sure that are many algoritms that could be used to faster-verify the results:
for example, results with nearly same values should give also nearly same scores.  If they dont, someone cheats.  so you can recalc it on your own.

Yes, decentralism is time & resource exhausting
Stephen Brooks
2002-09-30 15:51:29
quote:
Originally posted by maverick [SwissTeam.NET]:
1. This Link does not allow anyone to download it.  This is a pretty interesting topic.  You have to put it under a Free License, or make it Public Domain that anybody could download it.  Yes, you can sue me, because i downloaded it.  (This it not good, methinks)


Well actually that sounds quite neat... I've never sued anyone before big grin
But seriously I have no intention to give money to lawyers in that way.  The law is void if I don't exercise my right to enforce it.

quote:
4. If cheaters are unstoppable, so why make your program non free?


Only some cheaters are unstoppable, many others can be stopped.  100% security is impossible, but I can increase the security by limiting the distribution of this one module.  Importantly, this does not interfere with other sensible development of the code, but I have the ability to insist that any differently-compiled client is approved by me (or some other individual I trust) before being able to participate in the project.  I don't see that as unfair.

I also intend to re-test the good results (as I have done in the past).

Checksumming also shows users that I do care about their stats being genuine and am not going to let people easily fake positions in the rankings.  If I distribute the code in such a way that anyone with a compiler can cheat, it is fairly insulting to the majority of users who are participating genuinely.  If on the other hand, the cheater would need to carefully decompile the code, extract the algorithm and then write their own program to generate false results, it makes it seem as if I have done everything in my ability to prevent cheating before it gets to the stats-server.

<personal_opinion>
Incidentally, I think the free software licenses have completely missed the point: they are still legal documents which will rely on expensive legal proceedings to be enforced.  We should be moving beyond that, to on online way of working that does not _need_ legal clutter.  As I said, I have no intention of giving any money to lawyers, so there is no point in having any legal material on this site.
</personal_opinion>


"As every 11-year-old kid knows, if you concentrate enough Van-der-Graff generators and expensive special effects in one place, you create a spiral space-time whirly thing, AND an interesting plotline"
maverick
2002-09-30 15:54:09
okay, it looks like we wont get on one line in this topic.
I wish you, and your project much luck, i hope you will get what you planned to do.
Jwb52z
2002-09-30 17:00:31
What about wanting to make MONEY?  You can't make money with a creation if you give it to everyone.  It is the right of the inventor or creator to keep it a secret.  It's not horrible to want to keep things to yourself and take the credit.  Selflessness is nice, but altruism can only go so far in the real world.
[ARS]odessit
2002-09-30 21:21:51
quote:
Originally posted by Jwb52z:
What about wanting to make MONEY?  You can't make money with a creation if you give it to everyone.  It is the right of the inventor or creator to keep it a secret.  It's not horrible to want to keep things to yourself and take the credit.  Selflessness is nice, but altruism can only go so far in the real world.


Stephen is making money by working as a programmer on this project, as far as intellectual property goes (if Stephen is employed to write this proggie) it belongs to the company as far as I understand copyright law, unless specifically stated in contract otherwise.  (Yes/No?, I am not a business law major)
I am not totaly sure why we are on this topic bu I fully support any client that Stephen puts out, whether it is open or closed source or something inbetween.  Hiding the security code from all users is very smart.  RC5 created one hell of a client (whether it was popular or not it's another story).  Anybody could make emprovements to the core, but as far as securuty goes it achieved it's goals as well, it is not easy to cheat in RC5.

Intel P3-M 866 MHz
Duron 1000 MHz
XP 1600+ @ 2000+
: contact : - - -
E-mail: sbstrudel characterstephenbrooks.orgTwitter: stephenjbrooksMastodon: strudel charactersjbstrudel charactermstdn.io RSS feed

Site has had 25389268 accesses.