CalRef Development Journal

Started by Luca, December 14, 2018, 03:13:42 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.


A thread on this subject is probably overdue by now, but it only just occurred to me that I could write a post on where things are and where I hope they go, at least from my perspective. Part of that delay is just putting my nose to the grindstone and doing my best to remake the infrastructure that we can use to make a community. Part of it is me being sick recently. Mostly it's just my habit to live inside my own head. I forget that I can talk to people, I forget that I can ask for help, and I forget to remind people that I'm here and I care a lot. And I do.

I hope that this iteration of CalRef can be a replacement for all of the communities that have come and gone before it and, more importantly, be an alternative to what still remains. I didn't want to be an administrator, and I never really did. But I know that I can and I know that the internet is in a dark place right now. It needs something stable and dependable that you can hold onto. It needs a community that cares about people because they deserve to be cared about. So it's something that I want to do because it's something that I need, too.

I'm not a queen and members are not subjects to pass on praise to me. Respond to any topic you want, including this one, with whatever ideas or criticism you have, even if you think I won't like it. I want as many people to be a part of making and growing this place as possible. If you think we need to add something or something's not working, I'm not very bright but I'll do my best to make or fix it. Right now, there's not much here. Anything that remains of what was a much bigger internet island is washed away, and it's going to take some time to rebuild. But the good news is that we can start fresh, from the beginning, and you can watch and be a part of where things go. We've got the time.

So, I think right now, something I need to work on is how it looks and feels to be here. This theme is mostly fine, but it doesn't feel "us" enough. I'd like something that's a dark theme that's easy on the eyes, but still has some upbeat optimistic feel to it and retains some kind of "this is the refuge" vibe. Which sounds kinda difficult, but I think I can work at it. I have a jobs list that I carry on my phone so I can write things down as I think of them and then do them as I figure out how. Example: one of the things on here is an email server portal. That ranks pretty low on the list because I'm not sure how immediately useful that would be over the default, and also it would take a moderate amount of monumental work to put it into practice, so that'll have to wait.

Ranking a little above that, though, is board banners. There are going to be new boards that we haven't had before, and also, you know, the boards we have with the same names are kinda different from how things were forever ago, so maybe I need to freshen those up, too. I might be able to get them to switch out with light and dark themes with some smf functions, but I'm not sure yet. Right now, I'm kinda thinking that the writing board can have some sort of a hand-written theme to it, something written on old parchment with old ink. Announcements, I thought would be pretty neat if I could make something that looked like it was chiselled into a rock and has some kind of paintball splatter to it so it's not as grey. I don't remember why paint splats, but it still seems like a fun idea. I don't really have ideas on the rest, but it's going to take me a little while to get re-acquainted with After Effects and someone will probably have an idea for them by the time I need it.

I'll post another rambling when I have different things to ramble about. Until then, if anyone sees any bugs or things that don't look like they've been set up right, send me a message or send Valkyrie a message, or send Natalie a message. We're all getting familiar with things, so if something comes up, we'll figure it out together.  :heart:


I think it's time for another rambling development post about the things that I've been thinking and doing lately, because there's been a lot of thinking and doing. And, at the moment, the most pressing thing on my mind is...I have been getting overwhelmed every now and then with a kind of soul-crushing dread and mournfulness about how things are. And that manifests mostly as a "where are my friends?" thought in my head. And the response to that has two sides. The first would be that I have a lot of new friends now who are wonderful and amazing, and I want to see more of them and talk to them as much as they can stand it. The other side is that if, for example, Nioca were here, he would probably say we weren't friends in the first place :laughing: but also that I long for a point in time that never existed and I remember it idealistically. That's partially true. CalRef always had conflicts and some level of drama and intrigue. But it was a dynamic that was safe and reliable and populated by people that I liked seeing, that I knew personally, and that I cared about even if I didn't like what they were arguing for sometimes.

That's what home is, that's what it should be, and that's the real thing I miss: a mental/emotional connection between two human people. And any number of communities that exist out there on the internet should be those kinds of homes and full of personal connections. But we've kind of gone into a weird direction with where the internet world is.

There's a lot of commercialisation. A lot of people paying money or being bombarded with questionable ads or agreeing to have their data shipped to the digital equivalent of a medical testing facility for easy cash.

There's a lot of ideological extremism. A lot of people are angry. Mostly with how they feel about their lives, their economic situation, their social situation, what their prospects are for the future, and they channel that anger into scapegoats that take the blame and need for introspection off themselves.

There's a lot of authoritarianism. People do things without asking, infringe on people, back them into corners, discourage dissent, and then no one is interested in building something together, they just wait for instructions and listen to policies they don't like.

And all these things live in symbiosis. Somewhere along the way of losing CalRef, we lost the internet that it was floating in, and even the alternatives and anchors of stability that we looked at for metrics about how things were going have collapsed or sold out. It's incredibly demotivating and disheartening because there's such overwhelming darkness and toxicity in air right now with people pushing things in directions that will only make it worse, and there's hardly anywhere that wants to bring it back.

So I was thinking about bringing it back.

And, up to now, I was mentally going about it by thinking that I wasn't really cut out for it because I never made a community before and it wasn't really my department of administration in the past. But, in truth, no one has ever brought the *internet* back. It's something that we're all going to be new at and all have to do together because people need those kinds of positive spaces from the past where they might not have it in their offline life. I don't know if we're going to be successful in this one tiny island, but I know that we have to try.

So one thing I did this week is make this theme that 88% of you are using. Granted I didn't develop it originally, I've done my level best to make the css themes pop as much as possible and make them more readable and accessible for people like me who can't see too well. There are a couple more features that we have, like recent posts (and also the news fader is back) and other features we can have in the future if we ever need them, like splitting categories. Mostly I'm just enamoured with it because it's a responsive, modern theme for SMF in 2019* when, in all honestly, probably a hundred admins still use SMF. I'd rather not appear outdate, but at the same time, it's what I know and I still agree with SMF's premise of free, open source software, made by people who do so because they want to see it succeed and people make things on a platform they wouldn't otherwise have. So I hope I've done enough to keep it going and relevant for an unknown number of years to come.


It occurs to me that everyone who is on this community is here for their own unique reasons, but a lot of those reasons have a single unifying element more often than not: conflict.

The last two years have been pretty rough.

For whatever reason, the places on the internet that we would turn to in times of discomfort and uncertainty, all crumbled in our hands when we reached for them this time. Because they didn't have the support to give. Because they couldn't support themselves. And why that was the case varies from place to place. Corrupt management, overthrow attempts, greed, or a combination of all of these and more. These issues culminated into a singular, grand catastrophe, which appeared, at the time, like any other. Something that was difficult and tense, but would work itself out in the traditional process. But we lost. Either because it had been put off for too long and building for too long, because the system had become fundamentally broken, or because we had. We lost. And this time it had bigger consequences than just feeling bad and taking a couple snide remarks to the face.

Things collapsed.

As intended.

I've spent the greater part of the last year trying to figure out what happened and how this came to be, looking for how to do better next time and avoid something excruciating and pointless as this in the future. And basically I have arrived at this groundbreaking conclusion: There is nothing to learn. There is no unifying conspiracy of events except that they all had similar events at similar times. The elements, the same: People in positions of power can eventually collapse into a dark world of "if I can't have it, nobody can!" and I'm past the point in my life where all-out wars are somehow a good idea. And this is the story of every administrator we have.

But today is today. That's done and I'm done.

I'm tired of it and bored of living in the past. I've got stuff to do and a finite amount of time on planet earth to do it. So here's a bizarre corporate catchphrase from me: my commitment to you. My commitment to you is that the stuff that has happened in the past is over and done with. And everyone is going to go on with their lives from this point forward and do our best to be ourselves. And if ever someone shows up with yesteryear animosity, they'll be IP banned to the surface of the sun.

The thing about humanity is that it's full of human people. That's it. That's all there is and all there is ever going to be, it's just us. There is no alien civilization that's going to descend from the sky one day and give you someone nicer to talk to. There's just people. If there's problems, we're going to have to be the ones to solve it. If there's nothing that makes life kick and interesting to live, it's on us to change that and learn how to live with each other, regardless of our critics, in spite of our spite of our own internal doubts.

