Shared posts

10 Jan 12:09

Substack embraces Nazis

by Andy Baio
Hamish McKenzie's letter makes it clear they're not only committed to platforming bigotry, but funding and profiting from it #
29 Dec 11:17

From the coiner of Godwin’s Law: Yes, it’s okay to compare Trump...

by Jason Kottke
From the coiner of Godwin’s Law: Yes, it’s okay to compare Trump to Hitler. Don’t let me stop you. “Comparisons to Hitler or to Nazis need to take place when people are beginning to act like Hitler or like Nazis.”

💬 Join the discussion on kottke.org

27 Dec 08:54

The Christmas Season Starts Earlier Every Year

by Not Always Right

Read The Christmas Season Starts Earlier Every Year

Me: "Is this year's market built already?"
Client: "That usually happens around November."

Read The Christmas Season Starts Earlier Every Year

20 Dec 14:34

7 Months Inside an Online Scam Labor Camp

by Andy Baio
NYT investigation into a Chinese human trafficking operation powering "pig butchering" confidence scams #
19 Dec 13:40

Animation vs. Physics

by Andy Baio
Alan Becker's interstellar follow-up to Animation vs. Math #
19 Dec 13:21

The Year Twitter Died

by Andy Baio
a special series from The Verge with contributions from Sarah Jeong, Zoe Schiffer, Nilay Patel, and an archive of thousands of Good Tweets #
19 Dec 12:16

Giorgia Lupi makes infographics to help make sense of her illness: 1,374...

by Jason Kottke
Merijn

I've only gotten COVID just last week, after 3 years and 9 months of avoiding it (to the best of my knowledge). It wasn't fun.

Giorgia Lupi makes infographics to help make sense of her illness: 1,374 Days: My Life With Long Covid. “Always in the back of my mind is the fear that I will never again experience the uncomplicated, illness-free joy of the life I used to have.”

💬 Join the discussion on kottke.org

19 Dec 12:08

World of Goo 2!

by Jason Kottke

{Hyperventilating slightly} They’re making a World of Goo 2 15 years after the original one was released?! Holy smokes! I loved World of Goo back in the day and I can’t wait to play this sequel. (via waxy)

Tags: trailers · video · video games · World of Goo

💬 Join the discussion on kottke.org

19 Dec 11:09

Call an Emergency Meeting in Vampire Survivors’ New Among Us-Themed DLC, Available Today

by Danielle Partis

Summary

  • Embark on a brand-new adventure with 9 new playable characters
  • Explore the Polus Replica map, a reproduction of a popular Among Us map
  • Battle with 15 new weapons, and rack up 20 new achievements

Hello, Xbox Wire readers! We hope you’ve completed your tasks, as our next DLC, Vampire Survivors: Emergency Meeting, is out today! If you hadn’t guessed already (or read the headline), it features characters, items and hilarious gags from Among Us, courtesy of our friends at Innersloth.

So, what’s new? Vampire Survivors: Emergency Meeting adds a new map, 9 new characters, 15 new weapons, 6 new music tracks, 1 new Adventure, 20 in-game-only achievements, and space ducks. Obviously. 

Did we say new map? We meant a BRAND NEW map! Named Polus Replica, it’s an eerily accurate reproduction of the scientific base on Polus, featuring multiple bizarre biomes ripe for exploration by Survivors and Crewmates with tasks and treasure chests galore. Unfortunately, it’s also being invaded by your average space dwellers, like aliens and robots. Oh, and those space ducks. Expect the unexpected and do NOT trust the bins. Never trust the bins. Or the chicken nuggets. In fact, it’s a good idea to remain alert at all times and not trust anything.

The minute you land on Polus Replica you’ll be blasting away baddies with Among Us tasks turned into powerful weapons. Fire the supermassive sound waves of your Report! weapon, slice angry aliens in half with Lucky Swipe, and drop duplicitous foes to their doom with Just Vent. Survivors of all kinds should seek out one of the new gameplay mechanics we added to the DLC: Mini Crewmates! They will empower your Task-based weaponry (and just offer general companionship, which is nice). 

On top of all this new content, daring Crewmates will also find an Adventure inside the DLC. Adventures are a remixed way to play Vampire Survivors that launched a few weeks ago. Oh, and just like our previous DLCs, Legacy of the Moonspell and Tides of the Foscari, Emergency Meeting will be playable entirely solo or in local co-op for up to 4 players. We can’t take any responsibility for suspicious behavior from your friends, however.

Lastly we want to say a big thanks to Among Us developers Innersloth who helped us a ton to make this happen. We feel our games have a lot in common, as indie games that were discovered and championed by a great community that keeps them going(Also memes)so we couldn’t have thought of a better game and team to make our first collab with! You are the real Crewmates!

