• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. Some small updates over the past week

      A decent number of smaller changes have been implemented over the past week, and while I don't think any of them individually were worth devoting a post to, I figured it would probably still be...

      A decent number of smaller changes have been implemented over the past week, and while I don't think any of them individually were worth devoting a post to, I figured it would probably still be good to let people know. If you're interested in following Tildes's development more directly, you can always keep an eye on the commits on GitLab (an RSS feed is available as well). I try to write good commit titles/descriptions, so anyone should be able to follow what's being changed without needing to be able to understand the actual code.

      Anyway, here are some recent updates:

      • Last week, I tried to add a "back to top" button on mobile and broke the site for a lot of people. I reverted it and haven't tried to re-implement it again, since it seemed like a lot of people didn't like it anyway. I'd be interested in hearing feedback about whether that's still something that many people want.
      • @what added a new dark theme called "Atom One Dark". It's pretty nice, give it a try if you like dark themes.
      • @wirelyre fixed the very first issue ever created on the Tildes repo. Markdown includes support for embedding images with a syntax almost exactly like a link, except with an exclamation point in front: ![image mouseover text](https://example.com/link-to-image.jpg). However, since Tildes doesn't allow people to embed images, anyone attempting this would end up with an escaped <img> tag inside their post. It's fixed now so that it just treats an attempt to embed an image as a link to the image instead.
      • As requested, I added the ability to "quick quote" when you're going to post a comment reply. If you select some text from a comment before clicking the "Reply" button, the reply form will start out with the selected text already quoted for you.
      • Subsequent quotes in comments are now merged by default. Previously, if you were quoting two or more paragraphs by putting > in front of them and you had a blank line in between them, you would end up with a separate quote block for each paragraph unless you also put a > on the blank line. This behavior was clearly unexpected most of the time and people ended up with longer quotes broken up into many quote blocks for no reason. I've now changed it so that it will automatically merge subsequent quote blocks into a larger one, but you can still force them to be separated by putting at least two blank lines between them (or other methods like using a horizontal rule between quotes). Info about this was added to the Text Formatting docs page.
      • For about the last month, we've been showing domain names for link topics and usernames for text topics in the listings, but some people (rightfully) pointed out that this isn't very good for groups like ~creative where it's important to be able to see who's posting a link. I've updated it now so that I can change this behavior on a per-group basis, and for now, both ~creative and ~music will always show the submitter's name, even on link topics.

      I've topped everyone back up to 10 invite codes again as well. With the site being publicly visible now, I know that some people are getting requests for invites and have been using them fairly often, so always just let me know if you need some more. You can get your invite links from here: https://tildes.net/invite

      Let me know if you have any feedback or notice any issues with any of the things I listed above (or anything else). Thanks as always, it's been nice to see the site's activity level moving up again lately.

      96 votes
    2. Man of the Train

      Another story. The narrator is not well and slips into periods of "extended daydreaming" where they image they're someone else or that the context of their life is otherwise different. I thought...

      Another story. The narrator is not well and slips into periods of "extended daydreaming" where they image they're someone else or that the context of their life is otherwise different. I thought about coloring the text differently for those moments but couldn't figure out a way to do it well.


      No one walks out to this place. Why would they? It’s too far for children to be playing or for teenagers to sneak away to, there’s no beauty or interesting landscapes or scenery for hikers, and God knows it’s worthless for development. I walked out here because I knew I couldn’t stay at home and I kept walking because I knew I had nothing to go back to. Then, brooding, thinking that I would just continue walking until I died of exposure (which would have taken a while in that day’s mild weather), I stumbled across this place. I stopped to explore it of course, how often does one’s life yield such a whimsical sight?

      I started daydreaming as I walked through the trains. They looked ancient, the cars were buried up to their wheels in the dirt and huge patches had lost their paint and rusted over. The interiors were stripped, but I spotted some kind of hatch in the roof (by the pile of leaves and other debris below it) and clambered up. Then I was standing astride the car looking down at the whole scene. Two neat little rows, five cars in one and four in the other, with the only sign tracks used to run here being a small corridor where the trees were shorter.

      I loved it. It was a sort of post-industrial twist on the railway bum, you know? They would hitch rides on trains and travel all over the country, seeing everything it had to offer and adventuring everywhere they went. I had, in the past, been disappointed I didn’t live in a time where the vagabond could thrive, and was delighted to imagine the 21st century equivalent. Sitting in a rusted old abandoned train car, the Seeker (I always name my characters like that) sat by his gas fire watching the rain pour down and spatter across the corrugated walls. It was lovely. I felt much better and after playing around a bit more headed back home with a smile, all the while dreaming of the Seeker. The evening passed comfortably and I slid into sleep imagining I was the man sleeping out by the trains.

      I pulled my blanket closer, clutching it around myself. I had found something, and tonight II was able to rest peacefully because of it. The night breeze flowed over me in soft, regular breaths. It was sweet and pleasantly cool, and carried memories of cheery days. All else faded always as I walked into them, leaving behind the blanket and the breeze and the night itself.

      When I got up the next morning though the levity had vanished. I dragged myself through the morning and lacking anything real to do and completely out of distractions for the afternoon I headed out for another wander in the woods. Alone with just the half-leafless trees to speak to I very quickly fell into my thoughts and my world of pasts, real or imagined. I don’t know how long I walked, just that after a while my breath was coming out in ragged bursts and that I was approaching the top of a hill. Attaining it I realized with gloomy resignation that I was somewhat lost, and that the cup of tea I was desiring now more than most anything would be a while yet. As I started back in the direction I more or less thought town was I imagined how the Seeker had trudged through the same damp leaves and browning grass. Autumn would quickly change from the mild early days to the coldness that marked the start of winter, and this landscape would be unrecognizable. Even this escape would not last. Just like them. More gloominess. Pushing through a thicket of young trees I was surprised to be face to face with the train wrecks from yesterday, and, after briefly marveling at the occurrence started back home. I was throwing off my shoes and starting the kettle in just over an hour.

      At home I picked, for some foolish reason, the blue teapot (of memories) and was soon sitting at the table and warming my hands on a steaming cup. I was shivering. Sometimes I don’t realize how cold I am until I’m back inside. I need to dress warmer. For a while I could pretend to be content sipping at my tea and feeling myself thaw out a little, but after a few cups I started thinking about what I would do for the rest of the day. That’s why I had gone out in the first place wasn’t it, that I had nothing here? I didn’t feel warm anymore. And since I had picked this pot (it was three years ago, why should I care?) my thoughts slid further and further back until I was recalling the conversation we had over it. And how I had laughed and taken your picture holding it and you had smiled as the wind whipped your hair back and I couldn’t stand sitting there and looking at it anymore. I fled to the couch and fell face first down into it.

      What was I doing? I couldn’t sit here for another eight hours waiting to go to bed and dream, I was gripped with sinking panic just at the thought. No, I couldn’t stay. And I didn’t have to. If I could tell myself a story about it, I could do it myself, right? I could just leave. I could make it real. Go to another town, or sleep in a car, or, go camping. Yes, I could camp for the night. I did tell people I was an outdoorsman after all, even if for the past few years I hadn’t done anything more than day hikes to run from my reality. I had all the gear, I knew what I was doing.

      Twenty minutes later I was out the door, heading back the woods for the second time today, this time with my pack slung across my shoulders. As I walked I thought about how unpleasant this would probably be and I was pleased. At least it would be because of something else. Something immediate. I went to the trains because where else would I go and also because I knew they were isolated and I wanted to be sure no one would be out harassing me over lighting a fire or being a vagrant. It was perfect.

      And as evening fell the fire was lit. I had set camp in between the two rows of derelict cars to provide some shelter from the wind.

      The heat from the flames sank into the metal siding of the cars and soon they were radiating back a friendly warmth. Touching it felt almost like being warmed by the sun. I leaned back against one now and stared at the fire. It was a comfortable scene, even if the ground was cold and hard and all I had to do was sit and think and brood. It was basically what I would have done at home anyway, but now I was not drawn into despair. No, out here all these feelings were beautiful, and if it was beautiful I could enjoy it. Some time and drinks passed and I became outright elated. Considering the whole absurdity of where I was right now I had to laugh. I might curse my life every day, but it was, if nothing else, interesting. Even if I was the only one who would ever know. Just look at where I am! I grinned and kept laughing and drinking and soaking up the intoxicating woodsmoke and tender light that flowed from the fire. I loved that this was something I did. And later as the flames hid back in their coals I climbed into my tent and floated right away on a dreamless, happy sleep. Lord of my little realm of heat and smoke. Good times for all. All for good times.

      I sat at the edge of fire’s light clutching my cup closely. It was a bitter tea, what one could brew with just a cup over a camp fire, but I sipped at it greedily anyway, burning my lips on the rim. It would hold the blaze’s heat for a while yet, the cup was almost painful to handle even through my gloves, now streaked with ash. It had been a long, cold day. I had almost lost myself, but now, resting in the half-light at the edge of reality, it was alright. I smiled and, tipping my head ever so slightly up, whistled out a few bars of some song or another. Yes, here it was alright. There was a lot I didn’t know, but that was fine, I knew I was, as was the fire and the smoke and the warmth and the tea.

      I refocused on the fire, source of the little world I had found myself in. It was as if I were gazing through into my own light. A welcome feeling, as I had felt a dull cold more than anything recently. I looked more intently, allowing the firelight to wash out the surroundings until I and it were all that existed. Like this I could see hints, now and then, of what had been. Perhaps if I looked too greedily the flames would even take me then, shattering the gracious illusion of the light in the process. No, echos would have to do. They were all that was real anyway. I stared for a long while, lost in burning contemplation.

      That was a... number of days ago. I haven’t counted exactly. For the first few I was at home most of the day, only heading out for the trains in the evening. The first morning I didn’t plan to come back at all and tore my whole camp down. But around mid afternoon my listlessness would become unbearable and I’d flee from the prospect of another night in. So I started leaving my tent pitched, figuring I’d do this as some kind of therapy until I got better and figured out what I was going to do with myself. And I did get better! Or at least the more time I spent in the woods the less time I was sinking in the mire of my thoughts and the more I marveled at them. Maybe they were still dragging me down, but I didn’t notice anymore. Soon I was spending the afternoons out as well, and then I was only going back home in the morning to grab food and water.

      I’ll probably be forced out by the weather soon. It’s been getting much colder these past days, but I don’t want to leave yet, I like this routine. I like the work of building the little stone wall, or clearing the ground around the fire pit I’m slowly carving out of the stiff ground, or sketching my map of the area around the camp. It was more than I had back there.

      As the last of the purple in the sky was swept away by the darkening blue I stretched out alongside the newly rekindled fire. I had known for days that I was not going to find it here. I would have to go back and see what was next for me. But it was comfortable here, and for that I could pretend I had a reason to stay, at least for a little while longer. Yes, I’ll have to leave soon, but for now I can just enjoy the fire. I can walk in dream a little while longer.

      9 votes
    3. I barely enjoy television anymore, and it's really tiring me out

      Hey folks, I thought I'd bring up something that I've been struggling with for the past few years. As the title suggests, my issue is that it's been really, really difficult for me to watch...

      Hey folks, I thought I'd bring up something that I've been struggling with for the past few years. As the title suggests, my issue is that it's been really, really difficult for me to watch television lately. I rarely find anything that looks appealing to begin with, and even when I do, I almost always end up in a constant state of—for lack of a better word—cringe. This happens with some movies, but almost every single TV show I try to start.

      The moments when I start getting uncomfortable are pretty consistently dialogue scenes. It's not the idea of two characters interacting that bothers me, but rather how they do it. The way that people talk on TV (especially protagonists) is unrealistic to the point where it is distracting enough to make me stop watching, because it makes literally no sense as a part of human society. I understand that no show is going to replicate real-life conversations 1:1, and that makes sense (filler words, useless tangents, etc. would just be distracting), but so many characters are direct to the point where any characterization that their words are supposed to provide seems utterly contrived, and I consequently ignore it.

      I seem hyper-aware of the fact that everything that a character is doing serves a specific purpose to either stretch the plot or artificially deepen their personality, but not in a meaningful way. The somewhat cheesy premise of The 100 (as a random example) kept me watching for a little while, but literally every conflict was forced. I could tell that there was a writer behind every, "Hey, look at Mr. <humorous adjective> here" and, "I'm telling you right now, stop! Don't do this!" and, "Just leave me alone!" trying to provide multiple sides to a character. The fourth wall may as well not even exist. Yes, I understand that your characters are all very complex human beings, but only because you're using every method known to man to imply it. It's just so heavy-handed that I can't pay attention to your broader message and instead focus on how ridiculous every word out of their mouths are.

      Okay, I understand that this character is supposed to be a symbol of feminine empowerment because she just kicked 14 guys and made a witty remark about having been underestimated. Okay, I understand that these scary-looking buff guys are bad because they keep explicitly saying how much they like murdering people. Are audiences really so stupid that they have to have characterization spelled out for them in dialogue? Can actions alone not be enough to convey meaning? Why does every meaningful interaction have to coincide with a ridiculously on-the-nose explanation of why it's relevant?

      It's ruining almost everything I watch. My immediate thought after hearing any TV quote that's supposed to be remotely funny or attention-grabbing is, "Ugh, that is such a 'television' thing to say," and it instantly makes me think negatively of the work. I've noticed that the feeling is somewhat dampened when watching foreign TV (in a different language), although it still feels sort of formulaic. Are my standards unrealistically high? Am I being a massive elitist? If so, how would I even change the way I look at television at this point? Or am I too far down the meta TV tropes rabbit-hole to be able to enjoy the medium fully again?

      24 votes
    4. Looking for tips or best practices for stoking creativity

      So, a little background, my profession is technical writing. I want to write a novel but I'm struggling a little with getting the creative side of my brain going. Technical writing seems to...

      So, a little background, my profession is technical writing. I want to write a novel but I'm struggling a little with getting the creative side of my brain going. Technical writing seems to further inhibit my creativity with all its rules.

      I'm looking into local writers' workshops but they're all full at the moment. In the meantime, I was wondering if anyone here has any advice for exercises or things I could do to stimulate my creativity and free my mind from all the rules of technical writing. Thoughts?

      8 votes
    5. Programming Challenge - Find path from city A to city B with least traffic controls inbetween.

      Previous challenges Hi, it's been very long time from last Programming Challenge, and I'd like to revive the tradition. The point of programming challenge is to create your own solution, and if...

      Previous challenges

      Hi, it's been very long time from last Programming Challenge, and I'd like to revive the tradition.

      The point of programming challenge is to create your own solution, and if you're bored, even program it in your favourite programming language. Today's challenge isn't mine. It was created by ČVUT FIKS (year 5, season 2, challenge #4).

      You need to transport plans for your quantum computer through Totalitatia. The problem is, that Totalitatia's government would love to have the plans. And they know you're going to transport the computer through the country. You'll receive number N, which denotes number of cities on the map. Then, you'll get M paths, each going from one city to another. Each path has k traffic controls. They're not that much effective, but the less of them you have to pass, the better. Find path from city A to city B, so the maximum number of traffic controls between any two cities is minimal. City A is always the first one (0) and city B is always the last one (N-1).

      Input format:

      N
      M
      A1 B1 K1
      A2 B2 K2
      ...
      

      On the first two lines, you'll get numbers N (number of cities) and M (number of paths). Than, on next M lines, you'll get definition of a path. The definition looks like 1 2 6, where 1 is id of first city and 2 is id of second city (delimited by a space). You can go from city 1 to city 2, or from city 2 to city 1. The third number (6) is number of traffic controls.

      Output format:

      Single number, which denotes maximum number of traffic controls encountered on one path.

      Hint: This means, that path that goes via roads with numbers of traffic controls 4 4 4 is better than path via roads with numbers of traffic controls 1 5 1. First example would have output 4, the second one would have output 5.

      Example:

      IN:

      4
      5
      0 1 3
      0 2 2
      1 2 1
      1 3 4
      2 3 5
      

      OUT:

      4
      

      Solution: The optimal path is either 0 2 1 3 or 0 1 3.

      Bonus

      • Describe time complexity of your algorithm.
      • If multiple optimal paths exist, find the shortest one.
      • Does your algorithm work without changing the core logic, if the source city and the target city is not known beforehand (it changes on each input)?
      • Do you use special collection to speed up minimum value search?

      Hints

      Special collection to speed up algorithm

      13 votes
    6. Promoting Time Management on Mobile Devices

      I had this idea for a phone that would be a feature phone, but with a Google or an Alexa powered assistant so it could have most of the functionality of an newer phone, but not as many avenues to...

      I had this idea for a phone that would be a feature phone, but with a Google or an Alexa powered assistant so it could have most of the functionality of an newer phone, but not as many avenues to become lost within it. Probably wouldn't be that big of a market for it, but going off of that idea, what sort of changes would you like in phones to promote less mindless engagement sessions and allow users to better manage their own time. Is this more the responsibility of the end user to manage their own time, or can more be done at an OEM, GUI, or otherwise have these functionalities baked into the phone?

      6 votes
    7. Apollo 11 is phenomenal, and gave me an existential crisis

      Apollo 11 is a limited IMAX only engagement, at least for now, and I don't know how long it'll be in theaters. But while it is, I implore everyone to go see it.This movie left me speechless, and...

      Apollo 11 is a limited IMAX only engagement, at least for now, and I don't know how long it'll be in theaters. But while it is, I implore everyone to go see it.This movie left me speechless, and not just in the sense of the footage being so incredible as to leave me without words, though that's certainly a factor. It's restored footage and audio of the Apollo 11 mission, for anyone that doesn't know, and it covers the launch, moon landing, and re-entry.

      It's so easy for historical events to be looked back on and be seen as just that: events. Like a natural disaster or the existence of a waterfall or a canyon, so many battles, inventions, and human triumphs are stripped of humanity, remembered only as things that happened, not things people did. Apollo 11 has staggering to witness footage, yes, but it weaves that footage together with the human moments wonderfully. The scenes of the launch countdown or the lander making its descent are intercut and splitscreened with the footage of the NASA control centers, with names of all the teams, as audio of their conversations with the astronauts and recaps of what has happened and is going to play over the incredibly restored launch footage. Cuts to the crowd overlooking the Apollo 11 launch are also common in the beginning.

      This is not an educational video, one to be seen for great understanding of the finer details of the mission. Apollo 11 instead acts as history in motion, with a perspective to the individuals and the event simultaneously. It's about the people that accomplished the amazing things you see. A display of the triumph of human spirit over the perceived rules of the world and the desire for understanding out world and breaking the limits that we thought were imposed on us. And yet, we as the viewers have a perspective that the people who actually accomplished the great things we see never did. The splitscreening helps to assign human beings to the awe inspiring footage in front of the viewer, yes, but at the same time it offers 2 entirely separated perspectives framed as one, one that the human beings being assigned to the footage never truly experienced in the moment. We have an intimate view of the control center with a simultaneous omnipotent-esque view of the mission in all of its glory. The viewer as the omnipotent being is true of most films to some degree, but the way in which the movie frames its central event, small and big at the same time, really highlights an omnipresent view that even those who lived through the launch never experienced in real time. It's a film of contrast between the individuals and the accomplishment of the collective, but in its control center voiceovers and constant splitscreens, it's really a movie that bridges the two contrasts.

      Basically, I loved it in ways that, despite my extensive best efforts, I find difficult to describe. This line sounds corny, I know, but you owe it to yourself to see it on the biggest screen that you can, and I implore everyone to try to make time for it and find a true IMAX showing, if possible. The visuals alone may not have been the biggest thing that awed me, but they were certainly a huge part of it. And for anyone that's also seen it, what'd you think? I'd love to see other perspectives on this doc.

      11 votes
    8. Tilderinoes with mental health issues: do you feel like happiness is impossible?

      By “happiness” I don't mean “the place where happy people are happy all the time”, but rather “the absence of persisting suffering”. For some context, I've been suffering from clinical depression...

      By “happiness” I don't mean “the place where happy people are happy all the time”, but rather “the absence of persisting suffering”.

      For some context, I've been suffering from clinical depression for over nine years now. Maybe more. I've been hurt by other people many times in my life, especially in childhood and during school. I have almost never felt connected to another human being, and the older I get, the harder it gets to get any kind of intimacy. I feel like “I'm a creep and I'm a weirdo” regularly, as if my teen angst has never left me. On a good day I will merely be tired, and I think I don't need to describe a bad day.

      Recently I've been discovering interesting approaches to therapy and using awareness to “pull yourself by the boot straps”, but whenever the time comes to actually use them in practice, a very real question: “Why should I do it? Happiness is impossible, I will always be what I am, so why go through additional pain of trying to change anything when the result isn't guaranteed?”.

      So the question is: how do you answer this (loaded) question? How do you get back your faith in better future for yourself when you have so little experience actually being better? Can you actually do that?

      34 votes
    9. This Week's Releases 01/03 - Solange, Pond, 2-Chainz and more.

      Releases of the week 23/02/2019 - 01/03/2019 Featured Release Solange - When I Get Home (Neo-Soul, Alternative R&B) Solange has unveiled her new album, When I Get Home. Spanning 19 tracks, it...

      Releases of the week 23/02/2019 - 01/03/2019


      Featured Release

      Solange - When I Get Home (Neo-Soul, Alternative R&B)

      Solange has unveiled her new album, When I Get Home. Spanning 19 tracks, it marks Solange’s fourth album to date and serves as the follow-up to her 2016 opus, A Seat at the Table.
      When I Get Home was written, performed, and executive produced by Solange herself, but she was hardly in the studio. Among the album’s many contributors were Earl Sweatshirt, Panda Bear, Tyler the Creator, Blood Orange’s Dev Hynes, Sampha, Pharrell Williams, Gucci Mane, Playboi Carti, Raphael Saadiq, Metro Boomin, The-Dream, Cassie, Abra, and The Internet’s Steve Lacy.
      “Y’all! I’m filled w so much joy right now!!! Wow! I can’t thank y’all enough for this moment and for all the feelings i feel in my body!” Solange wrote in a tweet. “I’m bringing home w me everywhere I go yalll and I ain’t running from shit no more. Your love lifts me up so high. Thank you!”

      Source: Consequence of Sound

      Listen to single

      Stream

      Other Notable Relases

      Pond - Tasmania (Neo-Psychedelia, Psychedelic Pop)

      Listen to single
      Stream

      2 Chainz - Rap or Go to the League (Trap Rap, Southern Hip Hop)

      Listen to single
      Stream

      Sun Kil Moon - I Also Want To Die In New Orleans (Contemporary Folk, Spoken Word)

      Listen to single
      Stream

      T-Pain - 1UP (Alternative R&B, Trap Rap)

      Listen to single
      Stream

      Feel free to discuss or feature any and all other releases in the comments below

      Discussion Points

      Have you listened to any of these releases?
      What are your thoughts?
      What are you looking forward to listen to?
      What have you enjoyed from these artists in the past?

      // All feedback on this format welcome.

      7 votes
    10. I want an emulation box for my TV. What options best fit my needs?

      Note: I wasn't sure whether to post this in ~games or ~tech, so if it needs to be moved, feel free to put it where it belongs! I've been playing my Playstation Classic a lot, and it's made me want...

      Note: I wasn't sure whether to post this in ~games or ~tech, so if it needs to be moved, feel free to put it where it belongs!

      I've been playing my Playstation Classic a lot, and it's made me want to setup a full emulation box for my TV. I started looking into options and quickly got in over my head, so I'm hoping you fine folks can help me sort this out.

      Caveat: I am somewhat techy, but not nearly to the same level as the average Tildes user.

      Here is a rundown for what I'm going for:

      • Systems: I want to be able to emulate up through the Dreamcast with no slowdown (or, at least, no slowdown as a result of my hardware--if it's natural to the original console or a limitation of the emulator, that's fine).

      • Input: I want to use a wireless controller for input. Ideally six face buttons and four shoulders, so that it can easily stand in for almost all common controller layouts.

      • Graphics: If possible, I'd like to be able to enhance the eye candy a bit with things like upscaling, increasing the internal resolution, and shaders. This would be nice to have, but is not a necessity. Running at fullspeed in the original with no enhancements is the target minimum, though.

      • Footprint: Something up to the size of, well, a retro game console. I don't want a full PC next to my TV, but it doesn't have to be the size of a credit card either.

      • Budget: Let's go with under $400 USD? Given the cost of a Raspberry Pi that seems like overkill, but I know the Pi can't do all the way up to N64/Dreamcast, and I'm not sure how much more power those need. That price limit is flexible if I'm being unreasonable with my expectations.

      With all that in mind, here are my questions:

      1. What hardware best suits my needs? I am not interested in building my own and am seeking pre-built solutions.

      2. What controller is best? I'd prefer to have a one-size-fits-all solution, rather than swapping them out. Six face buttons would help make the Genesis, Saturn, and N64 feel more natural, but I suspect that might be hard to come by?

      3. It looks like Retroarch is definitely the way to go for easy setup, but there seem to be a lot of different standalone options (e.g. Lakka, RetroPie, Recalbox). Which one should I go with? I should add that I really only care about ease of use and simplicity. I do not need something flashy, and the less friction in both setup and use, the better.

      4. Any other tips, pieces of advice, or resources? I don't have a lot of experience with emulation, so a lot of this is uncharted territory for me, hence my uncertainty and need for guidance.

      11 votes
    11. Code Quality Tip: Cyclomatic complexity in depth.

      Preface Recently I briefly touched on the subject of cyclomatic complexity. This is an important concept for any programmer to understand and think about as they write their code. In order to...

      Preface

      Recently I briefly touched on the subject of cyclomatic complexity. This is an important concept for any programmer to understand and think about as they write their code. In order to provide a more solid understanding of the subject, however, I feel that I need to address the topic more thoroughly with a more practical example.


      What is cyclomatic complexity?

      The concept of "cyclomatic complexity" is simple: the more conditional branching and looping in your code, the more complex--and therefore the more difficult to maintain--that code is. We can visualize this complexity by drawing a diagram that illustrates the flow of logic in our program. For example, let's take the following toy example of a user login attempt:

      <?php
      
      $login_data = getLoginCredentialsFromInput();
      
      $login_succeeded = false;
      $error = '';
      if(usernameExists($login_data['username'])) {
          $user = getUser($login_data['username']);
          
          if(!isDeleted($user)) {
              if(!isBanned($user)) {
                  if(!loginRateLimitReached($user)) {
                      if(passwordMatches($user, $login_data['password'])) {
                          loginUser($user);
                          $login_succeeded = true;
                      } else {
                          $error = getBadPasswordError();
                          logBadLoginAttempt();
                      }
                  } else {
                      $error = getLoginRateLimitError($user);
                  }
              } else {
                  $error = getUserBannedError($user);
              }
          } else {
              $error = getUserDeletedError($user);
          }
      } else {
          $error = getBadUsernameError($login_data['username']);
      }
      
      if($login_succeeded) {
          sendSuccessResponse();
      } else {
          sendErrorResponse($error);
      }
      
      ?>
      

      A diagram for this logic might look something like this:

      +-----------------+
      |                 |
      |  Program Start  |
      |                 |
      +--------+--------+
               |
               |
               v
      +--------+--------+    +-----------------+
      |                 |    |                 |
      |    Username     +--->+    Set Error    +--+
      |    Exists?      | No |                 |  |
      |                 |    +-----------------+  |
      +--------+--------+                         |
               |                                  |
           Yes |                                  |
               v                                  |
      +--------+--------+    +-----------------+  |
      |                 |    |                 |  |
      |  User Deleted?  +--->+    Set Error    +->+
      |                 | Yes|                 |  |
      +--------+--------+    +-----------------+  |
               |                                  |
            No |                                  |
               v                                  |
      +--------+--------+    +-----------------+  |
      |                 |    |                 |  |
      |  User Banned?   +--->+    Set Error    +->+
      |                 | Yes|                 |  |
      +--------+--------+    +-----------------+  |
               |                                  |
            No |                                  |
               v                                  |
      +--------+--------+    +-----------------+  |
      |                 |    |                 |  |
      |   Login Rate    +--->+    Set Error    +->+
      | Limit Reached?  | Yes|                 |  |
      |                 |    +-----------------+  |
      +--------+--------+                         |
               |                                  |
            No |                                  |
               v                                  |
      +--------+--------+    +-----------------+  |
      |                 |    |                 |  |
      |Password Matches?+--->+    Set Error    +->+
      |                 | No |                 |  |
      +--------+--------+    +-----------------+  |
               |                                  |
           Yes |                                  |
               v                                  |
      +--------+--------+    +----------+         |
      |                 |    |          |         |
      |   Login User    +--->+ Converge +<--------+
      |                 |    |          |
      +-----------------+    +---+------+
                                 |
                                 |
               +-----------------+
               |
               v
      +--------+--------+
      |                 |
      |   Succeeded?    +-------------+
      |                 | No          |
      +--------+--------+             |
               |                      |
           Yes |                      |
               v                      v
      +--------+--------+    +--------+--------+
      |                 |    |                 |
      |  Send Success   |    |   Send Error    |
      |    Message      |    |    Message      |
      |                 |    |                 |
      +-----------------+    +-----------------+
      

      It's important to note that between nodes in this directed graph, you can find certain enclosed regions being formed. Specifically, each conditional branch that converges back into the main line of execution generates an additional region. The number of these distinct enclosed regions is directly proportional to the level of cyclomatic complexity of the system--that is, more regions means more complicated code.


      Clocking out early.

      There's an important piece of information I noted when describing the above example:

      . . . each conditional branch that converges back into the main line of execution generates an additional region.

      The above example is made complex largely due to an attempt to create a single exit point at the end of the program logic, causing these conditional branches to converge and thus generate the additional enclosed regions within our diagram.

      But what if we stopped trying to converge back into the main line of execution? What if, instead, we decided to interrupt the program execution as soon as we encountered an error? Our code might look something like this:

      <?php
      
      $login_data = getLoginCredentialsFromInput();
      
      if(!usernameExists($login_data['username'])) {
          sendErrorResponse(getBadUsernameError($login_data['username']));
          return;
      }
      
      $user = getUser($login_data['username']);
      if(isDeleted($user)) {
          sendErrorResponse(getUserDeletedError($user));
          return;
      }
      
      if(isBanned($user)) {
          sendErrorResponse(getUserBannedError($user));
          return;
      }
      
      if(loginRateLimitReached($user)) {
          logBadLoginAttempt($user);
          sendErrorResponse(getLoginRateLimitError($user));
          return;
      }
      
      if(!passwordMatches($user, $login_data['password'])) {
          logBadLoginAttempt($user);
          sendErrorResponse(getBadPasswordError());
          return;
      }
      
      loginUser($user);
      sendSuccessResponse();
      
      ?>
      

      Before we've even constructed a diagram for this logic, we can already see just how much simpler this logic is. We don't need to traverse a tree of if statements to determine which error message has priority to be sent out, we don't need to attempt to follow indentation levels, and our behavior on success is right at the very end and at the lowest level of indentation, where it's easily and obviously located at a glance.

      Now, however, let's verify this reduction in complexity by examining the associated diagram:

      +-----------------+
      |                 |
      |  Program Start  |
      |                 |
      +--------+--------+
               |
               |
               v
      +--------+--------+    +-----------------+
      |                 |    |                 |
      |    Username     +--->+   Send Error    |
      |    Exists?      | No |    Message      |
      |                 |    |                 |
      +--------+--------+    +-----------------+
               |
           Yes |
               v
      +--------+--------+    +-----------------+
      |                 |    |                 |
      |  User Deleted?  +--->+   Send Error    |
      |                 | Yes|    Message      |
      +--------+--------+    |                 |
               |             +-----------------+
            No |
               v
      +--------+--------+    +-----------------+
      |                 |    |                 |
      |  User Banned?   +--->+   Send Error    |
      |                 | Yes|    Message      |
      +--------+--------+    |                 |
               |             +-----------------+
            No |
               v
      +--------+--------+    +-----------------+
      |                 |    |                 |
      |   Login Rate    +--->+   Send Error    |
      | Limit Reached?  | Yes|    Message      |
      |                 |    |                 |
      +--------+--------+    +-----------------+
               |
            No |
               v
      +--------+--------+    +-----------------+
      |                 |    |                 |
      |Password Matches?+--->+   Send Error    |
      |                 | No |    Message      |
      +--------+--------+    |                 |
               |             +-----------------+
           Yes |
               v
      +--------+--------+
      |                 |
      |   Login User    |
      |                 |
      +--------+--------+
               |
               |
               v
      +--------+--------+
      |                 |
      |  Send Success   |
      |    Message      |
      |                 |
      +-----------------+
      

      Something should immediately stand out here: there are no enclosed regions in this diagram! Furthermore, even our new diagram is much simpler to follow than the old one was.


      Reality is rarely simple.

      The above is a really forgiving example. It has no loops, and loops are going to create enclosed regions that can't be broken apart so easily; it has no conditional branches that are so tightly coupled with the main path of execution that they can't be broken up; and the scope of functionality and side effects are minimal. Sometimes you can't break those regions up. So what do we do when we inevitably encounter these cases?

      High cyclomatic complexity in your program as a whole is inevitable for sufficiently large projects, especially in a production environment, and your efforts to reduce it can only go so far. In fact, I don't recommend trying to remove all or even most instances of cyclomatic complexity at all--instead, you should just be keeping the concept in mind to determine whether or not a function, method, class, module, or other component of your system is accumulating technical debt and therefore in need of refactoring.

      At this point, astute readers might ask, "How does refactoring help if the cyclomatic complexity doesn't actually go away?", and this is a valid concern. The answer to that is simple, however: we're hiding complexity behind abstractions.

      To test this, let's forget about cyclomatic complexity for a moment and instead focus on simplifying the refactored version of our toy example using abstraction:

      <?php
      
      function handleLoginAttempt($login_data) {
          if(!usernameExists($login_data['username'])) {
              sendErrorResponse(getBadUsernameError($login_data['username']));
              return;
          }
      
          $user = getUser($login_data['username']);
          if(isDeleted($user)) {
              sendErrorResponse(getUserDeletedError($user));
              return;
          }
      
          if(isBanned($user)) {
              sendErrorResponse(getUserBannedError($user));
              return;
          }
      
          if(loginRateLimitReached($user)) {
              logBadLoginAttempt($user);
              sendErrorResponse(getLoginRateLimitError($user));
              return;
          }
      
          if(!passwordMatches($user, $login_data['password'])) {
              logBadLoginAttempt($user);
              sendErrorResponse(getBadPasswordError());
              return;
          }
      
          loginUser($user);
          sendSuccessResponse();
      }
      
      $login_data = getLoginCredentialsFromInput();
      
      handleLoginAttempt($login_data);
      
      ?>
      

      The code above is functionally identical to our refactored example from earlier, but has an additional abstraction via a function. Now we can diagram this higher-level abstraction as follows:

      +-----------------+
      |                 |
      |  Program Start  |
      |                 |
      +--------+--------+
               |
               |
               v
      +--------+--------+
      |                 |
      |  Attempt Login  |
      |                 |
      +-----------------+
      

      This is, of course, a pretty extreme example, but this is how we handle thinking about complex program logic. We abstract it down to the barest basics so that we can visualize, in its simplest form, what the program is supposed to do. We don't actually care about the implementation unless we're digging into that specific part of the system, because otherwise we would be so bogged down by the details that we wouldn't be able to reason about what our program is supposed to do.

      Likewise, we can use these abstractions to hide away the cyclomatic complexity underlying different components of our software. This keeps everything clean and clutter-free in our head. And the more we do to keep our smaller components simple and easy to think about, the easier the larger components are to deal with, no matter how much cyclomatic complexity all of those components share as a collective.


      Final Thoughts

      Cyclomatic complexity isn't a bad thing to have in your code. The concept itself is only intended to be used as one of many tools to assess when your code is accumulating too much technical debt. It's a warning sign that you may need to change something, nothing more. But it's an incredibly useful tool to have available to you and you should get comfortable using it.

      As a general rule of thumb, you can usually just take a glance at your code and assess whether or not there's too much cyclomatic complexity in a component by looking for either of the following:

      • Too many loops and/or conditional statements nested within each other, i.e. you have a lot of indentation.
      • Many loops in the same function/method.

      It's not a perfect rule of thumb, but it's useful for at least 90% of your development needs, and there will inevitably be cases where you will prefer to accept some greater cyclomatic complexity because there is some benefit that makes it a better trade-off. Making that judgment is up to you as a developer.

      As always, I'm more than willing to listen to feedback and answer any questions!

      25 votes
    12. Momo Challenge, memes, and "Secure, Contain, Protect" (SCP)

      First, I apologize if this is inappropriate. I wouldn't be surprised if some folks here saw my mention of the "Momo Challenge" and roll their eyes, but after my brother asked me about it, I looked...

      First, I apologize if this is inappropriate.

      I wouldn't be surprised if some folks here saw my mention of the "Momo Challenge" and roll their eyes, but after my brother asked me about it, I looked it up last night, and found some interesting stuff happening around it. I guess it's going through a second iteration right now, with supposed images of "Momo," a sculpture of a Japanese witch, and a voice saying to do really graphic stuff. The previous iteration was supposedly messaging a number via WhatsApp, and getting challenges, and threats that if you tell your parents (it's supposedly targeting kids), Momo will get you. The Guardian has a nice write up about the current issue with a picture, you have been warned if you scare easily. Now, she'll tell you to do stuff in a manipulated video. There's even themomochallenge.tk (also spooky if you're sensitive to uncanny sort of stuff like I am), which seems to exist as a way to fluff the story, and asks for what I assume is a requested cryptocurrency transaction (how a kid is going to get crypto to send, I don't know). I may seem like I'm writing something absurd, but this is not in ~creative on purpose, and I feel the propagation of this sort of thing speaks to several problems that may or may not be solvable.

      My fascination is with the spread of the idea, and its possible effects. As somebody who occasionally reads the SCP Wiki (not to do with Secure Copy Protocol), I noticed something interesting in the rapid spread of this meme, and am sure sociologists would describe it differently. It behaves (insofar as a meme is an entity with a life or intelligence) in a way SCP would describe as "infohazardous" or "cognitohazardous." They don't mean the same thing: The information is a hazard (infohazard) because you know have this bomb sitting in your lap. You can warn people, but they may go out, see the supposed deaths, and believe it, or you can get a chain of people warning others. In either case, you pass the ball. The meme grows.

      It is cognitohazardous for the reason that this hoax, by design, preys on fear. Just typing this, the face is burned into my vision (again, I'm sensitive), I'm home alone, and becoming rather shaky as I jump to look behind me at random noises. The chosen image of the sculpture was selected for this reason, it is deeply unsettling, shakes your rational mind, and you're potentially induced into believing it. I have, in a way, fallen victim to this.

      The question comes, going back to my SCP reference: How can this be contained? I'm not looking to start a task force, or enlist people's help, but this is obviously not the first time this has happened with things from Satanic rituals and 2016(?)'s Blue Whale. My mom got swept up by the Satanic thing in the 90s, I watched a video about satanic sacrifices before Halloween 1997, I think, that she got from her church, so I have some experience from the other side. My primary concern is not that children are being compelled to kill themselves, but that the ensuing panic moral panic alone can cause psychological trauma and rampant misinformation. Is it possible to convince believers that something like this isn't real before copycat stuff comes out?

      26 votes
    13. How do you guys deal with alcohol?

      Even since my teenage years it's been a problem. They say people who start drinking sooner will probably develop alcohol problems and it seems to be the case with me and the majority of my...

      Even since my teenage years it's been a problem. They say people who start drinking sooner will probably develop alcohol problems and it seems to be the case with me and the majority of my friends. We are friends since little kids and we started drinking together when we were about 16 or 17 i think (i'm 32 now).

      Every single one of us has a problem with binge drinking. I think i'm the less worse case among us since i can keep myself from drinking for days and usually have only one binge per week or less. They drink almost every day. I'm better than when i was younger, but it's still bad.

      When i go out to drink i chug down +/- 3600ml (121oz) of cheap beer. It doesn't matter if it's craft/expensive beer, i will just get drunker and poorer in this case.

      It's what happened yesterday. Now i'm hungover and just depressed.

      How do you guys deal with alcohol? Is it a problem? Is it something you want to change or it doesn't bother you?

      20 votes
    14. Workshop Wednesday: Post a poem/story/writing-thing and get feedback!

      So I was talking to @cadadr in this thread about starting a workshop on Tildes, and since today makes for an alliterative title, I thought I'd start one now. What's a workshop? Basically, a...

      So I was talking to @cadadr in this thread about starting a workshop on Tildes, and since today makes for an alliterative title, I thought I'd start one now.

      What's a workshop?

      Basically, a workshop is when you have a bunch of people with poems or stories they've written, and everyone gets together, reads everyone's work, and comments on it, sharing what they got out of it and what the author could do to improve the work for publication. I used to do a lot of them in college, and I've missed the dynamic since graduating. I thought others might also be interested, so here goes nothing.

      How this'll work (for now, anyway)

      Each week, I'll post a "Workshop Wednesday" post. If you have a poem or (short) story you'd like workshopped, post that as a top comment. Then, read others' top comments and reply with what works/doesn't work/questions you have/ideas you have for the piece that could make it better. If you post some writing, try to comment on at least two other people's pieces as well -- we're here to help each other improve.

      Going forward

      Since this is the first one, obviously we can change the format or do something else. Please start meta-discussions with the word [META] so that we know it's not a poem you're trying to workshop!

      I'm excited. Let's do this!

      20 votes
    15. Going to work in South Africa, with a depression prescription

      Good news: I'll be starting my new work in Cape Town, South Africa soon. Not so good news: I have depression, and is currently on the antidepressant Sertraline. My question would be the following:...

      Good news: I'll be starting my new work in Cape Town, South Africa soon.

      Not so good news: I have depression, and is currently on the antidepressant Sertraline.

      My question would be the following:

      How are prescriptions of the antidepressant handled in the South African health care system? Can I obtain, from either a GP or a Specialist, a sort of "long-standing" prescription, valid for (say) a few months, that will allow me to refill at pharmacies or dispensing GPs, without me having to be referred to a Specialist each time I need a refill? I understand that recurring examinations by a Specialist are likely necessary, but I don't expect those to be frequent, as my condition is fairly stable now.

      Also a related question: I'm otherwise young and physically healthy, not affected by chronic conditions except depression. However, it seems that any health insurance schemes there that cover my condition would be rather expensive. Those policies typically include a broad coverage of chronic conditions, most of which I don't foresee a need. For one like myself, what suggestion would you give in terms of health insurance selection?

      Many many thanks <3

      7 votes
    16. Should Tildes, or its users, try to make "official discussion/review" threads?

      Similar to how other forums go about making review or discussion thread on newly released forms of entertainment. I think tildes would be a pretty neat platform to try and host some of these. More...

      Similar to how other forums go about making review or discussion thread on newly released forms of entertainment.

      I think tildes would be a pretty neat platform to try and host some of these. More so with the discussion nature of tildes. Seems like they would work really well here but I often don't see any pop up. Would anyone like to see them here?

      8 votes
    17. PSA: Disinformation and the over-representation of false flag events on social media.

      I've noticed lately that on certain social media websites, particularly Reddit and Facebook, there has been an uptick in articles about fake hate crimes and false rape reports. The comments on...

      I've noticed lately that on certain social media websites, particularly Reddit and Facebook, there has been an uptick in articles about fake hate crimes and false rape reports. The comments on these articles especially fan the flames on the subjects of homophobia, racism, and sexism. While the articles themselves are still noteworthy and deserving of attention, the amount of attention that they've been receiving has been disproportionately high (especially when considering how fairly unknown the individuals involved are) and the discourse on those articles particularly divisive.

      On top of that, there are clear disinformation campaigns going on to attack current Democratic presidential candidates in the U.S. It seems pretty clear that we're having a repeat of the last presidential election, with outside parties stoking the flames of discrimination and disinformation on social media in order to further ideological divisions, and the consumers of that media readily falling for it.

      I would caution readers to be mindful of the shifting representation of historically controversial or contentious topics moving forward. Even if the articles themselves are solidly factual, take note of how frequently you're seeing these articles, whether or not they're known to be contentious topics, and how they're affecting online discourse.

      In short: make sure that you can still smell bullshit even when it's dressed up in pretty little facts.

      30 votes
    18. Would you pay higher taxes for better government services?

      In the US the tax rate on the bottom 78% of earners taxes was less than 7% England has a tax rate for the same income of 11.5% The top 6% (Avg Adjusted Gross income 514,000) paid $840 Billion of...

      In the US the tax rate on the bottom 78% of earners taxes was less than 7%

      England has a tax rate for the same income of 11.5%

      The top 6% (Avg Adjusted Gross income 514,000) paid $840 Billion of the income taxes

      The Bottom 49.1% (Earning less than 45k AGI) paid $97 Billion of taxes, but 27.4 Million Households filled for $66.7 Billion in EIC tax credits

      If the taxes on the bottom 78 percent were increased 6% to a level similar to England the USA could have universal health care

      The US Spends 3.4 Trillion on Healthcare.

      Just 5% of Americans Account for 50% of U.S. Health Care Spending. So taking away the top 5% means the US spends about 5,500 per person. More than UK, but with a long term approach we can tackle that.

      1. Saying no to covering all issues. See above. Total cost down to 1.8T

      2. Accepting a tax increase

      • Doubling the Medicare withholding will provide 500B
      • Down to 1.3T
      1. Reallocate state spending In 2015, state governments across the country spent a combined $605 billion on health care
      • Down to 700 Billion
      1. Increase taxes 6% across the board, like those of countries that provide healthcare. 600B in Funding
      • Down to 100 Billion
      1. 1/3 of expenses in 2017 was payable for hospital room rentals and 21% was to doctor's office billable hours
      • Increase utilization to make hospitals & Doctors more efficient so cost can be cut
      • 1% reduction in billable hours and room rates Down 100B
      • Adjust pricing based on cost savings
      • Repeat

      If the US had higher taxes for gas we could have a better Infastructure. Using rough math we in 2017 underfunded the highway dept about $21.5 billion

      • 40 Cents per Gallon vs 18.4 cents currently
      • 33 Cents vs 17.5 cents for Highway maintenance at fully funded for at least the next 5 years
        * 1 Cent vs 0.9 cents Gas Safety and storage. Round it up to a full penny better saftey funds for better clean up
        * 4 cents a new Green energy tax for Green projects
      • 2 Cent New Metro Projects tax

      $5.5 Billion annual funding for projects, plus using funding not going to covering the underfunded highway dept means who doesn't want to announce a 10 year $250 Billion Green Deal Project. Get States to match it 40/60 and its a $600 Billion Project

      $96 a person more and With this Major Cities can tackle major projects and Rural cities can apply for the Metro Funding. $1.5 Billion each state gets on average can be applied however but that's encouraging moving to a Green plan.

      The U.S. combined gas tax rate (State + Federal) is According to data from the OECD, is the second lowest (Mexico is the only country without a gas tax).

      The average gas tax rate among the 34 advanced economies is $2.62 per gallon. In fact, the U.S.’s gas tax a rate less than half of that of the next highest country, Canada, which has a rate of $1.25 per gallon.

      We want to have the European advanced economy of our peers but we arent wanting to pay for it

      26 votes
    19. Web developers - What is your stack?

      As someone who is not mainly a web developer, I can barely grasp the immensity of options when it comes to writing a web application. So far everything I've written has been using PHP and the Slim...

      As someone who is not mainly a web developer, I can barely grasp the immensity of options when it comes to writing a web application.

      So far everything I've written has been using PHP and the Slim microframework. PHP because I don't use languages like Python/Ruby/JS that much so I didn't have any prior knowledge of those, and I've found myself to be fairly productive with it. Slim because I didn't want a full-blown framework with 200 files to configure.

      I've tried Go because I've used it in the past but I don't see it to be very fit when it comes to websites, I think it's fine for small microservices but doing MVC was a chore, maybe there's a framework out there that solves this.

      As for the frontend I've been trying to use as little JavaScript as possible, always vanilla. As of HTML and CSS I'm no designer so I kind of get by copying code and tweaking things here and there.

      However I've started a slightly bigger project and I don't fancy myself writing everything from scratch (specially security) besides, ORMs can be useful. Symfony4 is what I've been using for a couple of days, but I've had trouble setting up debugging, and the community/docs don't seem that great since this version is fairly new; so I'm considering trying out something more popular like Django.

      So this is why I created the post, I know this will differ greatly depending on the use-case. But I would like to do a quick survey and hear some of your recommendations, both on the backend and frontend. Besides I think it's a good topic for discussion.

      Cheers!

      20 votes
    20. My indoor garden setup

      A few people have expressed interest in my indoor, semi-automated growing setup so here's the lowdown.. In a corner of my workshop is a cupboard with a footprint of 1.6x1.2m, 2.2m high. This is...

      A few people have expressed interest in my indoor, semi-automated growing setup so here's the lowdown.. In a corner of my workshop is a cupboard with a footprint of 1.6x1.2m, 2.2m high. This is insulated with a mixture of glasswool, foam board and expanding foam (depending on what I could install where), and lined with diamond pattern aluminumised mylar (the diamond pattern provides diffuse reflection to avoid hotspots).

      Inside the cupboard I have 750W of full-spectrum LED lighting, a 500W oil-filled radiator, and a small fan to keep air moving around. There's a vent which pulls air from the outside and a extractor fan which also vents outside. Being able to pull cool air from the outside (even in summer) is extremely useful as the lights can put out quite a lot of heat.

      My main growsystem is an Amazon low-pressure aeroponics system, and I've also got some airpots to do some soil-based growing in. Aero on the right, pots on the left. If you're not familiar with aeroponics, it's a system where the plants roots hang in open space and nutrient-rich water is sprayed or misted over them. High-pressure aero uses mist and low pressure uses sprayers. High pressure aero is currently one of the best known ways to maximise plant growth but low-pressure is pretty good too and you don't need anywhere near as much gear like pressure vessels and solenoid and so on. I just have an aquarium pump which drives the sprayers. In my experience aero is considerably more efficient than soil, non-soil media or other hydroponics - but on the other hand it's very twitchy. If your nutrient balance is off or your pH is wrong or worse, you pump fails - things can go wrong very quickly.

      The airpots are totally new to me. People say they're good but I have no idea. I have a mixture of compost, perlite and coco coir to go into them so we'll see how that works out. I'm going to use organic nutrients only on them, I have some seaweed derived stuff which should be good throughout the entire grow process.

      So that's the hardware, now on to the fun bit - the automation...

      On top of the cabinet is a board hosting a Raspberry Pi model A - these days I'd use a Zero W but they didn't exist when I built this. In it's mostly-bare state the board looks like this. Quick explanation - the red board is mains-rated relays which let me switch the connections above it on and off using the Pi. This is where the lights, fan and heater are wired to. The small junction block left of the relays is connected to mains.

      The block up and left of the Pi is 5V, which drives the Pi, the relay control electronics and provides power to the junction block on the right. There are various sensors wired in to that block and connected back to the Pi.

      Wired up on my bench for testing it looks like this, and in situ it looks like this (this was on a previous iteration of the cupboard but it's basically the same now). The orange cables on the left are lights, fan and heater. The black cables top are the sensors.

      Temperature is monitored using five DS18B20 sensors, which are cheap and reasonably accurate serial devices so you can run a whole bunch of them off a single pin on the pi. I monitor my water temperature, the temperature at the plant stem, at the wall, inside my workshop (but outside the cupboard) and outside temperature. The wall/stem temperature is the important one, that determines whether heating or cooling is engaged. I monitor the exterior and interior temperatures to know how effective my insulation is being. If water temperature gets too high I might add an agent which protects against microbial infections that like warmer water.

      I do have a DHT22 humidity sensor but they're hella flaky and it's currently not working. I will replace it at some point but past experience suggests humidity is high whatever I do.

      The Pi has a python script which runs every five minutes. It reads all the sensors, decides what (if anything) to do, then logs everything in a sqlite database. If it's 'night' (which is actually day outside, for temperature management reasons) it turns the lights off, if it's 'day' it turns them on. If it's cold it turns the heater on, if it's hot the fan. There's a bit of smartness where it actually aims for a midpoint of temperature because otherwise it's always aiming for highest temperature then immediately cooling again, then heating and so on - a stable temperature is better for the plants. At 'night' I tend to run the fan to drop the temperature: plants often like it cooler during darkness, get some fresh air in and attempt to lower the humidity a bit.

      There is a web interface which lets me see what's going on - current temperature and status, plus some lovely lovely charts (who doesn't love a nice chart?). I can also turn the lights out from here in case I need to go in an do some maintenance for anything. 750W of LED light is painfully bright, it's much more comfortable (and safer!) to turn them off while topping up reservoirs or changing water or whatever.

      It would be relatively trivial to add sensors for moisture or pH to add an auto-watering or auto-adjusting nutrient systems, but I haven't felt the need to do that yet.

      Happy to do my best to answer any questions anyone has.

      26 votes
    21. Remember the person: Effortposting about Tildes and anti-social UX patterns in social media

      I've been meaning to make this post for a while, and it's actually going to wind up being a series of several posts. It's kind of a long meditation on what it means to socialize online and the...

      I've been meaning to make this post for a while, and it's actually going to wind up being a series of several posts. It's kind of a long meditation on what it means to socialize online and the ways in which the services we use to do that help or hinder us in doing so. Along the way I'm going to be going into some thoughts on how online discourse works, how it should work, and what can be done to drive a more communal, less toxic, and more inclusive of non-traditional (read: non-technical) voices. I'm going to be throwing out a lot of inchoate opinions here, so I'm hoping to pressure test my views and solicit other viewpoints and experiences from the community.

      I mentioned in an introduction thread that I'm a policy analyst and my work is focused on how to structure policies and procedures to build a constructive organizational culture. I've been a moderator in some large PHP forums and IRC channels in the old days, and I've developed some really strong and meaningful friendships through the web. So I've always had a soft spot for socializing on the interwebs.

      Okay, so that's the introduction out of the way. The main point I want to focus on is the title: Remember the Person. This was the something Ellen Pao, former CEO of Reddit, suggested in a farewell message as she stepped down from the role in the wake of a community outcry regarding her changes to Reddit's moderation practices. The gist of it was that online communication makes it too easy to see the people you're interacting with in abstract terms rather than as human beings with feelings. It's a bit of a clichéd thought if we're being honest, but I think we still tend not to pay enough attention to how true it is and how deeply it alters the way we interact and behave and how it privileges certain kinds of interaction over others. So let's dig in on how we chat today, how it's different from how we chatted before in discussion forums, and what we're actually looking for when we gather online.

      Since this is the first in a series, I want to focus on getting some clarity on terms and jargon that we'll be using going forward. I'd like to start by establishing some typologies for social media platforms. A lot of these will probably overlap with each other, and I'll probably be missing a few, but it's just to get a general sense of categories.

      To start with we have the "Content Aggregator" sites. Reddit is the most notable, HackerNews is big but niche, and Tildes is one too. This would also include other sites like old Digg, Fark.com, and possibly even include things like IMGUR or 9Gag. The common thread among all of these is user submitted content, curation and editorial decisions made largely by popular vote, and continued engagement being driven by comment threads associated with the submitted content (e.g. links, images, videos, posts). In any case, the key thing you interact with on these sites is atomized pieces of "content."

      Next up are the "Running Feed" services. Twitter and Mastodon are the classic examples as is Facebook's newsfeed. Instagram is an example with a different spin on it. These services are functionally just glorified status updates. Indeed, Twitter was originally pitched as "What if we had a site that was ONLY the status updates from AOL Instant Messager/GChat?" The key thing with how you interact with these services is the "social graph." You need to friend, follow, or subscribe to accounts to actually get anything. And in order to contribute anything, you need people following or subscribing to you. Otherwise you're just talking to yourself (although if we're being honest, that's what most people are doing anyway they just don't know it). This means the key thing you interact with on these sites is an account. You follow accounts get to put content on your feed. Follower counts, consequently, become a sort of "currency" on the site.

      Then you've got the "Blogs" of old and their descendants. This one is a bit tricky since it's largely just websites so they can be really heterogenous. As far as platforms go, though, Tumblr is one of the few left and I think LiveJournal is still kicking. Lots of online newspapers and magazines also kind of count. And in the past there were a lot more services, like Xanga and MySpace. The key thing you interact with here is the site. The page itself is the content and they develop a distinct editorial voice. Follower counts are still kind of a thing, but the content itself has more persistence so immediacy is less of an issue than in feed based paradigms where anything older than a day might as well not exist. This one gets even trickier because the blogs tend to have comment sections and those comment sections can have a bunch little social media paradigms of their own. It's like a matroishka doll of social platforms.

      The penultimate category is the "Bulletin Board" forum. PHP BB was usually the platform of choice. There are still a few of these kicking around, but once upon a time these were the predominant forms of online discourse. Ars Technica and Something Awful still have somewhat active ones, but I'm not sure where else. These also have user posted content, but there is no content curation or editorial action. As a result, these sites tend to need more empowered and active moderators to thrive. And the critical thing you're interacting with in these platforms is the thread. Threads are discussion topics, but it's a different vibe from the way you interact on a content aggregator. On a site like Reddit or Tildes all discussion under a topic is 1 to 1. Posts come under content. On a bulletin board it works like an actual bulletin board. You're responding under a discussion about a topic rather than making individual statements about an individual post or comment. Another way to put it is on an aggregator site each participant is functionally writing individual notes to each other participant. On a bulletin board each participant is writing an open letter to add to the overall discussion as a whole.

      And finally, you've got the "Chat Clients." This is the oldest form besides email newsletters. This began with Usenet and then into IRC. The paradigm lives on today in the form of instant messaging/group texts, WhatsApp, Discord, Slack, etc. In this system you're primarily interacting with the room(s) as a whole. There isn't really an organizing framework for the conversation, it's really just a free-flowing conversation between the participants. You might be able to enforce on-topic restrictions, but that's about as structured as it gets.

      That about covers the typologies I can think of. Next up I want to delve into the ways in which the UI and design patterns with each of these platforms affects the way users engage with them, what sorts of social dynamics they encourage, and what sorts of interactions they discourage. In the mean time, I'm eager to hear what people think about the way I've divided these up, whether you think I've missed anything, or have any additional thoughts on the ones I put up.

      30 votes
    22. What do you think is one thing every sysadmin should know how to do?

      Blatantly stealing from the excellent post by /u/judah, I figured I'd make a sysadmin version because sysadmins tend to be underrepresented in tech discussions. Please keep your answers as...

      Blatantly stealing from the excellent post by /u/judah, I figured I'd make a sysadmin version because sysadmins tend to be underrepresented in tech discussions. Please keep your answers as cross-platform as possible without being uselessly generic.

      I'll start. Realize that the system is going to go down, and accept that reality. Accept failure. How you respond to failure is how people who aren't sysadmins will see and value you.

      8 votes
    23. 3D Printed Dungeon Tile Recommendations

      So I'm running a D&D 5e campaign, and so far have been doing "theatre of the mind". But it has it's limitations when I want the players to use actual combat strategy in some areas. I have...

      So I'm running a D&D 5e campaign, and so far have been doing "theatre of the mind". But it has it's limitations when I want the players to use actual combat strategy in some areas. I have experience a few years ago with using a 25mm paper grid for 3.5e and Pathfinder, which worked well because it was quick to draw a map with whiteboard marker.

      Now I have a 3D printer, and I'm wondering if anyone has any dungeon tile recommendations, considering the following:

      Firstly, are there any systems that are quick to assemble/disassemble as the players discover new rooms, or we need to clear table space?

      Second, stability of the map is important. If a player knocks the map with their hand, will everything collapse, simply shift slightly, or is it rigidly held together?

      Third, community: A larger community that contributes (and takes contributions) would be better than a propriety system that doesn't allow homebrew designs.

      I've seen a few systems (openlock, openforge, and almost any keyword combination that I can think of is on kickstarter), but I'm finding it hard to get a feel for how popular the systems are, and how well they actually work when on the table.

      Does anyone have any recommendations on a good system? I guess i'm most interested in the game flowing smoothly, but I'm not opposed to going to a blank paper grid if that's really the better solution.

      8 votes
    24. OnePlus made me buy my Pixel 3. Anyone else have bad experiences with OnePlus?

      This is going to sound like a total rant, but I just don't know what to do anymore. I've been completely screwed by OnePlus and they really just don't care. I bought a OnePlus 6T back at the end...

      This is going to sound like a total rant, but I just don't know what to do anymore. I've been completely screwed by OnePlus and they really just don't care. I bought a OnePlus 6T back at the end of November and received it in early December. It has barely worked for about two weeks since then. The ticket I have open with them is ridiculously long. And then they just went dead silent on me. I assumed I was being ignored. I even got the perma-hold ignore on the phone too. But today OnePlus finally replied after 27 days!! During all this time I just went out and bought a Pixel 3XL and I am tickled pink with it.

      If anyone wants a good laugh at my expense you are welcome to read my story on my site read my story on my site.

      From the bottom of my heart - be careful spending your money with OnePlus.

      *edit - formatting

      5 votes
    25. Working as a contractor in IT

      Does anyone have any experience working as a contractor in the IT field? I have 4 years of experience in the IT industry, all of it as a full time direct hire. I may have an opportunity to work...

      Does anyone have any experience working as a contractor in the IT field? I have 4 years of experience in the IT industry, all of it as a full time direct hire. I may have an opportunity to work for a very large company on a 2 year contract at fairly reasonable salary increase. The most important part to me is that I will be getting some experience off of the service desk as well, which I can use to continue my career going forward.

      My main concern is that I am unfamiliar with contract work. I do know that I get health benefits / 401k / sick days, but I assume there must be a drawback to being a contractor, right? I feel like being a contractor is inherently more unstable than being an actual hire. The position I am being considered for is a 2 year contract, but I worry that the position could simply disappear a few months in and I'd be out of a job. Is this a fair feeling, and is there any way I can gauge how true this might be for my position? Is there something I could discreetly ask in my interview that might help me understand if this is a stable position?

      If anyone has any experience as a contractor, I'd love to hear it.

      4 votes
    26. Two-factor authentication for home VNC via Signal

      For my particular use case I share my home PC with my spouse and since I'm the more tech-savvy of the two I'll need to occasionally remote in and help out with some random task. They know enough...

      For my particular use case I share my home PC with my spouse and since I'm the more tech-savvy of the two I'll need to occasionally remote in and help out with some random task. They know enough that the issue will usually be too complex to simply guide over the phone, so remote control it is.

      I'm also trying to improve my personal efforts toward privacy and security. To that end I want to avoid closed-source services such as TeamViewer where a breach on their end could compromise my system.

      The following is the current state of what I'm now using as I think others may benefit from this as well:

      Setup

      Web

      I use a simple web form as my first authentication. It's just a username and password, but it does require a web host that supports server side code such as PHP. In my case I just created a blank page with nothing other than the form and when successful the page generates a 6 digit PIN and saves it to a text file in a private folder (so no one can simply navigate to it and get the PIN).

      I went the text file route because my current hosting plan only allows 1 database and I didn't want to add yet another random table just for this 1 value.

      Router

      To connect to my home PC I needed to forward a port from my router. I'm going to use VNC as it lets me see what is currently shown on the monitor and work with someone already there so I forward port 5900 as VNC's default port. You can customize this if you want. Some routers allow you to SSH into their system and make changes that way so a step more secure would be to leave the port forward disabled and only enable it once a successful login from the web form is disabled. In my case I'll just leave the port forwarded all the time.

      IP Address

      To connect to my computer I need to know it's external IP address and for this I use FreeDNS from Afraid.org. My router has dynamic DNS support for them already included so it was easy to plug in my details to generate a URL which will always point to my home PC (well, as long as my router properly sends them my latest IP address). If your router doesn't support the dynamic DNS you choose many also allow either a download or the settings you would need to script your own to keep your IP address up to date with their service.

      Signal

      Signal is an end-to-end encrypted messenger which supports text, media, phone and video calls. There's also a nifty command line option on Github called Signal-cli which I'm using to provide my second form of authentication. I just downloaded the package, moved to my $PATH (in my case /usr/local/bin) and set it up as described on their README. In my case I have both a normal cell phone number and another number provided by Google Voice. I already use my normal cell phone number with Signal so for this project I used Signal-cli to register a new account using my Google Voice number.

      VNC

      My home PC runs Ubuntu 18.04 so I'm using x11vnc as my VNC server. Since I'm leaving my port forwarded all the time I most certainly do NOT want to leave VNC also running. That's too large a security risk for me. Instead I've written a short bash script that first checks the web form using curl and https (so it's encrypted) with its own login information to check if any PIN numbers have been saved. If a PIN is found the web server sends that back and then deletes the PIN text file. Meanwhile the bash script uses the PIN to start a VNC session with that PIN as the password and also sends my normal cell the PIN via Signal-cli so that I can login.

      I have this script set to run every minute so I'm not waiting long after web login and I also have the x11vnc session set to timeout after a minute so I can quickly connect again should I mess something up. It's also important that x11vnc is set to auto exit after closing the session so that it's not left up for an attacker to attempt to abuse.

      System Flow

      Once everything is setup and working this is what it's like for me to connect to my home PC:

      1. Browse to my web form and login
      2. Close web form and wait for Signal message
      3. Launch VNC client
      4. Connect via dynamic DNS address (saved to VNC client)
      5. Enter PIN code
      6. Close VNC when done

      Code

      Here's some snippets to help get you started

      PHP for Web Form Processing

      <?php
      // Variables
      $username = 'your_username';
      $password = 'your_password_super_long_and_unique';
      $filename = 'path_to_private_folder/vnc/pin.txt';
      
      // Process the login form
      if($action == 'Login'){
      	$file = fopen($filename,'w');
      	$passwd = rand(100000,999999);
      	fwrite($file,$passwd);
      	fclose($file);
      	exit('Success');
      }
      
      // Process the bash script
      if($action == 'bash'){
      	if(file_exists($filename)){
      		$file = fopen($filename,'r');
      		$passwd = fread($file,filesize($filename));
      		fclose($filename);
      		unlink($filename);
      		exit($passwd);
      	} else {
      		exit('No_PIN');
      	}
      }
      ?>
      

      Bash for x11vnc and Signal-cli

      # See if x11vnc access has been requested
      status=$(curl -s -d "u=your_username&p=your_password_super_long_and_unique&a=bash" https://vnc_web_form.com)
      
      # Exit if nothing has been requested
      if [ "$status" = "No_PIN" ]; then
        # No PIN so exit; log the event if you want
        exit 0
      fi
      
      # Strip non-numeric characters
      num="${status//[!0-9]/}"
      
      # See if they still match (prevent error messages from triggering stuff)
      if [ $status != $num ]; then
        # They don't match so probably not a PIN - exit; log it if you want
        exit 1
      fi
      
      # Validate pin number
      num=$((num + 0))
      if [ $num -lt 100000 ]; then
        # PIN wasn't 6 digits so something weird is going on - exit; log it if you want
        exit 1
      fi
      if [ $num -gt 999999 ]; then
        # Same as before
        exit 1
      fi
      
      # Everything is good; start up x11vnc
      # Log event if you want
      
      # Get the current IP address - while dynamic DNS is in place this serves as a backup
      ip=$(dig +short +timeout=5 myip.opendns.com @resolver1.opendns.com)
      
      # Send IP and password via Signal
      # Note that phone number includes country code
      # My bash is running as root so I run the command as my local user where I had registered Signal-cli
      su -c "signal-cli -u +google_voice_number send -m '$num for $ip' +normal_cell_number" s3rvant
      
      # Status was requested and variable is now the password
      # this provides a 1 minute window to connect with 1-time password to control main display
      # again run as local user
      su -c "x11vnc -timeout 60 -display :0 -passwd $num" s3rvant
      

      Final Thoughts

      There are more secure ways to handle this. Some routers support VPN for the connect along with device certificates which are much stronger than a 6 digit PIN code. Dynamically opening and closing the router port as part of the bash script would also be a nice touch. For me this is enough security and is plenty convenient enough to quickly offer tech support (or nab some bash code for articles like this) on the fly.

      I'm pretty happy with how Signal-cli has worked out and plan to use it again with my next project (home automation). I'll be sure to post again once I get that ball rolling.

      13 votes
    27. Passwords

      This will probably be controversial, but I disagree with the current password policy. Checking against a list of known broken passwords sounds like a good idea, but that list is only ever going to...

      This will probably be controversial, but I disagree with the current password policy. Checking against a list of known broken passwords sounds like a good idea, but that list is only ever going to get bigger. The human factor has to be taken into account. People are going to reuse passwords. So whenever their reused password gets hacked from a less secure site, it's going to add to that list.

      Ideally, a password would be unique. Ideally, users should maybe ever use a password manager that generates garbage as a password that no one could hack. An ideal world is different from reality. Specific requirements are going to lead to people needing to write things down. In the past, that was on paper, like Wargames. Now, it's going to lead to people pasting their username and login into text documents for easy reference. That's probably what i'm going to have to do. Was my previous method of reusing passwords safe? No. Will my new method of remembering passwords be safe? Probably not either.

      I'm not entirely sure what all the account security is about, either. For my bank, sure, a complex password. I have a lot to lose there. For an account on a glorified message board? There's better ways to establish legitimacy. 4chan, of all places, dealt with this (nod to 2chan), by having users enter a password after their username that got encoded and displayed as part of their username to verify that they were, in fact, the same user.

      So the topic for discussion would be, what's the endgame here? Where is the line drawn between usability and security? I may well be on the wrong side of this, but I think it's worth discussing.

      Edit: I think there may be some good reasons, evidenced in this reply. I think it was a good discussion none the less, since it wasn't obvious to me and perhaps not to other people.

      Edit 2: I'm going to hop off, but I think there's been some good discussion about the matter. As I said in the original post "I may well be on the wrong side of this". I may well be, but I hope I have addressed people well in the comments. Some of my comments may be "worst case" or "devil's advocate" though. I understand the reason for security, as evidenced above, but i'm unsure about the means.

      17 votes
    28. Productive vs non-productive creativity

      I have a slight struggle that I wonder if anyone else can relate to. I'm a creative "type" in that both my job (scientist) and hobbies (many, over the years) require constant innovation, in...

      I have a slight struggle that I wonder if anyone else can relate to. I'm a creative "type" in that both my job (scientist) and hobbies (many, over the years) require constant innovation, in addition to the usual labor, to keep them going.

      I have a note/journal app where I store my ideas. Sometimes these are ideas with acute utility e.g. an experiment design that I can test out the next day at work or maybe an idea for a paper. Other ideas are what I would consider "highdeas" - insights or thoughts that seem amazing when you're stoned but after you sober up they're kind of nonsense. The former are productive and the latter are non-productive forms of creativity (barring any offshoots of the latter that prove useful later on).

      But then sometimes I get idea in-between. Say, an insight into how certain human behaviors are a certain way or maybe a rant on a topic/issue in my lab work that is interesting but not valuable enough to publish or bring up in a formal meeting. My question / discussion topic for you, is, what do you do with these sort of self-ascribed interesting ideas that have no immediate value? One option is to write them out on a forum, as I am currently doing, but I would end up writing all day. Does anyone else keep track of these? Do you schedule a follow-up with these intermediate ideas for future inspiration? I currently use Joplin which is great but I don't think there are any features to stimulate creativity in this manner.

      23 votes
    29. What are the arguments against antinatalism? What are the arguments for natalism? [Ramble warning]

      Basically, I'm struggling to arrive to a conclusion on this matter on my own. And in these situations I like discussing the topic with other people so I can see other sides that I have not...

      Basically, I'm struggling to arrive to a conclusion on this matter on my own. And in these situations I like discussing the topic with other people so I can see other sides that I have not considered and can submit my arguments for review and see if my logic follows or is faulty.

      I apologize in advance for the disorganized ramble format, it's just a very messy subject for me. I guess I could tidy it up better and present it like a mini essay, but it would be somewhat dishonest or misleading to pretend that I have a hold of this horse when I absolutely don't. So, I think the stream of consciousness is a more honest and appropriate –even if messy– approach.

      With that said, here it goes:

      The way I understand it, the main reason for supporting antinatalism is that there's always pain in life.

      There are varying amounts of it, of course, but you have no way of knowing what kind of pain your child will be exposed to. Thus, you're sort of taking a gamble with someone's life. And that, antinatalists say, is immoral.

      I used to deeply agree with that sentiment. Now I don't agree with it so much, but I still cannot debunk it. I feel emotionally and irrationally, that it isn't quite right. But, I cannot defend these feelings rationally.

      I think, if you're serious about antinatalism, that you are against creating life. Since life always comes with the possibility of pain. And, you cannot just end all the life forms that can feel pain and call it a day; on the contrary: you'd also have to end all the forms of life that cannot feel pain too, since, even though they cannot feel pain, they can create other life forms that can feel pain.

      I guess a point could be made to only apply the antinatalist values to humans. Since only we have concepts of morally right and wrong, and animals don't know what they're donig. But we do know what they're doing, and why would you try to prevent other humans from creating life that can suffer but leave other animals able to do it? It's all suffering for innocent creatures, is it not?

      I guess we could also imagine a form of life without pain. For example, a future with very advanced technology and medicine, artificial meat, etc. But getting there would mean subjecting a lot of people to a lot of pain. And even in that future, the possibility of pain is still there, which is what makes creating life immoral. It's not just the certainty of pain, but also the possibility of it alone.

      So, in the end, the way I see it, being antinatalist means being anti-life. Sure, you can just be an antinatalist to yourself and not impose your values on other people. But if you're consistent with the antinatalist argument, then if it's wrong for you to have kids because they can suffer, it's also wrong for other people and even for animals.

      And this doesn't seem right to me. Because, I mean, it's life. And I think ridding the world of life woud be a very sad thing, would it not?

      But, again, this is just feelings. If I think about it rationally, the world and the universe are completely indifferent to the existence of life. A world without life, what does it matter? Specially if there's no one there to see it. Nothing makes life inherently better than no life. Since ethics doesn't really exist in the physical world.

      It's neither right nor wrong for life to exist. But bringing life into a world of pain does certainly feel wrong from a morality standpoint.

      But why is it wrong? We didn't create life. We didn't create pain. The injustice of it all exists not because of us.

      But, we do have the power to end that suffering. And if we have the power to end suffering, shouldn't we end suffering? Isn't that what the moral values taught to us say (except for religious communities, I guess)?

      You could always say, “well, it's not my fault that life is unfair, and it's not my responsibility to tackle that issue” or “the joy compensates for the pain”. Which might be valid points, but they don't take away the selfishness of having kids, do they? You're just ignoring the issue.

      On the other hand, however, there are a lot of people who were born (which is an unfair act), but they aren't mad about it, they don't resent their parents, and they're happy and they wouldn't choose not to have been born. But does this make it okay? I think that it makes it not so bad, but at the end of the day it's still wrong, just “forgivable wrong” if that's even a thing.

      Also, isn't it going too far? Applying morality to something so primitive, so abstract, so before morality, something that isn't even human?

      But we also say murder, torture and rape are wrong, yet murder, torture and rape have been happening forever since they were first possible, for far longer than we humans have existed. So, how are they any different? If they can be wrong, so can life.

      Furthermore, don't we have a right to follow our primitive instincts and reproduce? Allowing someone to “bring a life into a world of pain” is wrong, but so is taking away their right to fulfill their “naturally unjust” life.

      I guess, if I was forced to give a conclusion, it would be something along the lines of: Creating life is wrong and selfish, yes. But it's okay because most people don't mind it and it's not really our fault that it exists nor our responsibility to end it. So, tough luck and YOLO?

      I'm not too happy about that conclusion but it's the best I can come up with.

      And as a corollary: to diminish the unfairness of birth, we should facilitate euthanasia and accept self-check-outs as a fair decision.


      So, what do you think?

      Is antinatalism right? Is my antinatalism right? Is it wrong? Is mine wrong? Why?

      Is creating life fair? Is it not? Is it not but still okay? Why?

      16 votes
    30. Future of personal security and privacy, upcoming trends.

      A few years ago I got into improving my knowledgebase of personal security - theory and tools - but it didn't go much farther than reinforcing everything with 2FA and setting up a password...

      A few years ago I got into improving my knowledgebase of personal security - theory and tools - but it didn't go much farther than reinforcing everything with 2FA and setting up a password manager, plus setting up a VPN and full disk encryption.

      It seems like we're amidst a rising tide of data breaches due to, IMHO, laziness and cheapness on the part of many companies storing personal data.

      So, recently I've embarked on my second journey to improve my own security via habits and software and teaching myself. Privacytools has been a super helpful resource. My main lesson this time is to take ownership/responsibility for my own data. To that end, I have switched to KeyPass with yubikey 2FA (still trying to figure out how to get 2FA with yubi on my android without NFC), moved over to Joplin for my note taking (away from Google and Evernote) and also switched to NextCloud for all of my data storage and synchronization. I'm also de-Googling myself, current due-date is end of March when Inbox is shut down.

      So my question / discussion topic here, is, what are everyone's thoughts on the future of practical personal security and privacy? More decentralization and self-hosting? That's what it looks like to me. Blockchain tech would be cool for public objects like news articles, images etc. but from what I understand that has zero implication for anything personal. The other newish tech is PGP signatures, which I'm still having trouble implementing/finding use for, but surely that will change.

      There is this topic but that ended up just being about encryption which I think is a no-brainer at this point. I'm more so looking for the leading edge trends.

      17 votes
    31. Tildes should not use hard line breaks for line endings

      I'm new to Tildes, but I've been using Markdown-based comment systems for more than a decade: both Reddit and GitHub. My programming blog has been written in Markdown for the past 8 years. Overall...

      I'm new to Tildes, but I've been using Markdown-based comment systems
      for more than a decade: both Reddit and GitHub. My programming blog has
      been written in Markdown for the past 8 years. Overall I've probably
      written several novels worth of content in Markdown in my life.

      I've already noticed that Tildes has made a serious mistake in its
      handling of line endings: All line endings are treated as hard line
      breaks
      . This diverges from CommonMark and most uses of Markdown in
      practice. If I wanted a hard line break, I'd put two spaces at the end
      of the line, as specified by both CommonMark and the original Markdown.
      Line endings should be otherwise be soft.

      GitHub made the same mistake with its "GitHub-flavored Markdown," though
      fortunately this mistake has been limited to issues. GitHub README.md
      files don't have this behavior, nor does GitHub Pages. It the only other
      Markdown system I've used with this flaw.

      Why does this matter? If I'm writing more than a single sentence, I
      never edit my comment inside my web browser. I edit it using my text
      editor of choice, Vim, since it's far more comfortable. I don't even
      have to copy-paste the text between applications. Instead, I have an
      add-on, Tridactyl, that does this seemlessly and effortlessly.

      Hard line endings just don't work well with long prose — exactly the
      type of content that Tildes is encouraging — particularly when edited in
      a proper text editor that knows about paragraphs and can do its own line
      wrapping. Editing long lines is annoying and takes extra care. That's
      why we have soft line endings after all.

      I'm leaving all my line endings in this post so that you can see the
      mess Tildes makes with it, with the ragged right-hand side due to font
      differences. If I had written this in nearly any other Markdown system,
      the text would have flowed into the page without issues. It is a mistake
      for Tildes to do differently. This sort of compatibility issue is
      probably going to be annoying enough to keep me off the site.

      23 votes
    32. Are any other Tilders Red Dead Redemption 2 Junkies like I am?

      (Still don't know if Tilders is a thing, but I'm rolling with it.) Red Dead Redemption 2 has hooked me like no other game has in years, and that's saying something. My collection is massive...

      (Still don't know if Tilders is a thing, but I'm rolling with it.)

      Red Dead Redemption 2 has hooked me like no other game has in years, and that's saying something. My collection is massive between my Steam library, PS4 library, and all the older titles I hoard. But ever since RDR2 came out a few months ago, it's almost all I have played on a daily basis.

      Aside from the fact that the graphics and animations are objectively jaw-drop gorgeous, there is something about this game's pacing, writing, thematic story telling, game-play, and characters that has absolutely captured my imagination, and has become my go-to way to unwind after a long day. Most of this applies to the story mode.

      But I also dove completely head first in the Online Beta for a few months straight. I'm now rank 101, have all I want really for online as it stands, and I loved every minute of my crazy solo-hunting/fishing/griefer oblitherating grind. Taking a break for new content coming on the 26th of this month, and also really need to get some friends to play with... (I have a perma-posse on PS4 named "The Pariah" as well if anyone decides they may be interested)

      I'm a lifelong vegetarian, and somehow, RD2 MADE ME FALL IN LOVE WITH HUNTING IN IT. I could go on, but I'm hoping to get some discussion out of this and not just blabber on and on like I do in real life about it.

      So... please tell me I'm not the only freak on here that loves this game. The Reddit communities for this game are a toxic dumpster fire, and I really want to discuss it with some people who actually like to... discuss.

      11 votes
    33. Trans introductions

      Hello y'all! I wanted to make a post where all us trans peeps can introduce themselves and say hey to each other, since I find it nice to have other trans peeps to chat with. Come say hey, or drop...

      Hello y'all!

      I wanted to make a post where all us trans peeps can introduce themselves and say hey to each other, since I find it nice to have other trans peeps to chat with. Come say hey, or drop me a line!

      For my own intro: I normally go by Nihilistic Janitor online, and before you ask I really don't know jack about philosophy I just thought the phrase "cleanliness is next to meaninglessness" is funny. I'm a nineteen year old pan trans woman, currently wheelchair-bound, who enjoys reading and writing and who recently finished a draft of a fun cheesy gay romance novel. I'm also in with some other trans-heavy communities, so if you're curious and want to check those out, message me!

      25 votes
    34. The long-awaited moment... Dracula theme added! Oh also, the site is publicly visible now (but let's not be too noisy about it yet).

      Alright, after repeatedly delaying it for various reasons, Tildes is now publicly visible. This means that people no longer need to get an invite to be able to browse the site. An invite is still...

      Alright, after repeatedly delaying it for various reasons, Tildes is now publicly visible. This means that people no longer need to get an invite to be able to browse the site. An invite is still required to register and participate though (and I'm intending to keep it that way for the foreseeable future).

      This should be a huge boon to the overall process—people will be able to check out the site before requesting an invite, which will save a lot of effort giving out "wasted" invites to people that just wanted to look and don't continue visiting afterwards. I want to talk more soon about making the process of getting an invite easier, but this should help a lot for now.

      Please don't try to bring a lot of attention to the public visibility just yet (you're welcome to tell friends or small groups though). I fully expect some people to notice it naturally, but I'd like to try to keep it a little quiet still over the weekend. There are still a few things that I'm working on, and I'd like to get a bit more done before we start promoting it too widely. Early next week I'll make a post on the Tildes blog announcing it, and then we can go all out with it.

      A couple of other notes about public visibility:

      • Logged-out users can select their theme - there's a dropdown box in the site footer for them to change it, but they'll have to set it individually on each device.
      • Logged-out users can only see the most recent 20 posts on user pages, they don't have access to the full pagination like logged-in users do. That was discussed a little in this thread. I don't know if it will stay this way permanently, but we can try it out for now.

      I've also topped everyone back up to 5 invite codes again. The public visibility may cause some of you to get requests from people for invites, so please let me know if you need more. You can access your invite links here: https://tildes.net/invite

      And as one other thing, I've also added the tirelessly-requested Dracula theme. This is the first time I've tried using the revamped theme system that @Bauke set up to add a completely new theme, so please let me know if you notice any oddities with it (or if you think I used the colors of it wrong or anything, I don't use Dracula personally).

      Please let me know if you have any questions, concerns, feedback, etc. about the public visibility. This is a huge step in the site's progress, and I'm definitely both excited and terrified about it.

      222 votes
    35. Should we limit meta-discussion in non-~tildes posts as we near public visibility?

      I've seen a number of topics that have had unrelated comments regarding Tildes as a whole and the direction in which we'd like to steer it toward. While I realize much of these sidebar...

      I've seen a number of topics that have had unrelated comments regarding Tildes as a whole and the direction in which we'd like to steer it toward. While I realize much of these sidebar conversations have been occurring naturally and very frequently in well-nested comments, I wonder if it isn't going to become distracting to some going forward.

      On one hand, I have enjoyed passively gaining insight into the vision of Tildes. On the other, I can see how we might want to start setting examples on the type of organization and behavior we'd want from users as the site grows. If new users who are joining after Tildes goes public see a regular occurrence of off-topic conversation, they might fall into bad habits and it may take root and grow.

      What are your thoughts? Maybe start creating new topics in ~tildes and tag users along with quotes from outside threads so that there's still a reference point to start discussion from?

      10 votes
    36. What's the (aimed) lifetime of a discussion on Tildes?

      It's somewhat of an unspoken rule on Reddit that replying to a comment that's more than a day old is a faux pas. The conversation naturally settles within that period – or, less often, within two...

      It's somewhat of an unspoken rule on Reddit that replying to a comment that's more than a day old is a faux pas. The conversation naturally settles within that period – or, less often, within two days. After that, the only appropriate thing is to either reference the conversation, or quote parts of the comments in relation to a similar issue in another post.

      On Hubski, conversations could go on for days. It's explicitly stated in the guidelines that it's completely okay to reply to a comment of any age. I've never seen a year-old "revival" do any good, but the fact that it isn't prohibited or frowned upon adds no burden to the user.

      How does Tildes handle this? Is there an unwritten rule already? Should there be a written one? What would be the factors?

      Today's Feb 13. I've found a post from Feb 2 that was on a subject of interest of mine, where comments were insightful, but I feel like not all questions that need to be asked have been. Surely I won't go about creating another topic just to revive the conversation against only my own commentary to show for it.

      There's also the matter of important, (semi)official topics on Tildes. Suppose a new issue arises that concerns an earlier public discussion held, say, half a year ago. It's a minor issue, but one that requires a discussion to settle. Does one comment on the old official topic, or does one create a new topic for this purpose?

      35 votes
    37. Introductions | February 2019

      Lots of new people coming in today, and there will be lots in the next couple of days... the last Introductions post was months ago, we're overdue for another one. Drop in, say hi, tell us...

      Lots of new people coming in today, and there will be lots in the next couple of days... the last Introductions post was months ago, we're overdue for another one. Drop in, say hi, tell us whatever you like about yourself, even if it's just how your day is going. On Tildes, ~talk is the casual space, so don't feel pressured to be clever or anything. :P

      Past introduction threads for everyone to catch up: -1- . -2- . -3- . -4- . -5-

      Also in case anyone missed it, there's an intro to tildes post to help bring you up to speed on this place.

      47 votes
    38. What are you planning to read this year?

      What do you want to read in 2019? For me, I've not read nearly enough Terry Pratchett, so I think I'm going to devour a lot of his works. I've promised my daughter that we're going to read the...

      What do you want to read in 2019?
      For me, I've not read nearly enough Terry Pratchett, so I think I'm going to devour a lot of his works. I've promised my daughter that we're going to read the Hobbit together when we finish her current bedtime story (so excited for this). There's a lot of non-fiction in my want to read list as well, Homo Deus, and Other Minds spring instantly to mind.

      35 votes