We're opening CalRef, getting up off the ground, and not living inside our headnoise anymore.

Brace yourself, there will soon be a wiki launch.

Edit: Accurate numbering


I have no idea if it will actually help or not, but in an effort to not be sick anymore, I've basically been going around the apartment autoclaving any fabric I've ever come into contact with so that the purifying light of 30,000-degree water will ascend me to a new plane of existence. As I was going through the laundry bin, I noticed this topic sitting amidst the socks and that one wash cloth I used on the sink two weeks ago. Weird.

There's been some site development since February of this year, but for one reason or another it hasn't made its way into this thread. Because this thread is mostly a mental monologue of where my head is at while we're learning how to grow as people and as a community of friends.
That's had some bumps.

About a year ago today, I was in a kind of social dark age for a bit. CalRef hadn't gone well in the few months that I had attempt to right it, so I nuked it and I was drifting through a series of random communities that would come up on the internet. I don't know if you've ever done this, but I have no idea how civilization functions if this was a good sample size. Basically, it was all a kind of weird mix of "surprise I'm unironically a Nazi" or "allow me to attach these puppet strings to your face, so you may be in compliance with server policy" Okay well, neither of those sound like something I want to sign up for.

Working with the tools and in the environments that exist in the world is definitely a skill that can be learned, but that's not remotely something I care about doing. Because I don't like a lot of the world. I think it's a dark, uncaring place with selfish interests. I like being free to do my own thing without being judged for it, without living up to someone else's expectations. Because when that weight is lifted off my chest, I actually think I do alright and make some pretty cool stuff. And that's about where I am today.

Without worrying too much about the in-the-moment dramas of a chatroom, I want to be able to go back to creating content, like this, that may never be read. But that *can* be read by anyone, including myself five years from now when I do the laundry again, find this topic, and read about all the ideas I had that were wrong. That's a part of my history just as your creations are a part of your history. And all of that adds to who I am, in this space - that we own - and have the freedom to develop our own way to look the way we want. That's the magic of being in this community.

As such:

As indicated before, the wiki is online and is objectively fantastic. It runs on more modern mediawiki software than the before-times version, which lets us develop much more intricate formatting styles, and is less prone to the database becoming sentient and attacking us. I have spent slightly under three billion hours formatting the basic templates to use for making character articles, and I've written a series of help pages on how to use them. This is not all-inclusive forever, but it's probably 70% of the templates we'll ever use. If you need help, feel free to ask, for some reason I know how this works now.

Files and L.calref will probably come back. It's taken me a bit to think about, but I'm reasonably confident that I have a pathway to develop these systems so we have a couple more in-house features that we can safely use without worrying about what other people are doing with our data. Development on them will be slower, but I do actually confirm that it will happen now.

We've also created a Minecraft server? Amazing. This server runs our custom modpack called Refugia through the Technic Launcher. It's available on Oxygen, a server which is far larger and more powerful than anything we've ever run before, and accessible at More information in the appropriate topic which I will make in the Games board, which I will also make.

Refugia in NationStates is an officially sanctioned entity of Calamity Refuge. If you're interested in politics, dumb things, and using browser based simulations of dumb things to model politics, join our moderately problematic army of the dead in Refugia and together we will develop a domain that is better than the rest of their site. Collect cards if you're literally neurotic and refer to the NationStates board for content that relates to this universe, which does not exist but probably will in the future.

If you see anything weird, or you think some area of the site should be improved, please use this thread (gasp my old member number) to tell me what that thing is and I will apply all of my minimal skills to appease your whims.


As I continue to get healthier and less stressed, these posts will start to get  w  i  d  e  r.
It's good to work on site development again. Here's where I'm at with things related to this forum.

In the last week on the forum:

New Feature: You may now upload files directly to the forum using the attachment function. These are intended for an easy way to attach images to posts. The total file size is presently limited to 5MB, and you may upload up to five files at a time.

  • The Admin/Arch-Admin colours now display correctly.
  • Avatars have been scaled back to 100px If you upload one that is larger, it will be automatically resized.
  • Postage ranks and BBC buttons now display correctly in Aquarelle.
  • The Recent Posts list in Yorky now more competently lists the recent posts.
  • Posts in NationStates and Spam are now announced by Ligrev like the other boards.
  • Made an adjustment where the local moderator position and thread names no longer include three hundred spaces inside the header of the board.
  • Local Moderators now have a clarified non-system member group which allows them to both see the mod board and appears as a fluffy lavender turtle.
  • Uhhh. Added. Role. Descriptions.
  • Yorky quotes and nested quotes no longer have apocalyptic colour schemes.
  • Fixed the spacing on jumpdown menus.
  • Made the calendar no longer display as #FFFFFF
  • Critical alerts no longer display as invisible text. :wat:
  • Yorky no longer scales avatars up 50%.
  • The text for resetting your password is no longer set to collision spacing.
  • Fixed a display error that implied there was no option to expand additional post options.
  • Forum emotes have been redone to be function instead of just well-intentioned.
  • Rest-of-the-world-that-is-not-the-US spellings have been added to the BB code, like colour and centre.
  • The WYSIWYG editor has been deprecated, along with the changelog tag, off-topic tag, move tag, and the pre tag.


The way that I do things is usually to wake up and be like YEAHH I'm going to DO STUFF today! And then I get here and go through the network sites and go, oh hey, I can fix that. I get 40% into doing that and find something I need to fix first to make that work, and then it's aaaghaghrg. Then I've spent the entire day painting 35 icons that were priority level "not at all." How did I get here???

Previously, my motto was "I don't always test my code, but when I do, I test in production." I have since come to the conclusion that this is not ideal. Therefore, I've created a new service called Bleeding Dot CalRef. Named after a 2009 CR branch of the AJAX chat by the same name, this will be the development site for our implementation of SMF. Although turning this on destroyed these forums for probably seven minutes, I'm anticipating accidentally breaking things a lot less in the future! Although it's only accessible to admins, it's been added to the Network Site and you can verify its existence at test.calref.

Pussy cat, pussy cat, what have you done there?

Quote from: Jens on November 10, 2019, 12:54:57 PMWhich reminds me.... how do I put a preview of a YT video in here?  :sweatsmile:
You can't!
You can!

I've introduced a YouTube BB tag. Simply surround your YouTube URL with the
tags, and it will resolve the address to be an embedded video. It looks like this:

Easy, right?

Changelog that I will be adding to over the next several days:

  • The old theme "Scratch" has been renamed "Legacy (Classic Scratch)" mostly to indicate that I'm not going to develop it further due to limited time. If this theme gets updates in the future, it will be very infrequently.
  • Added metatags so the forum may be more easily found by the Google Deepmind.
  • Weird, dangly buttons removed from the short-view profile.
  • Sent PMs will now be saved by default in a PM sent box.
  • New members will now get a pop-up notification for new PMs. (turned off in PM preferences)
  • Yorky profiles are simplified now and allow for the display of custom fields like Steam and Discord handles.
  • Added a "Real Name" field in Forum Profile to fill in if you wish.
  • Added :purpleheart: to the smilie roster.
  • The Member List is now simplified into a list view because I can only stand so many weird circles.


It has been an incredible w h o l e  week without an update to this thread, so I thought I would highlight some of the bigger recent changes in that time by posting in this development thread.

All Themes will now resize images wrapped in the [img] tag to be no larger than the post or overflow the screen and add a scroll bar. The same is true for images that are uploaded with forum posts using the upload an attachment function. When you click to expand an attachment, it should expand like you would expect instead of generating an image the size of the actual planet. I have developed this change on Yorky and spent approximately zero seconds testing it on the other themes before pushing the update to them, too. So if you see something (broken), say something and drink to forget.

There is a new profile option where you can insert the IRL country that you are from if you wish to have it represented there. The default option if there is no country selected is Refuge Isle, the RP/lore location of Calamity Refuge. There are some 129 options to select from currently. If you do not see your country, send me a PM so that I may add it.

There's also another new profile option omg where you can insert your NationStates account name if you are a NationStates player. It will link to your nation's page by the power bloodmagic and optimism.