That’s it from our side, hope you have fun being the bullet hell… in spaaaace! As always, if you want the latest on all things Vampire Survivors, make sure to follow us on X, head over to our Discord, or follow the Vampire Survivors Official Xbox Clubs page. We promise, there’s nothing suspicious on any of those.

Vampire Survivors: Emergency Meeting is out now for Xbox and PC, and Vampire Survivors (base game) is available via Game Pass.

Vampire Survivors: Emergency Meeting

Poncle

☆☆☆☆☆ 2
★★★★★
$2.49
The Survivors are desperate to hunt vampires, but are running out of places to look. Only one option remains: Be the bullet hell… in space! Gather your most trusted Crewmates, prepare to eject the Impostors, and try to survive while mowing down thousands of extra-terrestrial foes in this expansion for Vampire Survivors. Turn classic Among Us tasks into outrageous weapons, upgrading your abilities after every roguelite run to overcome impossible odds with ease. Be alert to subterfuge as you explore the vast weirdness of the Polus Replica and keep your wits about you, as suspicious eyes are always watching 👀. 9 Totally Trustworthy New Characters A cast of courageous Crewmates assembled to take on the tumultuous tasks, including: Crewmate Dino – Starry-eyed, optimistic, and unfortunately extremely tasty. Dino is a jack-of-all-trades who boosts stats whenever a task is completed (i.e. when you level up a weapon). Engineer Gino – Few Crewmates come as close to truly competent task-work as Gino, who offers a selection of passive weapons from their toolbox every few levels. Ghost Lino – Good Crewmates don't let a silly thing like death get in the way of their tasks. Lino can float through walls at will and can't be hurt, but can't deal damage either… what could be the goal of such suspicious game design?! Shapeshifter Nino – Look at this bean! They can do all kinds of… wait, where did they go? And where did this snowman come from? Oh well, I'm sure you'll figure it out. Guardian Pina – Everyone needs an angel on their shoulder. Pina isn't just there for moral support, though – they boost the defences of all nearby allies, and they love taking out the garbage. Impostor Rina – A fellow Crewmate that is in no way some kind of duplicitous, well-disguised killer. One hundred percent all-natural-bean, right here. Nothing to see or think about. Scientist Mina – Mina's scientific skill is matched only by their intense clumsiness. Thankfully, dropping potentially hazardous chemicals has a major upside when you're besieged by extra-terrestrial monsters. Horse – It's a horse. Neigh, etc. 15 New Weapons Transform your tasks into powerful weapons to defend yourself from Impostors, Shapeshifters, and all manner of extra-terrestrial weirdos. Blast away baddies with the supermassive sound waves of your Report! weapon, slice angry aliens in half with Lucky Swipe, and drop duplicitous foes to their doom with Just Vent. Lonely Survivors should seek out Mini Crewmates to empower their Task-based weaponry (or just for general companionship). A Brand New, Perfectly Safe Stage Polus Replica – an eerily accurate replica of the scientific base on Polus. This planet is packed with bizarre biomes ripe for exploration by Survivors and Crewmates, with tasks and treasure chests galore. Unfortunately, its also accidentally being invaded by your average space dwellers, like aliens, robots, and ducks. Expect the unexpected and do NOT trust the bins. Never trust the bins. Or the chicken nuggets. In fact, it's a good idea to remain alert at all times and not trust anything. 6 New Music Tracks ♫ Emergency Meeting ♫ Hide and Survive ♫ No Ducks Among Us ♫ No Aliens Among Us ♫ No Ghosts Among Us ♫ No Vampires Among Us
Xbox Live
Xbox Play Anywhere

Vampire Survivors

Poncle

☆☆☆☆☆ 463
★★★★★
$4.99 $3.74
PC Game Pass
Xbox Game Pass
Vampire Survivors is a time survival game with minimalistic gameplay and roguelite elements. There's no place to hide, all you can do is try to survive a cursed night and get as much gold as possible for the next survivor, before Death inevitably puts an end to your struggles. Starting Tips: – Take your time to grab gems and items, they won't disappear. – Get two or three offensive weapons at first, but focus on levelling them up one at a time. – Armour and Luck are good starting power-ups to spend money on. – Refund power-ups often, it's free, and try new upgrade paths.

The post Call an Emergency Meeting in Vampire Survivors’ New Among Us-Themed DLC, Available Today appeared first on Xbox Wire.

18 Dec 15:04

DateTime

