• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! If you've just picked up some music, please update on that as...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! If you've just picked up some music, please update on that as well, we'd love to see your hauls :)

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      17 votes
    2. Animating the Inanimate Poetry Challenge

      @cadadr's 4 word poetry challenge is one of my favorite Tildes threads to read through on account of the many clever and thoughtful responses, so I figured I'd try to kick off another one. This...

      @cadadr's 4 word poetry challenge is one of my favorite Tildes threads to read through on account of the many clever and thoughtful responses, so I figured I'd try to kick off another one. This one is a little more conceptually involved, but I think it still has the potential to be a good time like the last one.

      Rather than going with a strict word or line count, instead I am creating a restriction based around personification:

      Challenge:
      Your poem must:

      • Be written from the point of view of an inanimate object
      • Give the object personality/emotion
      • NOT name the object, so that people have to infer it from what you've written

      An example might be an automatic door that is bored to tears from opening and closing ad nauseum. Or maybe a watering can that is excited to tend to its garden.

      In trying to come up with a model I decided to channel a resentful milk carton:

      It's fine
      I get it
      You don't have to justify yourself
      Lots of better things have come around
      Since you first chose me

      Just know that I'm still here
      If you need me
      Waiting for that blissful moment
      Where you light up my world
      And take me in your hand
      And make me feel like I'm flying
      Before you lower me down
      In a lover's embrace

      It's fine
      I get it
      Until then I'll sit here
      In the cold, cold dark
      Trying not to go sour
      Next to the slowly molding cheese
      And forgotten grapes

      It's far from perfect but hopefully it gives you an idea of what the assignment can look like. While I saved my "reveal" to the end, don't feel obligated to use that tactic unless you want to. You don't have to hide the identity of your object, just don't name the object outright in the poem.

      Feel free to make your poem as long or short as you wish. Feel free to make it as meaningful or silly as you want. Above all else, have fun!


      If you need help with ideas or just want the challenge of writing to a randomly selected specification, you can use this noun generator for objects and this adjective generator for sentiments.

      9 votes
    3. Having issues setting goals and sticking with them? I’m working on a solution

      I am working on an app called Percent Done that is a combination of goal setting, time tracking and habit tracking. I like setting time-based goals for myself every day, such as “write for an...

      I am working on an app called Percent Done that is a combination of goal setting, time tracking and habit tracking.

      I like setting time-based goals for myself every day, such as “write for an hour” or “work on Percent Done for four hours.”

      I also like Seinfeld’s “don’t break the chain” method. For example, Apple Watch shows you how many days you have completed your exercise circle and tells you that you have been keeping at it for x days.

      Percent Done is a marriage of these two concepts. It allows you to set goals and track the time you spend on them, as well as how many days in a row you have consistently completed them. For example, you can add a goal that says “write for an hour every day,” and Percent Done will notify you every day to write for an hour. You will be able to tap on this goal and Percent Done will start counting back from one hour. You will also be able to see how many days in a row you have written for an hour.

      Here is a demo GIF.

      You can also add one-time goals to Percent Done with or without time tracking, so it is a task management tool as well.

      You can play with the design prototype here: Percent Done design prototype

      I would really love to get your feedback on this. If you are interested in being a beta tester, feel free to reply to this topic or e-mail me at "hi at evrim dot io."

      By the way, this is almost completely a self-promotion post. If it is against the rules, I'd be happy to remove this.

      23 votes
    4. Tildee — A python library for interacting with Tildes

      Update! After a few hours of struggling I managed to set up Read the docs for Tildee, it should help using the library significantly. After getting some inspiration from TAPS I thought that maybe...

      Update! After a few hours of struggling I managed to set up Read the docs for Tildee, it should help using the library significantly.

      After getting some inspiration from TAPS I thought that maybe I try to work on something vaguely similar on my own. And after… some? hours of coding today I came up with this: tildee.py (source)
      It's a wrapper for the Tildes Public/Web API that is already used by the site internally to make it work. The obvious problem with that is that it will at one point break when this unstable API is changed. It can do basically all things a normal user can do with the notable exception of applying comment labels (because I haven't gotten around to that yet).

      Example of usage for a DM reply bot (result):

      import sys
      from tildee import TildesClient
      import time
      
      # Initialize client and log in, 2FA isn't supported yet and will probably break in horrible ways
      t = TildesClient("username", "password", base_url="https://localhost:4443", verify_ssl=False)
      
      while True:
          # Retrieve the "unread messages" page and get a list of the conversations there
          unread_message_ids = t.fetch_unread_message_ids()
          for mid in unread_message_ids:
              # Access the conversation history page; this also clears the "unread" flag 
              conversation = t.fetch_conversation(mid)
              # Get the text of the last message
              text = conversation.entries[-1].content_html
              # Abort if it's from the current user (I don't think this could actually happen)
              if conversation.entries[-1].author == t.username:
                  break
              print(f"Found a message by {conversation.entries[-1].author}")
              # If the message contains a reference, reply in kind
              if "hello there" in text.lower():
                  print("Replying…")
                  t.create_message(mid, f"General {conversation.entries[-1].author}! You are a bold one.")
              # Delay before processing next unread message
              time.sleep(3)
          # Delay before next unread check
          time.sleep(60)
      

      This has a lot of potential. Haven't yet figured out potential for what, but I'll take what I can get.
      I'd be really grateful if someone with a little more experience than me (that's not exactly a high bar :P) could give me some pointers on the project's structure and the "API design", hence the ask tag. Other creative ideas for what to use this for are appreciated, too.

      47 votes
    5. What are you reading these days? #22

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it. Notes: I am aiming to make a list of all the books mentioned...

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it.

      Notes: I am aiming to make a list of all the books mentioned in toplevel comments in these threads, see this wiki page. If you want to help with that, that'd really be appreciated, PM me please.

      Past weeks: Week #1 · Week #2 · Week #3 · Week #4 · Week #5 · Week #6 · Week #7 · Week #8 · Week #9 · Week #10 · Week #11 · Week #12 · Week #13 · Week #14 · Week #15 · Week #16 · Week #17 · Week #18 · Week #19 · Week #20 · Week #21

      15 votes
    6. Democratic Debate #1 Thread (Night 2)

      welcome to debate #1, night 2. the first thread on this turned out to be about twice as active as i was expecting (i estimated at most 50 or so replies), and that was for the "undercard" so unless...

      welcome to debate #1, night 2. the first thread on this turned out to be about twice as active as i was expecting (i estimated at most 50 or so replies), and that was for the "undercard" so unless something changes with this night, i think we'll be doing these in pairs from here on out--at least until either the DNC pushes out enough candidates for one debate, or activity drops significantly in these threads. previous night's thread can be found here if you'd like to continue the discussions of last night's candidates. anyways here are all the details you'd ever need, and probably then some:

      first off, i recommend you sort by newest first instead of the default since this thread will likely be semi-active and covering a live event.

      How to Watch:

      The debate is being broadcast by NBC News, MSNBC and Telemundo, and will air live across all three networks starting at 9 p.m. ET.
      Telemundo will broadcast the debate in Spanish.
      The debate will stream online free on NBC News' digital platforms, including NBCNews.com, MSNBC.com, the NBC News Mobile App and OTT apps on Roku, Apple TV and Amazon Fire TV, in addition to Telemundo's digital platforms.

      livestreams will also be available on Twitter, Facebook, and Youtube because the DNC mandated that of its partners for the debates.

      The Candidates:

      Democratic Presidential Debate: See The 20 Candidates Who Will Be Onstage

      • Michael Bennet (Senator from Colorado)

      Bennet is running on fixing a broken political system, the blame for which he puts at the feet of Republican Senate leader Mitch McConnell. Bennet says spending from wars and tax cuts was essentially the U.S. lighting “money on fire.”

      • Joe Biden (Former vice president)

      Biden’s top concern is less about reshaping America and more about returning America to “normalcy.” He argues that if President Trump gets another four years, the DNA of the country will be fundamentally altered.

      • Pete Buttigieg (Mayor of South Bend, Ind.)

      The 37-year-old is making a generational-change argument. He argues for progressive processes — like fixing redistricting and voting rights — in addition to policies — like being more cautious on war and more progressive on climate change and health care.

      • Kirsten Gillibrand (Senator from New York)

      She’s focused on women’s rights, especially when it comes to health care. She boasts that a Fox host called her “not very polite” for speaking out about the “nationwide assault on women’s reproductive freedoms” and “fundamental human rights for women.”

      • Kamala Harris (Senator from California)

      Harris’ slogan is “for the people,” and she’s making the case that President Trump is a “fraud.” The former prosecutor says Trump is fighting for the wrong people — the powerful and wealthy — while she wants to “advocate for the voiceless and vulnerable.”

      • John Hickenlooper (Former governor of Colorado)

      The centrist has a pragmatic message. He says pragmatists aren’t against big things; they know how to get them done. He has also spoken out against Democrats’ lurch toward socialism, warning that moving in that direction would reelect President Trump.

      • Bernie Sanders (Senator from Vermont)

      Sanders wants to beat President Trump, but he believes the way to do it is not with “middle-ground” approaches, but with promising wholesale progressive change. He’s the only candidate willing to wear the (democratic) socialist label.

      • Eric Swalwell (Representative from California’s 15th District)

      He has focused his campaign on ending gun violence in the country, targeting semiautomatic assault weapons in particular by calling for a mandatory national ban and buyback.

      • Marianne Williamson (Spiritual guru, entrepreneur)

      The New Age author is campaigning with a philosophy of “Think. Love. Participate.” As an outsider to politics, she believes change needs to come from the outside and that “half-truth tellers” can’t beat President Trump.

      • Andrew Yang (Founder of Venture for America)

      The startup investor is running on a data-first approach to the presidency. His big idea is to address the threat of automation with a Universal Basic Income, in which every adult would get $1,000 a month.

      The Rules:

      Candidates will have 60 seconds to answer questions and 30 seconds to respond to follow-ups. No opening statements, though candidates will have a chance to deliver closing remarks.
      Five segments each night separated by four commercial breaks.

      The Analysis:

      NPR has 7 questions of their 8 for the debates which apply to today's debate:

      Will Biden stand up to the scrutiny?
      Is the debate an opportunity or danger zone for Bernie Sanders?
      Can Harris and Buttigieg stand out?
      Do the pragmatists or progressives win out?
      How much of a focus is Trump?
      How will foreign policy factor in?
      Who will stick in voters' minds?

      other pre-debate analysis pieces that may be pertinent to you:

      34 votes
    7. Tildes User Script: Youtube Thumbnails Below Topic Title

      A screenshot. Following is a user script that embeds a thumbnail into the topic header. Was supposed to be trivial, but walking around the CSRP was not that easy. Luckily, someone had written a...

      A screenshot.

      Following is a user script that embeds a thumbnail into the topic header. Was supposed to be trivial, but walking around the CSRP was not that easy. Luckily, someone had written a nice useful custom Base64 encoder, because I spent more than an hour trying to get btoa to do the thing.

      // ==UserScript==
      // @name     tildesYoutubeThumbs
      // @version  1
      // @grant    GM.xmlHttpRequest
      // @namespace   tildes.net
      // @include     https://tildes.net/~*/*
      // ==/UserScript==
      
      let youtubeIcon = document.querySelector('div.topic-icon-youtube_com')
      
      if(youtubeIcon !== null) {
        let youtubeLink = youtubeIcon.nextSibling.nextSibling.href;
        let youtubeID = new URL(youtubeLink).searchParams.get('v');
        let thumbnailUrl = "https://img.youtube.com/vi/" + youtubeID + "/0.jpg";
      
        GM.xmlHttpRequest({
          method: "GET",
          url: thumbnailUrl,
          overrideMimeType: 'text/plain; charset=x-user-defined',
          onload: function(response) {
            if(response.status === 200) {
              let thumbElement = document.createElement('img');
              let thumbParentDiv = document.createElement('div');
              let header = document.querySelector('article.topic-full > header');
              let data = "data:image/jpeg;base64," + customBase64Encode(response.responseText);
              thumbElement.src = data;
              thumbElement.style = 'width: 60%; margin: auto';
              thumbElement.id = 'gk-youtube-thumbnail';
              thumbParentDiv.style = 'width: 100%; text-align:center;';
              header.appendChild(thumbParentDiv);
              thumbParentDiv.appendChild(thumbElement);
            }
          }
        });
      }
      
      // https://stackoverflow.com/questions/8778863/downloading-an-image-using-xmlhttprequest-in-a-userscript/8781262#8781262
      function customBase64Encode (inputStr) {
          var
              bbLen               = 3,
              enCharLen           = 4,
              inpLen              = inputStr.length,
              inx                 = 0,
              jnx,
              keyStr              = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                                  + "0123456789+/=",
              output              = "",
              paddingBytes        = 0;
          var
              bytebuffer          = new Array (bbLen),
              encodedCharIndexes  = new Array (enCharLen);
      
          while (inx < inpLen) {
              for (jnx = 0;  jnx < bbLen;  ++jnx) {
                  /*--- Throw away high-order byte, as documented at:
                    https://developer.mozilla.org/En/Using_XMLHttpRequest#Handling_binary_data
                  */
                  if (inx < inpLen)
                      bytebuffer[jnx] = inputStr.charCodeAt (inx++) & 0xff;
                  else
                      bytebuffer[jnx] = 0;
              }
      
              /*--- Get each encoded character, 6 bits at a time.
                  index 0: first  6 bits
                  index 1: second 6 bits
                              (2 least significant bits from inputStr byte 1
                               + 4 most significant bits from byte 2)
                  index 2: third  6 bits
                              (4 least significant bits from inputStr byte 2
                               + 2 most significant bits from byte 3)
                  index 3: forth  6 bits (6 least significant bits from inputStr byte 3)
              */
              encodedCharIndexes[0] = bytebuffer[0] >> 2;
              encodedCharIndexes[1] = ( (bytebuffer[0] & 0x3) << 4)   |  (bytebuffer[1] >> 4);
              encodedCharIndexes[2] = ( (bytebuffer[1] & 0x0f) << 2)  |  (bytebuffer[2] >> 6);
              encodedCharIndexes[3] = bytebuffer[2] & 0x3f;
      
              //--- Determine whether padding happened, and adjust accordingly.
              paddingBytes          = inx - (inpLen - 1);
              switch (paddingBytes) {
                  case 1:
                      // Set last character to padding char
                      encodedCharIndexes[3] = 64;
                      break;
                  case 2:
                      // Set last 2 characters to padding char
                      encodedCharIndexes[3] = 64;
                      encodedCharIndexes[2] = 64;
                      break;
                  default:
                      break; // No padding - proceed
              }
      
              /*--- Now grab each appropriate character out of our keystring,
                  based on our index array and append it to the output string.
              */
              for (jnx = 0;  jnx < enCharLen;  ++jnx)
                  output += keyStr.charAt ( encodedCharIndexes[jnx] );
          }
          return output;
      }
      
      15 votes