Toots for markgritter@mathstodon.xyz account

Written by Mark Gritter on 2025-01-29 at 20:08

This talk on Apollonian circle packings is great: https://youtu.be/3mU9d0cPgGM

The local-global conjecture said that other than the "obvious" congruence restrictions, every sufficiently large natural number appeared as the curvature in a circle packing. But this is false and the counterexample is not at all hard: they exhibit a circle packing that contains no squares, and a simple proof based on reciprocity.

The best part is that this started with a REU (an undergrad) doing some visualizations and finding an increasingly-clear pattern suggesting the conjecture couldn't be true.

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-28 at 20:50

Twitter debt is still so toxic that the bankers trying to offload it are emphasizing that Twitter owns some xAI shares! To try to get 90-95% of what they paid.

https://www.bloomberg.com/news/articles/2025-01-27/x-debt-shopped-with-6-billion-sweetener-from-elon-musk-s-ai-bet

"Potential investors are being told they would have a claim on X’s interest in the entity, the people said, asking not to be identified discussing confidential information. The size of that stake is based on the latest fundraising that put a roughly $50 billion valuation on xAI."

It seems to me that this has all the same downsides which have kept the debt in the banks' books so far, namely:

  1. You would have to deal with Elon Musk

The prospect of trying to take control of X when he defaults, or be a minority shareholder in xAI as a backup, do not seem appealing when Musk's attitude to securities law is basically "no I don't."

Nevertheless, I am willing to take on this burden. So I am reiterating my offer to buy any amount of secured X debt for $1. It doesn't have to be your problem any more, bankers! You could end the pain and avoid all these embarrassing sales pitches!

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-22 at 02:11

Atlassian started generating LLM summaries of the bugs I was trying to file with its Slack integration. (There is, fortunately, an obvious off switch but embarrassingly it took me a couple times to find in the context of a Slack modal.)

The key thing it neglected is that I wanted to include links so that they actually appeared in the bug report! If I link to another JIRA ticket, or a particular GitHub PR, it's become I think it is useful. The "summary" stripped those links out and made them mentions instead, like "this is related to GitHub PR 2203".

There are a whole bunch of angry people in the Atlassian bug tracker asking for a way to restrict their "AI"'s scope by user or by document type: https://jira.atlassian.com/projects/AI/issues/AI-930

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-17 at 05:55

Go's zero time is year 1, not 1970 or something Unix-y like that. That's fine.

Except:

func main() {

origin := time.Time{}

t := time.Date(2025, 1, 16, 4, 0, 0, 0, time.UTC)

d := t.Sub(origin)

t2 := origin.Add(d)

fmt.Println(t2)

}

results in 0293-04-11 23:47:16.854775807 +0000 UTC

https://go.dev/play/p/turgQXfyJG-

There's obviously an integer overflow happening here and it's too late in the day for me to figure out how to work around it.

What I need to do is truncate times to a 64-hour or 256-hour boundary. Our existing Go code truncates relative to Go's zero time. TimescaleDB truncates relative to 2001-01-01, or 2001-01-03 in some cases when calculating buckets. It seems challenging to write code that handles both, if the invariant t.Sub(origin).Add(origin) == t does not hold.

