• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. 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
    2. 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
    3. Workshop Wednesday II: we're back!

      Hey everyone, thanks to you who posted in the original Workshop Wednesday; I think it went really well! Here we are for week 2 (sorry it took me til noon, I was busy this morning!) Some questions:...

      Hey everyone, thanks to you who posted in the original Workshop Wednesday; I think it went really well! Here we are for week 2 (sorry it took me til noon, I was busy this morning!)

      Some questions:

      • do we need a new topic every week? Or will one be enough?
      • any other comments/suggestions?

      Please begin your comment with [META] to discuss these. Otherwise, I'll copy and paste the guidelines from last week.


      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.

      10 votes
    4. Does anyone else feel the default theme is too bright?

      I opened Tildes unlogged in an anonymous window and felt the amount of amount of white to be excessive, even for a bright theme. This feels a bit overwhelming. What do you guys think? EDIT: I...

      I opened Tildes unlogged in an anonymous window and felt the amount of amount of white to be excessive, even for a bright theme. This feels a bit overwhelming. What do you guys think?

      EDIT: I changed my theme to Solarized Dark a long time ago, I'm asking because now that an account is not required to view the content a lot of people will get to know Tildes, so maybe the default theme could be improved

      22 votes
    5. 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
    6. 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
    7. Legend of Zelda: Breath of the Wild has been helping with my winter cabin fever!

      I live in Minnesota and we have gotten record-setting cold and snow over this last month. I've noticed myself getting depressed and angry about stuff much more than I do usually. Just by...

      I live in Minnesota and we have gotten record-setting cold and snow over this last month. I've noticed myself getting depressed and angry about stuff much more than I do usually. Just by coincidence, I started playing Zelda more on my Switch. Somehow, making Link walk around in the nice forests and mountains has affected me outside of the game! I feel less pissed off! Give this technique a try if you're in the same boat I am this winter.

      Also, I was about to sell this game because I hated it, now I'm loving it. No prior game has caused me to simultaneously love and hate a game. Weird.

      9 votes
    8. Removing or editing "Exemplary" labels?

      Might it be useful for our Exemplary (and I imagine Malice) labels to be removable or editable? I recently added an Exemplary label with a description that was a bit more "fuck that other guy!"...

      Might it be useful for our Exemplary (and I imagine Malice) labels to be removable or editable? I recently added an Exemplary label with a description that was a bit more "fuck that other guy!" than I would've liked, and despite it not being publicly visible, I still felt the need to in some way correct my mistake to not drag the other user into my hostility, but there's no option to do so. If we can't remove the labels because users shouldn't be juggling the timer or something, I get that, but editing seems like a good (yet low-priority) thing to implement.

      I can't recall this being explicitly outlined anywhere when labels were being introduced, sorry if I've forgotten something. Knowing me, I probably argued against it somewhere :P

      16 votes
    9. 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
    10. Why open source projects don't charge (while keeping the code open)?

      I'd gladly pay a reasonable price for professional packages/support for programs like Emacs/Melpa, Debian, and Xfce. As a user, I empathize with the complaints by developers that are constantly...

      I'd gladly pay a reasonable price for professional packages/support for programs like Emacs/Melpa, Debian, and Xfce. As a user, I empathize with the complaints by developers that are constantly overworked. Even if this doesn't generate enough money to pay for everything, it might be enough to hire someone to handle the issues and communities, something that clearly drains their efforts, especially because programmers tend to prefer technical challenges rather than dealing with people.

      I understand that many projects accept donations, but I think providing an actual reward (even if its something minimal, like an updated package instead of having to build it from source) might be a good way to get resources and avoid developer burndown.

      11 votes
    11. 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
    12. 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
    13. 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
    14. Trying to figure out my personal craziness

      I hope this is the appropriate Tilde for this. If no one has any input it will still have helped me to type this out. TL;DR In over my head with marriage, foster care, family, and work. My wife...

      I hope this is the appropriate Tilde for this. If no one has any input it will still have helped me to type this out.

      TL;DR In over my head with marriage, foster care, family, and work.

      My wife and I became foster parents about 1.5 years ago with the intention to not adopt, but to care for children 3 and under while bio parents worked to regain custody or other permanent placements were arranged. Our first placement was two girls (7 mo and 2.5 yrs) despite wanting to do just one kid at a time (especially to start). We had them for 6 weeks and mom got them back. We had another placement (8 mo boy) for about another 6 weeks. There was a considerable lull and we were getting frustrated about not getting any new placements when the girls from our first placement were placed into custody again. So we were able to take them in again (now about 1.2 and 3.5 yrs). FF to now and we've had them for about 6 months.

      We never really intended to have more than one child and for quite this long and we're struggling. My wife has always had a little less ability to weather stressful situations like this and these last 2-3 weeks I'm carrying a lot of weight. In the meantime, bio mom has gotten pregnant and there's not another hearing regarding custody for another 9 months. We fully expect that she will not be able to take them back at that time (or really realistically ever). What should probably happen would be that the county could place the kids into permanent custody (basically getting them adopted). However, from what we've heard from other foster families, temporary custody could drag on for years.

      So, our main dilemma is this. We are not equipped (as a couple) to care for these kids for years. With the likely prospect of no change in custody in the near future, it feels like the best thing for these kids would be to get them into the care of someone looking to do this long-term, perhaps to eventually adopt. That being said, we absolutely love them and it feels like some kind of betrayal to force them to make yet another transition. On the other hand, with our limitations, it seems like that is inevitable anyway. Do we try to make that happen sooner?

      Some other data points:
      Our fostering license expires in October (about a month after the hearing is scheduled) and we don't intend to continue fostering (at least for a while, and definitely not with our current agency).
      We don't have many family members close by to give us a hand with the kids, making us feel isolated and making it hard to get breaks from the kids. Our agency has not been very helpful with lining up respite care, but we're trying to be more aggressive about that now.
      I've got things pretty well lined up to retire in about 5 years. My company is also just now kicking off a major project of a similar time frame and I'm in a good position to really make a mark before moving on. It will probably require some serious time commitments and effort to do it the way I want to.

      Thanks for listening.

      12 votes
    15. What are some things other people dislike that you quite enjoy?

      Could be a game, book, movie, song, etc that is generally considered subpar. Personally, I quite like a lot of Eminem's new music, although I know it's an unpopular opinion. It certainly doesn't...

      Could be a game, book, movie, song, etc that is generally considered subpar. Personally, I quite like a lot of Eminem's new music, although I know it's an unpopular opinion. It certainly doesn't hit the same highs and there are a lot of stinkers but I still think some of it is quite good and worth a listen despite the circlejerk. I've also been playing Just Cause 4 lately, and although it certainly isn't a masterpiece and I will say the story is below the others, to me Just Cause was never about the story. It's about getting in there and just having fun causing chaos and generally messing around.

      37 votes
    16. 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
    17. 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
    18. Researching a book before you read it?

      I'm reading The Constant Gardener by John LeCarre and looking in Wikipedia for date of publication (2001) ran across the fact that it was loosely based on a true story. Now, it turns out I'm a...

      I'm reading The Constant Gardener by John LeCarre and looking in Wikipedia for date of publication (2001) ran across the fact that it was loosely based on a true story. Now, it turns out I'm a frequent fan of such 'maybe almost true life books' and especially movies. Usually the extent of the 'trueness' of the movie is revealed at the end of the story.

      It's often rewarding and adds to the emphasis of the story, which in itself interesting. But do any readers here avoid getting background on a story before reading? Do you think this is a type of spoiler? And does knowledge of a book being based on real events affect your opinion of the book in any way?

      And finally, does anyone else often turn to Wikipedia, before or after reading a story to gain insight on its background?

      7 votes
    19. On deciding whether to use a pseudonym or not

      I have writing, prose and in verses, that I want to start submitting to magazines. I can't decide if I should use a pseudonym or not. My reasons for using one: I have problems with my name: it is...

      I have writing, prose and in verses, that I want to start submitting to magazines. I can't decide if I should use a pseudonym or not. My reasons for using one:

      • I have problems with my name: it is ideologically loaded, people can tell my dad was a nationalist, which is an ideology I reject and oppose

      • I feel like it would somehow good for me to distance myself a bit from my work, don't know why really

      • I guess I am intimidated by potential failure a bit, so maybe "getting my feet wet" with a pseudonym could help me get over it.

      But I also want to own my work, and feel like using a pseudonym with complete secrecy is a bit... cowardly, if I am totally honest. I consider using a pseudonym which I will publicly own later, but then, is there a point to it?

      What do you think about it?

      19 votes
    20. 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
    21. When did you first start watching anime?

      For the most part, I am a late-comer to anime. I'm in my 30s, and I didn't really get into anime until my late 20s when I started working as an artist and (occasionally) animator. My early...

      For the most part, I am a late-comer to anime. I'm in my 30s, and I didn't really get into anime until my late 20s when I started working as an artist and (occasionally) animator. My early exposure to anime before I was 25 was limited to Pokemon and Spirited Away (like most non-anime watching Americans). I enjoyed both, but just never really knew where to start with anime. It seemed like there was too much of it.

      SAO was the first anime to really hook me. I binged it, and really enjoyed it. Since then, I haven't stopped. I've watched so many movies and series, and I love discovering new ones regularly.

      So what about you? When did you start watching? And which have left a lasting impression on you?

      16 votes
    22. I want to get into IT as a career, but I have no previous experience. What essential skills should I know?

      I've recently started taking some IT and programming classes at a local college because I've always been interested in IT as a career but I've never had any sort of professional experience in the...

      I've recently started taking some IT and programming classes at a local college because I've always been interested in IT as a career but I've never had any sort of professional experience in the field. Are there any skills that I need to definitely know, or any sort of certifications that I can get in order to get my foot in the door and start applying for IT focused jobs?

      24 votes
    23. What's your guitar (or other instrument) practice routine?

      I've been a self taught guitarist for about 10 years, but it turns out I'm not a fantastic teacher, so I've been taking jazz guitar lessons this year to fill in some of the blanks. It's forced me...

      I've been a self taught guitarist for about 10 years, but it turns out I'm not a fantastic teacher, so I've been taking jazz guitar lessons this year to fill in some of the blanks. It's forced me to sit down and actually practice specific skills, rather than just noodle around, play songs I know, and not stretch myself.
      So I knocked together a pretty basic practice routine, and I was wondering if anyone else has a specific routine that they follow when practising?

      Here's my routine:

      7th Chords & Arpeggios
      With root on the E, A, and D strings: Maj7, min7, Dom7, dim7 chords
      With root on the E, A, and D strings: Maj7, min7, Dom7, dim7 arpeggios (1 octave)
      With root on the E and A strings: Maj7, min7, Dom7, dim7 arpeggios (2 octaves)

      Scales
      Stepwise; 3rds; 4ths; 1-4-3-2 clusters; adding a chromatic note: Major, Dorian, and Mixolydian scales

      Chord scales
      (Not sure what this is called properly, but it's just learning the chords that apply to each note in a scale)
      With root on E, A, D: 1 octave of chords and arpeggios
      Staying in a major scale position: 1 octave of chords and arpeggios

      ii, V, Is
      7th chords around a ii, V, I
      Alternate voicings around a ii, V, I
      "Single note" riffing over a ii, V, I
      Scale riffing over a ii, V, I
      Arpeggio riffing over a ii, V, I
      Unrestricted riffing over a ii, V, I

      Standards
      Pick a couple of jazz standards and have a play around with them. No need to get them perfect, just become comfortable looking at chord sheets and semi-sight-reading the songs.

      21 votes
    24. 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
    25. 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
    26. Recommended two-player board games under sixty minutes

      Hi there! From time to time, me and wife enjoy playing 7 Wonders Duel on our weekends and we like that it's not that long because we always have to do other things. Of course, always playing the...

      Hi there!

      From time to time, me and wife enjoy playing 7 Wonders Duel on our weekends and we like that it's not that long because we always have to do other things. Of course, always playing the same game starts to get old (even though 7 Wonders Duel is quite great).

      My wife was not totally excited by Jaipur, Santorini and Patchwork, for example. So, which board games would you recommend for two players where the playing time doesn't exceed 60 minutes? The board games don't need to be 2-player specific (like 7 Wonders Duel), though.

      Edit: For future reference to other players. Besides the great recomendations in this post, I also found other very interesting 2-player games under 60 minutes. They are, Hanamikoji, Kodama Duo, Yokohama Duel and 13 Days: The Cuban Missile Crisis. I actually bought Hanamikoji because it's so cheap and fast. Great game too!

      34 votes
    27. 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
    28. I've taken the leap from Reddit

      Firstly, I'd like to dismiss any claims of pandering or fishing here. I need to say this and I need to write it out. I was a reddit user for 8 years. I thought it was 5 but another commenter...

      Firstly, I'd like to dismiss any claims of pandering or fishing here. I need to say this and I need to write it out.

      I was a reddit user for 8 years. I thought it was 5 but another commenter reminded me what it was. It put me into a bit of a reflective mood. I thought about some of the more meaningful insightful interactions I've had, and some of the more bitterly memorable ones where I was at best annoyed but more recently feeling attacked, shot down, rudely treated. It was profound as a sensitive human being to receive these things, to be made to feel through text, written for you by someone else. These weren't friends, people you held at arms length as you got to know them, they were complete strangers. And these people could be brutal. Make you feel so small. And yet I am a grown man, this environment I spent easily 30% of my waking time on for the best part of a decade was interacting with people and how much I enjoyed it. It was more than a website it was a place that I called home during bouts of depression, social drought and personal hardships. I found myself seeking help and for the most part finding it.

      I have learned something valuable that I want to share here and I had to learn it the hard way, through hypocrisy, through mistakes, through mis-spoken words and harsh tongue thrashings both ways. I have realised for the first time that the people reading these things, the people writing them, the sentiments involved and the content/context is important. They are real, they are human, they feel, they are like me.

      We are seeking some assembly, some community, some lectern from which to state our case. My whole life I looked for togetherness online and thought I found it in the early days of reddit. That is gone now. Even intelligent well thought out research style posts cannot culminate properly, they do not ascend, the public discourse is dead. I see now first hand the destruction of community the facebook exec spoke about. Our actual confident, open, readily invited opinionated perspectives are being replaced by circle jerks and shallow agree/disagree type statements. Upvotes have become likes. Now I see how it is broken.

      Someone saw me having a meltdown and invited me here. I was told it was invite only, and that it was made by someone who had the same feelings as me. I don't want to be surrounded by likeminded people, thats not what I joined reddit for. I joined because open and honest perspectives based on experience were readily available; academics, workers, parents, billionaires, could just shoot-the-shit they didn't need to cite sources or write something popular. But upvotes were reserved for contributors, not jesters or people ridiculing/attacking/berating others. The reddit bandwagon has become savagely toxic in many respects. It is (sorry was) frustrating.

      So here I am. Fresh off the boats as a reddit refugee. I hope than I can find my place here and contribute to the discussions, help build the site, build something that hopefully cannot be corrupted by growth, investors and advertisers.

      We discussed in the hundred or comments attached to my meltdown that the lowering average age of the site population and possible the general dumbing down of internet users happening the past 10 years was largely responsible. I can imagine previously mentioned factors also drove it over the cliff. What is the current hope for Tildes future? I read the announcement post and it mentioned that a baseline level of activity will ensure that topics cycle regularly and user engagement is high enough to stimulate people coming back. Or that is at least what I think the baseline is for.

      I hope this topic starts a discussion and doesn't get moderated away. But the lack of real debate, insight, coupled with a responsive and welcoming attitude is something the whole internet is missing right now, this is where we could make a positive change to the current online environment.

      40 votes
    29. Complete consumption of content on various online forums

      A common topic I've seen so far on Tildes is what exactly differentiates it from other online communities. This doesn't just encompass vision and meta-rules, but also the current state of the...

      A common topic I've seen so far on Tildes is what exactly differentiates it from other online communities. This doesn't just encompass vision and meta-rules, but also the current state of the forum, and it's userbase. I wanted to propose a possible metric for gauging the quality of a forum, and would love to hear feedback on it. The metric is as follows: when all the content on the platform is no longer realistically consumable by any given member of the community.

      I feel like Tildes is still currently at this state, but is somewhat quickly getting to the point where it's unrealistic for any one user to absorb all the content on the site. Once this tipping point arrives, the community has to change. The choice will be between whether one should start consuming all the content on specific sub-forums, like ~talk or ~comp, and ignoring the discussions and other subforums one cares less about, or accept that one will only ever see what is popular overall within the site.

      I feel like this falls into 3 main categories: Community, growth, and that "magic" feeling of nascent internet communities.

      I think it's important to define what I mean by "information" or "content". Information is meant in the more information theoretic context - it's a more abstract representation of content. It's context specific information that can be manifested as an image, a post, a comment, or even a set of rules. Information is, broadly, what makes up the discussion. If anyone has read Information: A history, a theory, a flood, I mean information in the same way it is defined and used in that book.

      1. Community:

      When every user is able to see what every other use posts, everyone involved has a singular point of view into the content of that community. It's never sharded or split - the information is distributed evenly, and everyone has close to 100% of it. Everyone might not agree or interpret content in the same way, but the very fact that everyone is seeing the same content, and the information is presented identically, makes it so that there is a very dense set of common ground. It's nearly impossible to "miss" big events - these being singular, really well written comment chains, unique posts, or thought provoking ideas. The sense of community is there because no one is excluded due to sheer amount of information - if someone puts in the effort to see everything, and it's still possible to see everything, they're almost automatically a part of that community.

      Once a forum becomes so large that any one person can no longer realistically consume all the content it starts straying towards the lowest common denominator. These are posts that share common ground with everyone, which unfortunately means that you lose that unique community. Most people one site will no longer have seen every single post. You no longer run into posts or comments that are as thought provoking, simply because there is so much content only that which appeals to everyone will make it to the top.

      1. Growth:

      This ties in closely with what I mentioned above - the growth is what spurs those changes. Once you no longer have that feeling of community, you interact with it differently. You no longer can rely on the same people seeing your content, and the content itself starts decreasing in quality. This isn't due to "dumb" people joining - it's due to the sheer amount of "Information" being generated. The idea of Eternal September is tangential to this - you're not just losing out on community due to a lot of new users, it's also a loss of community due to sheer amount of information.

      1. Magic internet moments:

      I don't have a good definition of this but I think most people will know what I mean. Every popular online community has these moments - they're the random acts of pizza, randomly encountering someone else from the same site in real life, crazy coincidences, etc. These are often what kick start the crazy growth in the previous post - they're just really cool events that happen because of the internet, and specifically happen on that site. The new reddit book We are the nerds goes over a ton of these in the early days of reddit, and how they propelled it to what it is today.

      I wanted to ask the current Tildes community what they thought about this, whether they had any major disagreements, and if anything can be done to remedy this./

      This is something I've been grappling with for a while. For context I'm a long time mod on reddit, primarily of r/IAmA, r/damnthatsinteresting, and r/churning. I've helped grow and curate these communities over time, and each is drastically different. The most relevant here is probably r/churning, though.

      It used to be that there was a core set of users that contributed all the content. They were known by name, everyone that visited knew who they were, and they built up the hobby to what it is today. All the things that I mentioned above started happening there - the content started skewing towards the trivial questions, new members weren't properly acclimated, and the sheer amount of information caused the mods at the time to implement fairly drastic rules to combat these issues. Once you could no longer realistically consume all the content the community aspect sort of fell apart, and it became more akin to a Q&A subreddit, with new users asking the same questions.

      Do you believe there is something unique/special about those "early" users, and what changes have you noticed historically once that "content" tipping point arrives?

      13 votes
    30. So my Grandma is slowly turning into an Antivaxxer thanks to platforms like Facebook... So I wrote her this essay this morning.

      Oof Grandma... Get your head out of your ass woman.(This is in Jest, Grandma knows and thought it was funny. ya'll chill)* Where are you getting your news lately because I just sent you an article...

      Oof Grandma... Get your head out of your ass woman.(This is in Jest, Grandma knows and thought it was funny. ya'll chill)* Where are you getting your news lately because I just sent you an article from our national news organization and you just told me you can't believe it... Why?

      We live and love in the beautiful free country of Canada and despite any individual political leader, we can find comfort in the fact that we have many elected officials that listen to their constituents and ultimately intend to better the lives for our nation. Canada is a mighty developed country and she has designated important bodies to help protect us from the wolves that prey on the weak. We have the CBC a nationally funded non profit organization that has authorship and integrity to the journalists they hire and a long history of helping the truth and redacting and outright dismissing disinformation (now more commonly called fake news). In this article I've sent you, it has sources directly involved in the measles outbreak, including doctors who are licensed through a board that verifies their integrity and ethics and authority in medicine. Also sourced is the CDC; another body that was appointed by Canada herself to keep her citizens healthy and safe, these are not groups of scientists with a vested interest to lie to anyone as that would jeopardize the safety to our entire nature... Yet these highly educated and well funded scientists are refuting your hypothesis grandma.

      I think in order to understand what is happening here we need to both step back and ground ourselves in a neutral territory towards a scholarly pursuit and work towards the advancement of our society. To do this we need to frame our perspective to that of a scholar to which I think you and I both agree we are proud to call ourselves anyway. Me, a university student and you an independent researcher: truth be told, as a student of an organization like Ryerson, I have access to a wider breadth of knowledge in our online resources and databases of peer reviewed articles that I can search through with ease, but our goal will be the same and can be achieved only if you think critically with everything you read - you seem well versed in this regard so kudos let's proceed.

      As a critical thinker and scholar we are nothing without our authority which is provided through our knowledge-base in factual information. I don't need to be an expert in biology, medicine, or even journalism to be able to have confidence in reading the news article I sent you; but as a scholar I have the ability to verify the authority to the people making the claims in the article. Every person involved in a professionally investigated article are sourced and cited and provide proof to their authority. It's why the CBC discloses their journalists and is also why they'll happily fire them if they fuck up - their integrity is on the line - same with every scientist working for the CDC. Canada does not have a vested interest in the perpetuation of fake news and disinformation, this isn't fucking Russia! (or the U.S. for that matter - Fox news is GOP run television FYI).

      This is critical thinking and needs to be understood before you assume authority to the Facebook posts you read. Think of the platform you are getting your news from - Facebook: an American company with a vested interest in advertising to its users. They are NOT a news agency and have zero regulation in verifying the authority of authorship. Anyone can write any shit they like, and the more clicks they get, the more money Facebook makes. In-fact they will happily sell any message you like so long as you're willing to pay for it. I can post just about anything under the guise of "free speech" so long as it does not contain "hate speech" (technically a crime in Canada) and then pay Facebook a couple hundreds of dollars to get that post higher up on my friend's walls. It's how their platform works and regardless of whether a post has been promoted by Facebook themselves or not they are in the business of clicks. In this age of terrorism and fear mongering, the posts, articles, links, and videos that induce the most controversy and fear will gain the most clicks - this is human nature! Facebook doesn't care, they got their money as they are now one of the largest messaging services in the world, second only to WeChat which is a government controlled chinese messaging app linked to their social credit system meant to repress their citizens... hmm...

      As Canadian philosopher Marshall McLuhan famously said in his thesis Understanding Media, “For any medium has the power of imposing its own assumption on the unwary… But the greatest aid to this end is simply in knowing that the spell can occur immediately upon contact, as in the first bars of a melody.” unfortunately the advent of social media has only perpetuated the scaling of the media, the importance of the messages, and the shallow knowledge-base of its users to apply the unwary en masse.

      To quote a larger bit of McLuhan to drive this point home:

      “The American stake in literacy as a technology or uniformity applied to every level of education, government, industry, and social life is totally threatened by the electric technology. The threat of Stalin or Hitler was external. The electric technology is within the gates, and we are numb, deaf, blind, and mute about its encounter with the Gutenberg technology, on and through which the American way of life was formed. It is, however, no time to suggest strategies when the threat has not even been acknowledged to exist. I am in the position of Louis Pasteur telling doctors that their greatest enemy was quite invisible, and quite unrecognized by them.” (McLuhan was a man before his time., this was written in 1954) “For the “content” of a medium is like the juicy piece of meat carried by the burglar to distract the watchdog of the mind. The effect of the medium is made strong and intense just because it is given another medium as “content.” The content of a movie is a novel or a play or an opera.
      The effect of the movie form is not related to its program content. The “content” of writing or print is speech, but the reader is almost entirely unaware either of print or of speech.”

      Do not kid yourself, social media is no different than any other media. The content of the message is NOT the message. Who is posting the dribble and fake news and WHY? understand the author and their authority and you will begin to think critically again. You wouldn't pick up a history book without knowing who authored it would you? Facts are facts, and fake-news is disinformation by another name.

      Now to return to our CBC article about measles and your claim that there is a connection to the MMR vaccine which has the potential to cause autism (despite how fucking stupid this shit is, I'll entertain your hypothesis for a moment).

      1. Where are your critical sources and statistics to prove any semblance to propose such an outlandish hypothesis? Because I can't seem to find any real ones in my databases here and every time I've asked you for your proof you've failed to provide any.

      2. If the vaccine were to cause autism you accept that there is a chance this vaccine may put a child at harms risk. The reality is you are saying you'd rather risk your child potentially getting a deadly disease and potentially becoming maimed and permanently injured through contact with the disease and worse contaminating others and spreading the harmful pathogens to others just out of fear of potentially could get autism... again, supported without any fact or evidence? Janet's post from Antivax-moms facebook group is non an authority of fact and no medical body has rightfully confirmed a case of autism to the MMR vaccine... so where is our proof again? Big-vaccine is out to give autism to our children?

      3. By not immunizing your children you are immorally upholding your child's life over that of your nations and against those you interact with on a day to day basis. You are no longer in a small town - we are a massive country with very loose borders so we can invite friends and family to visit. But when we don't protect our basecamp, the wolves will get in. That goes for fake news just as much as it goes for measles. We already have guards on duty to protect our children, our sick, our immune deficient elders and infants from harmful diseases. These treatments work and you and I are the proof in the pudding. Where is this form of tribalism coming from where you would rather "protect" from autism but not measles, mumps, and rubella? These are the wolves we must fight, and we can't let our guard down just because a post of Facebook has a few thousand clicks.

      We are in the age of disinformation and globalization, whether we like it or not there are a select few who are controlling the messages we perpetuate online. Unfortunately it's the confusion and lack of authority to the messages that has guided us towards a harmful future that is now killing children all over the world.
      https://medium.com/the-method/anti-vaccination-is-killing-children-in-europe-658415c54a04

      stop spreading misinformation and think critically. You are better than that... you are a scholar!

      I love you, and I hope you take this to heart.

      EDIT*
      Seeing that the post was more appropriately moved to ~talk I'm hoping I can start a bit more of a dialogue that has unraveled from talking with the rest of my family. I told my internal family about my conversation with Grandma which we've all had by now, we bring fact, she still isn't sure there isn't a bigger picture that she isn't seeing. She's been fed too many stories to really believe the true ones. How are we meant to respond to this? My dad kinda pissed me off, he said it's like pushing on rope and said it wasn't even worth the effort - especially since someone like my Grandmother doesn't intend to have anymore children and all her family members are well ingrained in the Ontario health system... despite his position, we get issues where families are believing information and causing significant harm to our society... what do?

      My bad argument style aside, has anyone else felt like they've been pushing on rope lately?

      20 votes
    31. Is a password manager essential?

      I feel like it's impossible to remember passwords that are long, random, and unique for every service. I have too many accounts. On the other hand, I don't like the idea of giving up control of my...

      I feel like it's impossible to remember passwords that are long, random, and unique for every service. I have too many accounts.

      On the other hand, I don't like the idea of giving up control of my passwords to a password manager and using the ones it generates and stores. It feels weird that I wouldn't "know" my passwords.

      Is this a hangup I should just get past? What do I do if I need to login somewhere but cannot access my password manager?

      30 votes
    32. 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
    33. 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
    34. r/Apple is legit?

      I am a constant lurker in the Apple subreddit but I always wondered if people defend the company so much because they really are rabid fans or are they shills? Don't get me wrong, I know that some...

      I am a constant lurker in the Apple subreddit but I always wondered if people defend the company so much because they really are rabid fans or are they shills?

      Don't get me wrong, I know that some people there can be really critical of Apple but it is still surprising to me the attitude of some of its users.

      15 votes
    35. 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
    36. What Song Comes to Mind: Anxious

      Hey fellow tilderinos, I thought it'd be interesting to have a semi-regular discussion where we get into those songs, whether a new find or old standby, where we relate them to specific emotions....

      Hey fellow tilderinos,

      I thought it'd be interesting to have a semi-regular discussion where we get into those songs, whether a new find or old standby, where we relate them to specific emotions.

      I'd like to keep it pretty general for now and not put too many rules or regulations on how the discussion unfolds (it is a discussion after all) so we start with something more ambiguous: anxious.

      So tilderinos what songs do you gravitate towards when you feel anxious or what songs do you feel capture the emotion of anxiousness properly to you?

      For instance: Ful Stop by Radiohead really captures what anxiety feels like for me. From the underlying base to the manic cries of Thom Yorke is really is an experience. One or two times I've been on my way home from work and this song pops on and it's almost too much for a drive home after a long shift.

      On the flip side, Lion's Mane by Iron and Wine has the ability to calm me down even at my most anxious. It gives me the idea that it isn't always easy but its relatable and everything will calm down and be okay. It's mostly just really soothing to me for whatever reason.

      Your turn Tilde. What songs do you associate with the word "anxious?"

      10 votes
    37. 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
    38. 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
    39. 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
    40. 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
    41. Why aren't smartphones like PCs where you have choice over your OS and get updates directly from OS vendor?

      I can install Linux or Windows or even BSD on my laptop without much hassle, and get the updates directly from the OS vendors. This isn't the case for smartphones. You don't have choice over your...

      I can install Linux or Windows or even BSD on my laptop without much hassle, and get the updates directly from the OS vendors.

      This isn't the case for smartphones. You don't have choice over your OS. You don't even get android updates directly from Google, and have to wait for device manufacturers to release the updates. Why is it so?

      32 votes
    42. Share your favorite vegetarian meals

      I'm making an effort to cut out meat from my diet and I'd love to hear what everyone's favourite vegetarian meals are. For a long time I have been making pasta with ground beef and I recently...

      I'm making an effort to cut out meat from my diet and I'd love to hear what everyone's favourite vegetarian meals are.

      For a long time I have been making pasta with ground beef and I recently found out that I can just not put the beef in and it tastes even better. The tomato sauce really gets a chance to shine without the beef.

      40 votes
    43. 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
    44. When will there be a group for photographers?

      Hey everyone! I'm pretty new here, and I'm already enjoying this place, but I was wondering when there will be a group to post photos. I take photos and I'm sure some of you do as well, and I...

      Hey everyone!

      I'm pretty new here, and I'm already enjoying this place, but I was wondering when there will be a group to post photos. I take photos and I'm sure some of you do as well, and I thought it would be cool to be able to share the photos we take and get honest feedback on them like we have honest discussions in the news articles, share tips and tricks, and generally have another way to connect.

      I know generally photos are kind of taboo, as places like instagram have kind of ruined it and turned every single person with a camera on their phone into a photographer, so I get it if you have reservations. I have some myself, but I still want to take the chance.

      Idk, I thought it would be cool. If not, then whatever, I ain't picky about this place I enjoy it very much.

      22 votes