• Content count

  • Joined

  • Last visited

  • Days Won


BINREV SPYD3R last won the day on July 2

BINREV SPYD3R had the most liked content!

Community Reputation

-37 Troll


  • Rank
    I could have written a book with all of these posts

Profile Information

  • Gender
  • Country
  1. essentra ic3 for outdoors (30-90days) bee Friendly Mavrik Perimeter for indoor/outdoor OR bad for bees 4 oz of bifen (30-90days) delta dust for cracks / walls etc ( 6 -8 mos nasty stuff … ) Syngenta Advion Cockroach Gel Bait ( only when you have issues with above approach or infestation ) ( blower I use for outside ~$700USD I spray neighbors for $20USD to create a perimeter around my house :P ) use normal pump sprayer for indoors suggest using a metal tip for finer mist on baseboards etc youtube for best approach… I DO NOT spray surfaces that people touch .. some folks spray ‘safe’ indoor stuff on carpet and couches … I spray under/around/behind FULL TANK ( ~3.5 gal )GETS: 4 oz of bifen OR .5oz of Mavrik 12 of essentra ic3 Pump Sprayer gets: 1gal water .5oz bifen or .1 Mavrik View the full article
  2. We're please to announce our final two keynotes for HOPE 2020! Libby Liu served as the inaugural chief executive officer of the Open Technology Fund, and provided strategic leadership and operational direction to meet OTF's mission of advancing Internet freedom around the world. Libby led the successful transformation of the eight-year-old OTF program into an independent stand-alone non-profit corporation, maintaining OTF core values and methodology while ensuring uninterrupted operations during the startup phase for the projects, people, and at-risk communities OTF supports globally. Prior to leading OTF, Libby served as president of Radio Free Asia, where in addition to providing strategic vision, supporting innovative programming, directing editorial and administrative policies and procedures, she coordinated issues in these areas with USAGM, stakeholders, and other organizations to address the region's most pressing issues. Prior to joining RFA, she served as the director of administration and strategic planning at the Baltimore headquarters of the National Association for the Advancement of Colored People (NAACP). There, she played a pivotal role in the board's establishment of the NAACP's five year strategic plan goals and objectives and in the implementation of the plan. Earlier this year she received the 2020 Luxembourg Peace Prize for Technology. Flavio Aggio is the chief information security officer at the World Health Organization (WHO). Additionally, he represents WHO in key forums focused on information security and cybersecurity. Prior to joining WHO, Flavio was the chief technology officer at the city and county of San Francisco, where he developed technology solutions to modernize and protect the city. Before that, he held technical leadership positions in enterprise architecture, project management, telecommunications, and IT operations with Unisys, ASML, Dow Chemical, and Rohm and Haas. In 2014, he enabled the interconnection of the San Francisco and San Jose Wi-Fi networks. The two cities were using a new technology (Hotspot 2.0) allowing smartphones to automatically connect and roam between their two networks, as well as provide a layer of security on what would not normally be available in wide-open public hotspots. Flavio holds a Bachelor of Science in physics from Sao Paulo University in Brazil and an executive MBA from Temple University in the United States. Libby Liu and Flavio Aggio join our seven previously announced keynote speakers: Idalin Bobé, Tiffany Rad, Yeshimabeit Milner, Jaron Lanier, Cindy Cohn, Cory Doctorow, and Richard Thieme. HOPE 2020 will be taking place online from July 25 to August 2, 2020. More details and updates can be found at View the full article
  3. NEW 'Off The Hook' ONLINE Posted 09 Jul, 2020 0:17:34 UTC The new edition of Off The Hook from 07/08/2020 has been archived and is now available online. The fundraiser continues, the HOPE conference starts in a few weeks, scrambling to organize the talks, the final two keynotes to be announced tomorrow, profiles of the three keynote speakers announced yesterday, virtual 2600 meetings, Trump wants to ban TikTok, BlueLeaks server in Germany confiscated, Facebook condemned in their own report. "Off The Hook" - 07/08/2020 Download the torrent here View the full article
  4. I found this camera to be useful, but it has a few quirks. Here is what I learned about using it. I took it on a cruise in the Caribbean Sea in February 2020, just before the coronavirus hit everything. View the full article
  5. NEW 'Off The Wall' ONLINE Posted 08 Jul, 2020 1:21:02 UTC The new edition of Off The Wall from 07/07/2020 has been archived and is now available online. "Off The Wall" - 07/07/2020 Download the torrent here View the full article
  6. Youtube: OpenJDK 15 - Unsafe Garbage 339: Edwards-Curve Digital Signature Algorithm (EdDSA) 360: Sealed Classes (Preview) 371: Hidden Classes 372: Remove the Nashorn JavaScript Engine 373: Reimplement the Legacy DatagramSocket API 374: Disable and Deprecate Biased Locking 375: Pattern Matching for instanceof (Second Preview) 377: ZGC: A Scalable Low-Latency Garbage Collector 378: Text Blocks 379: Shenandoah: A Low-Pause-Time Garbage Collector 381: Remove the Solaris and SPARC Ports 383: Foreign-Memory Access API (Second Incubator) 384: Records (Second Preview) 385: Deprecate RMI Activation for Removal View the full article
  7. We have three more keynotes to announce for HOPE 2020! Details are below. We're also processing all of the talk submissions we've received, which is more than we've ever gotten in the past. The program for HOPE 2020 will literally be coming to you from all around the world, as our virtual event makes it possible for so many more people to participate, many of whom would never have been able to make it to New York in person. At this point, all accepted speakers have been notified. If you have not gotten an acceptance letter, we simply ran out of room. We thank all of you for submitting your proposals and encourage you to keep doing what you do. There were so many good talks we weren't able to accomodate. And now for those keynote announcements: Joining the four previously announced keynotes (Jaron Lanier, Cindy Cohn, Cory Doctorow, and Richard Thieme), we're thrilled to announce the following: Idalin Bobé is the founder of TechActivist.Org, a grassroots organization providing free technical training and political education workshops to working class youth, activists, and disruptors interested in using technology for social good. She is also a founding member of the Popular Education Project, serves on the national education committee of the Poor People's Campaign: A National Call for Moral Revival, and is part of the People's Forum, a movement incubator in New York City. Coming from a poor Afro-Latinx community in North Philadelphia, Idalin witnessed firsthand how the people most impacted by social ills were and still are on the losing side of the digital, educational, and economic divide. That understanding led her to dedicate herself to work directly with organizations that are focused on social change and are part of the communities they serve. Through her tech literacy programs, Idalin provides hands-on workshops introducing communities to digital media tools, digital security, open source, web development, and emerging technology like 3D printing. Tiffany Rad is the CEO and founder of Anatrope, Inc., which develops wireless automotive technologies for the security and data analytics industries. She is also an adjunct in the computer science department at the University of Maine's Portland campus and an adjunct at UC Berkeley in the School of Information's cybersecurity program. Prior to starting Anatrope, Tiffany was the manager of operational security for vehicle embedded systems at Cisco and a cybersecurity researcher for Battelle Institute at the Center for Advanced Vehicle Engineering. Her work included vulnerability research on vehicle computers in conjunction with assessing intellectual property laws and legislation as it relates to safety and security in future automotive technologies. She has been researcher for Battelle Institute at the Center for Advanced Vehicle Engineering. Her work included vulnerability research on vehicle computers in conjunction with assessing intellectual property laws and legislation as it relates to safety and security in future automotive technologies. She has been presenting vehicle computer security research at security conferences since 2006. Yeshimabeit Milner is the founder and executive director of Data for Black Lives. She has worked since she was 17 behind the scenes as a movement builder, technologist, and data scientist on a number of campaigns. She started Data for Black Lives because for too long she straddled the worlds of data and organizing and was determined to break down the silos to harness the power of data to make change in the lives of Black people. Yeshimabeit has helped change the conversation around big data and technology across the U.S. and globally. She is an Echoing Green Black Male Achievement Fellow, an Ashoka Fellow, and joins the founders of Black Lives Matter and Occupy Wall Street in the distinguished inaugural class of Roddenberry Foundation Fellows. In 2020, Yeshimabeit was honored as a "Forbes 30 Under 30 Social Entrepreneur." We will announce our final two keynotes on Thursday. View the full article
  8. hpr 1282 john kulps efforts hpr 2869 part one of my build hpr 2875 part two hpr 2962 part three recycled recumbent can be found at: Rear triangle in jig Close up View from the front Jig ready for bending Bending process complete Jigging up rear triangle onto frame Rear triangle brazed to frame Making emt bottom rails Prying cuts open Finished and ready to fit in frame Emt bending tool Bottom rails ready for brazing View the full article
  9. New hosts There were no new hosts this month. Last Month's Shows Id Day Date Title Host 3086 Mon 2020-06-01 HPR Community News for May 2020 HPR Volunteers 3087 Tue 2020-06-02 Phonetic alphabet klaatu 3088 Wed 2020-06-03 Matchbox Restoration Part 2 Tony Hughes AKA TonyH1212 3089 Thu 2020-06-04 For my Entertainment Archer72 3090 Fri 2020-06-05 Locating Computer on a Enterprise Network operat0r 3091 Mon 2020-06-08 fuguserv Zen_Floater2 3092 Tue 2020-06-09 Pens, pencils, paper and ink - 2 Dave Morriss 3093 Wed 2020-06-10 Response to Linux Inlaws S01E06 (hpr 3079) on NeXT Claudio Miranda 3094 Thu 2020-06-11 Holy crud! I have a kinesis advantage 2 keyboard! sigflup 3095 Fri 2020-06-12 Intro to GIMP Ahuka 3096 Mon 2020-06-15 Unscripted ramblings on a walk: PC Building. Christopher M. Hobbs 3097 Tue 2020-06-16 Linux Inlaws S01E07 The Big Blue Button monochromec 3098 Wed 2020-06-17 Matchbox Restoration Part 3 Tony Hughes AKA TonyH1212 3099 Thu 2020-06-18 Linux Inlaws S01E08 The review of the review monochromec 3100 Fri 2020-06-19 For your consideration - Makers Corner Ken Fallon 3101 Mon 2020-06-22 Metrics Andrew Conway 3102 Tue 2020-06-23 RFC 5005 Part 2 – Webcomics, subscribers and feed readers clacke 3103 Wed 2020-06-24 A warning about browser extensions and add-ons. Ken Fallon 3104 Thu 2020-06-25 HPR AudioBook Club 19 - Tincture: An Apocalyptic Proposition HPR_AudioBookClub 3105 Fri 2020-06-26 Akaso EK7000 Pro Ahuka 3106 Mon 2020-06-29 Linux Inlaws S01E09 Postgres monochromec 3107 Tue 2020-06-30 Generating comfortable passwords crvs Comments this month These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 23 comments in total. Past shows There are 6 comments on 5 previous shows: hpr3056 (2020-04-20) "Jitsi" by operat0r. Comment 8: operat0r on 2020-06-13: "dERp" hpr3072 (2020-05-12) "The joy of pip-tools and pyenv-virtualenv" by clacke. Comment 3: clacke on 2020-06-02: "The joy is real" hpr3079 (2020-05-21) "Linux Inlaws S01E06 Porn and Trump" by monochromec. Comment 1: frank on 2020-06-15: "The sketch" hpr3082 (2020-05-26) "RFC 5005 Part 1 – Paged and archived feeds? Who cares?" by clacke. Comment 1: clacke on 2020-06-02: "Atom "tombstones" RFC" hpr3083 (2020-05-27) "Mumbling while on lockdown" by Dave Morriss. Comment 3: Windigo on 2020-06-03: "Modern Sheevaplug support" Comment 4: Dave Morriss on 2020-06-04: "Re: Modern Sheevaplug support" This month's shows There are 17 comments on 11 of this month's shows: hpr3087 (2020-06-02) "Phonetic alphabet" by klaatu. Comment 1: crvs on 2020-06-02: "you forgot november" hpr3090 (2020-06-05) "Locating Computer on a Enterprise Network" by operat0r. Comment 1: b-yeezi on 2020-06-05: "Thanks for reminding me" Comment 2: cmhobbs on 2020-06-08: "quality episode" hpr3091 (2020-06-08) "fuguserv" by Zen_Floater2. Comment 1: norrist on 2020-06-08: "read only router" Comment 2: lZen_Floater1 on 2020-06-11: "READ ONLY ROOTS" hpr3093 (2020-06-10) "Response to Linux Inlaws S01E06 (hpr 3079) on NeXT" by Claudio Miranda. Comment 1: monochromec on 2020-05-27: "The review of the review" hpr3094 (2020-06-11) "Holy crud! I have a kinesis advantage 2 keyboard!" by sigflup. Comment 1: cmhobbs on 2020-06-11: "great keyboard" hpr3095 (2020-06-12) "Intro to GIMP" by Ahuka. Comment 1: brian-in-ohio on 2020-06-14: "the gimp" Comment 2: Ahuka on 2020-06-14: "I'm glad it helped" hpr3096 (2020-06-15) "Unscripted ramblings on a walk: PC Building." by Christopher M. Hobbs. Comment 1: Mike Brehm on 2020-06-17: "Productive walk" Comment 2: cmhobbs on 2020-06-21: "re: productive walk" hpr3099 (2020-06-18) "Linux Inlaws S01E08 The review of the review" by monochromec. Comment 1: ClaudioM on 2020-06-18: "All According to Plan! }:-)" hpr3100 (2020-06-19) "For your consideration - Makers Corner" by Ken Fallon. Comment 1: brian-in-ohio on 2020-06-19: "a book recommendation" hpr3101 (2020-06-22) "Metrics" by Andrew Conway. Comment 1: Clinton Roy on 2020-06-22: "Looking forward to further episodes." Comment 2: Ahuka on 2020-06-22: "Excellent!" Comment 3: brian-in-ohio on 2020-06-22: "more episodes" hpr3107 (2020-06-30) "Generating comfortable passwords" by crvs. Comment 1: sigflup on 2020-06-30: "Thanks" Mailing List discussions Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under Mailman. The threaded discussions this month can be found here: Events Calendar With the kind permission of we are linking to The Community Calendar. Quoting the site: This is the community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page. Any other business Error feedback from show notes Most of the shows we process require us to make some level of modifications to get them posted. This ranges from fixing tags to a complete rewrite of the shownotes, or verifying whether intros were actually added or not. Each modification that we make means that it requires more human intervention and prevents us from being able to completely automate the upload process. In addition there is a non trivial amount of time needed to "fix" these issues. This can range from a few minutes to an hour or more per show, and with 260 shows a year this mounts up. We normally don't contact hosts about these issues as it is usually quicker to fix the issues than composing emails, and waiting for the reply that may never come. For the most part our experience has been that hosts are more than willing to fix these issues if they are aware of them. As part of the ongoing steps toward automation, would hosts be open to the idea of getting a processing report once we have posted the show? This would list all the issues the test tools found and the steps that we needed to take to rectify them. Making changes to shows after upload Sometimes an error or omission in notes for an HPR episode isn't noticed until the show is posted to the site. In recent times a few hosts have sent in their changes by way of comments. This not ideal: There's a limit on how much text a comment can hold The comment form has a nasty habit of stripping backslashes, so code corrections can be messed up We don't put comments on the show's page on, so such corrections will not be seen by people reading the notes there The HPR admins would prefer changes to be sent in the form of emails to admin at They will then be applied to the show notes and the version updated in step. Tags and Summaries Thanks to the following contributor for sending in updates in the past month: Windigo Over the period tags and/or summaries have been added to 10 shows which were without them. If you would like to contribute to the tag/summary project visit the summary page at and follow the instructions there. View the full article
  10. Finding an Android phone to run LineageOS Affordable phone that support school apps, and allow firewall. TL;DR Don't, unless you are willing to loose the money you are paying. Requirements Supported for 3-5 years. Apps = Android = LineageOS Firewall = AFWall+ = Unlocked + Root Affordable Support Getting a brand new phone means that Developers have not had time to release code. Older phones are no longer available for purchase, and actually become more expensive. Too old a version and apps are no longer supported. Finding a phone that can be unlocked I use a site called which allows you to do parameter search. Set the maximum price you are willing to pay. The current version of Android is 10 so select only those. You want your phone to be supported for as long as possible. Make any other selections that you think are critical, like memory, processor etc but be prepared to adjust this later. In my case I selected a minimum of 4G Ram and 64G Storage the first time. Sort by price low to high, and loop through, finding what support there is for TWRP. That will tell you how open the phone is. If the Manufacturer support (the spirit of) unlocking, then remove them from the list. HTC support unlocking but not don't give code to the developers so it's useless. Motorola support was good but since the take over by Lenovo they have stopped supporting unlocking. Google phones are unlocked and are ideal for developers but are too expensive. Xiaomi requires you to wait until the EU 14 day no questions asked warranty has expired. Fairphone too expensive. PinePhone may be an option but people report the current version being too slow. After finding a phone that can be unlocked and rooted, then check to see if there is an official version for LineageOS If no phone meets all the requirements then try the next one. It's very likely you will not find a phone. You are then faced with the choice of adjusting your parameters, for example picking a more expensive model, but at the end of the day be prepared that you may not find a phone. If you do find a phone, it's very likely that it may be a different version than the one supported. I have had to return several phones that I had unlocked and just hoped that the supplier would take them back and refund me. Even on supported phones, especially newer ones, it's quite often that a major piece of functionality will not work. I have had issues with no GPS on one phone, and bluetooth/wifi not working on another until files were manually edited on each reboot. Do not do this if you want a stress free life, and also if you are not willing to accept the waste of all the money, and time involved. Links TWRP LineageOS scrcpy Android bootloader/fastboot mode and recovery mode explained/Android boot process October 31, 2015 Saad Faruque pinephone View the full article
  11. Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 4th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process of stripping the models down to their component parts. In this episode I will discuss the process I use to remove the paint and prepare the casting for repainting and reassembly. So first off, and I should have said this last episode, a health and safety warning. If there are young people listening to this some of the things talked about on today's show require parental supervision, and are not recommended for young people unless properly supervised. So with that public service announcement out of the way let's get on with the show. So before the base can be put in the paint stripper the wheels and axles need to be removed. As you can see from the picture there are flanges holding on the wheels to the metal axle and one side is only a small flange. Picture 000 This can be removed with a small needle file or a small rotary file attachment for my rotary tool. Once removed the bases can be put in with the rest of the casting for paint removal. Picture 001 So let's talk about paint removal, obviously the first one you will think of is some kind of chemical paint stripper and I use 2 different methods of this. The first and probably the safest in the first instance is a commercial paint stripper from one of the chain DIY stores here in the UK, B&Q. There is a local store about 10 minutes drive from me so it is convenient during normal shopping times just to pop in and grab a 2.5Ltr container of their own brand DIAL paint stripper that is fantastic for this job and quite economic. The second is a little more aggressive if you need fast results but requires a little more in the way of care when using it as it is very corrosive and can be harmful if the fumes are breathed in, or the product gets onto your skin or in your eyes. This is caustic soda and I buy this through eBay and have it delivered in 1Kg pouches. It needs to be stored in an air tight container in a dry environment to keep it from getting damp as this is a potential fire hazard as if it gets contaminated buy moisture a chemical reaction starts which generates heat. So if you go with the caustic soda method you need to take adequate safety precautions. With the Jaguar I mainly used the caustic soda method to remove the paint but one casting I put in the paint stripper to show that method. With the caustic soda place the castings in a jar with enough room to cover with just boiled water so that it does not overflow when the caustic soda crystals are added slowly, I use a long handle tea spoon and add 2-3 tea spoons of the soda until it has a good fizz. Then leave for about 15 minutes but the longer the better, I sometimes do this and leave over night and this gives a great result. Remember to wear gloves when doing this to prevent getting the caustic on your hands. Picture 002 Picture 003 Picture 004 Picture 005 With the paint stripper I have a plastic click lock box with this in that I immerse the casting into and leave for several hours for best results. This can be reused many times as you can see in this picture keeping it an economic method as most of the stripper is left in the box when you remove the casting. The results for both methods are similar, but I find the caustic although you need to be careful, is the less messy of the two options, and the casting is easier to clean after paint removal. Picture 006 So after removal of the paint the castings are polished up with either a hand wire brush or a wire brush attachment for the rotary tool. You can see the base before and after and a picture of the polished main casting in the notes. Picture 007 Picture 008 So we now have a casting ready for repainting, which I will cover in the next episode. So until next time this is Tony Hughes saying goodbye to all those in HPR land. Keep safe until the next instalment. View the full article
  12. NEW 'Off The Wall' ONLINE Posted 01 Jul, 2020 1:04:37 UTC The new edition of Off The Wall from 06/30/2020 has been archived and is now available online. "Off The Wall" - 06/30/2020 Download the torrent here View the full article
  13. I cover many issues about using OpenBSD based Fuguita as your Desktop. I wouldn't have it any other way, I use Fuguita for my main Desktop these days. View the full article
  14. Random Password Generation First implementation: 14 character long with 6 letters and 8 digits #!/usr/bin/env python3 # file: import random LETTERS = "abcdefghijklmnopqrstuvwxyz" if __name__ == "__main__": passwd = [] for i in range(6): passwd.append(random.choice(LETTERS)) for i in range(8): passwd.append(random.choice("1234567890")) print("".join(passwd)) The passwords that come out of this are a bit difficult to type so I forced it to alternate between the left and right hands #!/usr/bin/env python3 # file: import random LEFTS = "',.pyaoeui;qjkx" RIGHTS = "fgcrldhdhtns-bmwvz" if __name__ == "__main__": passwd = [] for i in range(6): if i % 2 == 0: passwd.append(random.choice(LEFTS)) else: passwd.append(random.choice(RIGHTS)) for i in range(8): if i % 2 == 0: passwd.append(random.choice("123456")) else: passwd.append(random.choice("7890")) print("".join(passwd)) The regularity of switching between left and right hands (intuitively, and almost surely) decreases the entropy of the password, so use markov models to make that happen for the most part but critically NOT enforce it. #!/usr/bin/env python3 # file: import random Ls = [ "aoeui", # L1 "',.py", # L2 ";qjkx", # L3 "123456", # L4 "-snthd", # R1 "lrcgf", # R2 "zvwmb", # R3 "7890" # R4 ] A = [[ .03, .03, .03, .01, .27, .27, .27, .09], [ .03, .03, .03, .01, .27, .27, .27, .09], [ .03, .03, .03, .01, .27, .27, .27, .09], [.004, .003, .003, .09, .03, .03, .03, .81], [ .27, .27, .27, .09, .03, .03, .03, .01], [ .27, .27, .27, .09, .03, .03, .03, .01], [ .27, .27, .27, .09, .03, .03, .03, .01], [ .03, .03, .03, .81, .004, .003, .003, .09]] pi = [ .41, .03, .03, .03, .41, .03, .03, .03] def sample( l ): l_partial = [ sum(l[:i+1],0) for i in range(len(l))] u = random.uniform(0,1) for j,v in enumerate(l_partial): if v > u: return j if __name__ == "__main__": passwd = [] s = sample(pi) for i in range(20): s = sample(A[s]) passwd.append(random.choice(Ls[s])) print("".join(passwd)) For increased entropy should also consider peppering in a few upper case characters. #!/usr/bin/env python3 # file: import random Ls = [ "aoeui", # L1 "',.py", # L2 ";qjkx", # L3 "123456", # L4 "-snthd", # R1 "lrcgf", # R2 "zvwmb", # R3 "7890" # R4 ] A = [[ .03, .03, .03, .01, .27, .27, .27, .09], [ .03, .03, .03, .01, .27, .27, .27, .09], [ .03, .03, .03, .01, .27, .27, .27, .09], [.004, .003, .003, .09, .03, .03, .03, .81], [ .27, .27, .27, .09, .03, .03, .03, .01], [ .27, .27, .27, .09, .03, .03, .03, .01], [ .27, .27, .27, .09, .03, .03, .03, .01], [ .03, .03, .03, .81, .004, .003, .003, .09]] pi = [ .41, .03, .03, .03, .41, .03, .03, .03] UPPER=.1 def sample( l ): l_partial = [ sum(l[:i+1],0) for i in range(len(l))] u = random.uniform(0,1) for j,v in enumerate(l_partial): if v > u: return j if __name__ == "__main__": passwd = [] s = sample(pi) for i in range(20): s = sample(A[s]) c = random.choice(Ls[s]) u = random.uniform(0,1) if u < UPPER: c = c.upper() passwd.append(c) print("".join(passwd)) Finally, generating the matrix by hand was a bit of a pain, so I made it a bit easier by making a small procedure with few control knobs (the variables SWITCH_HAND and SWITCH_CHAR which control how likely it is that a character pair will result in a hand switch, or a switch between general characters and digits). #!/usr/bin/env python3 import random import numpy # this version uses a markov chain to make it more likely to alternate hands # (in dvorak) so that the password is easy to type (in dvorak) Ls = [ "aoeui", # L1 "',.py", # L2 ";qjkx", # L3 "123456", # L4 "-snthd", # R1 "lrcgf", # R2 "zvwmb", # R3 "7890" # R4 ] SWITCH_HAND = .8 SWITCH_CHAR = .3 UPPER=.1 def prob( i , j ): switch_hand = int(i / 4) != int(j / 4) to_num = (j % 4) == 3 from_num = (i % 4) == 3 prob = 1 if to_num and from_num: prob *= (1 - SWITCH_CHAR) elif to_num: prob *= (SWITCH_CHAR) elif from_num: prob *= (SWITCH_CHAR / 3) else: prob *= ((1 - SWITCH_CHAR) / 3) if switch_hand: prob *= SWITCH_HAND else: prob *= (1 - SWITCH_HAND) return prob A = numpy.array([ [ prob(i,j) for j in range(8) ] for i in range(8) ]) pi = [ 1.0 / 8 for i in range(8) ] def sample( l ): l_partial = [ sum(l[:i+1],0) for i in range(len(l))] u = random.uniform(0,1) for j,v in enumerate(l_partial): if v > u: return j if __name__ == "__main__": passwd = [] s = sample(pi) for i in range(20): s = sample(A[s]) c = random.choice(Ls[s]) u = random.uniform(0,1) if u < UPPER: c = c.upper() passwd.append(c) print("".join(passwd)) View the full article
  15. S01E09: Postgres Listen to our two OAP interviewing Bruce Momjian, Postgres evangelist and long-time supporter of this popular SQL database. Expect lots of strong language around SQL and NoSQL topics and some ranting about MINT's attitude towards snaps, a fun breach of a health service provider in the UK and why broadcasters should stick to monopolies. MINT Chromium issue: PostgreSQL: Babylon Health breach: View the full article