It's not just time zones and leap seconds. SI seconds on Earth are slower because of relativity, so there are time standards for space stuff (TCB, TGC) that use faster SI seconds than UTC/Unix time. T2 - T1 = [God doesn't know and the Devil isn't telling.]
12 Dec 11:53

Check out your personal Xbox stats for 2023 with #MyYearOnXbox

Want to know how much gaming you did this year? Check out #MyYearOnXbox
04 Dec 14:31

MeFi: Plagiarism and You(Tube)

by Pendragon
HBomberguy's latest video is about plagiarism.

It's almost 4 hours long but really worth a watch.
01 Dec 14:42

The 88×31 GIF Collection

by Andy Baio
a collection of 4,210 classic 88x31 buttons, a standard started by the Netscape Now! campaign in 1996 #
29 Nov 12:28

The recipe for the cookies that Sesame Street’s Cookie Monster eats. “They’re...

by Jason Kottke
Merijn

Love the story of Adam Sandler trying the cookie on camera!

The recipe for the cookies that Sesame Street’s Cookie Monster eats. “They’re edible, but barely.” And they have to be “thin enough to explode in a shower of crumbs”.

💬 Join the discussion on kottke.org

29 Nov 11:56

CodeSOD: Free From Space

by Remy Porter

Henrik H is contracting with a client, and that client uses a number of other contractors. Some of them have… interesting approaches to problem solving.

For example, one of the servers is a Windows server, which stores a lot of temp files on the D: drive. So someone needed to write a C# function that would check the available space, and if it exceeded some threshold, delete the temp files.

This is what they came up with.

    private void Serverspacedelete()
    {
        System.IO.DriveInfo di = new System.IO.DriveInfo("D");
        double byteCount = Convert.ToDouble(di.TotalFreeSpace.ToString());
        string size = "0";
        if (byteCount >= 1073741824.0)
            size = String.Format("{0:##.##}", byteCount / 1073741824.0);// + " GB";
        else if (byteCount >= 1048576.0)
            size = String.Format("{0:##.##}", byteCount / 1048576.0);// + " MB";
        else if (byteCount >= 1024.0)
            size = String.Format("{0:##.##}", byteCount / 1024.0);// + " KB";
        else if (byteCount > 0 && byteCount < 1024.0)
            size = byteCount.ToString(); // + " Bytes";

        if (size.Contains(','))
            size = size.Substring(0, size.LastIndexOf(','));
        if (size.Contains('.'))
            size = size.Substring(0, size.LastIndexOf('.'));
        int k = Convert.ToInt32(size);
       
        if (k <= 10)
        {
// code deleting temp files
      }
  }

What we have here is a developer who started this function by searching the Internet for "how to get free drive space c#" and found a sample program that would pretty print the size in human readable values. They copy-pasted some of that code here, commented-out the GB suffix, and were off to the races.

Which brings us to the attempts to trim the string- if it contains a ",", grab only everything before the last comma. If it contains a ".", grab everything before the decimal point.

I can only think that they wanted to maybe remove those symbols? Which they didn't need to, because Convert.ToInt32 can parse all of that just fine. But I can't think of a logical reason to do this otherwise.

The end result of this is that if they have less than 10 bytes free, they'll delete the temp files. If they have less than 10kb free, they'll delete the temp files. If they have less than 10MBs free, they'll delete the temp files. 10GB, same thing. But also, because of that comma substring, for anything less than 10TB.

[Advertisement] Otter - Provision your servers automatically without ever needing to log-in to a command prompt. Get started today!
28 Nov 12:29

Tech Conference Collapses After Organizer Admits to Making Fake ‘Auto-Generated’ Female Speaker

by Samantha Cole
Subscribe
Join the newsletter to get the latest updates.
Success
Great! Check your inbox and click the link.
Error
Please enter a valid email address.
🖥️
Sign up above for free access to this article.
Tech Conference Collapses After Organizer Admits to Making Fake ‘Auto-Generated’ Female Speaker

The founder of a software developer conference has been accused of creating fake female speakers to bolster diversity numbers—and some speakers are dropping out, with the event just nine days away. 

Devternity is an online conference for developers that’s invite-only for speakers. In the past, it reportedly drew hundreds of attendees both when it was in-person in Latvia and even more after it moved online. Eduards Sizovs founded the event in 2015. 

Male Tech Conference Founder Is Behind Popular Woman Coding Influencer Account
IP logs show that accounts for Coding Unicorn, a female tech influencer who’s built a following based on her coding advice and Instagram influencer posts, are run by a male developer and conference organizer.
Tech Conference Collapses After Organizer Admits to Making Fake ‘Auto-Generated’ Female Speaker404 MediaSamantha Cole
Tech Conference Collapses After Organizer Admits to Making Fake ‘Auto-Generated’ Female Speaker
27 Nov 14:12

