Threads for imode

  1. 7

    Isolating myself, possibly permanently.

    After months of trying to reach out to people for help, to no avail, I figure I try the opposite solution: make as little contact with other people as possible, and withdraw.

    So long.

    1. 10

      I logged back in after being consciously logged out, solely to reply to you.

      Get back on IRC. A bunch of us are in ##programming all day and I do miss your awesome ideas! To this day your string rewriting language is still in my head.

      Please please please dont isolate. I think you have cool things to tell :) Sincerely, lf94

    1. 5

      I never feel like Jeff gives boards besides the Pi their fair shake.

      1. 8

        I got myself two of those. And I can relate to Jeffs findings. I see strange latency issues when writing to NVMe SSD, which are definitely caused by botched kernel.

        I think headline is on the spot. A great potential, not necessary ready for prime-time.

        1. 5

          That’s largely because he’s found his niche and understands how to grind for money within that niche. He’s “The Pi Guy”.

          There’s little incentive in comparing SBCs, far more incentive to plant yourself down and write clickbait videos about how a Pi can beat out a modern M2 Mac (but only if you select for certain parameters with certain addons that are orthogonal to the Pi.)

          More power to the guy, it rakes in views and money.

          1. 2

            Many boards besides the Pi are simply not equivalent. Pi is very well placed.

          1. 2

            Some feedback on the site design: it’s flashy but not that functional. Often when scrolling, I end up between two slides, and scrolling up vs. scrolling down pulls the bottom slide down while pinning the top slide to the top of the screen.

            This is pretty disorienting when scanning back and forth. I’d rather this just be a static page. Neat crate though.

            1. 2

              Some feedback on the site design: all I see is a blank white page. ;-)

              1. 1

                Browser, version, etc?

                Maybe it’s for the best that you can’t see it judging by imode haha

                1. 1

                  “Chrome on Android, stable”, but don’t worry; it’s a comment on the site requiring JavaScript, not a real bug report.

              2. 1

                I see! I’ll work on readability/scanning.

                Thank you

              1. 16

                I recall watching this talk and being both impressed and unimpressed. Impressed by the fact that someone was near the top of the abstraction tower and leapt to the bottom, unimpressed by the conclusions they drew when they were at the bottom.

                uxn, retroforth for ilo and several other projects (including the permacomputing folks) follow similar paths: they drill down to the bottom, realize that they need an ultra-simple portable execution environment that can run “anywhere”, and they try to do that in the smallest footprint required to interface with the machines they want to run on.

                The desire to separate themselves from the machine is the evolution of something like Chuck Moore’s attitude. The number of types of systems that exist nowadays is far more than in Chuck’s days, and the abstractions that’re required to write “simple” programs (even on “bare metal”) are now towering. In order to understand the machine, you need to invent your own. The machine that you’re working on doesn’t need to be your target anymore. You’re free.

                While this is a noble effort, the problem is that boundary between the space you’ve made (the VM, etc.) and the surrounding space (the host, whatever that might be). The choices you make for opcodes, word widths, memory layouts, and other architectural decisions will predetermine the kinds of hosts you can interface with. Everything from basic performance concerns to “how does this feel when I start executing this on paper” to “how similar is this to existing architectures” needs to be considered.

                It’s fairly difficult to pick what you need. Brainfuck, the lambda calculus, various combinator calculi, string rewriting, etc. all point to what the right answer might be. I don’t think 6502-likes are along that path, but I respect the efforts, as they’re chosen due to the closeness to the hosts we currently operate on.

                1. 5

                  The number of types of systems that exist nowadays is far more than in Chuck’s days

                  I guess if you frame it as “systems that exist” this is technically true, but if you’re talking about “systems that you might actually scavenge outside a museum” I doubt it. Nowadays we have x86 and ARM accounting for 99% plus PPC, AVR, and Xtensa, with RISC-V is just barely starting to become a thing, but this is dwarfed by the diversity of architectures that existed when Forth was developed.

                  1. 3

                    The architectures I can name off the top of my head.

                    • x86
                    • ARM
                    • POWER
                    • MIPS
                    • Z80/6502 (and others in a similar vein)
                    • AVR
                    • PIC
                    • ESP32 (and ESP8266)
                    • RISC-V

                    That’s not even counting any of the subfamilies like ARM64/Thumb, many of which can have significantly different architectural decisions. It’s also not counting how these individual architectures are set in specific systems: a particular hardware configuration isn’t guaranteed.

                    Compare this to the environment that Moore existed in: large mainframe computers and minicomputers. There were a finite amount of hardware configurations because the hardware was simple, the costs were high, and the machines themselves were large, hulking beasts that just became solid state and had a backing vendor.

                    The diversity of the machines today can’t even be compared to the likes of when Chuck Moore was initially getting started.

                    1. 4

                      All the systems you list are byte addressable, with 8 bit bytes, and a power-of-two word size. Signed integers are always twos-complement. If floating point hardware exists, it is always IEEE compliant. A string of 7-bit ASCII characters is invariable stored as an array of 8-bit bytes, with the high bit 0. This standardization is useful, but hardware was much more diverse when Chuck got started.

                      Consider the GE-600/Honeywell 6000, which had 36 bit words and 18 bit addresses. ASCII character strings were packed either 4 to a word (with 9 bit bytes) or 5 to a word (with 7 bit bytes plus an extra bit to use as a flag). Or the CDC 6600, with 60 bit words and 1’s complement arithmetic.

                      1. 1

                        Compare this to the environment that Moore existed in: large mainframe computers and minicomputers. There were a finite amount of hardware configurations because the hardware was simple

                        Let’s look at just a single manufacturer: DEC. Just across their PDP line, you had a huge amount of variety from 12-bit, 18-bit, 16-bit, and 36-bit families. Sometimes the newer models within one family would be expanded versions of older ones, like the PDP-5 -> PDP-8, but not always. But once you include DEC’s earlier devices, you’ve already got half the diversity you listed above just coming from a single producer. Broaden it to the entire market (remember, basically everyone is reinventing ISAs from scratch because there is no expectation of portability) and there’s a bewildering amount of variety.

                        Then the year after Forth, Inc was founded saw the introduction of the Altair; once personal computers get thrown into the mix it gets even more diverse, up to the point manufacturers started standardizing on IBM’s PC architecture.

                        1. 2

                          What I listed was just processor architecture families. I didn’t mention what those things went into. DEC shipped full, working machines. The processor families I list above can be a part of larger heterogeneous systems that have different methods of programming. Hell, your computer is multiple computers all talking to each-other.

                          That explosion of variety is what I’m trying to convey as the difference. Because machines got smaller, and the components became generic/able to be integrated into larger systems, the number of possibilities shot through the roof.

                  1. 1

                    What’s the tl;dr on this thing? It had nice drawings, and it looked like the person put in effort, so I wanted to support content like this by reading it and discussing it, but my eyes just glazed over (I probably have adult ADHD). It began to sound like a rant against cloud only software (which I also agree with: I like to work on the train during my commute) but then it got so long and windy. What was the solution?

                    1. 11

                      From my understanding (after reading a few other posts on the author’s site), it’s about two things:

                      1. modern software being far too complex for any single person to understand completely; and
                      2. modern software growing such that it will use all the resources you have, even at the expense of power consumption.

                      The author lives on a sailboat, with electricity provided by small solar panels, where every resource (whether that be electricity, water, food…) needs to be used conservatively. When they first started on their journey in that boat, they were using modern stuff - MacBooks and ThinkPads, running contemporary OSes, but quickly discovered that with the ever-growing reliance of modern tech on a high-speed internet connection (and the large battery drain involved with using any of that tech), they needed something better.

                      The article talks about a few of the things they drew inspiration from, and then at the end talks about the thing they created - uxn/Varvara - a relatively simple sorta-Forth-ish bytecode VM, which has been ported to many different OSes, and running on many different “embedded” platforms.

                      1. 6

                        Some context is that this is from a uxn developer. A small assembly language for making lightweight applications.

                        I say this presentation touches on two main points:

                        The developers have lived on an off-grid sailboat so don’t have access to traditional software development tools. Most people wouldn’t consider the barriers someone living in the Solomon Islands would face trying to write an Android or iPhone app. Even consider the amount of data needed to write a node.js app or to use fancy development environments on NixOS. Latency makes remote development not feasible.

                        And the rest of the presentation is about software preservation. If I build an Android app, will you be able to run it in 10 years? How can we make something more portable? Virtual machines can be pretty useful, but they have to present the right level of abstraction.

                        1. 3

                          Thanks @iris and @puffnfresh

                          The subscription model of software is kind of disturbing, but I can’t tell if that’s because I’ve become an old fuddy duddy. I do very few classes of things on a computer nowadays.

                          1. Work (write software) - proprietary tools supplied by work
                          2. Write (fiction) - plain text editor
                          3. Store photos - OS folders
                          4. Store audio recordings - OS folders
                          5. Save documents - OS folders + Google docs

                          I worry about the longevity of my data formats, not the software I used to create them.

                          I assume that the hardware and software platforms will move. It is inexorable. I detest subscription models - I want to own something: software, hardware whatever. I don’t care that it gets obsolete, I just care that it works like it used to. I don’t want it to suddenly stop working because of money or connectivity.

                          However when I buy new hardware, I accept that it may not run old software. Hence my concern with the durability of data formats.

                          I do get super annoyed when Disney tries to force me to discard my nice 8 year old iPad just to use its updated App. Fortunately enough people feel like me, and the App store now allows me to use older versions of the App.

                          1. 2

                            If I build an Android app, will you be able to run it in 10 years

                            In my experience, very likely yes. I have dug up a ten year old Android apk file before and found it still working perfectly on modern Android. It pops up a warning now to the effect that “this is really old and might not still work” but it does just fine.

                            Android had a very different culture to both Apple and the main body of Google and actively cares about backwards compatibility.

                            1. 2

                              My thoughts:

                              Starlink has issues but mostly works really well. If we have systems like Starlink, but more accessible (price and regions) then do we actually need to worry about a 10GB download of Xcode? Today, a rich software developer could put Starlink on their sailboat and not think about data, right?

                              Lithium batteries can be expensive today but with electric cars and home batteries, etc. the recycled battery market will make it very cheap to have a lot of storage on a sailboat. I know batteries are heavy and space is a premium so solar is limited, but do you still you have to think about energy, if you have enough storage?

                              1. 11

                                Starlink isn’t going to cover the whole world, and to your point mostly benefits those in the developed world who can afford $125/mo. or more for access.

                                A large percentage of the world’s population simply cannot pay that, and even if they could, Starlink isn’t going to build ground stations anywhere near them.

                                This “Elon will save us!” culture has to end. He might well create little bubbles of gilded comfort in for the rich and powerful (satellite Internet, pay-to-play social media, and fast, clean, $100k cars) but his interest ends where the profit margins approach zero.

                                1. 2

                                  A large percentage of the world’s population simply cannot pay that, and even if they could, Starlink isn’t going to build ground stations anywhere near them.

                                  Yes, I agree that price is a huge issue but I think Starlink is opening up to regions without ground stations - I guess the latency might not be the 50ms standard, but I imagine it will still be a good thing for places like the Solomon Islands.

                                  This “Elon will save us!” culture has to end.

                                  I would love for Starlink to be worker owned or see an alternative. I just care about the digital divide and Starlink has done things for places like rural Australia that our Government is not able to. I know the example is 10GB Xcode for iPhone development, but what about watching a YouTube video or participating in a Zoom call for school?

                                  1. 2

                                    And on price, a 4Mbps fibre connection in the Solomon Islands is $170USD per month at the moment. Yes, Starlink’s price is ridiculous for these regions but you have to understand that it’s sadly an improvement.

                                  2. 9

                                    At some point, you’re going to have to stop. The problem (and underlying motivation behind projects like uxn) is that we just don’t know where to stop. The abstraction towers are getting higher each year, and that 10GB isn’t going to be 10GB in a few years with newer architectures, patterns for programming, and support for legacy devices being shipped under the moniker of a development environment.

                                    Whatever standards you target, they won’t be sufficient once they’re widely used and ultimately pushed beyond their limit. Growth is the problem, not the constants of the current year.

                                    1. 1

                                      In some ways we’re slowly improving, e.g. home energy efficiency - but yeah, good point, constant growth does exist in software!

                                2. 5

                                  I “read” like maybe 20%. Maybe I missed the point. It seems like the author is drawn to what I’d call “programming in the dirt”, where if we got stranded on some desert island, the programs they could bring with (on paper, in carry-on luggage) would be

                                  1. fairly readable in a small way (not too-simple like Brainfuck or too-complex like full x86-64 ISA)
                                  2. possible to run on a runtime you could actually build on the island (not needing the “mainland” if you will)
                                  3. (somewhat game-oriented?)

                                  Gilligan’s PL, if you will. I take it the author has been developing their own language most similar to 6502 assembly.

                                  Other PLs that come to mind would be: Don Knuth’s MMIX, BASIC, maybe even Standard ML or Featherweight Java.

                                1. 9

                                  The concept I align with is “turn data into code”. Joe Armstrong followed this lead with his “UBF”.

                                  Everything you write is ultimately some kind of interpreter, executing some process relative to some data set. The closer you get to re-using your language’s internals to do that, the easier your job (might) be.

                                  1. 4
                                    1. 0

                                      Realtalk: The only reason I have not and will not ever try it is the embarassing “brony”-name, and I say that as someone working with Coq.

                                      1. 8

                                        This makes me deliberately want to create and promote programming language whose name is an explicit My Little Pony reference. “Fluttershy” or something like that.

                                        1. 6

                                          wut? nothing on pony-lang’s website suggests anything at all to do with my little pony or “bronies”

                                          https://www.ponylang.io/blog/2017/05/an-early-history-of-pony/

                                          1. 0

                                            Indeed, but the association can easily be falsely made.

                                            1. 16

                                              I think you’re projecting pretty hard here.

                                              That article clearly gives the origins of the name.

                                              Back in the flight sim days, when I would make my friends groan by telling them yet again about all the things I was going to do when I wrote a programming language, one of the people I would tell was Nathan Mehl. And one time, when I gave him yet another laundry list, he said: “yeah, and I want a pony”.

                                              1. 2

                                                That’s also the origin of the “pony” mascot for Django.

                                      1. 2

                                        I always loved this technique for 3D graphics. Given enough primitives and combining functions, you could have something akin to an old-school “PPU” but for 3D graphics if you realized it in silicon.

                                        1. 3

                                          What exactly do you propose to implement in hardware? A lot of what’s interesting about signed distance functions as a technique for representing surfaces is that they can be arbitrary functions, performing arbitrarily complex computation. Hence: general-purpose hardware; and we have a lot of great general-purpose hardware already.

                                          something akin to an old-school “PPU” but for 3D graphics if you realized it in silicon

                                          That description seems much closer to a fixed-function rasteriser than an SDF evaluator or raymarcher. (We had fixed-function rasterisers, for many years; they worked well.)

                                          1. 1

                                            Distance functions can be arbitrarily combined together using a variety of CSG-like operations. Therefore, you could get away with storing the parameters for those primitives and combinations, sending them to this hypothetical chip for rendering.

                                            The idea is that SDFs are computationally expensive and “general purpose hardware” still can’t handle complex scenes very well the same way it can push triangles. So, if you focus on a single set of primitives with a set of modifiers/combinations, you can codify the logic for rendering those in silicon.

                                            Yes, we’ve had fixed function pipelines before. This isn’t fixed function, more like a scene graph.

                                        1. 1

                                          A new social media explosion that isn’t a rehash of prior attempts, hopefully filtered through the lens of a novel backend.

                                          1. 1

                                            Staring into the abyssal void.

                                            1. 17

                                              Coping with the death of a coworker and friend.

                                              Digging further into my wife’s chronic illness.

                                              Hoping the year ends quickly.

                                              EDIT: Cat is okay.

                                              1. 2

                                                Every experience, good or bad, is a learning opportunity for us hackers. Form a random internet stranger, hope you find the strength to pull through tougher times and that brighter days come.

                                              1. 2

                                                Does this get close to the record of “smallest device that plays DooM”, screen, case and all?

                                                Starting to wonder what the optimal concentration of DooM per unit volume is these days… Carmack would be proud.

                                                1. 3

                                                  It’s secretly 3 Wang tiles in a trench coat!

                                                  1. 10

                                                    This thing is insane.

                                                    I was able to teach it a totally made-up programming language modeled after ML and run programs.

                                                    At certain points, execution breaks down if you have complex conditionals, but there is certainly something going on here that’s special.

                                                    1. 4

                                                      An example of a generated minified Python program from this pretend language… I didn’t write a line of code, except for testing the generated code snippets in ChatGPT itself.

                                                      import math;[print(''.join(f"\x1b[48;2;{int((-min(math.sqrt((x-80//2)**2+(y-40//2)**2)-10,math.sqrt((x-(80//2-50))**2+(y-40//2)**2)-20,30-y,max(abs(x-80//2-20),abs(y-40//2))-10))/10*255) if min(math.sqrt((x-80//2)**2+(y-40//2)**2)-10,math.sqrt((x-(80//2-50))**2+(y-40//2)**2)-20,30-y,max(abs(x-80//2-20),abs(y-40//2))-10)<0 else 0};0;0m  " for x in range(80))) for y in range(40)];print("\x1b[0m",end="")
                                                      
                                                    1. 1

                                                      This is off-topic, but the linked tweet is at the end of the thread.

                                                      1. 58

                                                        .sh domains considered harmful… for the exact same reasons. It’s also owned by ICB.

                                                        1. 21

                                                          The issue is that the Chagos islanders were evicted by the British so that Diego Garcia could be handed over to the USA for a military base. The Chagossians were not compensated in any way. Using a .io domain name (unwittingly) shows disregard for colonial land theft and ethnic cleansing.

                                                          Whereas Saint Helena and Ascention island (.ac, ICB again) were uninhabited before european colonization, so their domain names are not associated with that kind of appalling evil. There are legit reasons for disliking ICB’s involvement and the misappropriation of the domain registration money, enough reasons to boycott them, but it is in no way exactly the same as what happened to the Chagossians.

                                                          1. 28

                                                            Does anything get better for Chagos Islanders by not using .io domains? If not, what’s the difference between this and all the other horrid shit which goes into the products we all use every day?

                                                            1. 4

                                                              Probably not. But we shouldn’t let the existence of great wrongs overwhelm our ability to address lesser wrongs. That’s just paralysis, or compassion fatigue.

                                                            2. 3

                                                              Ah, my bad. I can’t edit the original comment… stop upvoting me, this is off-topic anyway! :P

                                                              1. 3

                                                                Whereas Saint Helena and Ascention island were uninhabited before european colonization […]

                                                                AIUI Chagos Islands were also uninhabited before European (French) colonisation.

                                                                1. 1

                                                                  I treat the use of a .io domain as a medium-scale negative signal. It doesn’t mean the people involved are definitely racists, but it indicates that they don’t care enough to do a little research. There are plenty of gTLDs to choose from.

                                                              1. 6

                                                                Are there any static tools that can analyze and point these things out? “You’re copying and then returning a reference to that copy” should probably be a check that happens at build time if you enable it..

                                                                1. 3

                                                                  Probably not because it’s possibly desirable, for example, you might not want callers to be able to mutate the original, so you allocate a copy and return a reference to it. If Go had immutability semantics, it might be a different story, but alas…

                                                                  1. 4

                                                                    It’d still help to automatically point these things out! Then the programmer can decide if it’s a good optimization or not.

                                                                    1. 2

                                                                      Oh, I fully agree. I guess I misunderstood your original proposal and was imagining a linter that errored when it found these. But I definitely think it would be cool, totally feasible, and immensely valuable to make an IDE plugin that highlighted these allocation points.

                                                                1. 3

                                                                  Technical details about the implementation, design or operation of social platforms are on-topic. I can have an objective conversation about how a thing works and the details behind it.

                                                                  Discussions about social media habits, current company news and controversy are off-topic. That doesn’t mean they don’t matter (the Twitter situation is absurd and incredibly worrying), but that they aren’t suited to this forum.

                                                                  The technical criteria is relatively straight-forward.

                                                                  1. 3

                                                                    Currently without power for 12 hours. I guess I’ll read.