MyWiki:Reference desk/Archives/Computing/2019 May 17

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

This template must be substituted. Replace {{Archive header with {{subst:Archive header.

{| width = "100%"

|- ! colspan="3" align="center" | Computing desk |- ! width="20%" align="left" | < May 16 ! width="25%" align="center"|<< Apr | May | Jun >> ! width="20%" align="right" |Current desk > |}

Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is a transcluded archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


May 17

[edit source]

Information management

[edit source]

I am working on a project (academic; non-profit) and have identified about 30 people who might be interested in it. I don't know most of them personally but I know their email addresses and have good reason to think that they might be keen to be involved. I have these details on a google spreadsheet but I've not contacted anyone yet. I want to write a semi-personalised email to each one of them, asking if they're interested. They might say yes, or no, or offer advice, or ignore the email, or ask for further information, or suggest I write to a colleague instead. Or maybe some other unforeseen response that might involve back-and-forth email exchanges. Quite often I won't be able to respond immediately for one reason or another, and in this case the problem is that I will forget to reply.

I want a system that records the various communications, and maybe do things like list every person who has not replied within a week, or every person that has said "yes".

What zero-cost software exists to help me manage this? This must be a common situation but I don't know how to describe it. I'd like to see what actions there are on me at any time. Maybe someone will email me and I'll want to see all previous correspondence with that person. Is project management software good here? Emacs org-mode? Does gmail have some facilities here? Robinh (talk) 03:19, 17 May 2019 (UTC)

What's "zero cost"? To buy, or to learn? Almost certainly, something that you already know would be more useful to you than something you adopt from fresh (even if free).
Personally I do this with MediaWiki. I run a couple of MediaWikis just for organising business and domestic stuff. Draft WP articles too. It's easy to install and you already know how to edit it. Other options would be Excel, a decent email client with good tagging, or just a text editor, lists and regular expressions.
The game changes if you want to share that information amongst a group of people. Then you might look at Trello, which is web-hosted. Andy Dingley (talk) 16:34, 17 May 2019 (UTC)
Also consider Dokuwiki which supports groups well. The syntax is a little different from MediaWiki, but the great thing is that it avoids the overhead of having to run a database system – all storage is in plain text files. Martin of Sheffield (talk) 08:38, 18 May 2019 (UTC)
Thanks for this. "Zero cost" means no cost to purchase, a steep learning curve is no problem. Everything I want to do is for my own reference to keep myself organised, so there is no issue with sharing information. I do like the idea of a personal mediawiki though. thanks, Robinh (talk) 03:48, 18 May 2019 (UTC)
(OP, somewhat confused...someone suggested I look at customer relationship management but the edit seems to have disappeared). Anyway, the phrase I needed was exactly that: customer relationship management. Thanks! Now I can google "open source CRM software" and see what's out there. The software I can see looks somewhat OTT for my use-case, but that's good to know. Knowing that little phrase makes all the difference. Thanks, really. Robinh (talk) 05:23, 18 May 2019 (UTC)

Questions about twitter and facebook

[edit source]

1. How can I check to see if I have messages from people on my twitter account? I hardly use twitter by the way. 2. On facebook when I see the chat thing that has contacts for some weird reason it shows when people were on facebook a few minutes ago and not current people logged into the chat. Please help 204.239.8.205 (talk) 03:25, 17 May 2019 (UTC)

What words Atbash plus Caesar to eachother?

[edit source]

This was originally posted at WP:RDL, but it didn't seem related to natural or "normal" constructed languages, and it's definitely computing, so I decided to move it here. Nyttend (talk) 22:03, 17 May 2019 (UTC)

I saw this in "Azby-Shiftwords". Like "loopwords" on wikipedia, I want a list of words that Atbash plus Caesar to eachother.

A cipher would be: first you Atbash cipher a word, then you Caesar cipher it.

The shift of 5 for example would be plain - abcdefghijklmnopqrstuvwxyz coded - edcbazyxwvutsrqponmlkjihgf

A program would be like the program for Caesar cipher pairs(https://github.com/duckythescientist/CaesarPairs/blob/master/CaesarPairs.py) modified for Atbash. My modification of it didn't work:

  1. !/usr/bin/env python

'rots.py -- find caesar shift pairs in american-english' 'uses dictionary found in /usr/share/dict'

def getpairs():

   pairs = []
   try:
       f = open("/usr/share/dict/american-english", "r")
   except IOError, e:
       print "*** file open error: ", e
   else: 
       strs = f.readlines()
       raw = [x[:-1] for x in strs]
       raw2 = [x.replace("'s", "") for x in raw]
       raw3 = [x for x in raw2 if len(x)>2]
       vocab = set([x.lower() for x in raw3])  
       
       for word in vocab:
           for shift in range(0, 26):
               atbash = "".join([chr(97 + (27 - (ord(x) - 96) % 26)) for x in word])
               caesar = "".join([chr(97 + ((ord(x) - 97 + shift) % 26)) for x in word])
               if caesar in vocab:
                   print word, caesar, shift
                   pairs += tuple([word, caesar, shift])
   return len(pairs)/3

if __name__ == "__main__":

   print getpairs(), "pairs found"
   print "note, each pair has a reverse shift as well"

Can you post a list of pairs or a working program to do this?

I had to look up Atbash but it is pretty simple. The basic idea is to use a fast lookup table (Python dictionary or set) to store all the unenciphered words from your wordlist, then run through the wordlist, encrypt each word, and see if the encrypted version appears in the lookup table. I'm assuming your goal is to learn Python rather than just get the resulting wordlist. So I'd say you are basically on the right track. But you compute the atbash and caesar encryptions separately (using the word as input to both) and then do nothing with the atbash. You want to use the atbash output as the caesar input instead. The main other suggestion I'd make is split the program into separate functions (read and clean the wordlist, do the atbash cipher, do the caesar cipher) so they can be studied separately. That makes the program more modular and easier to understand. 173.228.123.207 (talk) 03:35, 18 May 2019 (UTC)

I'll be away thru the weekend so will post my version below. It's not polished or anything but just followed what seemed like a natural breakdown of the problem. I avoided using too many slick python-isms like generator comprehensions so it's less concise than it could be, and various optimizations are possible like using byte arrays for the words. It's python 2 and doesn't attempt to do anything sane with unicode.

173.228.123.207 (talk) 06:25, 18 May 2019 (UTC)

This helps, but you need to change "14" to "26" since each shift reverses itself and the pairs for let's say 14 are different from 12, and change "/tmp/words" to "/usr/share/dict/american-english"