Ask MeFi: Finding weird, fun, cutting-edge internet culture in a post-SEO world

by nightrecordings
Most of us would probably agree that the internet now sucks. Is there a practical way to reframe my approach to how I use the internet so that I can still discover cool, new, interesting people and ideas, without wading through sixteen tons of angry garbage? (I'm seeking problem-solving strategies to make lemonade from lemons, not "just give up" cynicism, thanks!) What are the best punk rock, fuck-this approaches for discovering and enjoying the best and weirdest things that the internet still has to offer?

I still mourn old Twitter, which kept me connected to artists, thinkers, and other delightful weirdos. Meanwhile, Reddit's algorithm is so transparently manipulative and rich with rage-bait that it's an insult to one's intelligence. Metafilter isn't what it used to be whether we care to admit it or not. RSS readers are mostly a thing of the past, and even paid RSS readers feel "cheap" because most article headlines now read like stale advertising pitches.

Rather than spending my time lamenting this, I'd like to see if there's a way I can shake things up by shifting or reframing how I search (and use) the internet.

I'm already reading more books and enjoying other analog pleasures - that's not my question. This is about finding creative ways to still enjoy the modern internet in spite of its many, many flaws.

For example, I only found out about neocities because I happened to be in a gaming Discord where someone mentioned it. As another example, my spouse recently made me aware of kagi. However, both examples are the result of pure chance/luck on my part, rather than strategy.

I'd love to hear any practical tips that folks might have for how I can try to make the internet work for me, rather than the other way around.
20 Nov 11:57

The Washington Post has published crime scene photos from 11 mass shootings...

by Jason Kottke
15 Nov 08:04

MeFi: 4.5 Billion Years in 1 Hour

by indexy
The latest video (YT) from Kurzgesagt, "We've scaled the complete timeline of our Earth's life into our first animated movie! Every second shows about a million years of the planet's evolution. Hop on a musical train ride and experience how long a billion years really is." Animation and music with occasional narration.

Previously: 1, 2, 3, 4, 5
14 Nov 12:46

After years of rumors, James Cameron has finally remastered The Abyss in...

by Jason Kottke
Merijn

holy shit

After years of rumors, James Cameron has finally remastered The Abyss in 4K and is releasing it in theaters for one night only on December 6th. Here’s the trailer.

💬 Join the discussion on kottke.org

13 Nov 11:18

Jezebel, the pioneering site geared towards women, is being shut down by...

by Jason Kottke
Jezebel, the pioneering site geared towards women, is being shut down by its parent company, effective immediately.
13 Nov 11:12

Xbox Series S version of Baldur's Gate III might benefit all platforms

From zero to hero.
10 Nov 09:52

Classic Xbox 360 indie Braid time warps onto modern consoles in 2024

Merijn

This was my first ever Xbox game. Love it!

Braid is making the jump from Xbox 360 to Xbox Series X|S and Xbox One.
07 Nov 13:22

Searching for Humanity in Fortnite

by Andy Baio
playing a battle royale as a pacifist turns into a parable about survival in a world that discourages solidarity and mutual aid #
03 Nov 09:26

Sam Bankman-Fried convicted on seven charges

Sam Bankman-Fried

After less than five hours of deliberation, a jury convicted Sam Bankman-Fried of seven fraud and money laundering charges. The conviction followed a five-week-long trial which culminated in Sam Bankman-Fried himself taking the stand, only to appear evasive and sullen as he told prosecutors he couldn't recall many significant events from his time as FTX CEO.

Sentencing is scheduled for March 28, 2024, though scheduling could be affected by factors including whether the US decides to continue pursuing an additional five charges also set to be tried in March.

03 Nov 09:25

We Now Have Anti ‘Client From Hell’ Contracts

by Not Always Right

Read We Now Have Anti ‘Client From Hell’ Contracts

Client: "So… about payment, since you'll be getting so much exposure, I was thinking that the $800 you're charging should—"

Read We Now Have Anti ‘Client From Hell’ Contracts

01 Nov 15:09

CodeSOD: Legacy Horrors

by Remy Porter
Merijn

OH MY GOD

Today is Halloween, a day filled with chills, horrors, and Jamie Lee Curtis. An interesting aspect of horror movies is how often the roots of the horror lurk in the past. Michael Meyers had been in an asylum for decades before his infamous Halloween rampage. Midsommar represents a centuries old tradition. Barbarian is rooted in sins committed a generation prior. Freddy Krueger was the manifestation of the sins of our protagonists' parents. Hell, even Dracula is a menace that had been lurking for centuries before our story begins.

In honor of that, we're going to look at some code from Davide. Like so much classic horror, the seeds of this sin were planted many, many years before Davide arrived.

In 1991, Microsoft released their first version of Visual Basic. The language evolved until 1998, with the release of VB6. Mainstream support ended in 2005, extended support ended in 2008, but like true horror, VB6 has not truly died. The development tools continue to run on all 32-bit versions of Windows.

Back in those olden days, Davide's predecessors decided to implement an Enterprise Resource Planning system in VB6. It grew, and evolved, and became something that couldn't be controlled anymore- it was 2.5M lines of code. It entangled itself into the company, taking over every core business function, and rapidly becoming indispensible.

We can compare it to so many monsters of horror- the shapeshifting Thing, gradually replacing parts of the company with itself. The fungus from The Last of Us, taking over the brain of the company. We can compare it to The Blob, which may also be the most accurate description of the coding practices used in building it.

Here's some code that evaluates a formula entered by the users:

Option Explicit
Dim AA$(26)
Dim VV#(26) 'valori delle variabili
Dim B$(26)
Dim OP$(26)
Dim RANGO(26) As Integer
Dim P$(27)
Dim OPN#(2), COPN$(26)
Dim CV%

Public scrCtl As MSScriptControl.ScriptControl
Dim bCreated As Boolean ' gi� creato lo script control
Dim strUltCodart As String ' ultimo cod. articolo (per seganlazione su che articolo c'� una formula sbagliata)
Dim strUltFormula As String