[#]golang

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-15 at 20:50

New Lucy Dacus video dropped today! https://www.youtube.com/watch?v=pcW_-uxy6dQ

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-11 at 05:44

A #ComputingHistory question that came up today: what is the origin of | (the vertical stroke) as bitwise OR in PL/I, and thence to the C family of languages?

I haven't been able to trace it further back, and interestingly in logic it was the "Sheffer Stroke", NAND (although Wikipedia claims that Sheffer actually used it for NOR instead?) There does not seem to be a logic or typesetting convention that birthed |.

I don't know enough about early IBM keyboards to know what other characters might be available.

The choice of & for AND instead of ^ -- it's right there! -- is similarly unclear.

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-07 at 21:13

If you're timing how long your #tea steeps, do you start the timer...

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-07 at 01:49

"Do not treat the generative AI as a rational being" Challenge

Rating: impossible

Asking a LLM bot to explain its reasoning, its creation, its training data, or even its prompt doesn't result in an output that means anything. LLMs do not have introspection. Getting the LLM to "admit" something embarrassing is not a win.

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-06 at 06:49

Is there a meaningful way to characterize some "fastest growing function", subject to particular computational limitations? (I answered a question today that asked if all computable functions have polynomial bounds, which they obviously don't.)

We can't ask for the fastest-growing function in FP, because the composition of polynomial runtimes is polynomial. So if f(x) is in FP, so is the faster-growing f(f(x)).

Could we identify the fastest-growing function (using binary) in DTIME(n^2)? It seems like it would be something like "given an n-bit input, write n^2 1's after the input". So if the input was 2^a, we'd get 2^a * 2^(a^2) + (2^(a^2+1) - 1) as output.

But, strictly speaking, there would be a little bit of overhead meaning we couldn't do quite that well. The algorithm above is in DTIME(O(n^2)) but not DTIME(n^2). So it feels like there is a sequence of functions that converges on this one, but there might not be any best possible. And if we permit O(n^2) we're back to not having any fastest-growing function again because we can just slap bigger multiples on our allowed runtime.

So, is there a nontrivial class of computable functions that has an unambiguously fastest-growing member?

[#]TheoreticalComputerScience

=> More informations about this toot | View the thread

Written by Mark Gritter on 2025-01-05 at 04:45

I bought Pathfinder: Wrath of the Righteous and I think I may be done with it in the middle of Act 2. There's a big set-piece battle (the siege of Dresen) and it is just annoying me in a lot of ways that make me not eager to restart:

"Siege" = "Frontal assault" for some reason, and I wasn't able to suggest a better plan.

Which is a shame, because I like the Pathfinder system! But really this just just making me want to play more BG3.

[#]VideoGames #PathfinderRPG

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-12-18 at 02:18

This is a very small peeve, and we should really be migrating to Bun, but go-pg is lacking a method that works like:

OrderBy( field, direction )

What it has instead is a method that takes the whole clause as string, like this:

Order( "my_field ASC" )

So code that uses it ends up frequently looking like

Order( fmt.Sprintf( "%s %s", column, order ) )

What happens internally? The Order() function parses the string and then calls

Query.OrderExpr( "? ?", pg.Ident(column), pg.Safe(order) )

https://github.com/go-pg/pg/blob/bce00adc25696cc87008ccc4daf10f6350bbdae8/orm/query.go#L721

So, the entire process looks like:

  1. Concatenate the two strings

  1. Parse the string to recover the two things that were concatenated

  1. Re-create the string from step 1 using a template and two parameters

OK, OK, maybe step 3 adds some quoting that wasn't there already. But today I finally wrote a utility function to avoid this round-trip through steps 1 and 2 by copying the OrderExpr call.

[#]golang #postgres

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-12-12 at 04:58

Reached 100% achievement completion on #Satisfactory. I sort of limped over the finish line with the 1000-ticket achievement as I never really got my Project Assembly part production stable or scalable. (Running out of time crystals... and singularity cells, and computers, and motors.)

I decided this playthrough was going to cover everything rather than exposing all that sensitive construction equipment to the elements. That didn't entirely last, though I built a nice octagonal central building that held most of the early and mid-game production. But, as soon as possible I did create this nice 3x4 covered walkway and spam it all over the map. It has a central corridor for conveyor belts and a hypertube line, with space on either side to run one-way monorail tracks.

=> View attached media | View attached media | View attached media

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-12-12 at 01:30

"Anyhow, when a crypto founder couldn’t find a bank in 2011, one could be excused for blaming reflexive banker conservatism and low levels of technical understanding. Crypto has had a decade and a half to develop a track record to be judged on. Crypto is being judged on that track record."

https://www.bitsaboutmoney.com/archive/debanking-and-debunking/

An article on "debanking" explaining why it is sometimes Kafkaesque (you got an SAR but the bank is not allowed to tell you that so it institutionally forgets the fact as soon as possible) and sometimes "duh, the bank management can read the paper too" (banks have gotten badly burned by servicing crypto companies, and the profit in doing so is very low.)

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-12-09 at 05:13

Some photos of Uncle Phil (with his wife and two daughters), and his Boy Scout jacket.

=> View attached media | View attached media

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-12-09 at 05:10

I attended my great-uncle Phil's funeral last week. He had a career in computing starting in the 1960's; we had a lot in common and could swap stories about technology and business. We will miss him very much.

The memorial boards included this summary of his career and a batch of old business cards, as well as this certificate of his membership in the Data Processing Management Association, from 1981. (It's now the Association of Information Technology Professionals, AITP.)

One thing that struck me is that although the code of ethics lists responsibilities to one's employer, and separately to one's management, to fellow members (not to misuse the information you learned about their business, nor to sell to them at meetings!), and to the country at large -- there is no specific guidance towards the people affected by the use of data processing, those whose well-being or privacy could be negatively affected. That is a fixture of modern ethics codes, but didn't make the cut in 1981.

The University of Minnesota Library has records from the DPMA in its collection! https://archives.lib.umn.edu/repositories/3/resources/2474

What remain of Uncle Phil's business records are probably sitting in his rented storage unit; in his later years he never had the energy to sort through it or the determination to simply get rid of everything. While it might be interesting to see what is still there, I don't anticipate we will have the opportunity (or the energy, either!) to do so.

[#]InMemoriam #ComputingHistory

=> View attached media | View attached media | View attached media | View attached media

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-12-04 at 22:51

I am wondering if the right thing here is to define an abstract type of "a monotonically increasing sum" first? But it seems like I would run into the same problem.

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-12-04 at 19:16

Well, I am stuck and stuck hard on #Ivy. Here's my first toy example: https://gist.github.com/mgritter/17b455a33222e22d2b9627db36c0eaff

I want a system where I provide a left number, then a right number, then update a running sum with the absolute value of their difference.

What I get when I try to state that the sum should be increasing is nonsense models of the numbers like

0:num + 0 = 0

0:num + 1 = 0

1:num + 0 = 0

1:num + 1 = 0

Which is a possible model of the + function, I get it! But I cannot convince Ivy to exclude that model. (I think the model of < may be wrong too, but for some reason it's not including that.)

[#]ModelChecking

@redmp any thoughts on what I'm doing wrong?

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-11-01 at 08:28

OK, a simpler starting point. Consider just the case

for (i = 0; i < left_out; i++)

rooms[rnd_room()].r_flags |= ISGONE;

with left_out = 2. How many times can rnd_room() loop in the worst case? It looks for a room number in [0,8] which does not already have ISGONE set.

Let's write a Z3 model that searches for the first random number = 2, the second unconstrained, and the third, fourth, fifth, ... all equal (mod 9 of course) to the second number.

for loops in range( 1, 20 ):

print( loops, "loops" )

s = Solver()

s.add( left_out == 2 )

gone_1 = nth_rnd(1,9)

for n in range( loops ):

    s.add( nth_rnd(2 + n, 9) == gone_1 )

if s.check() == sat:

    print( s.model() )

else:

    print( "Unsatisfiable" )

    break

It ran quickly enough up to 6 loops, but 7 is taking a while so many be unsatisfiable.

=> View attached media | View attached media

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-11-01 at 03:08

This approach to writing a #Z3 model is not gonna cut it. (Simulating the Rogue room generation algorithm and bogged down on the very first nested loop.) Am I gonna have to write my own DSL that is compiled to Z3?

There's got to be a better way to generate the model. My mental picture is as a tree where edges correspond to computational steps in the original algorithm -- maybe I can make that explicit in some form. Write successor functions for each possible state.

=> View attached media

=> More informations about this toot | View the thread

Written by Mark Gritter on 2024-10-31 at 03:19

My team at Postman is hiring! (All of Postman is #hiring !)

We need a staff-level full-stack engineer (San Francisco or U.S. remote), who can really up-level how we deliver product features. https://www.postman.com/company/careers/staff-fullstack-engineer-postman-insights-6222635003/

We also have an opening for a front-end only role (U.S. remote) https://www.postman.com/company/careers/frontend-engineer-postman-insights-6117708003/

We're looking for a platform engineer (remote. U.S.-based) who can really take ownership of the Postman Insights Agent and its integration with different cloud platforms: https://www.postman.com/company/careers/senior-platform-engineer-observability-agent-6075330003/

We're also hiring a San Francisco-based product manager! https://www.postman.com/company/careers/senior-product-manager-postman-insights-6212836003/

My team is building Postman Insights, an observability and debugging tool for the 9-to-5 developer. Our goal is to start producing actionable, endpoint-level information within 15 minutes of setting up Insights, with no code changes required. We're a small, quickly moving 0-1 team within Postman, the world's leading API platform!

[#]RemoteJobs #SanFranciscoJobs

=> More informations about this toot | View the thread

=> This profile with reblog | Go to markgritter@mathstodon.xyz account

Proxy Information
Original URL
gemini://mastogem.picasoft.net/profile/109350124943867642
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
417.206621 milliseconds
Gemini-to-HTML Time
15.299417 milliseconds

This content has been proxied by September (3851b).