Changelog that I will be adding to over the next several days:

  • You can now search for members by position, Steam, Discord, or NationStates account if they have entered that information.
  • Because Emily has reached the highest post rank available, Zyqxuwy Sage, a new post rank has been added called Local Emperor. It's rank image is
  • The NationStates board and the Network Site have had their boardbanners updated to match the change to Refugia's theme changes.
  • Yorky: The massive logo can now be clicked to return you to the board index without opening a new tab.


At the approximate time of this post, the Forum Statistics indicate that there have been 383 posts this month. This is not all that many for the lumbering powerhouse that we should all strive to be, but it is an achievement because the last time we had that many posts in a month was August of 2010. This is because all of the time between now and then, we had primarily been either an irc chat community or a Discord chat community and moving to a chat had some unintentional effects.

One was that people got a lot closer when things were working. People started moving in with each other, which was odd, but when you spend 70% of your free time around people for years, I guess that's the case. Another effect was that it had a tendency to cause toxicity when things were not working. That caused some people to be driven away whom I will miss for the rest of my life.

In moving back to the forums, there's a weird thing we're going again for the first time in five years: RPs! And the ability to just make shit up and generate a world of your own creation. Write about the things in that world, build wiki articles on your characters, their places, etc, and all of it looks GOOD. That's something I've missed a lot, and I'm very very grateful for everyone who is a part of building these new boards. The old forum is locked and only viewable to members who made an account back then, for privacy reasons. But here is a look at all of the board banners that we have used over the years:

Changelog that I will be adding to over the next several days:

  • The Media Viewer, which sometimes worked and sometimes did not, but always wasted your time instead of showing you the file that you wanted to see the details on, has been excised from the wiki.
  • Since I somehow managed to make the Local Emperor rank, I'm adding a new postage rank called Forest Sprite in honour of Rea's AVftS character. That rank is at 250 posts.


Hello, I have relocated. Now that I am no longer relocating, I have the time and ability to ramble here, as I do.

I'm interested in using this bright fresh new year as a way to sort of give myself permission to do the big things with the community that I've wanted to for some time. Really, any large and stupid change or development that I've had in the works could have been launched at any time at all, but I've felt held back. Not anymore. We're doing the stuff.

As you may be aware, Refugia is an officially sanctioned branch of Calamity Refuge. It also happens to be a neat-o way for us to represent our ideals as political policy in a region of our own creation. Although NationStates has some problematic elements, the ability to set the tone and atmosphere for Refugia is entirely within our control. The ability to inspire people to think about the same things we care about is entirely within our control. The ability to find people who share those beliefs and values is entirely within our control.

To that end, I have been and will continue to body-slam the recruitment for this branch of us, by sending out a total of 40,000 recruitment telegrams from last November to approximately the end of January or early February. This telegram was largely written by Emily or Sylh Alanor and I feel like it showcases what we're about and what we believe in, the rest is up to us to make all that real.

In related news, I have been banned for life from Google Ad Sense for impersonating myself, so TGs seem like the way to go. CalRef does not use any other Google product, so regrettably there is nothing else I can do to show my disappointment.

Also Emily is now and Admin in recognition of her fantastic contributions to the site and empowerment to come up with more ideas to get us going. I'm less concerned about historical precedent and the like when there's boatloads of stuff to do and every bit of help is a godsend to me.

In the coming weeks, I'm going to be working on an environmentally-related announcement in order to use all the resources and influence we have to make some positive impacts in the real world.

Stay tuned.


So! About that!

Right, I guess I need to update this thread since it has apparently been an entire year since the last time I was here. Well true enough, and it would be good for me to have this explanation in one place instead a few different fragmented parts. A few weeks before here, I got sick. And stayed that way. And it wasn't really clear how serious that would be until I stopped posting. If you would like technical details, I had surgery on my mouth, sneezed at some point, and exploded a hole into my sinuses which healed on my mouth's side, but got infected on my sinuses' side. For whatever reason, no manner of anti-biotics would treat it and the infection got progressively worse for seven months until we found something that did. This led me to close most of the projects that I was working on, including Refugia, whose population fell by 90%, including this forum which got closed completely. The Minecraft server, Oxygen was also shut down and archived. Alas.

But! Now we're back and better than ever. Really, arguably better than we've been since 2009, thanks to some world class friends whose support warms my heart and gives me motivation to throw a lot more work into this place. It's hard to remember what notable site changes and improvements have happened since last time, but what comes to mind is:

The chat's back. It's called CalRef II, even though there was no CalRef I. But there was a discord server called Ligrev's Lounge. Only difference being we're moving past the past and burring everything from before and moving the heck on. And I'll be aggressively eyeballing this one to make sure it stays alright.

Coming with this server is a chatbot called Dot, who is of my own making, coded in python and hosted here on this server. Don't have a super great way to talk about the changes to Dot yet, but presently she's able to grab links, update roles, announce various server happenings, NationStates happenings and do some silly chatbot functions. Might have a more coherent place to discuss Dot and Dot's development upon my planned ground-up rewrite which will be coming whenever I happen to find time for it.

I've tweaked the forum theme to shift from old CalRef styles to more Refugia-based styles since that seems to be the main focus of activity lately.

Vote.CalRef was also added to the network recently to provide a safe and secure off-site voting suite to Refugia. The link to which is plastered on Refugia's WFE, especially whenever there's an active vote, and also available on the Network Site.

So that it's consistent with the rest of the network, the Refuge Wiki has been relocated to Wiki.CalRef. If you had any links pointing to the wiki, or had images that were hosted there, you will need to adjust those URLs or they will no longer work.

List of minor changes that I will be adding to until I feel like making another post:

  • Added a link to Refugia II's Discord server to the forum header, along with the wiki, network site, and link to Vote.CalRef.
  • Ended support for the Aquarelle light theme. Ripu.
  • jfc, added 2024 to the calendar, and added Endless Day as a holiday.
  • Tossed out a webhook for posts that occur in the Announcements, General, Roleplay, and Refugia boards to the Discord server.
  • Gave some logo improvements to the Refuge Wiki as it shifts to being more general purpose than just RP.
  • Standard quote fonts now resize better so they are still easy to read.
  • Prevented IPs from displaying to screenshot-happy mods and admins.
  • Removed a duplicate calendar listing from the forum header.
  • Updated SMF from 2.0.15 to 2.0.17
  • Added the [nation] and [region] BB Tags
  • Converted the database to UTF-8 so maybe unusual characters will stop causing problems.
  • Changed the gender marker to a pronoun marker because Reasons.
  • Added basic support for code syntax highlighting on the forum, e.g. code=python but in brackets.
  • Fixed an issue on the wiki where large images would keep rendering off into space.
  • Fixed an issue where the profile option to only display YouTube embeds as links appeared twice.
  • Fixed an issue where some fool didn't know how language files worked.
  • Fixed table CSS from smashing into itself

Additionally, I have added or updated the following emotes. If you see an old version of these emotes, do a hard refresh on this page and you should see the new versions from then on.

:heppy: :derp: :silly: :blobaww: :blobsweat: :blobmelt: :hawww: :jump:
:hugs: :geh: :merf: :wannafite: :hyper: :wat: :sip: :hehe: :ItIsAMystery:
:NotLikeCat: :spider: :shrugshrug: :muffin: :pikathink: :hehheh: :gay: :refugia:
:c-heart: :BIGCAT: :tinyclaps: :yaaas: :uwu: :yikes: :BBB: :necro: :heartbeat:

For emotes that already existed here, the graphics should be a little tighter and easier to see what's going on now.

  • Reformed site favicons (appears at the top of a web browser) to a snazzy new convention standard:
    Refuge Wiki


God, it's been three years since the last one, but let's do it again.

Basically, this is a kind of post that would previously have a special name. If you are abysmally old, you may remember CalRef II, CalRef III, and CalRef IV. In some ways, this post would be CalRef V. Mostly, however, it is not. Those old grand update pushes were a part my agenda, because a place that sticks around for a while can't keep using the same tools and methods. Useless junk piles up, stuff becomes obsolete, and things that used to work start ageing and break down all the same. But we have busy lives, and the day-to-day was sometimes neglected, so we reconciled the catch up process in these massive waves to get us back to the present. When I took over, this process more or less stopped and became smaller but more regular. This thread was created, and news of regular updates started flowing, although that wasn't the only reason it was made.

