- 
        10 votes
- 
        Kabul blast: Massive bomb kills at least ten in Afghan capital8 votes
- 
        On 'hottest day in history of France,' world told 'do not look away' as police tear-gas climate campaigners in Paris33 votes
- 
        Having issues setting goals and sticking with them? I’m working on a solutionI 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. 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
- 
        The shape of things to come7 votes
- 
        Experiences of using Byobu instead of a graphical DE6 votes
- 
        Denmark’s new government raises climate change to highest priority11 votes
- 
        How to find out the age of your plane5 votes
- 
        The human cost of Call of Duty: Black Ops 416 votes
- 
        Parkinson's disease-causing protein hijacks gut-brain axis8 votes
- 
        The dark side of the Caribbean8 votes
- 
        Thomas Benjamin Wild Esq - No More Fucks To Give (2019)4 votes
- 
        Tildee — A python library for interacting with TildesUpdate! 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
- 
        Boeing's 737 Max software outsourced to $9-an-hour engineers24 votes
- 
        Formula One Racing: 2019 Austrian Grand Prix Results8 votes
- 
        Summer Games Done Quick 2019 has started, running until June 3022 votes
- 
        What are you reading these days? #22What 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
- 
        Ottoman Wars - Battles of Gorjani and Castelnuovo 15379 votes
- 
        Istanbul's LGBT community holds small rally after march banned9 votes
- 
        The Soviet superplane that rattled America6 votes
- 
        macOS Night Shift feature causes infinite loop on device when taken to the arctic circle during summer@austinj: TIL that if you go North of the Arctic Circle in the summer and bring a MacBook with Night Shift set to be triggered by sunrise/sunset, the process will go into an infinite loop because the sun never sets... 30 votes
- 
        Belief in Learning Styles Myth May Be Detrimental10 votes
- 
        Deep learning for pattern recognition in movements of game entities4 votes
- 
        NASA reopens Apollo mission control room that once landed men on Moon11 votes
- 
        Oregon Republican senators end walkout over carbon bill13 votes
- 
        Why certain words are left out of our English Bibles7 votes
- 
        We thought our prison strike was a success. Then came the officers in riot gear.14 votes
- 
        Romance novelists write about sex and pleasure. On the internet that makes them targets for abuse9 votes
- 
        Richard Cheese - People Equals Shit (Slipknot Cover) (2005)6 votes
- 
        A rather sensual macro shot i took of my ex girlsfriend's belly button in 200411 votes
- 
        Tildes User Script: Youtube Thumbnails Below Topic TitleA 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...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 btoato 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
- 
        Shango Records: Various Artists - 4 Years Of Beauty (2019)2 votes
- 
        What have you done lately that you're proud of?Anything you've been working at lately and finally got it done? Anything you finally got around to finishing/starting? Anything big happening? Feel free to gush about anything you've done but want...Anything you've been working at lately and finally got it done? Anything you finally got around to finishing/starting? Anything big happening? Feel free to gush about anything you've done but want to talk about! Yesterday I decided to pick my acoustic guitar back up and learn Blackbird by The Beatles (Only mildly inspired by Kmac). Today I got it all down! Feeling super proud that I nailed a song like that so quickly after having played bass almost primarily for a while now. 23 votes
- 
        Andrew Yang says microphone was 'not on' at times during Democratic debate22 votes
- 
        Has Wine begun to remove the need for linux software?I started using wine in about 2013 and I remember back then it was quite patchy and only worked on some programs/games. I used to have a rule that I stuck hard to that I would not buy any games...I started using wine in about 2013 and I remember back then it was quite patchy and only worked on some programs/games. I used to have a rule that I stuck hard to that I would not buy any games that did not have a linux version. But now in 2019 I have found that everything I have tried to run in wine has been so seamless and close to flawless that I hardly know its running in wine. I semi regularly buy games that only have windows version because I am mostly sure it will work and can get a refund if it doesn't. What does everyone else think about this? 8 votes
- 
        Fox News didn't "steal" your parents19 votes
- 
        Mary O'Hara - The Famine Song2 votes
- 
        Denver is capturing geese from city parks to be killed and given to hungry families16 votes
- 
        CO2 and Climate Task Force (AQ-9) [1980]8 votes
- 
        A system for "starred" posts on sensitive/advice topicsThis was inspired by this post. I was thinking, as a platform gets bigger we're going to end up with more situations where people are asking for advice about fairly serious stuff. In some cases,...This was inspired by this post. I was thinking, as a platform gets bigger we're going to end up with more situations where people are asking for advice about fairly serious stuff. In some cases, that advice needs to come from experts and taking guidance from any random Joe on the street can be risky/dangerous. (For the record, I don't think the post I'm referencing is an example of this, it just got me thinking about it). In cases like this, I think it's important that the actual good advice get some kind of clear designation that THIS is the guidance you need to take first. I notice this in communities like /r/Fitness a lot where people will post about what sound like pretty serious health concerns and you get a fair number of posts that suggest toughing it out or whatever and the more critical "You need to see a doctor" posts can kind of disappear amid the discussion. Similar things in /r/relationships where you can't always count on "This is abuse. Make arrangements to get your kids and yourself somewhere safe. . ." to be the top post. Even in cases where the poster themselves is smart enough to take "YOU NEED TO SEE A DOCTOR" type advice to heart, not every schmuck searching the topic on Google will. To that end, it might be good to give certain posts with good, holistic advice or by a known expert some kind of visual indicator that it deserves to be taken more seriously than other posts in the thread. It wouldn't be censoring anything really, just providing a little nudge about what ought to be consulted first or taken to heart. Now obviously it gets hard to decide how to give a post this attribute. It could possibly be awarded by the OP, though that has some obvious issues where the OP themselves might not be in a position to credibly vet the advice they're getting. We could also just do it through ranking by vote, which is the default paradigm. But like I said, it doesn't always work so well on Reddit. And the Exemplary tag is invisible to others, so that doesn't work either (and the post itself might not be worth giving up your "Exemplary" for the day besides). Moderators could do it, but there may not be enough and the skillset to be a Mod might not overlap with the skillset to know what advice a person needs in a particular situation. I don't actually have the answers. Maybe it just comes down to creating an attribute for some users to be "wisened elders" or something and empower them to star certain posts to separate good advice from bad. It would basically be a trusted user system. It's got it's own problems, but I guess we can open the floor for other ideas. Maybe it's not a real concern. Maybe it's better addressed by tinkering with the sorting of posts. 11 votes
- 
        Where disease stopped and my brother began: Coming to terms with a sibling's suicide3 votes
- 
        The problem with sex testing in sports6 votes
- 
        LGBTQ celebs believe the fight for their rights is not over6 votes
- 
        In gentrifying Washington, a family inheritance becomes LGBT housing6 votes
- 
        Why education startups do not succeed6 votes
- 
        Europe has had five 500-year summers in fifteen years18 votes
- 
        American Football - Uncomfortably Numb (2019)10 votes
- 
        The unknown Tekken god: How Arslan Ash overcame borders and legends to win Evo Japan7 votes
- 
        Inside Starshot, the audacious plan to shoot tiny ships to Alpha Centauri10 votes
- 
        Five years ago, Malaysia Airlines Flight MH370 vanished into the Indian Ocean. Officials on land know more about why than they dare to say16 votes