Dim nEsito As Integer
Public Function FormulaControlla(strFormula As String) As Boolean
17000 Rem --- Input = FORMULA$, Output = AA$(__),CV%,OK%=1 se FORMULA$ non buona
      Dim Formula$, f$, CP%, CN%, FLAGP%, c$, OK%, LX%, s%, A$, B$, AB%, BB%, BRANGO%, CRANGO$
      FormulaControlla = True
      '--- con l'introd. di msscript non controlla pi� niente ....
      Exit Function
      '-------------------------
      
      Formula$ = strFormula
17010 f$ = Formula$ + Chr$(0): CP% = 0: CN% = 0: CV% = 0: FLAGP% = 0: c$ = "": OK% = 0
17020 LX% = Len(Formula$)
17030 For s% = 1 To LX%
17040   A$ = Mid$(f$, s%, 1): B$ = Mid$(f$, s% + 1, 1)
17050   AB% = Asc(A$): BB% = Asc(B$)
17060   If A$ >= "0" And A$ <= "9" Then If (B$ >= "a" And B$ <= "z") Or B$ = "(" Then OK% = 1: GoTo 17230 Else CN% = CN% + 1: GoTo 17230
17070   If A$ = "*" Or A$ = "/" Or A$ = "+" Or A$ = "-" Then If B$ = "*" Or B$ = "/" Or B$ = "+" Or B$ = "-" Or B$ = Chr$(0) Or B$ = ")" Then OK% = 1: GoTo 17230 Else GoTo 17130
17080   If A$ = "(" Then If B$ = ")" Or B$ = "*" Or B$ = "/" Or B$ = "+" Or B$ = Chr$(0) Then OK% = 1: GoTo 17230 Else CP% = CP% + 1: GoTo 17130
17090   If A$ = ")" Then If B$ = "(" Or (B$ >= "0" And B$ <= "9") Or (B$ >= "a" And B$ <= "z") Or B$ = "." Then OK% = 1: GoTo 17230 Else CP% = CP% - 1: GoTo 17130
17100   If A$ >= "a" And A$ <= "z" Then If (B$ >= "0" And B$ <= "9") Or (B$ >= "a" And B$ <= "z") Or B$ = "(" Or B$ = "." Then OK% = 1: GoTo 17230 Else GoTo 17130
17110   If A$ = "." Then If Not (B$ >= "0" And B$ <= "9") Then OK% = 1: GoTo 17230 Else CN% = CN% + 1: FLAGP% = FLAGP% + 1: GoTo 17230
17120   OK% = 1: GoTo 17230
17130   '---- crea AA$ (__)
17140   If CN% = 0 Then GoTo 17180
17150      If FLAGP% > 1 Then OK% = 1: GoTo 17230
17160      CV% = CV% + 1: AA$(CV%) = Mid$(f$, s% - CN%, CN%)
17170      CN% = 0: FLAGP% = 0
17180   CV% = CV% + 1: AA$(CV%) = A$
17190   If A$ = "*" Or A$ = "/" Or A$ = "+" Or A$ = "-" Then GoTo 17200 Else GoTo 17230
17200      If A$ = "-" And c$ = "(" Or A$ = "-" And s% = 1 Then BRANGO% = 3 + 3 * CP%: CRANGO$ = Right$("  " + str$(BRANGO%), 2): AA$(CV%) = ">" + CRANGO$: GoTo 17230
17210      If A$ = "-" Or A$ = "+" Then BRANGO% = 1 + 3 * CP%: CRANGO$ = Right$("  " + str$(BRANGO%), 2): AA$(CV%) = AA$(CV%) + CRANGO$
17220      If A$ = "*" Or A$ = "/" Then BRANGO% = 2 + 3 * CP%: CRANGO$ = Right$("  " + str$(BRANGO%), 2): AA$(CV%) = AA$(CV%) + CRANGO$
17230   '---- ultima fase
17240   If OK% = 1 Then s% = LX%
17250   c$ = A$
17260 Next s%
17270 If CN% = 0 Then GoTo 17310
17280      If FLAGP% > 1 Then OK% = 1: GoTo 17310
17290      CV% = CV% + 1: AA$(CV%) = Mid$(f$, s% - CN%, CN%)
17300      CN% = 0: FLAGP% = 0
17310 If CN% > 0 Or FLAGP% <> 0 Or CP% <> 0 Then OK% = 1
17320 If OK% = 1 Then FormulaControlla = False Else FormulaControlla = True
End Function
Public Sub FormulaGenPolacca()
18800 Rem --- ROUTINE che, data la NOTAZIONE INTERA
18810 Rem --- GENERA LA NOTAZIONE POLACCA
18820 Rem --- Input = AA$(__), CV%,  Output = P$(__)
      Dim i As Integer, j As Integer, K As Integer, CONTA As Integer, MAXI%, l As Integer
      Dim NUOVA%, KK%, M As Integer
