• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. tildes.net is inaccessible over IPv6?

      When I try to access tildes.net over an IPv6-enabled network, the connection simply times out. Running ping -4 tildes.net responds but ping -6 tildes.net times out. I've tested this on multiple...

      When I try to access tildes.net over an IPv6-enabled network, the connection simply times out.

      Running ping -4 tildes.net responds but ping -6 tildes.net times out. I've tested this on multiple networks (residential and commercial) but it doesn't work on any.

      It looks like tildes.net has an AAAA record but the IP doesn't work.

      Can anyone reproduce?

      27 votes
    2. Autocomplete for topic tagging is now available

      This is something that's been requested and worked on for a very long time, and should help a lot with the consistency of tags that people use on topics. It's also another significant feature...

      This is something that's been requested and worked on for a very long time, and should help a lot with the consistency of tags that people use on topics. It's also another significant feature that's been added by an open-source contributor: Shane Moore (whose Tildes username I actually don't even know) has been working on this on and off since last July, and has put up with me being slow to review and requesting some major changes to it over that time.

      It applies to both the tagging field for new topics as well as the one for editing existing topics' tags, and the list of tags that show up for autocompletion are the 100 most commonly-used tags in each individual group (so the suggestions are different between ~tech and ~music and so on). This is just based on pure frequency at the moment (as in, the 100 tags that are on the most topics in that group), but in the future we could probably improve this to specifically include tags that have been getting used more recently, instead of looking at all time.

      The interface can probably still use some work, and it's likely that there are some bugs and other issues with it, but as I've said before, Tildes is supposed to be in alpha! I haven't been adding nearly enough frustrating issues or breaking things, and we're all getting complacent with having a site where most things work!

      Let me know what you think of it, and if you notice any issues. And thanks again for all the work and patience, Shane!

      69 votes
    3. Vim Vixen extension for Firefox breaks on Tildes

      Hi, I'm new here. I use an extension for Firefox called Vim Vixen that allows the user to navigate webpages pretty effectively via the keyboard. One of its features allows the user to press the f...

      Hi, I'm new here. I use an extension for Firefox called Vim Vixen that allows the user to navigate webpages pretty effectively via the keyboard. One of its features allows the user to press the f key to bring up an overlay of keybindings over all links on the page, and pressing the keys associated with a link causes the browser to follow the link. I'm not intimately familiar with how the extension works, but with some basic Inspect Element-fu, I'm reasonably sure this feature is implemented with an iframe that is injected over the entire page.

      On Tildes, the iframe is visible in the top left corner and shifts all the actual content over accordingly. Normally, it is invisible. This is the only time I've ever had a problem with the extension, which is why I'm posting here first rather than reporting an issue with the extension. If someone more knowledgeable is interested in creating a fresh Firefox profile and comparing how the extension works on Wikipedia and on Tildes, I'd appreciate it. The code for the iframe appears to be identical on both sites, and it's at the end of the page body.

      6 votes
    4. Strange bug clicking comments url on posts

      Issue is occurring on iPhone 7 using Firefox mobile browser v15.1 but has occurred on previous versions of Firefox. When I try to click the link to view comments, the post grows in size seemingly...

      Issue is occurring on iPhone 7 using Firefox mobile browser v15.1 but has occurred on previous versions of Firefox.

      When I try to click the link to view comments, the post grows in size seemingly indefinitely (eventually either the link works and redirects or I get frustrated and scroll to the next post). This has happened a few times. As far as I can tell it is seemingly random.

      https://m.imgur.com/8HHIvtl
      https://m.imgur.com/rhiA30y

      Sorry if this is the wrong place to post this. Still trying to get use to the proper place to put things. If you need any more details let me know.

      9 votes
    5. Weird bug. CSS messes up, even after page reload.

      https://tildes.net/~hobbies/bzx/what_are_your_hobbies_and_how_do_you_get_into_them#comment-2z4f See for yourself. Text is squished to the left side of the page, one or two words per line. No idea...

      https://tildes.net/~hobbies/bzx/what_are_your_hobbies_and_how_do_you_get_into_them#comment-2z4f

      See for yourself. Text is squished to the left side of the page, one or two words per line. No idea if anyone else can see this but since it happens every time l visit that link l thought it was worth asking.

      Going to poke @Deimos on this one l suppose.

      Edit: Issue created.

      6 votes
    6. I have to reload my inbox in order to vote on messages in it

      Not sure if this is intentional or not, but I've noticed today that the first time I click on the new messages link at the top right, I cannot vote on any messages I read. I need to reload my...

      Not sure if this is intentional or not, but I've noticed today that the first time I click on the new messages link at the top right, I cannot vote on any messages I read. I need to reload my inbox in order for the vote to stick.

      Anyone else encountering this?

      7 votes
    7. Feature suggestion: Bookmark posts from front page

      I'd like to be able to bookmark posts from the front page. Right now it really isn't an issue yet since posting frequency is low, but I often quickly check the front page for interesting reads,...

      I'd like to be able to bookmark posts from the front page. Right now it really isn't an issue yet since posting frequency is low, but I often quickly check the front page for interesting reads, while not having the time to actually read them. I'd like to see a "Bookmark" button on front page posts that allow me to save those posts for later when I actually do have time to read the posts.

      For quick scrolls over the front page, tapping the post and then bookmarking is one click too many.
      You could argue I'm lazy, I call it efficiency.

      While on the subject, if I click "bookmark" on a topic, it'll read "bookmarked" but does not offer an "unbookmark" option until I refresh the page. Since I have big thumbs(large bones) I often tap wrong, so it could be nice if there was a quick way to undo this, similar to how we can undo votes.
      Edit: this seems to be a bug: it does work for comments.
      Edit2: Made this into an issue.

      24 votes
    8. Minimum password issue

      My password is shorter than 8 characters. When I attempt to log in, I get a validation error telling me so. Luckily, I'm signed in already on this browser. However, when I go to the change...

      My password is shorter than 8 characters. When I attempt to log in, I get a validation error telling me so.

      Luckily, I'm signed in already on this browser. However, when I go to the change password page and attempt to make my password longer, I get a validation error telling me my old password is shorter than 8 characters, and it prevents submitting the form.

      8 votes
    9. Error when logging in using a password manager

      I'm using Safari 12.0.2 on macOS 10.14.2 (Mojave). The same issue also occurs on iOS 12.1.2 (using Safari). When using 1Password to autofill with the browser extension on macOS or the "autofill"...

      I'm using Safari 12.0.2 on macOS 10.14.2 (Mojave). The same issue also occurs on iOS 12.1.2 (using Safari).

      When using 1Password to autofill with the browser extension on macOS or the "autofill" feature on iOS an error message pops up: username: String does not match expected pattern.

      I have to either use the browser supplied autofill on macOS or manually copy/paste username and password into the corresponding fields. On iOS there's an autofill API which I have set to use 1Password in the browser, also causing the error

      Edit: Video of the issue

      9 votes
    10. Old topics with new comments don't show "(X new)"

      I have the "mark new comments" option enabled. Most of the time, it works, displaying "(X new)" under any topics which have had new comments posted since I last looked at it. However, if the topic...

      I have the "mark new comments" option enabled. Most of the time, it works, displaying "(X new)" under any topics which have had new comments posted since I last looked at it.

      However, if the topic is old enough, this "(X new)" notification does not display. The topic is sorted to the top of my feed, because I'm using activity from all-time as my default sort. But it doesn't show "(X new)". I know it has new comments, or it wouldn't jump to the top of my feed, but I'm not seeing that notification.

      I don't know how old is "old enough" but it's definitely longer than a month. The topics this is happening to are 3 or 6 months old, but it doesn't seem to happen for topics which are only a few weeks old.

      5 votes
    11. Is there a book that you'd like to see made into a movie or series?

      This is a general, "what books have themes or content that would make for great movies" question. Graphic novels are included here. Could have posted in ~talk or ~movies, but I'm seeking the...

      This is a general, "what books have themes or content that would make for great movies" question. Graphic novels are included here.

      Could have posted in ~talk or ~movies, but I'm seeking the opinions of dedicated readers, who've had the thought in considering a story, "I'd really like to see the visuals for this", or "a movie/series adaptation could expand on these themes".

      Also, what were your biggest disappointments in the rendering of a book into a movie/TV series?

      My picks:
      Ursula Le Guin, The Dispossessed. Can't say that it's likely to get the nuanced treatment it deserves, but an even-handed visualization of socialist vs. capitalist societies is overdue, and it's got spaceflight and FTL information transfer.
      Warren Ellis, Transmetropolitan. Not that he's ever going to grant the rights, but this one's a no-brainer for American cinema - brash, loud, splashy, violent, with bigger-than-life characters and themes.
      James Tiptree, Jr. (a/k/a Alice Sheldon), Her Smoke Rose Up Forever. I'd love to see a short series based on this collection.
      China Mieville - anything from the New Crobuzon books. The baroque ruin backgrounding the scenes, and the panoply of characters, should make for amazing cinema; a little judicious editing will be needed to make the stories work for the screen.
      [Obscure] Norman Spinrad's Bug Jack Barron, subject to timely and relevant updates for 21st Century media. There's a great theme about how selective presentation of video clips and the editor's viewpoint influences the story being told.
      K.W. Jeter, Farewell Horizontal, this one's gonna have great visuals, trust me.
      John Steinbeck's The Grapes of Wrath, remade as a story about border migration.
      Joe Haldeman, The Forever War - man, is it ever time for this one in the U.S.
      Dan Simmons, Hyperion - the World Tree, the Shrike, and plenty of other opportunities for fine visuals.
      Salman Rushdie, Haroun and the Sea of Stories. Another candidate for an anthology series; perfect for animation.
      Tibor Fischer, The Thought Gang - it's a heist story, but also a comedy and a satire. Kind of amazed no one has made it into a movie before.

      Biggest recent disappointment - The adaptation of Richard Morgan's Altered Carbon. Edited to completely discard the political messaging and amplify the sex/violence. Turgid, poor special effects, and gruesome acting.

      21 votes
    12. Who, out of all 8 of us, is actually enjoying Fallout: 76?

      Now hear me out, alright? This is a very polarizing issue but I do want some experienced opinions on the matter. There are too many bandwagoners spouting regurgitated opinions and it's hard to...

      Now hear me out, alright? This is a very polarizing issue but I do want some experienced opinions on the matter. There are too many bandwagoners spouting regurgitated opinions and it's hard to pick out the genuine impressions

      When 76 went on sale, I decided to grab it up. Yes, I know, I'm the cancer rewarding Bethesda for a low hanging cash grab effort and I should be ashamed. However, I really wanted an educated opinion on the matter and I had the money. So, despite the hivemind having made themselves up, and myself being not so keen on the decisions, I buckled down and dived in.

      So, while everyone's complaints were focused more towards gameplay, engine, and server side issues (which are completely valid complaints), I found myself blown away, and deeply saddened, by the art direction. The game honestly does look beautiful! I got sick of dilapidated buildings and browns and greens in Fallout 3 and 4, and New Vegas was nice when it wasn't brown sand and olive brush. This game looks gorgeous. They managed to throw a ton of different tiny biomes into one map, that all look interesting and appealing to the eye (once you tweak the .ini to get rid of the god awful Depth of Field). Lots of beautiful forest settings and foreboding mountains.

      But overall, my favorite thing about the game is the enemy design. And no, I don't mean the stupid scorched. My favorite thing about Fallout has always been the mutation/radiation angle. I love the possibility for terrifying and disgusting mutated creatures, and the art team absolutely nailed it with creatures like the Wendigo, Snallygaster, Grafton Monster, and Gulper. Just super unsettling and creepy monsters in the most literal sense. I feel the worst for the art team, who did a fantastic job but who were ultimately drowned out by the flak thrown at the gameplay and bugs.

      This, of course, does not excuse the horrendous bugs encountered during regular play. Power Armor pieces not actually being repaired yet still using up mats, constant server disconnects, poor scaling system (Did a level 70 player walk into an area first? Well expect every enemy there to be around their level even if you enter!), awful graphics setting options (for the love of god, no more depth of field), no push to talk voice (seriously?), poor economy, exploits, and lack of true endgame, among many others I've missed.

      So, does anybody else want to expand?

      17 votes
    13. Struggle setting up Tildes development environment

      I'm interested in possibly developing a tildes client. In order to experiment with the currently disabled API, as well as to become more familiar with how Tildes works internally, I've been trying...

      I'm interested in possibly developing a tildes client. In order to experiment with the currently disabled API, as well as to become more familiar with how Tildes works internally, I've been trying to set up a Tildes development environment on my machine following the instructions on the docs site. I've run into a problem with the 'vagrant up' stage of the setup.

      ...  
      ==> default: Running provisioner: salt...  
      Copying salt minion config to vm.  
      Checking if salt-minion is installed  
      salt-minion was not found.  
      Checking if salt-call is installed  
      salt-call was not found.  
      Using Bootstrap Options:  -F -c /tmp  
      Bootstrapping Salt... (this may take a while)  
      bash: /tmp/bootstrap_salt.sh: /usr/bin/sh: bad interpreter: No such file or directory  
      The following SSH command responded with a non-zero exit status.  
      Vagrant assumes that this means the command failed!  
        
      /tmp/bootstrap_salt.sh  -F -c /tmp  
        
      Stdout from the command:  
        
        
        
      Stderr from the command:  
        
      bash: /tmp/bootstrap_salt.sh: /usr/bin/sh: bad interpreter: No such file or directory  
      

      So the Salt provisioning is failing, and it seems like it just has the wrong path to the shell it needs, but while I could probably just tweak this script, it seems like that goes against the concept of using Vagrant in the first place. I was wondering if anyone else ran into this problem, or if the bug lies between the seat and the keyboard.

      15 votes
    14. Code Quality Tip: Wrapping external libraries.

      Preface Occasionally I feel the need to touch on the subject of code quality, particularly because of the importance of its impact on technical debt, especially as I continue to encounter the...

      Preface

      Occasionally I feel the need to touch on the subject of code quality, particularly because of the importance of its impact on technical debt, especially as I continue to encounter the effects of technical debt in my own work and do my best to manage it. It's a subject that is unfortunately not emphasized nearly enough in academia.


      Background

      As a refresher, technical debt is the long-term cost of the design decisions in your code. These costs can manifest in different ways, such as greater difficulty in understanding what your code is doing or making non-breaking changes to it. More generally, these costs manifest as additional time and resources being spent to make some kind of change.

      Sometimes these costs aren't things you think to consider. One such consideration is how difficult it might be to upgrade a specific technology in your stack. For example, what if you've built a back-end system that integrates with AWS and you suddenly need to upgrade your SDK? In a small project this might be easy, but what if you've built a system that you've been maintaining for years and it relies heavily on AWS integrations? If the method names, namespaces, argument orders, or anything else has changed between versions, then suddenly you'll need to update every single reference to an AWS-related tool in your code to reflect those changes. In larger software projects, this could be a daunting and incredibly expensive task, spanning potentially weeks or even months of work and testing.

      That is, unless you keep those references to a minimum.


      A Toy Example

      This is where "wrapping" your external libraries comes into play. The concept of "wrapping" basically means to create some other function or object that takes care of operating the functions or object methods that you really want to target. One example might look like this:

      <?php
      
      class ImportedClass {
          public function methodThatMightBecomeModified($arg1, $arg2) {
              // Do something.
          }
      }
      
      class ImportedClassWrapper {
          private $class_instance = null;
      
          private function getInstance() {
              if(is_null($this->class_instance)) {
                  $this->class_instance = new ImportedClass();
              }
      
              return $this->class_instance;
          }
      
          public function wrappedMethod($arg1, $arg2) {
              return $this->getInstance()->methodThatMightBecomeModified($arg1, $arg2);
          }
      }
      
      ?>
      

      Updating Tools Doesn't Have to Suck

      Imagine that our ImportedClass has some important new features that we need to make use of that are only available in the most recent version, and we're several versions behind. The problem, of course, is that there were a lot of changes that ended up being made between our current version and the new version. For example, ImportedClass is now called NewImportedClass. On top of that, methodThatMightBecomeModified is now called methodThatWasModified, and the argument order ended up getting switched around!

      Now imagine that we were directly calling new ImportedClass() in many different places in our code, as well as directly invoking methodThatMightBecomeModified:

      <?php
      
      $imported_class_instance = new ImportedClass();
      $imported_class_instance->methodThatMightBeModified($val1, $val2);
      
      ?>
      

      For every single instance in our code, we need to perform a replacement. There is a linear or--in terms of Big-O notation--a complexity of O(n) to make these replacements. If we assume that we only ever used this one method, and we used it 100 times, then there are 100 instances of new ImportClass() to update and another 100 instances of the method invocation, equaling 200 lines of code to change. Furthermore, we need to remember each of the replacements that need to be made and carefully avoid making any errors in the process. This is clearly non-ideal.

      Now imagine that we chose instead to use the wrapper object:

      <?php
      
      $imported_class_wrapper = new ImportedClassWrapper();
      $imported_class_wrapper->wrappedMethod($val1, $val2);
      
      ?>
      

      Our updates are now limited only to the wrapper class:

      <?php
      
      class ImportedClassWrapper {
          private $class_instance = null;
      
          private function getInstance() {
              if(is_null($this->class_instance)) {
                  $this->class_instance = new NewImportedClass();
              }
      
              return $this->class_instance;
          }
      
          public function wrappedMethod($arg1, $arg2) {
              return $this->getInstance()->methodThatWasModified($arg2, $arg1);
          }
      }
      
      ?>
      

      Rather than making changes to 200 lines of code, we've now made changes to only 2. What was once an O(n) complexity change has now turned into an O(1) complexity change to make this upgrade. Not bad for a few extra lines of code!


      A Practical Example

      Toy problems are all well and good, but how does this translate to reality?

      Well, I ran into such a problem myself once. Running MongoDB with PHP requires the use of an external driver, and this driver provides an object representing a MongoDB ObjectId. I needed to perform a migration from one hosting provider over to a new cloud hosting provider, with the application and database services, which were originally hosted on the same physical machine, hosted on separate servers. For security reasons, this required an upgrade to a newer version of MongoDB, which in turn required an upgrade to a newer version of the driver.

      This upgrade resulted in many of the calls to new MongoId() failing, because the old version of the driver would accept empty strings and other invalid ID strings and default to generating a new ObjectId, whereas the new version of the driver treated invalid ID strings as failing errors. And there were many, many cases where invalid strings were being passed into the constructor.

      Even after spending hours replacing the (literally) several dozen instances of the constructor calls, there were still some places in the code where invalid strings managed to get passed in. This made for a very costly upgrade.

      The bugs were easy to fix after the initial replacements, though. After wrapping new MongoId() inside of a wrapper function, a few additional conditional statements inside of the new function resolved the bugs without having to dig around the rest of the code base.


      Final Thoughts

      This is one of those lessons that you don't fully appreciate until you've experienced the technical debt of an unwrapped external library first-hand. Code quality is an active effort, but a worthwhile one. It requires you to be willing to throw away potentially hours or even days of work when you realize that something needs to change, because you're thinking about how to keep yourself from banging your head against a wall later down the line instead of thinking only about how to finish up your current task.

      "Work smarter, not harder" means putting in some hard work upfront to keep your technical debt under control.

      That's all for now, and remember: don't be fools, wrap your external tools.

      23 votes
    15. Light Analysis of a Recent Code Refactor

      Preface In a previous topic, I'd covered the subject of a few small lessons regarding code quality. Especially important was the impact on technical debt, which can bog down developer...

      Preface

      In a previous topic, I'd covered the subject of a few small lessons regarding code quality. Especially important was the impact on technical debt, which can bog down developer productivity, and the need to pay down on that debt. Today I would like to touch on a practical example that I'd encountered in a production environment.


      Background

      Before we can discuss the refactor itself, it's important to be on the same page regarding the technologies being used. In my case, I work with PHP utilizing a proprietary back-end framework and MongoDB as our database.

      PHP is a server-side scripting language. Like many scripting languages, it's loosely typed. This has some benefits and drawbacks.

      MongoDB is a document-oriented database. By default it's schema-less, allowing you to make any changes at will without an update to schema. This can blend pretty well with the loose typing of PHP. Each document is represented using a JSON-like structure and is stored in something called a "collection". For those of you accustomed to using relational database, a "collection" is analogous to a table, each document is a row, and each field in the document is a column. A typical query in the MongoDB shell would look something like this:

      db.users.findOne({
          username: "Emerald_Knight"
      });
      

      The framework itself has some framework-specific objects that are held in global references. This makes them easily accessible, but naturally littering your code with a bunch of globals is both error-prone and an eyesore.


      Unexpected Spaghetti

      In my code base are a number of different objects that are designed to handle basic CRUD-like operations on their associated database entries. Some of these objects hold references to other objects, so naturally there is some data validation that occurs to ensure that the references are both valid and authorized. Pretty typical stuff.

      What I noticed, however, is that the collection names for these database entries were littered throughout my code. This isn't necessarily a bad thing, except there were some use cases that came to mind: what if it turned out that my naming for one or more of these collections wasn't ideal? What if I wanted to change a collection name for the sake of easier management on the database end? What if I have a tendency to forget the name of a database collection and constantly have to look it up? What if I make a typo of all things? On top of that, the framework's database object was stored in a global variable.

      These seemingly minor sources of technical debt end up adding up over time and could cause some serious problems in the worst case. I've had breaking bugs make their way passed QA in the past, after all.


      Exchanging Spaghetti for Some Light Lasagna

      The problem could be characterized simply: there were scoping problems and too many references to what were essentially magic strings. The solution, then, was to move the database object reference from global to local scope within the application code and to eliminate the problem of magic strings. Additionally, it's a good idea to avoid polluting the namespace with an over-reliance on constants, and using those constants for database calls can also become unsightly and difficult to follow as those constants could end up being generally disconnected from the objects they're associated with.

      There turned out to be a nice, object-oriented, very PHP-like solution to this problem: a so-called "magic method" named "__call". This method is invoked whenever an "inaccessible" method is called on the object. Using this method, a database command executed on a non-database object could pass the command to the database object itself. If this logic were placed within an abstract class, the collection could then be specified simply as a configuration option in the inheriting class.

      This is what such a solution could look like:

      <?php
      
      abstract class MyBaseObject {
      
          protected $db = null;
          protected $collection_name = null;
      
          public function __construct() {
              global $db;
              
              $this->db = $db;
          }
      
          public function __call($method_name, $args) {
              if(method_exists($this->db, $method_name)) {
                  return $this->executeDatabaseCommand($method_name, $args);
              }
      
              throw new Exception(__CLASS__ . ': Method "' . $method_name . '" does not exist.');
          }
      
          public function executeDatabaseCommand($command, $args) {
              $collection = $this->collection_name;
              $db_collection = $this->db->$collection;
      
              return call_user_func_array(array($db_collection, $command), $args);
          }
      }
      
      class UserManager extends MyBaseObject {
          protected $collection_name = 'users';
      
          public function __construct() {
              parent::__construct();
          }
      }
      
      $user_manager = new UserManager();
      $my_user = $user_manager->findOne(array('username'=>'Emerald_Knight'));
      
      ?>
      

      This solution utilizes a single parent object which transforms a global database object reference into a local one, eliminating the scope issue. The collection name is specified as a class property of the inheriting object and only used in a single place in the parent object, eliminating the magic string and namespace polluting issues. Any time you perform queries on users, you do so by using the UserManager class, which guarantees that you will always know that your queries are being performed on the objects that you intend. And finally, if the collection name for an object class ever needs to be updated, it's a simple matter of modifying the single instance of the class property $collection_name, rather than tracking down some disconnected constant.


      Limitations

      This, of course, doesn't solve all of the existing problems. After all, executing the database queries for one object directly from another is still pretty bad practice, violating the principle of separation of concerns. Instead, those queries should generally be encapsulated within object methods and the objects themselves given primary responsibility in handling associated data. It's also incredibly easy to inadvertently override a database method, e.g. defining a findOne() method on UserManager, so there's still some mindfulness required on the part of the programmer.

      Still, given the previous alternative, this is a pretty major improvement, especially for an initial refactor.


      Final Thoughts

      As always, technical debt is both necessary and inevitable. After all, in exchange for not taking the excess time and considering structuring my code this way in the beginning, I had greater initial velocity to get the project off of the ground. What's important is continually reviewing your code as you're building on top of it so that you can identify bottlenecks as they begin to strain your efficiency, and getting those bottlenecks out of the way.

      In other words, even though technical debt is often necessary and is certainly inevitable, it's important to pay down on some of that debt once it starts getting expensive!

      7 votes
    16. Tildes and Deimos appreciation & how can we help?

      Designing, coding, moderating, promoting and doing all the business admin on Tildes must be fairly thankless. But without all this effort we'd not be able to enjoy discussions with each other &...

      Designing, coding, moderating, promoting and doing all the business admin on Tildes must be fairly thankless. But without all this effort we'd not be able to enjoy discussions with each other & share all this interesting content. I don't feel that much appreciation is really shown on here (except maybe miss-voting on all Deimos' comments).

      But it is a little awkward, spurious thanks all over the place would just be noise. I thought I'd make a topic especially for people to say thanks in. I'm really enjoying Tildes content and discussion. Plus I'm a big believer in the goals of Tildes as laid out in the docs.

      So I'd like to say a big thank you to Deimos and other useful contributors! Thanks for making the site we have to use today and dreaming of the hopefully better possible site we'll see in the future.

      I'm also hoping to start a discussion on what enthusiastic Tildes users can do to most usefully help make Tildes good now and better in the future.

      A list of stuff we can do:

      • Obviously posting lots of good content and interesting discussions. Voting honestly and using comment labels judiciously.

      • You can donate and currently we can see Tildes Patreon is at $375 a month. Deimos posted some more figures recently.

      • We all regularly get invite codes and bringing in more people who can get excited (and maybe also help) is obviously good.

      • The issue tracker and bug reports are all public so you can make suggestions, vote or comment on existing ones and perhaps more usefully see if you can work out how to reproduce reported bugs.

      • As of a bit over two months ago Tildes is open source. This means you can track down bugs from the issue tracker or even contribute code for new features.

      RFC:

      So are other people liking Tildes? What is it you like? Are you excited enough to want to help out?

      Also is there anything useful users can do I've missed? In these already mentioned areas what's actually most useful to do? Are some things of negative use? Could Deimos change his process to make more use of community help? Is there anything Deimos could delegate that people would be willing to volunteer on? Gitlab Walmart greeter would be cool but is anyone willing to do it?

      42 votes
    17. Global warming is going to lead to massive disruption and loss of life in our lifetimes. What can someone do to avoid the impending doom?

      I think it is a given that we are going to experience massive social disruption as the effects of global warming manifest. These will include the loss of edible sea life from ocean acidification,...

      I think it is a given that we are going to experience massive social disruption as the effects of global warming manifest. These will include the loss of edible sea life from ocean acidification, the loss of potable water from desertification, and famine as crops fail and pests that were previously kept in check by winter temperatures proliferate. Storms and wildfires will become more intense. These events will lead to social unrest and a migration crisis that makes what Europe is experiencing seem like a family member overstaying their holiday welcome.

      Not a rosey picture, certainly, but if anything the analysis is superficial and understated.

      That said, it's likely some areas will fare better than others. How can we identify these oases? Some characteristics I think could give an area a good chance:

      • Equatorial - regions near the equator will see less temperature rise. An increase of two degrees C near the equator translates to something like 12 degrees C near the poles. Equatorial regions should see less temperature change.

      • 'Eternal spring' climate - found in high altitudes near the equator, it's about 20 degrees C (70 degrees F) year-round with dry and wet seasons. However wet seasons will probably get worse too, so maybe this is not ideal.

      • Water independence - should have access to potable water that does not rely on public infrastructure. Wells, springs, streams, etc.

      • Food independence - should have access to game or growing conditions that will not negatively be effected by global warming. Should not rely on fish for most protein needs.

      • Social cohesion - strong social bonds are ideal, however an openness towards outsiders is also ideal. I would write off most of the US right off. Too many guns and we can't even agree people have a right to healthcare when things are relatively good. At the same time, I might not fare well in a country like Japan where nobody even litters, but they also don't trust foreigners.

      • Not New Zealand - apparently this is where the rich people are going. No thanks, unless guillotine expertise makes me eligible for a worker visa.

      What else would you look for? Does anywhere fit the bill? Maybe we can create a post-Apocalyptic community dedicated to high-quality content and discussion.

      7 votes
    18. Do you ever feel like glitches can actually make the games MORE entertaining?

      A lot of the time people will by default mark a game being buggy as a negative, and on the one hand I do understand this. But, at the same time, some of my most memorable gaming moments will be...

      A lot of the time people will by default mark a game being buggy as a negative, and on the one hand I do understand this. But, at the same time, some of my most memorable gaming moments will be stuff like walking entering the wasteland to find an old barrel just spinning violently on the floor. Now, obviously a GAME BREAKING bug will always destroy an experience, but if you look at a civilian floating up a wall in spider-man PS4 and you're too worried about your immersion to find humour in it, I'm sure you're very fun at parties.

      25 votes
    19. Out Here

      Space. Mankind’s last great mystery. Our modern day ‘Wild West’. What a privilege to be born during this golden age of space exploration, to have the chance to strike out and see a universe so...

      Space. Mankind’s last great mystery. Our modern day ‘Wild West’. What a privilege to be born during this golden age of space exploration, to have the chance to strike out and see a universe so full of absolutely nothing.

      There is nothing out here, there’s a reason it’s often referred to as a void. Okay, yes, the more astute members of you will point out space isn’t truly empty, planets and nebulas, and even us, the humans and our crafts. But for the sake of the scale upon which we view it, its empty.

      Just look at me, stuck out here, stranded, in dark space. For those of you still catching up on your terminology, that’s what we call the space in between galaxies. Yes, those galaxies, the big ones that contain untold numbers of stars. No, I don’t know how I got out here. If I did, I would have done something to reverse it.

      All I can tell you is that I’m out here with a busted ship that only has enough power for life support and basic functions. Ugh, I bet you the caravan has already made it to Port Dalle, and Swiv’s drinking that blasted sludge he wouldn’t shut up about. They’re probably raising a ruckus at the bar, starting brawls and revelries alike.

      And here I am, alone. Well, I have Ping. That’s what I call that eternal pinging. If you listen closely, you can hear it, every few seconds ever so faintly. Ping, ping. I can’t tell if the universe has given me company or is taunting me. My headache leans towards taunting.

      Ping.

      I tried turning it off, I really did. But I can’t figure out where it’s coming from. It’s almost as if the entire ship resonates with the noise. It’s not a big ship, kinda, cozy. I think that’s the word. I have to duck down to pass through the doors. The bed’s a few inches too short. But I make do, plenty of room in the storage closet if I push the tools to the side. Well, I might have jettisoned them. But, hear me out! It’s not like I’d be able to use them anyway.

      ‘What are you doing on that blasted ship if you can’t fix it?’ You may ask. Well, I’ll tell you. It wasn’t supposed to break. I was only supposed to be here to press the on and off buttons.

      Ping.

      They just didn’t include any for that blasted noise. Maybe it’s coming from behind this service panel here, it seems to be louder in the bridge, if you could call this glassed in closet a bridge.

      Bang. Ow.

      Note to self: pulling on random panels is a bad idea.

      Ping.

      Yeah yeah, keep on pinging, you stupid pinging, thing, a-lator.

      Ping.

      That was not a request for you to ping more frequently!

      Ping.

      ...

      What did I do to deserve this? All I ever did was try to lead a semi-normal life. As normal a life being some intergalactic space trucker, shipper, can be. I payed taxes, obeyed the law mostly, didn’t cheat. I mean, I’m not a bad person. I didn’t do anything wrong! Or did I?

      I mean, there are several possibilities. Maybe one of the times a delivery was late it costed someone more then a few extra minutes of paperwork. Maybe I inadvertently stood in the wrong spot, ruining some poor tourists prized photo. Maybe I-

      Ping.

      Maybe I’m dead, and this is my eternal torture.

      Maybe, just maybe, there isn’t such a thing as fate or karma or metaphysical legacies. Maybe, this is just some freak thing that occurred because I was in the wrong place at the wrong time? How’s that sound? Must be hard imagining not having someone to blame for all the things that go wrong, huh? Well, I’ve been stuck here for who knows how long. No one’s coming. And there’s nothing wrong with the ship except some inexplicable power loss.

      Ping.

      Maybe whatever’s making that noise is the cause?

      Ping.

      Pong.

      How do you like dem apples, huh?... Well, I guess you like them. Seeing as you haven’t immediately thrown them back at me. Maybe this’ll keep me entertained for awhile, huh?

      Out here, you take whatever you can get to pass the time. There is literally nothing.

      I even look out at nothing. I mean, sure, I see some of the Milky Way nearby, as well as light clusters that are the other galaxies. But I’m so far off the beaten path that the ship’s computers don’t even register any gravitational pull, and they’re tuned for the center of the Milky Way to set a universal constant for direction. Uh, simple speak, the big thing at the center of our galaxy? That’s down.

      There’s some velocity. So the ship will drift for millions of years, preserved in the inky cold of this wonderful frontier, until it get’s close enough to, something, so it's pulled in and crashes or burns. What? It’s not like anyone will find it anytime soon.

      I suppose you can’t really see the futility of existence yet. Me? My days are numbered, and I’ve already run out of gum.

      Ping.

      Pong.

      Where was I? Right, existence. It’s a funny thing really. Out here, with nothing to do or see, you start to question if anything was really real. Everything turns into this far off dream, the distant past of another person. Here and now, its just you, and the void. Well, that, and the flimsy metal contraption keeping you safe from said void, but even that’s debatable.

      Isolation was the worst punishment we were able to come up with for criminals, after all.

      Eh. I’m waiting my time. You don’t want to hear a condemned man ramble on, or maybe you do, you sicko, you. You want stories, you want to hear the high flying adventures of traveling this wasteland. Tales of explorations and intrigue. Maybe even a little romance mixed in.

      There really aren’t any. Space is, well, space. Big, and-

      Ping.

      -empty, and boring. As for the people, well, the Captain Buck and his intrepid crew all work for the military. The only civilians that do this are either, criminals, insane, or desperate. And any combination of those.

      So there it is. The reality of this grand fantasy you’ve always held in your head-

      Ping.

      -laid bare at your very feet. Not very palatable, huh? Makes me think of that paste you get fed out here. Chemically infused with all the calories and nutrients you need to live. Tastes like they blended cardboard and water into sludge and called it food.

      That’s not even the worst example. There was this one time... one time that...

      Ping.

      Ah, thank you Ping. There was this one time a station had a rodent infestation. Nasty stuff. You know what they did with the buggers? (Not the Editor, Editor’s Note: Not actual bugs.) Used them for meat! You had rodent steaks, and ground rodent. Didn’t stay at that station for long.

      Oh, look. A red light is blinking. Must be time to party.

      Ping.

      Ping agrees it’s time to party. Where’d I put the people to party with? Oh yeah. They’re all back in inhabited space. C’est la vie.

      Vie la c’est? Why are you asking me?

      You know? I’ve done all the talking up until now. I think it’s your turn to tell me a little abut yourselves.

      Yeah?

      Really?

      No.

      Ping.

      Ping doesn’t believe it either. He’s even making this slight hissing noise. Just like a cat. Maybe Ping’s a cat that goes ping? Or a ping that cats?

      Having trouble understanding that one? Do what I do. Don’t.

      Stuff doesn’t have to make sense. I mean, does it make sense for some random guy to be stuck literally nowhere? No, it doesn’t. He should be back home wondering what dinner will consist of. Well, truthfully, I’d probably be stuck with the nutrient paste still.

      Ping.

      I agree Ping, that paste is a travesty and insult to the human palate. At least include something that gives it some flavor. Maybe lemon juice? And some water, and sugar. You know what? Take the nutrient paste out all together and give us lemon, water, and sugar. We had a name for that back home.... I can’t seem to...

      Ping.

      Oh, right! Lemonade. Life’s gift you didn’t ask for. Well, would you look at that? There some ice dust outside. Almost like some rock had a gas bubble inside and it leaked. There you have it folks, the lemonade for today; ice dust!

      You know, I’m getting kinda sleepy and light headed. I have been up for quite some time now. Why? Well, you and Ping are such good listeners, I couldn’t just walk away. No, it was my responsibility to entertain at the expense of my own health. I hope I did a good job, I don’t like to disappoint people. Only peaches disappoint, you expect them to be all flavorful, and they tase like the fruit has been soaking in water.

      Well, guess this is it for now. Nature calls, and I don’t think I’ll be awake for much longer without really going off my rocker.

      Ping.

      Yeah, good night Ping.

      Ping.

      ...

      Ping.

      7 votes
    20. Tildes maxing out cpu use on pageload

      This is a bit odd. Recently I've thought typing into tildes input boxes sometimes felt laggy but today I noticed my fan spinning up when I loaded the site (until today it's been so hot my fan was...

      This is a bit odd. Recently I've thought typing into tildes input boxes sometimes felt laggy but today I noticed my fan spinning up when I loaded the site (until today it's been so hot my fan was spinning all day). I checked Chrome's task manager and yes, tildes.net is using 100% cpu. If I wait 2-3 minutes, usage will drop back down to the expected 0-1% and remain there. This happens every pageload. If I load a page, wait for the cpu use to drop, then either reload that page or click an in-site link, the cpu ramps up again for 2-3 minutes.

      Chrome Version 68.0.3440.106 (Official Build) (64-bit) on Debian testing, which is up to date as of midnight GMT 10/08/18. I even rebooted my machine just to be extra sure. Happens on all tildes pages. No other site that I regularly visit seems to do this.

      Posted here rather than to the issue tracker for visibility, to see if this is affecting anyone else before raising an issue about it.

      3 votes
    21. What are some criminally overlooked mobile games?

      I've played a few games on Android that are bizarre and wonderful, and nobody else seems to know them. Philipp Stollenmeyer makes nice, tactile, casual puzzle games with a clear and chunky...

      I've played a few games on Android that are bizarre and wonderful, and nobody else seems to know them. Philipp Stollenmeyer makes nice, tactile, casual puzzle games with a clear and chunky aesthetic and great sound. Verticow, Zip Zap, Burger, and Okay? are four I can recommend. His art is very Monty Pythonesque, and the games just feel cool to play.

      I also tell everyone I know about a game from 2014 called Always Sometimes Monsters. This game was telling an inclusive story before it was cool. It seems to have been made in RPG Maker, and is set in a modern city. There is no combat, just being a person, having conversations, running errands, and trying to accomplish your goals. The dialogue is realistic and sharp, and the story unfolds in a very satisfying (if a bit tropey) way.

      I made a friend online a couple weeks ago -- this guy posted his game called Amethlion to an android forum. It's an open world crafting RPG and he was selling it for a buck fifty. I jumped at the chance to play a cool little pixel art adventure and actually get to interact with the creator. It's buggy as all hell, but it is very cute and pretty fun. The creator is a very nice person and has been very grateful to hear my bug reports. Dynamic Zero is the name of his company, and he made the game solo with his brother making the music. It's a family affair and I think that is just so sweet.

      What mobile games are you all into these days, if any? And if the answer is none, how come?

      31 votes
    22. Post state changes aren't propagated particularly well without a reload

      Original title: "Voting on comments on mobile makes them impossible to reply to" I was just reading through and voting on a few comments in a thread that was locked between me loading the page and...

      Original title: "Voting on comments on mobile makes them impossible to reply to"

      I was just reading through and voting on a few comments in a thread that was locked between me loading the page and starting to vote, and every time I clicked "Vote" the reply button on that comment would disappear. I reloaded the page and saw a) all the reply buttons had gone and b) there was a "this thread is locked" banner at the top, but until then I had no idea what was happening.

      It would be really neat if Tildes could cope a little better with things like this happening. Obviously it's not necessarily realistic for every client to keep a connection open with the server so that posts can be locked in real time, but it would be nice if behaviour in situations like this could at least be consistent – either all the reply buttons disappear and the banner appears at the top, or nothing changes at all. It's really disconcerting to have individual buttons disappearing as you're interacting with them!

      I also notice that changes to page state don't get persisted across history navigation; if I click on a post, vote on it, then press back in my browser, the post doesn't appear to be voted for until I refresh the page. Is it possible to fix that too?

      4 votes
    23. Confused about paragraph width in posts and comments

      Solved thanks to @MrGrey in the comments! Leaving the post text here for posterity. Whenever I join a new site one of the first things I do is customize the style to my liking with CSS skins. I'm...

      Solved thanks to @MrGrey in the comments! Leaving the post text here for posterity.


      Whenever I join a new site one of the first things I do is customize the style to my liking with CSS skins. I'm having a little trouble here, though, specifically with the fact that no matter what I do, I can't increase the width of the paragraphs in posts and comments.

      As far as I can tell, the div.topic-text-full element spans all the way across the main element, with just a little margin space. .topic-text-full's child p elements only span maybe 80% of .topic-text-full's width, though, and my attempts to make them wider have met with failure:

      .topic-full-text p {
        width: 10%;
        }
      

      successfully shrinks the element, and so do any other widths under 100%. Setting it to any number above 100% makes no changes. Similarly, setting the width in pixels can shrink the element width, but not increase it.

      The same goes if you replace .topic-full-text with .comment-text.

      Is there something very simple that I'm missing? It just really bugs me that the paragraphs don't go all the way across, but since that's such a small issue I'd rather fix it on my end rather than file an official complaint about it.

      3 votes
    24. I would like to get into drones, any tips?

      I bought one of those cheap miniature drones that are flimsy but overall pretty fun to start with. Now, I have the bug to get something with a camera, more flight time, and can withstand the wind....

      I bought one of those cheap miniature drones that are flimsy but overall pretty fun to start with. Now, I have the bug to get something with a camera, more flight time, and can withstand the wind. Any suggestions on what I could get <$150 that would be a good investment.

      Any maintenance tips or flying in public tips?

      9 votes
    25. What's the policy on bug hunting?

      I'm sure as tildes gets bigger, security will continue to be a matter of discussion. The dev GodEmperors of tildes have (quite awesomely) taken a big position on security already by disallowing...

      I'm sure as tildes gets bigger, security will continue to be a matter of discussion.

      The dev GodEmperors of tildes have (quite awesomely) taken a big position on security already by disallowing breached passwords from being used.

      I'm not much of a hacker myself, but it's an armchair interest and I'm sure others more skilled would love to be able to give back to Tildes and help keep the site as secure as possible.

      What's the policy on bug hunting, and searching for exploits?

      Thanks!

      14 votes