CalRef, in my administration, has seen a lot of weird times. I think I started writing these originally to address rebuilding CalRef, basically from scratch. The context back then was people from The Sinking Lure trying to integrate. Jens, El, Rea, Saba, MJ, Fancy maybe someone else I'm forgetting. Later on, we dove headlong into the conflicts with the Gaia Online group when they were considering merging into us to use the infrastructure, if anyone remembers such a delightful time. And I think a bit after that we had some people who were running away from Dema's group come over, whom I largely cannot recall the names of I'm afraid. Now we're loaded up with NationStates people, all at some degree of progression to burnout and retirement.

Regardless of the circumstance, there's no shortage of people who are bugged by something, and folks come by our community, some with good intentions and some not. It's occasionally also useful to have a place where I can post a blog entry that tries to give neutral takes on the problems and remind everyone that the sun's going to rise tomorrow - we'll get through the issues then, too. That's the new norm.

CalRef is, and always will be, a home for people who need one, for people who want to hang out and do stuff together. And sometimes we can come up with cool ideas that make life more tolerable on planet earth. There's been admins in the past who would have been a better fit than me for this job. But. I've tried to do my best. And that's about all I can do.

New Servers:

We actually have two of them fresh out of the server factory. The first is called Gallium, which was alluded to in the last update. It's a Minecraft server running on 1.16.5 and a custom-assembled modpack called "Refugia 3: The Search for Spock" because I'm hopeless and Brave Dwarves never had a third game. There's a specific thread for dealing with Gallium's content and installation, which you can check out for more information. You can also use the thread to talk about your Minecraft exploits. I'm planning on putting in some updates every now and then, if we come across some pro-building packs without too many complicated systems. At present, I'm planning on having this server around for long while. So don't feel too pressured to rush out builds. No worries, we've got the time. If you have friends you would like to invite, that's fine with me as long as they can play nice and observe a no-griefing policy.

Minecraft.CalRef has also been added back to the network directory.

Forum: GDPR Update

It's unclear if the practice we've had up to now of publishing the Code of Conduct (which is also our registration agreement) was enough to satisfy the government of the European Union, but either way, we now have a privacy policy. This privacy policy largely states the same content that was in the old Code of Conduct, and it is conveniently located at the bottom left of every forum page in glowing neon blue. You have theoretically already had to review these policies before you could see this page, but if by some magic power you got around that, please review those policies now.

There is some other fun abilities included in the GDPR Update, including the ability to download your profile data from the Actions menu of the User Profile page.

You may have noticed already, but there are some other fun abilities that I've written in for our formatting use. This item, for example: It's a box.
Sidebars have also been added. They float on the right side of the screen, mostly regardless of the objects on the left, and only expand to a certain width, which is very inconvenient for this demo. Both boxes and sidebars have very slightly tinted backgrounds and rely on the interior of their tags to actually contain content. This is common sense for you, but it's fun trivia for me for no reason in particular.

Sorry but you are not allowed to view spoiler contents.


And to float objects to the right, as well, without
or using

You will find BBcode buttons to spat these new items more conveniently, located on the post editor, in a new section for NationStates and object arrangement.

Other Changes:
The function that handles IPv6 has been rebuilt because apparently the old method didn't like the upgrade to 2.0.18. In other news, it's been seven years and IPv6 support still isn't vanilla with SMF. :sweatsmile:

Brightened up the colour scheme and rotated out some logos.

Reduced the padding on hr tags.

The post box's default size has been increased by 200px.

Everything Else:

As it turns out, having professional software developers making things for your community website is a great way to up the quality of life and put out massive rolling updates all at once. Regrettably, I am not that. So if you exist to lurk or post here and are not on the chat, you may have observed that there are some items missing from the pages of recent history. This is due to the database getting corrupted from me trying to do too many things at once. So, all content on this forum was rolled back about three days to the most recent backup. Some new thread topics may not be where they were the first time, as we've had to repost them. My apologies for the setbacks to linear time.