18830 i = 0: j = 1: l = 0: K = 1: CONTA = 0: MAXI% = CV%
18835 If NUOVA% = 1 Then NUOVA% = 0: For KK% = 1 To 26: VV#(KK%) = 0: Next KK%
18840 For KK% = 1 To 26: B$(KK%) = "": OP$(KK%) = "": RANGO(KK%) = 0: P$(KK%) = "": Next KK%: P$(26) = ""
18850 Rem
18860 If CONTA > 0 Then CONTA = CONTA + 1
18870 i = i + 1
18880 If AA$(i) = "(" Or AA$(i) = ")" Then If i = MAXI% Then l = l + 1: OP$(l) = "T": RANGO(l) = 0: GoTo 18910 Else GoTo 18870
18890 If AA$(i) >= "a" And AA$(i) <= "z" Or Asc(AA$(i)) = 46 Or Asc(AA$(i)) > 47 And Asc(AA$(i)) < 58 Then If i = MAXI% Then B$(j) = AA$(i): l = l + 1: OP$(l) = "T": RANGO(l) = 0: GoTo 18910 Else B$(j) = AA$(i): GoTo 18870
18900 l = l + 1: OP$(l) = Left$(AA$(i), 1): RANGO(l) = Val(Right$(AA$(i), 2))
18910 If B$(j) <> "" Then P$(K) = B$(j): K = K + 1: j = j + 1
18920 If l = 1 And i = MAXI% Then GoTo 19020
18930 If l = 1 Then GoTo 18850
18940 If RANGO(l) > RANGO(l - 1) Then CONTA = CONTA + 1: GoTo 18850
18950 If CONTA = 0 Then P$(K) = OP$(l - 1): K = K + 1: RANGO(l - 1) = 0: GoTo 19020
18960 For M = 1 To CONTA + 1
18970   If M = l Then M = CONTA + 1: GoTo 19010
18980   If RANGO(l - M) = 0 Then GoTo 19010
18990   If RANGO(l) > RANGO(l - M) Then GoTo 19010
19000   P$(K) = OP$(l - M): K = K + 1: RANGO(l - M) = 0
19010 Next M
19020 If OP$(l) = "T" Then P$(K) = OP$(l) Else GoTo 18850
19030 '
End Sub
Public Function FormulaValutaPolacca() As Double
19500 Rem --- ROUTINE che, data la NOTAZIONE POLACCA
19510 Rem --- CALCOLA il VALORE DELLA FORMULA
19515 Rem --- Input = P$(__), Output = RISULTATO#,ERRORE%=1 se Division by zero
      Dim K As Integer, ERRORE%, OPR$, Q%, NO%, R As Integer, ABC$, RIS#, Risultato#, X$
