• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. Poetry Machine (project)

      The concept It's a box that contains a receipt printer and an interface with several buttons. A user would press a button that reflects their emotional state (happy, sad, anxious, etc.), then the...

      The concept

      It's a box that contains a receipt printer and an interface with several buttons. A user would press a button that reflects their emotional state (happy, sad, anxious, etc.), then the machine prints out a more-or-less appropriate poem on a receipt printer, beautifully formatted and embellished with simple artwork.

      It could be occasionally repurposed for certain themes, like Pride Month to print out queer poems.

      I want to place it someplace public and well-trafficked, like Dolores Park or on Castro Street.

      Feedback

      I like poetry. The idea of a (free) vending machine that gives me a poem to uplift my day excites me. But I wonder if this appeals to others enough to be worth fully realizing. I don't want to spend time and money building something that'll go totally unloved.

      Also curious about anti-vandalism measures or ideas. I'm sure some jerk will try graffiti-ing it or peeing on it.

      Lastly, anyone interested in collaborating?

      7 votes
    2. What should a layperson know about AI?

      Asking for a friend. 😉 In all seriousness, the question was inspired by the news out of Google and specifically @Whom's comment here. What should non-technical laypeople know about AI? The info...

      Asking for a friend. 😉

      In all seriousness, the question was inspired by the news out of Google and specifically @Whom's comment here.

      What should non-technical laypeople know about AI?

      The info doesn't have to be limited to just this particular news item either. What information would you want included in an AI 101 rundown? What is it currently used for? What will it do in the future? What are its limitations? What are its potentials?

      And, of course, how should people interpret stuff like today's big news item?

      15 votes
    3. Should superpowers announce?

      like, say I've invented a magic trick that I don't know how it's done. What is my moral obligation to report novel phenomena? If a divine singularity spontaneously opens up in my living room, or...

      like, say I've invented a magic trick that I don't know how it's done. What is my moral obligation to report novel phenomena? If a divine singularity spontaneously opens up in my living room, or in my kidney, and somehow I harness it and taught myself to fly -- do I have to tell people, or do we think it would be too scary? It seems really obscene and disruptive to announce something so premise-shattering. Shouldn't I labor in secrecy? Do I have to expose my abilities to some sort of mandate before I can start?

      11 votes
    4. Weekly US politics news and updates thread - week of June 13

      This thread is posted weekly - please try to post all relevant US political content in here, such as news, updates, opinion articles, etc. Extremely significant events may warrant a separate...

      This thread is posted weekly - please try to post all relevant US political content in here, such as news, updates, opinion articles, etc. Extremely significant events may warrant a separate topic, but almost all should be posted in here.

      This is an inherently political thread; please try to avoid antagonistic arguments and bickering matches. Comment threads that devolve into unproductive arguments may be removed so that the overall topic is able to continue.

      3 votes
    5. Weekly coronavirus-related chat, questions, and minor updates - week of June 13

      This thread is posted weekly, and is intended as a place for more-casual discussion of the coronavirus and questions/updates that may not warrant their own dedicated topics. Tell us about what the...

      This thread is posted weekly, and is intended as a place for more-casual discussion of the coronavirus and questions/updates that may not warrant their own dedicated topics. Tell us about what the situation is like where you live!

      2 votes
    6. Foone reverse engineering SkiFree, one function at a time

      @foone: OKAY SKIFREEThis is a game originally from 1991, developed by Chris Pirih, and included on one of the Windows Entertainment Packs. There's a modern 32bit version by the original developer, on the official site:https://t.co/Yoj7PDmkcV pic.twitter.com/ETQa1wdqqR

      8 votes
    7. Python Loops for JSON

      How the heck do these work? I've cobbled together the script below for my bot (using Limnoria) to return the F1 standings in a line. Right now it returns the first value perfectly, but I can't...

      How the heck do these work? I've cobbled together the script below for my bot (using Limnoria) to return the F1 standings in a line. Right now it returns the first value perfectly, but I can't figure out the loop to get the other drivers at all.

      The script
      import supybot.utils as utils
      from supybot.commands import *
      import supybot.plugins as plugins
      import supybot.ircutils as ircutils
      import supybot.callbacks as callbacks
      import supybot.ircmsgs as ircmsgs
      import requests
      import os
      import collections
      import json
      
      try:
          from supybot.i18n import PluginInternationalization
      
          _ = PluginInternationalization("F1")
      except ImportError:
          _ = lambda x: x
      
      
      class F1(callbacks.Plugin):
          """Uses API to retrieve information"""
      
          threaded = True
      
          def f1(self, irc, msg, args):
              """
              F1 Standings
              """
      
              channel = msg.args[0]
              data = requests.get("https://ergast.com/api/f1/2022/driverStandings.json")
              data = json.loads(data.content)["MRData"]["StandingsTable"]["StandingsLists"][0]["DriverStandings"][0]
      
              name = data["Driver"]["code"]
              position = data["positionText"].zfill(2)
              points = data["points"]
      
              output = ", ".join(['\x0306\x02' + name + '\x0303' + " [" + position + ", "+ points + "]"])
              irc.reply(output)
      
          result = wrap(f1)
      
      Class = F1
      

      The output should be

      VER [1, 125], LEC [2, 116], PER [3, 110], RUS [4, 84], SAI [5, 83], HAM [6, 50], NOR [7, 48], BOT [8, 40], OCO [9, 30], MAG [10, 15], RIC [11, 11], TSU [12, 11], ALO [13, 10], GAS [14, 6], VET [15, 5], ALB [16, 3], STR [17, 2], ZHO [18, 1], MSC [19, 0], HUL [20, 0], LAT [21, 0]
      

      ...but it only returns VER [1, 125]

      I'm in that state where I can read the stuff, but when I put it together, it doesn't always work.

      Final script
      # this accepts @champ or @constructor with an optional year
      # and also @gp with an optional race number for the current season
      
      
      import supybot.utils as utils
      from supybot.commands import *
      import supybot.plugins as plugins
      import supybot.ircutils as ircutils
      import supybot.callbacks as callbacks
      import supybot.ircmsgs as ircmsgs
      import requests
      import os
      import collections
      import json
      
      try:
          from supybot.i18n import PluginInternationalization
      
          _ = PluginInternationalization("F1")
      except ImportError:
          _ = lambda x: x
      
      
      class F1(callbacks.Plugin):
          """Uses API to retrieve information"""
      
          threaded = True
      
          def champ(self, irc, msg, args, year):
              """<year>
              Call standings by year
              F1 Standings
              """
      
              data = requests.get("https://ergast.com/api/f1/current/driverStandings.json")
              if year:
                  data = requests.get(
                      "https://ergast.com/api/f1/%s/driverStandings.json" % (year)
                  )
              driver_standings = json.loads(data.content)["MRData"]["StandingsTable"][
                  "StandingsLists"
              ][0]["DriverStandings"]
              string_segments = []
      
              for driver in driver_standings:
                  name = driver["Driver"]["code"]
                  position = driver["positionText"]
                  points = driver["points"]
                  string_segments.append(f"\x035{name}\x0F {points}")
      
              irc.reply(", ".join(string_segments))
      
          champ = wrap(champ, [optional("int")])
      
          def gp(self, irc, msg, args, race):
              """<year>
              Call standings by year
              F1 Standings
              """
      
              data = requests.get("https://ergast.com/api/f1/current/last/results.json")
              if race:
                  data = requests.get(
                      "https://ergast.com/api/f1/current/%s/results.json" % (race)
                  )
              driver_result = json.loads(data.content)["MRData"]["RaceTable"]["Races"][0][
                  "Results"
              ]
              string_segments = []
      
              for driver in driver_result:
                  name = driver["Driver"]["code"]
                  position = driver["positionText"]
                  points = driver["points"]
                  string_segments.append(f"{position} \x035{name}\x0F {points}")
      
              irc.reply(", ".join(string_segments))
      
          gp = wrap(gp, [optional("int")])
      
          def constructor(self, irc, msg, args, year):
              """<year>
              Call standings by year
              F1 Standings
              """
      
              data = requests.get(
                  "https://ergast.com/api/f1/current/constructorStandings.json"
              )
              if year:
                  data = requests.get(
                      "https://ergast.com/api/f1/current/constructorStandings.json" % (year)
                  )
              driver_result = json.loads(data.content)["MRData"]["StandingsTable"][
                  "StandingsLists"
              ][0]["ConstructorStandings"]
              string_segments = []
      
              for driver in driver_result:
                  name = driver["Constructor"]["name"]
                  position = driver["positionText"]
                  points = driver["points"]
                  string_segments.append(f"{position} \x035{name}\x0F {points}")
      
              irc.reply(", ".join(string_segments))
      
          constructor = wrap(constructor, [optional("int")])
      
      
      Class = F1
      
      3 votes
    8. We are (almost) halfway through the year. How is 2022 going for you?

      I'd like to know how you're all doing. Did you have any goals for this year? Have you achieved any of them? Given up on any of them? What are the top 3 things that changed in your life so far this...

      I'd like to know how you're all doing. Did you have any goals for this year? Have you achieved any of them? Given up on any of them? What are the top 3 things that changed in your life so far this year?

      16 votes
    9. Do you think an ~engineering group would make sense?

      I think it would, that's something that interests a vast number of users. Things like construction, bridges, buildings, city planning, trains, etc. Right now they can go to ~misc or ~design which...

      I think it would, that's something that interests a vast number of users. Things like construction, bridges, buildings, city planning, trains, etc. Right now they can go to ~misc or ~design which doesn't seem appropriate.

      5 votes