Consequently, I will be ending this post here and making another one later, when I'm more certain that everything that I'm working on is stable and will play nice with the other updates. Next up: Dot's Economy update. See you soon uwu.


    Dot 2.4: Economy Update
    Build Your Fortune!

    Quite literally, with the new fortune command. This is unrelated entirely to the economy, but if you were ever interested in reading some prophecies or advice, you may do so now. You will only have one fortune per day, which you may check as many times as you want, it will not change until tomorrow.

    Beginning approximately two days ago when I first put it in, your contributions to the chat now have a chance at generating planets for your bank account. Not a whole heck of a lot, and not all messages are worth the same, but this can be a useful passive income stream over a long period of time. All it takes is being active in any chat that has Dot in it.

    You can view how many planets you have by using the new bank command. This bank is presently owned by my stuffed sky bison, Boogie, in an unabashed display of pure nepotism. But Boogie safeguards your money well, and doesn't pay tax to CalRef administration! So that's probably advantageous for you.

    Eagle-eyed observers will also notice that when they use this command, they can be informed about their current stock possessions. This is because there is now a somewhat functional and experimental stock market system added to Dot. At this very second, there are six usable stocks with more on the way:

    • Tim Hortons Inc (THI)
    • Elahána Textiles (ETIF)
    • FlitCola (FLIT)
    • Spire Magitech (MAG)
    • Orteil's Bakery (COOK)
    • SKYRAIL Industries (SKY)

    These stock values are based on real external data feeds that Dot goes out and fetches, that data usually falls within a reliable range. When that input data is very uncharacteristically low or very uncharacteristically high, those abnormalities will be exponentially reflected in the share price. Because the data is based on external sources, a stock's price may not always be available, but you will have the ability to trade the rest of the stocks ordinarily until it returns.

    To check the current price of things, you can use the new stocks command. Included in the stocks are +/- indicators to note the movement of that price over the last six hours. Even if there is no change in the external input, the numbers are randomised on a very small scale, so you should still be able to make a profit (or loss, if you wish) when the outside world does not see much change. Currently, I am tracking how the price of stocks shift. The next update will include a command to let you examine the price history of a stock, so you get help to try to predict its moves in the future.

    When you see a stock you would like to buy or sell shares in, use the new buy or sell commands. Does the number or the symbol come first? It absolutely does not matter, because I literally cannot be bothered to remember these things. So, whether you use "I cast buy THI 10" or "I cast buy 10 THI", I've coded it to know what you mean. To help get your capitalistic dreams going, completing games in sus now provide planet rewards. These rewards are currently allocated as:

    • Expending all banish charges as an impostor rewards you with :planet: 5,000
    • Successfully locating an impostor will yield :planet: 2,000
    • Banishing yourself when you are the impostor will yield :planet: 3,500

    Finally, the last item in the economy update is the new infinity command. The Infinity Project is an IC organisation that creates a perfect international/interdimensional society. With the excessive wealth that you generate through your abundant yammering, banishment, and sly stock dealings, you can commit that wealth to charity and fund Infinity's vision. Your contribution will be remembered and displayed when you bring up the Infinity Project again.

    For players who have managed to come up with and donate ten million planets to charity can have an Infinity Project badge attached to their profile:

    There will be more uses for Infinity in the future, and more ways to generate planets. But for now, this is what I've come up with.

    Running Post-2.4 Changelog:
    • Awesome new profile picture and aesthetic. This particular redesign comes with the first wallpaper I've made for CalRef since 2016. You can download it here.
    • Changed cooldowns for NationStates API commands to be per-server instead of universal.
    • Added more vibrant and diverse sidebar colours.
    • Revised error handlers to be more aesthetically pleasing, added unobtrusive icons to help topics.
    • Rewrote more deprecated ElementTree code.
    • Relay can be used again.
    • Simplified the commands menu.
    • Rewrote the colour command to less intensive and more reliable.
    • Removed the hard cap on impostors in Sus, doubled number of impostors.
    • Added an inspected option to Sus to display a list of members already scanned.
    • Fixed a bug in the SC command where old resolutions would not post.
    • Removed changelog function; removed changelog help topic. These are changelogs, and that's good enough for me.
    • Rewrote the HelpQuest system to be substantially more space-efficient; added topics for telegrams and prune.
    • Rewrote the member-finder functions locate a member by closest match.
    • Rewote how the typing indicator works to the credit of several thousand characters.
    • Added CherryVale Produce (CVP) to the stocks array.
    • Added new feature called study, allowing you to see the price history of any stock, with graphs.
    • Fixed a bug where helpquest articles would not load.

    How do I get Dot on my server??
    Perhaps this post, through its abundant use of "Discord bot stocks economy" buzzwords, has caused you to arrive here from Google somehow. Not to worry, you can use this handy-dandy link to invite Dot to your own server.

    If you have any issues or bugs to report, please send me a message.


    Dot 2.5: Region Saver Update
    Entropy be Damned!

    Has your founder been disassociated from reality but you don't want to give up your spam count? Has your home been vanquished by the forces of darkness? Want to move because you noticed a typo in your region name three years too late? Have I got some sweet news for you.

    As of today, there's a new command that's been added to Dot. It's called save. Like pushing the save button on your game, but we're actually pressing a save button on NationStates' game. In any chat with Dot in it, you can say something like "I cast save X", where X is your desired region. For example, "I cast save Refugia". Dot will begin pinging NS. If the ping comes back alright, she will start extracting posts from NationStates and building them into an archive.

    This archive has been specifically designed to replicate as much of the original RMB post environment as is feasible, so you'll not only have your data, you'll have some of the original experience as well. This archive splits the RMB history into 100 messages per page, with a handy nav bar at the top and bottom of the screen. Bold, italics, underline, strike, nation tags, region tags, quote tags, and url tags are all supported and translated from bbcode to html, hooray!

    At the top of every RMB page, there will be a link to a replica of your region's history. All major events like delegate changes, embassy movements, Security Council action and more will be located here. The top of this history page features a chart, which will show you a graph of your region's population similarly to the way NationStates displays one. So this, too, is preserved. If you want to take out that data and use it somewhere else, there is a "Source" link below the chart, so you can get my generated population spreadsheet. My population records go back to 2012.

    When the archive is ready, Dot will provide you a link to the zip file containing your region's archive. That archive will be retained on CalRef servers so that if you happen to lose it, your region will not be gone forever. Not that there's anything wrong with you just having this backup on your computer, but the archive is made ready to be unzipped and uploaded to someone's server, no muss, no fuss. Should be a breeze.

    Want to know what it will look like? I've made a mock-up of a saved region on the network site.

    If you do not have access to a server with Dot in it, get access to Dot. There's an invite link within arms' reach, right here!

    Running Post-2.5 Changelog:
    • Fixed a bug in save where nation links would not point to actual nations.
    • Fixed a bug where the colour of backgrounds in graphs would be carried across functions.
    • Fixed a bug where an unavailable stock would break the study.
    • Fixed a bug where Dot would be confused if no one had been scanned for the day.
    • Adjusted consolidated all nightly functions into Nightly, which runs at midnight PST.
    • Added new graphics for sus inspection, banishment, and self-banishement.
    • Added a background to the THI logo so it's easier to see.
    • Added logos and banners for the Infinity Project and MAG.
    • Fixed a bug where trying to sell more shares than you had resulted in being told an incorrect inventory amount.
    • Added a farewell function to set, so any server admin may set departure alerts for their server.
    • Removed regular test.
    • Fixed memory leak in resolution commands, doubled text blurb cap.
    • Added feature WA to display the current World Assembly vote(s) with auto-generated graph banners.
    • Fixed a bug in info where a member's activity would never display.
    • Added Sky-High IndieTech (SHIT) and Apple Calligraphy (APC) to the stocks array. Removed CherryVale Produce (CVP) for not behaving as anticipated.


    Dot 2.6: UEFA Euro 2020 Update

    This is a limited time event. It will begin on the 23rd of June and conclude on the 10th of July.
    Dot will be a post in #Announcements when ticket-sales are active.

    Where's the endotarting tool?? Oh wait, look over there! A butterfly!
     Instead of doing anything useful, I had an idea. That idea is based around the concept of Dot's new economy, and I'm interested in finding more ways to make some planets. So, right now the world has a bit of an event going on called the Euro 2020. If this is your first time hearing about this, the Euros are a competition of all the national football teams in Europe and the only one I pay attention to. UEFA is one of the components of FIFA, with which you may be more familiar.

    Euros are held every four years, but the competition that was scheduled for last year sorta bugged out, if you get my meaning. So, it's moved to this year, but the name and logo remains the same so they wouldn't have to re-print all the birthday napkins.

    What we're interested in doing is diabolical sports betting, and by that I mean making projections about how the competition is going to go and who is going to be the ultimate winner. This is a pretty low-intensity game, and doesn't require too much involvement on your part unless you really want to get into researching teams, watching some past games, or whatever else you can think of to make an informed decision. Access this new feature by saying I cast Euro.

    Our take on this event is organised by four entrance tickets:
    • The Round of 16 • (June 23 - June 25)
    • The Quarter-Finals • (June 26 - July 1)
    • The Semi-Finals • (July 2 - July 5)
    • The Last Match • (July 6 - July 10)
    A ticket will allow you to bet on all matches that take place in that timeframe. Each ticket costs :planet: 1,000, and you may only buy tickets during the dates specified, so in-progress competitions may provide no advantage. During the ticket dates, you may enter projections of which team(s) you believe will prevail in their respective match-ups. There are a total of fifteen games that we will be watching, beginning at the Round of 16.

    Inside the euro command, there's a function called standing. Here, we can see how the competition has been progressing. This includes what the actual right answers have been, what your personal votes are, and whether those votes have been good, bad, or the outcomes yet unknown. All of this is wrapped up into bracket graphic that's personalised for you. Check this whenever you need a reminder or want an update.

    Create bets by using the bet command. Saying I cast euro bet A: Iceland, for example, will enter Iceland as your vote for the first game. Find the letter you want by looking at the standing bracket. Correct guesses will be rewarded to the tune of :planet: 5,000 each. So, especially during the Round of 16, where you buy access to eight different matches, there's a good chance that you will make your planets back. At any leg of the competition (provided you have a ticket), you may enter a projection for the ultimate winner of Euro 2020. All right answers will be rewarded; however, the earlier you enter your correct guess, the more you will receive:

    • Within the Round of 16: :planet: 200,000
    • Within the Quarter-Finals: :planet: 50,000
    • Within the Semi-Finals: :planet: 20,000
    • Within the Last Match: :planet: 7,500
    If you make a guess and later change your mind, don't sweat it. For regular matches, you can change your bet as often as you like until the ticket's closing date. For the final winner, because the reward is tied to when you make your guess, you can only change your bet within the dates of the ticket that you originally make a final guess in. If you made a guess to the final winner early on, you'll have to stick with it through future tickets even if that guess becomes impossible to be realised. So be careful with it and make that guess count.

    Once again, the new commands are:
    • I cast Euro enter to buy a ticket for section you are in.
    • I cast Euro standing to see the current bracket.
    • I cast Euro bet to enter normal match-up projections.
    • I cast Euro final to predict the champion. (CAUTION)
    I haven't had a whole like of opportunities to test this in advance, especially since this is a time-limited event, so per usual, report all bugs and errors to the local authority.

    Running Post-2.6 Changelog:
    • Fixed an issue in WA where Dot could have difficulty displaying information when a resolution was not at vote.
    • Fixed the farewelling module displaying the wrong banner image.
    • Removed catscan
    • Changed stocks and study trends to reflect difference between current and week's rolling average, rather than just since last change.
    • Minor update to nightly that might help the gradual increase of COOK more regular in certain conditions.
    • Rewrote the member locator function (used by info, avatar, sus, and bank) to be more accurate and accept input in snowflake ID, username, and nick.
    • A give command has been added, allowing bank to be transferred between player accounts. It works on the same system as the buy /sell commands, so whether the target is first or the volume is first does not matter.
    • Added a spin feature for CalRef admins to better control our server invites.
    • Fixed a bug where stocks would not change after the trend markers were adjusted to reflect averages (whoops)
    • Added hourly data points to the study graphs.
    • Substantially changed the algorithms for THI and APC after data failed to behave as expected.
    • Adjusted the rotato feature to guarantee a new image every time it's used.
    • Added CalRef-Specific ability for members to log in and out at will, with all previous roles automatically restored.

    Regular Not-Dot Changelog:
    • Forum themes get a bit of a boost again as I tweak the colour scheme to better work with the other elements of the theme.
    • Forum font stack changed to increase visibility. Cuz I couldn't read the damn thing before.
    • Added support for the new box and sidebar CSS classes to the Old CalRef theme. Increased default board width by 120px.
    • The box tag now acts as a makeshift bridge between styles intended for Refugia but for old users who can't be convinced to move off of the Old CalRef theme.
    • Box outlines and shadows less jarring and abrasive.
    • Tables are now full-width by default.
    • hr tags now only occupy 75% width and are stylish blue.
    • Added Oracle to post ranks at 750 posts and 4 pips.


    Dot 2.7: Recruitment Update

    "Simply Automate Manual Recruitment"
    Not really, but it seems like people power through a shitload of money to get nations into their regions, and understandably so. Everyone should be entitled to grow their community, even in the face of massive power consolidation by GCRs. So, wouldn't it be nice if there were a small robotic assistant to help you collect and parse all these millions of newly founded and recruitable nations? Well, there has been, but now it's not a trade secret! As of today, there is a newly accessible recruit command, which allows you to do manual recruitment for any NationStates region. All you need is free time.

    What is manual recruitment?
    It's the process of sending a telegram directed at between one to eight nations at a time and asking them to join your region. NationStates knows how you're sending your telegrams. If you send it by an automated function, it will go in the API queue. If you send it for money, it goes in the stamps queue. If you send them in these small batches, though, there's a queue set up just for them. When a nation is founded, it will receive one telegram from each queue and repeat. Stamps can get piled up into the tens of thousands, and the API takes ages. So if you want your recruitment message to be seen as one of the first messages a nation receives, you need to send them out yourself, diligently.

    This is where a little help can go a long way.

    Foreign Server admins: Get started by designating a recruiter role in your server. Use I cast set recruiter X, where X is either pinging the role you're designating, or the role's ID.

    For best practices, use the optional function I cast recruit template X where X is your template code. The recruit function will auto-load your template into a telegram link. This template is unique to each individual user. If multiple people are regularly recruit in your region, no worries, Dot knows the difference. If you are recruiting for more than one region, that's fine too! Your template is also exclusive to each server you are in.

    Say I cast recruit, or if you're lazy, I cast r to begin. You will get all the recent nations that have been founded, broken into batches of eight, and with those eight nations preloaded into a telegram link (with a template code, if you have one). All you need to do is click the provided links, send, and move on.

    There is a telegram cooldown (which also applies to RMB postes, weirdly enough) proportional to how many people you send a telegram to. The cooldown for one recipient is around five seconds, and so the cooldown for eight is around 40 seconds. In order to make things easier to track, you can use the command I cast recruit timer or I cast r t to start a 45-second timer and get pinged when the cooldown has ended.

    When you use the recruit command again, you'll get telegram links for nation batches that have been founded since the last time you ran the command. So each response message you get back from Dot will be unique and you won't be sending two messages to the same person. Recruiters need not worry about puppet flooding, at least within reasonable levels, as Dot has a built-in filter for obvious puppets, hooray! When you're done, if someone starts up after you, they'll be able to pick up where you left off - no duplicates or overlap! Consider checking for new nations every 5-10 minutes.

    Recruiting also has a discrete :planet: payment feature, in Dot's economy, as a bonus for successfully locating target nations. Refugi need only ask to get involved.

    Dot Organisational Change
    Up to this point, Dot has had a built-in series of help articles called HelpQuest. These are all being removed from the system today. Back when Dot was smaller, a couple help articles to talk about the quirky features in a few lines of text was all that we needed. But over time, more features got added, those features were complicated, and this HelpQuest article system was not as updated and comprehensive as it could be. In some ways, there wasn't much to be done about it; it's hard to fit things into a discord message box.

    Either way, we're having that removed now, in favour of a more unified system of How Does tutorials with screenshot examples of every command in action. Dot's getting her own thread! If you want a grand overview regarding what everything is and how to use it, you can now go to this thread and learn more. At the bottom of the (now slimmer) command menu, there will be a link to this thread for any Dot user to browse. The CalRef Development Journal will continue to have update posts, like this one, whenever there is a cool new feature to roll out.

    Running Post-2.7 Changelog:
    • Fixed a bug in set farewell where an error message did not display correctly.
    • Fixed a bug in set recruiter where Dot would not accept a pinged role as intended.
    • Removed the author field in the nation command and the region command.
    • Updated the SC feature to comprehend "declaration" class resolutions.
    • Added comma delimiting to the bank command.
    • Improved the give command to recognise members by ping.
    • Corrected an old tooltip specifying that sus could only target by server nickname.
    • Fixed an error where rotato would post for every reroll.
    • Fixed a bug where avatar would not work on member pings.
    • Added a response for attempting to use a set option that does not exist.
    • Fixed a bug in recruit where setting a template became impossible.
    • Streamlined, simplified, and gated the relay output.
    • Fixed a bug in banish where none of the code made sense.
    • Fixed a bug in give where players could double their bank balance forever.
    • Added a feature called roster to display the total members who have a given role. [more info]
    • Expanded the colour command to accept three, four, and five digit hex codes.
    • Added a check to buy and sell so that a stock cannot be traded if its price reports as being below zero.
    • Changed the recruit function to save a template from recruit set to recruit template to reduce confusion.
    • Markedly increased the :planet: payout for performing manual recruitment for any server.
    • Added residency and influence to the nation command.
    • Roster now understands 1 is not a plural number.
    • Added the number of WA nations to the output of the region command.
    • Added a handler to auto-pins to report when a channel has reached the maximum number of pins or Dot doesn't have permission to pin something.
    • Substantial code efficiency improvements to the colour and pronoun modules.
    • CalRef only: Refuge Game Night can now be unassigned. Members are now able to role themselves into or out of the Refugi role.
    • Fixed a punctuation error in Set Welcome.
    • Region and nation commands now support wizard enunciation.
    • Combined the good bot and good dot functions and responses.
    • Impostors self-banishing are now correctly removed from the active impostor list.


    This is a limited time event. While it is too late to lodge an application in the character battle now, you can still vote in its polls and contribute to the battle lore.

    Have you ever wondered why we greet people as The Largest Warhammer 40k Discussion Forum on the Internet, yet were not in fact the largest Warhammer 40k Discussion Forum on the Internet??? Well now we have decided to become exactly that.

    The madness has arrived! All of the banishment spells that have been cast in Dot's sus game have ripped open a portal in space-time and teleported us to the far future where there is only war. Joining us on the stage of history is a tale of souls and swords, eternally retold. As the cry rings out for champions in these dark hours, we are joined by those brave enough to have answered the call.



    The City of Denver

    The Local Library

    A Block of Wood


    Jeb Bush

    Agent 47


    Dot's Variables

    Ecclesia Catholica

    Bob from Accounting

    Orkz Orkz Orkz Orkz

    Film Noir

    Cristiano Ronaldo



    Grit Whetstone

    Male Pattern Baldness


    Keanu Reeves

    Generic Furry Avatar

    Something, Etc.


    The Pyramids

    Mike Ehrmantraut


    Winston Churchill

    Raziel Luis

    Hunter Leptk

    Ibuki Mioda

    Margaret Thatcher

         The Battle of All Things

    Join me in the newly-minted Warzone board, where a truly objective determination will be made about our champions. Except the objective is destruction.

    In the Warzone board, you will be able to observe the bracket of matches we will be working through over the course of the next three weeks. The bracket is gloriously located at the top of the board and provides up-to-date information on characters' current standing. If you believe the bracket is out of date, give the page a refresh in case it is a caching issue. The bracket features the approximate match dates by section, but specific match dates are in the calendar below.

    For each match, there will be a thread posted in the Warzone board. In each thread, you can write up an example of a battle in any form you choose. Be as elaborate or as simple as you wish. Be analytical and methodical or fanciful and storylike. Whichever you like best. Then vote in the poll to reflect how your match has turned out.

    The results of the poll will determine the outcome and a canonical shitpost will be developed which expresses that result. You are not required to write a battle post to vote, although it is recommended. Votes will only be displayed after the poll closes.


    As of this moment, every player who turned in applications to the character battle will receive :planet: 5,000 for each application submitted. However, now the goal is to get your character to survive these pseudo RP popularity contests. Prizes for longevity will be distributed according to these divine revelations:

    • Surviving the Round of 16           :planet: 25,000
    • Surviving the Quarter-Finals        :planet: 50,000
    • Surviving the Semi-Finals            :planet: 100,000
    • Winning the Battle of All Things   :planet: 250,000
    Prizes stack and are awarded for each character's progression :heppy:

    Disclaimer: We are not the largest Warhammer 40k discussion forum on the internet.


    Dot 2.8: Slackers' QoL Update

    Originally, I was not planning on making a development post for a series of minor feature additions, but it occurred to me that it has been an incredible four and a half months since the Recruitment Update came out back in July. Things have still been taking place since then, as you may have noted by the growing number of post-2.7 changes that wound up getting attached to that post. They are taking place even as of today, but I have been less than stellar about announcing them.

    So here you are: An update that is largely dedicated to bug fixes and quality of life updates. Some of which you may know, and others you may not.

    Infinity Leaderboard
    This one has been out for a while, but in case you didn't know, there's a new function of the Infinity project, by the name of leaderboard, displaying the world's top donors to the Infinity Project. A future update may allow for server-specific leaderboards, but for the time being there are not enough contributors to warrant it. Incorrect username? Send in more planets; your username is updated with every donation. You can observe a demonstration here.

    Invoke this function with I cast infinity leaderboard.

    Remember there remains a standing offer of a permanent forum badge of for any player to donate :planet: 10,000,000. And judging from how explosively stocks are going, several people are well on their way.

    If you're trying to build up your nation's endorsements, but have already endorsed everyone else in the region, pleasing news. There is now a function to help you with the rest. The slackers command locates all of the World Assembly nations inside a target's region who are not endorsing that target. If the number of returned nations is low, Dot will respond with an embed that has links to all the located nations, along with a text file attachment. The attachment has the names broken into lines of eight in case you wish to manually telegram them, asking for an endorsement.

    If the number of nations not endorsing the target is very large, you will only receive the attachment along with the total number of WA nations not endorsing the target. You can observe a demonstration here.

    To use, say something like I cast slackers Sylh Alanor.

    Last, and absolutely least importantly, you can now use Dot to check the exact time a message was sent. As discord only provides timestamps down to the minute, this is a function to provide timestamps down to the second, for whenever precision at this level becomes a point of dispute. Demonstration available here.

    You can use a full message's URL or just the message ID, it does not matter.

    For example, I cast timestamp or I cast timestamp 914326034978054174

    Minor 2.8 Changelog:
    • The region in the nation command now links to the region instead of just printing it.
    • The "WA Nations" information in the region command is no longer a function of Nightly, and is accurate at the moment you send it.
    • Fixed a bug in the recruit function that returned ">>> " when only puppets had been founded.
    • You can now use I cast r a for regions that have API recruitment (and therefore longer cooldowns) instead of the normal timer.
    • The roster function now returns members' sorted display names (instead of IDs sorted numerically).
    • The telegram command now has colour and table spacing.
    • Dot is now able to detect when the NationStates API is down instead of crashing because of it.
    • Setting a recruit template now works with the r alias.
    • The COOK stock in stocks now tracks posts on the Refugia RMB as input data, stock has been split.
    • A server's region has been dropped from the server command as Discord deprecated the feature.
    • The set command now supports wizard enunciation.
    • The nods autoresponse is now a settable server preference in set.
    • Removed the council vote command.
    • Removed the magic command.
    • The list command now only displays the dimension list.
    • The last updated timestamps for the map and rrs commands accurately work now.
    • Doubled on-message credits.


    Dot 2.9: Fully Automated Luxury Gay Space Recruitment Update

    Okay well we're actually just going to go ahead and automate it now because why not.

    Have you spent some 300 hours on Dot's recruitment but find that the time just slips by as you desperately try pretending to be a normal human by stuffing your mouth full of nuts, foraging around in the Canadian wilderness? Who wouldn't! But while you are getting distracted by succulent acorns, precious seconds are ticking by and your new recruit is getting picked up by some new hot shot who just bought $300,000 in stamps.

    To combat my lack of mental expedience, there is now an automated method to carry out recruitment.

    Access this feature by setting up recruitment as you normally would. Remember that an administrator needs to designate a recruitment role first, followed by individual recruiters setting their personalised templates. If you are unfamiliar, refresh yourself with the 2.7 update post.

    Begin the automation by using I cast recruit start X, where X is the interval, in minutes, that you would like to work with. For example, I cast recruit start 5 will begin automated recruitment checks every five minutes. At the five minute mark, Dot will check for new nations. If there are any, you will get a ping in the channel so you will be reminded you're recruiting along with links to the new nations, broken into batches of eight, and with your template already loaded (if you provided one).

    At the bottom of this post is a button to acknowledge the report. Doing so tells Dot that you have cleared your queue and are ready to proceed. Dot will then sweep all old nations into the processed nations bin and start checking for new founds again. She will not check for new nations until you have cleared your queue, but if anything new comes up, she'll let you know without further input on your part.
    You can use any interval you wish between one and ten minutes.

    If you have not acknowledged the automated recruitment report within ten minutes, or if NationStates dies as it is wont to do, the recruitment will be deactivated so that Dot's brain doesn't explode.

    When you have finished your recruitment session, simply type I cast recruit finished.

    Minor 2.9 Changelog:
    • Fixed a bug where the sus game would not support wizard enunciation, leading to unintentional targetting.
    • Fixed a bug in sus where banishing one's self would not issue a payout or acknowledge banishing an impostor.
    • The save command now accepts region URLs instead of just the region names.
    • The roster command now reports the hex code of a role if the role's hex code is not default.
    • "F" is now a toggle setting in set.
    • The thanking module is no longer case sensitive.
    • Fixed a bug in the structure of set where certain setting would trigger accidentally when trying to adjust others.
    • Fixed a bug where add did not recognise wizard enunciation.
    • Fixed a bug where Discord no longer accepted the nation processing method in recruit. This also solves the "interaction failed" bug.
    Report all errors to the local authority.


    Dot 2.10: Adaptation Update

    Long ago, in twinkledy twinkledy eight, one lone Arch-Administrator vaporised an entire forum by channelling raw html magic into a signature field. Naturally, it's no wonder that the distant admins of NationStates were spooked, despite Dot's great skill, and banned this practice of internet magic altogether. No worries, CalRef has never struggled to roll with the punches and change with the times -- it is possibly one of our greatest strengths. So, after a bit of an absence, I am back with a more rejuvenated development schedule and bring you this fine-tuned update.

    The Return of Recruit
    One thing you might have noticed is when the policy was floated to make the URL-based recruitment illegal, the recruitment command was dropped from Dot immediately. This command has now returned, although it operates with some restrictions. As requested, magic URLs are no longer used. Instead, you're expected to have Discord and the NS telegram page up. Dot will feed you the nations, broken into batches of eight (if there are more than eight new nations) when you check. Your template will also be posted so you can re-copy that if you need to. As before, you can use I cast recruit or I cast r to manually pull these nations.

    Remember that a server admin will still need to set up a recruiter role with set. If you don't know what that means, it would be a good idea to flip through the docs.

    This new system is slightly more inconvenient, especially for mobile users. To help, I've added a mobile version, which you can use with I cast m. The m command uses the same unified recruitment system, which means your template from recruit is the same one that will be used here, without having to set it again. Nations that you process with m do not repeat if you leave and someone on the desktop-oriented command pick up after you.
    What makes the mobile command helpful is that each telegram batch is placed in its own separate embed. On mobile, you just need to tap and hold the embed for a second to copy it to your clipboard. So, ideally:

    • Run the command, then tap and hold the template to copy it
    • Switch to the NS telegram window in your browser
    • Paste the template, and close the window
    • Open a new window and go to the telegram page
    • Do not touch the message body so NS will pre-load the template every time
    • Tap and hold the addressees Dot provided to copy them
    • Switch back to the NS page, paste into the recipient box
    • Press send and re-run the command as needed.

    In the desktop version, all batches are in the same embed, and you can just triple-click each line to copy that line to your clipboard and send. Both the new r and m commands can be used with automated check and ping intervals. As before, to run these commands on semi-automatic mode, use I cast r start X or I cast m start X, where X is the interval you'd like to use in minutes (between 1 and 10).

    Timer Is Its Own Command
    If you have been missing the timer function of the old recruitment command, that's returning as well, but in a much more useful way. On NationStates, the cooldown that you experience in between sending telegrams is a duration that is proportionate to your nation age. If you have a very new nation, your telegram cooldown is much higher (over a minute and a half for a batch of eight). If your nation is very old (even if the population is low), your cooldown is shorter (down to 40s for a batch of eight). Consequently, it doesn't make any sense for us to use fixed durations. So we won't!

    As of this update, there's a new command called timer, with an alias of t. To use it, input what nation you'll be sending telegrams from by saying I cast timer base X, where X is your nation name. Dot will then look up your nation and give you an estimated timer based on your nation age, every time you use the command. So if you're still sending telegrams from your new nation a year from now, the timer will adjust to your gradually ageing nation and give you the duration you need at the time.

    After your nation is set, you can use the timer by saying I cast timer or I cast t.

    Top Endorsements
    A brand new command in this update allows you to instantly check what nations have sent out the most endorsements in any given region. This is called the top endos command, and it's designed to make endotarting programs easier to manage and track, not only for Refugia, but all other regions as well. The output generated is an embeded list of the top 25 players, sorted by endorsements given, with an additional uploaded bbcode table for all nations' endorsements in the target region. You can use this table in forums, dispatches, RMB posts, and telegrams.

    The bbcode table acknowledges ties, so if you have a nation in first place with 100 endorsements out, but three players with 99, all three players will be reported as being tied for 2nd. The next line will be 3rd and not 5th because I think doing it any other way is really weird. To use this command, say for example I cast top endos Refugia.

    If you need to have a certain number of nations highlighted for some kind of competition or acknowledgement, you can use a , X modifier, where X is how many nations you want to bold in the bbcode table. For example I cast top endos Refugia, 20 will give the normal output, but with each cell in the top 20 rows of the bbcode table set to bold.

    Minor 2.10 Changes:
    • Fixed a bug where Dot thought every member had every colour role on demasking.
    • Improved startup routine, recruitment that is unexpectedly terminated now resets.
    • Completely rewrote the stocks and study commands to be remarkably more efficient.
    • Added logos for FLIT, SKY, and SHIT stocks.
    • You can now use whole URLs in the truesight command.
    • The buy feature will now tell you the maximum number of shares you can buy in inadequate funds errors.
    • The base infinity message now invites users to check the leaderboard (in case they didn't know it existed).
    • Fixed a bug in the assisted recruitment system where switching operators quickly would duplicate the process.
    • Stocks update four times a day once again.
    • Fixed an error where not supplying arguments to the buy and sell commands would not trigger missing arg errors.
    • Fixed a bug in recruit where only puppets being detected would break automation.
    • Fixed a bug in welcome related to messages where a URL was not set.
    • Added a test option to set welcome and set farewell whereby an administrator may preview the welcome/farewell messages for a given server.
    • Substantial improvements to how frequently used functions work.
    • Fixed a bug in bank where a player who did not own FLIT stock would be unable to access their account.
    • Added NCS to the economy as stock I.
    • Fixed a bug related to start up routines that clear hanging recruitment loops.
    • Fixed a bug in set where setting a welcome URL did not support wizard enunciation.
    Report all errors to the local authority.


    Dot 3.0.0: Rewrite² Update

    The last time I put in this much work into Dot, it was last year during a ground-up rewrite to move functions into the command system. Unfortunately for present-day me, Dot's a little bigger now, so rewriting her takes increasingly long hours. But hey! here we are. Although most of this update is focused on just keeping Dot working by migrating to the 2.0 version of, I've also carried out a wide swath of work on Dot's performance and quality of life features.

    I will hopefully be back with another update in the not too distant future with more improvements, but since I've changed so much, as least on my end, I'd like to get all this stuff off my chest and out of the way and go from there. For a similar reason, the famed assisted recruitment functions are temporarily disabled. You can continue using the manual mobile and desktop recruitment functions in the interim. If you notice any errors, let me know, some stuff was axed and rebuilt from scratch and hasn't been tested beyond what I've done the last few days.

    For the purposes of this update post, I will consolidate all changes into three categories.

    New Features

    • Avatar still displays a target member's global profile picture, so I'm adding a local avatar command to display what the user's server-specific profile picture is where the command is triggered. You can target another member per usual, or leave it blank to target yourself.
    • There is now a version command, to display whatever the current software details are for Dot,, Python, and the operating system on which Dot is running at the time. This command also shows the device name, as well as what the local time is there.
    • If you are like me...well, don't be, it's a really bad idea. But if you're like me, you'd like to be lazy when running your World Assembly development programs. And now we have a command to help with that. You can now use was X, where X is the target region, to get a list of all the World Assembly nations there in both a telegram batch response and pre-formatted table response. You can also use was not X to get the same thing, but for nations not in the World Assembly.
    Despite these new features, Dot's source code is about 10KB smaller :heppy:

    Feature Improvements

    • The Command menu's style has been adjusted for better accessibility. The version number, update post url, and taglines are no longer hard-coded.
    • GAR now has GA as an alias.
    • GA and SC now indicate if a resolution has been repealed, and links to the repeal if it exists.
    • GA and SC now provide per cent information with a newly installed thousands separator.
    • GA and SC now link to the target resolution when querying repeals.
    • GA and SC text preview lengths have been increased by 100 characters.
    • Roll now has grammatical cases for rolling one, two, or more than two numbers.
    • Welcome now reports the member's username to avoid the client-side caching issue where new members would be unknown.
    • Info has been rewritten to provide the target's local avatar and display banner (if there is one). The sidebar will be determined by the target member's top role colour in the server
    • Info now displays a target's creation date in absolute and relative time.
    • Info now provides discord account member profile badges, like Hypesquad teams and server boosters. Bots are recognised here as well.
    • Info now provides a user's activity details or custom statuses if there is no activity.
    • Save will now ship archives with a zip file of all original xml data for their RMBs and history pages, so if a superior utility is developed in the future, they can work with what I have to work with.
    • Study will now display graphs dynamically instead of hard-coded dates. Currently, this will be the last 120 updates (30 days), but this will gradually be expanded to three months once data builds up again.
    • Server Eyebeast message edits now only display the before message, length limit doubled, links made tidy.
    • Region now displays the target's last update timestamp.
    • Server now reports substantially more information about the current server or a relay server, including bot count, voice channels, emotes, stickers, roles, and locale.
    • GA, SC, Truesight, Telegrams, Server, and Server Eyebeast timestamps are now displayed as discord time objects instead of local server time.
    • Rewrote the economy functions and features to use a database system.

    Bug Fixes

    • Fixed an error where set welcome active reported twice if welcomes are already on.
    • Fixed an error where timer died unexpectedly if the base nation was unknown.
    • Fixed an issue where buy and sell did not work with commas in the user input.
    • Fixed an issue where an insufficient funds error in buy did not report the correct number of obtainable shares.
    • Fixed an issue in GA and SC where unresolved BB code made the text difficult to read.
    • Fixed a bug in set farewell where a farewell message could not be reactivated if it were ever set and deactivated previously.
    • Fixed a bug in top endos where requesting more than 25 nations to be bolded would cause all of them to be bolded.
    • Fixed a bug in eyebeast nick changes where the feature never worked in the last two years and now does.
    • Fixed a bug where study was not displaying the newest stock prices.
    • Fixed an issue where an operator could not use commas in infinity donations.
    Report all errors to the local authority.