19520 FormulaValutaPolacca = 0: K = 0: ERRORE% = 0
19530 K = K + 1
19540 If P$(K) >= "a" And P$(K) <= "z" Or Asc(P$(K)) = 46 Or Asc(P$(K)) > 47 And Asc(P$(K)) < 58 Then GoTo 19530
19550 OPR$ = P$(K): P$(K) = "": Q% = 1: While P$(K - Q%) = "": Q% = Q% + 1: Wend: COPN$(2) = P$(K - Q%): P$(K - Q%) = ""
19560 If OPR$ <> ">" And OPR$ <> "T" Then NO% = 1: Q% = 2: While P$(K - Q%) = "": Q% = Q% + 1: Wend: COPN$(1) = P$(K - Q%): P$(K - Q%) = "" Else NO% = 2
19570 Rem-----
19580 For R = 2 To NO% Step -1
19590   If Not (COPN$(R) >= "a" And COPN$(R) <= "z") Then OPN#(R) = Val(COPN$(R)): GoTo 19610
19600   ABC$ = COPN$(R):  OPN#(R) = FormulaAssegna(ABC$)
19610 Next R
19620 Rem-----
19630 Rem-----
19640 If OPR$ = "T" Then RIS# = OPN#(2): GoTo 19710
19650 If OPR$ = ">" Then RIS# = -OPN#(2): GoTo 19700
19660 If OPR$ = "*" Or OPR$ = "x" Then RIS# = OPN#(1) * OPN#(2): GoTo 19700
19670 If OPR$ = ":" Or OPR$ = "/" Then If OPN#(2) <> 0 Then RIS# = OPN#(1) / OPN#(2): GoTo 19700 Else Risultato# = 0: ERRORE% = 1: GoTo 19730
19680 If OPR$ = "+" Then RIS# = OPN#(1) + OPN#(2): GoTo 19700
19690 If OPR$ = "-" Then RIS# = OPN#(1) - OPN#(2)
19700 Rem-------
19710 If OPR$ = "T" Then GoTo 19720 Else X$ = str$(RIS#): P$(K) = Right$(X$, Len(X$) - 1): GoTo 19530
19720 Risultato# = RIS#
19730 FormulaValutaPolacca = Risultato#:
19740 If ERRORE = 1 Then MsgBox "Attenzione: Divisione per 0 nella valutazione della formula.", vbCritical, bsTtlErr
End Function
Public Function FormulaAssegna(ABC$) As Double
19800 Rem --- assegna i valori alle variabili operatori -------
19801 Rem --- input ABC$ , globale vv#()  output VV#                   -------
      Dim NN%, BVV#
19810 NN% = Asc(ABC$) - 96
      If NN% = 1 Or NN% = 2 Or NN% = 3 Or NN% = 11 Or NN% = 14 Then
         BVV# = VV#(NN%): FormulaAssegna = BVV#: GoTo Fine
      End If
19830 If VV#(NN%) <> 0 Then
          BVV# = VV#(NN%): FormulaAssegna = BVV#: GoTo Fine
      End If
19860 BVV# = CDbl(InputBox("Inserire il valore della variabile  <" + ABC$ + "> =", "Richiesta valore parametro", "0"))
19880 VV#(NN%) = BVV#
19900 FormulaAssegna = BVV#
Fine:
End Function
Public Sub FormulaChiama(strFormula As String)
      Dim bOk As Boolean
      Dim Risultato#
30200 Rem --- CALCOLO QUANTITA' (da FORMULA$)
30205 '
30210 bOk = FormulaControlla(strFormula): If bOk = False Then Risultato# = 0 Else FormulaGenPolacca: Risultato# = FormulaValutaPolacca

End Sub

The only glimmer of hope is the first line- at least they used Option Explicit, which makes variable declarations required (instead of just creating a variable anytime you use one). Everything else is horror. VB6 did not require line numbers, which implies that either the developer responsible cut their teeth in older versions of BASIC, or worse: this code started its life in an older version of basic. Or, possibly even worse: the developer couldn't imagine flow control without GoTo, because there are a lot of them.

While this code was clearly originally written in Italian, the fact that it's in another (natural) language isn't what makes the code impossible for me to understand. The code itself is cryptic and complicated enough that I don't want to decipher it, for fear that solving this puzzle invites Cenobites to tear me apart.

Davide adds: "The woeful part of the story is that it actually works most of the time."

True horrors lurk in this world, nightmares that we can't hope to escape, legacy code that needs to be maintained, and lies in wait for vulnerable developers. Once ensnared in the grasp of this monster, can any developer truly hope to escape?


And finally, for a bonus story of technological horrors, I told a creepy campfire tale about Thomas Midgley, Jr. on stage this weekend. Pardon the cellphone video. The Man Who Sold the World.

[Advertisement] Continuously monitor your servers for configuration changes, and report when there's configuration drift. Get started with Otter today!
31 Oct 13:45

MeFi: A Little Moxie For Halloween

by zaixfeep
Penn Jillette's kid Moxie did some magic and tried to fool their dad on "Penn & Teller:Fool Us" (SLYT)

Spoiler (also avoid looking at the video title on YouTube):THEY FOOLED THEM!
31 Oct 12:10

Does Your Brain Picture Things?

by Jason Kottke
Merijn

I just took the VVIQ test that was linked on the Reddit r/aphantasia forum, and apparently I have hyperphantasia?

A few weeks ago, I shared the following image on Instagram:

a scale for measuring what you see in your 'mind's eye', featuring an apple

It’s a scale for measuring how people visualize objects in their heads. I’m between 4 & 5, which means I have a condition called aphantasia. Marco Giancotti recently wrote about this for Nautilus; he underwent an MRI scan to test what was going on in his head:

A few seconds pass, then a synthetic female voice speaks into my ears over the electronic clamor: “top hat.” I close my eyes and I imagine a top hat. A few seconds later a beep tells me I should rate the quality of my mental picture, which I do with a controller in my hand. The voice speaks again: “fire extinguisher,” and I repeat the routine. Next is “butterfly,” then “camel,” then “snowmobile,” and so on, for about 10 minutes, while the system monitors the activation of my brain synapses.

For most people, this should be a rather simple exercise, perhaps even satisfying. For me, it’s a considerable strain, because I don’t “see” any of those things. For each and every one of the prompts, I rate my mental image “0” on a 0 to 5 scale, because as soon as I close my eyes, what I see are not everyday objects, animals, and vehicles, but the dark underside of my eyelids. I can’t willingly form the faintest of images in my mind. And, although it isn’t the subject of the current experiment, I also can’t conjure sounds, smells, or any other kind of sensory stimulation inside my head. I have what is called “aphantasia,” the absence of voluntary imagination of the senses. I know what a top hat is. I can describe its main characteristics. I can even draw an above-average impression of one on a piece of paper for you. But I can’t visualize it mentally. What’s wrong with me?

And here’s a good video explanation of it too, from an artist who has aphantasia:

Like a lot of people, I wasn’t even aware that I visualized things differently than others — I assumed that everyone saw extremely ghostly images of objects in their mind’s eye, more like the ideas of things than the things themselves. It wasn’t until I was talking to my daughter a few years ago about how the characters in a movie looked nothing like the ones she’d pictured in her head from reading the books that I realized that she’s got a vibrant, full-color movie going on in her head when she reads and I was like EXCUSE ME?

Aphantasia is sometimes described as a deficiency or even a disability, but I don’t think of it that way at all. I believe my brain works pretty well, thank you very much, even though I can’t close my eyes and see the faces of my kids. And it’s not as straightforward as the simple scale above, at least in my case.

I can’t picture what a room would look like with a different sofa or rug (I just have to buy it and cross my fingers that it looks good when it arrives) or what a sweater would look like on me without actually trying it on (making online clothes shopping difficult). But I also have a weirdly visual memory. In college, I would remember things for tests and papers based where they were written in my notebook (lower right-hand corner of the left-hand page) or appeared in the textbook (on the right-hand page, under the blue illustration). I can’t see it in my brain, but I can see the idea of it and remember what was written there. (I told my daughter this and she said she can do this too, but for her, she pictures herself sitting at her desk in biology class with her notes open in front of her and she can then recall what was written in certain places. It is fascinating to talk about this stuff with her!)

Anyway, on Insta I asked people where they are on the apple scale and the responses were super interesting, so I’m opening up the comments on this one so we can chat about it.

Tags: science

💬 Join the discussion on kottke.org

25 Oct 09:36

MeFi: Hats are cakes, and handbags are toasters

by MonkeyToes
"A new tool lets artists add invisible changes to the pixels in their art before they upload it online so that if it's scraped into an AI training set, it can cause the resulting model to break in chaotic and unpredictable ways. The tool, called Nightshade, is intended as a way to fight back against AI companies that use artists' work to train their models without the creator's permission." (Melissa Heikkilä, MIT Technology Review)

"Poisoned data samples can manipulate models into learning, for example, that images of hats are cakes, and images of handbags are toasters. The poisoned data is very difficult to remove, as it requires tech companies to painstakingly find and delete each corrupted sample."