1. 10

    Good on you. It’s worth mentioning here that Microsoft is going in the other direction. https://www.mercurynews.com/2018/06/19/microsoft-defends-ties-with-ice-amid-separation-outcry/amp/

    1. 3

      In response to questions we want to be clear: Microsoft is not working with U.S. Immigration and Customs Enforcement or U.S. Customs and Border Protection on any projects related to separating children from their families at the border, and contrary to some speculation, we are not aware of Azure or Azure services being used for this purpose. As a company, Microsoft is dismayed by the forcible separation of children from their families at the border.

      Maybe I’m missing something, but it seems they are going in the exact same direction…

      1. 6

        It’s a very confusing article; my best guess is that they are working with ICE, but not on “projects related to separating children from their families at the border”.

        1. 10

          And just because Microsoft isn’t directly helping, they are still helping. That nuance is discussed in OP’s article - any support to an morally corrupt institution is unacceptable, even if it is indirect support.

          1. 7

            But that perspective is very un-nuanced. Is everything ICE does wrong? It’s a large organization. What if the software the company that @danielcompton denied service to is actually just trying to track down violent offenders that made it across the border? Or drug trafficking?

            To go even further, by your statement, Americans should stop paying their taxes. Are you advocating that?

            1. 17

              ICE is a special case, and deserves to be disbanded. It’s a fairly new agency, and its primary mission is to be a Gestapo. So yes, very explicitly, everything ICE does is wrong.

              1. 3

                On what ground and with which argument can you prove your statement? I mean, there is probably an issue with how it’s run, but the whole concept of ICE doesn’t sound that wrong to me.

                1. 13

                  From https://splinternews.com/tear-it-all-down-1826939873 :

                  The thing that is so striking about all three items is not merely the horror they symbolize. It is how easy it was to get all of these people to play their fascistic roles. The Trump administration’s family separation rule has not even been official policy for two months, and yet look at where we are already. The Border Patrol agent is totally unperturbed by the wrenching scenes playing out around him. The officers have sprung to action with a useful lie to ward off desperate parents. Nielsen, whom the New Yorker described in March as “more of an opportunist than an ideologue” and who has been looking to get back into Donald Trump’s good graces, is playing her part—the white supremacist bureaucrat more concerned with office politics than basic morality—with seeming relish. They were all ready.

                  I’m going to just delegate all arguments to that link, basically, with a comment that of it’s not exceedingly obvious, then I probably can’t say anything that would persuade you. Also, this is all extremely off-topic for this forum, but, whatevs.

              2. 10

                There’s always a nuance, sure. Every police force ever subverted for political purposes was still continuing to fight petty crime, prevent murders and help old ladies cross the street. This always presented the regimes a great way to divert criticism, paint critics as crime sympathisers and provide moral leeway to people working there and with them.

                America though, with all its lip service to small government and self reliance was the last place I expected that to see happening. Little did I know!

                1. 5

                  Is everything ICE does wrong? It’s a large organization.

                  Just like people, organizations should be praised for their best behaviors and held responsible for their worst behaviors. Also, some organizations wield an incredible amount of power over people and can easily hide wrongdoing and therefore should be held responsible to the strictest standard.

                  1. 8

                    Its worth pointing out that ICE didn’t exist 20 years ago. Neither, for that matter did the DHS (I was 22 when that monster was born). “Violent offenders” who “cross the border” will be tracked down by the same people who track down citizen “violent offenders” ie the cops (what does “violent offender” even mean? How do we who these people are? how will we know if they’re sneaking in?) Drug trafficking isn’t part of ICEs institutional prerogative in any large, real sense, so its not for them to worry about? Plenty of americans, for decades, have advocated tax resistance precisely as a means to combat things like this. We can debate its utility but it is absolutely a tactic that has seen use since as far as I know at least the Vietnam war. Not sure how much nuance is necessary when discussing things like this. Doesn’t mean its open season to start dropping outrageous nonsense, but institutions which support/facilitate this in any way should be grounds for at the very least boycotts.

                    1. 5

                      Why is it worth pointing out it didn’t exist 20 years ago? Smart phones didn’t either. Everything starts at some time.

                      To separate out arguments, this particular subthread is in response to MSFT helping ICE, but the comment I responded to was referring to the original post, which only refers to “border security”. My comment was really about the broader aspect but I phrased it poorly. In particular, I think the comment I replied to which states that you should not support anything like this indirectly basically means you can’t do anything.

                      1. 5

                        Its worth pointing out when it was founded for a lot of reasons; what were the conditions that led to its creation? Were they good? Reasonable? Who created it? What was the mission originally? The date is important because all of these questions become easily accessible to anyone with a web browser and an internet connection, unlike, say, the formation of the FBI or the origins of Jim Crow which while definitely researchable on the net are more domains of historical research. Smart phones and ethnic cleansing however, not so much in the same category.

                        1. 4

                          If you believe the circumstances around the formation of ICE are worth considering, I don’t think pointing out the age of the institution is a great way to make that point. It sounds more like you’re saying “new things are inherently bad” rather than “20 years ago was a time with a lot of politically questionable activity” (or something along those lines).

                          1. 8

                            dude, read it however you want, but pointing out that ICE is less than 20 years old, when securing a border is a foundational issue, seems like a perfect way to intimate that this is an agency uninterested in actual security and was formed expressly to fulfill a hyper partisan, actually racist agenda. Like, did we not have border security or immigration services or customs enforcement prior to 2002/3? Why then? What was it? Also, given that it was formed so recently, it can be unformed, it can be dismantled that much easier.

                            1. 1

                              I don’t understand your strong reaction here. I was pointing out that if your goal was to communicate something, just saying it’s around 20 years old didn’t seem to communicate what you wanted to me. Feel free to use that feedback or not use it.

                    2. 2

                      In addition, I bet the ICE is using Microsoft Windows and probably Office too.

                      1. 1

                        That’s a great point, and no I don’t advocate for all Americans to stop paying taxes.

                      2. 0

                        any support to an morally corrupt institution is unacceptable, even if it is indirect support

                        A very interesting position. It just requires you to stop using any currency. ;-)

                        1. 3

                          No, it requires you to acknowledge that using any currency is unacceptable.

                          Of course not using any currency is also unacceptable. When faced with two unacceptable options, one has to choose one. Using the excuse “If I follow my ethics I can never do anything” is just a lazy way to never think about ethics. In reality everything has to be carefully considered and weighed on a case by case basis.

                          1. 1

                            Of course not using any currency is also unacceptable.

                            Why? Currency is just a tool.

                            Using the excuse “If I follow my ethics I can never do anything” is just a lazy way to never think about ethics.

                            I completely agree.
                            Indeed I think that we can always be ethical, but we should look beyond the current “public enemy”, be it Cambridge Analytica or ICE. These are just symptoms. We need to cure the disease.

                1. 31

                  at this point most browsers are OS’s that run (and build) on other OS’s:

                  • language runtime - multiple checks
                  • graphic subsystem - check
                  • networking - check
                  • interaction with peripherals (sound, location, etc) - check
                  • permissions - for users, pages, sites, and more.

                  And more importantly, is there any (important to the writers) advantage to them becoming smaller? Security maybe?

                  1. 11

                    Browsers rarely link out the system. FF/Chromium have their own PNG decodes, JPEG decodes, AV codecs, memory allocators or allocation abstraction layers, etc. etc.

                    It bothers me everything is now shipping as an electron app. Do we really need every single app to have the footprint of a modern browser? Can we at least limit them to the footprint of Firefox2?

                    1. 10

                      but if you limit it to the footprint of firefox2 then computers might be fast enough. (a problem)

                      1. 2

                        New computers are no longer faster than old computers at the same cost, though – moore’s law ended in 2005 and consumer stuff has caught up with the lag. So, the only speed-up from replacement is from clearing out bloat, not from actual hardware improvements in processing speed.

                        (Maybe secondary storage speed will have a big bump, if you’re moving from hard disk to SSD, but that only happens once.)

                        1. 3

                          moore’s law ended in 2005 and consumer stuff has caught up with the lag. So, the only speed-up from replacement is from clearing out bloat, not from actual hardware improvements in processing speed.

                          Are you claiming there have been no speedups due to better pipelining, out-of-order/speculative execution, larger caches, multicore, hyperthreading, and ASIC acceleration of common primitives? And the benchmarks magazines post showing newer stuff outperforming older stuff were all fabricated? I’d find those claims unbelievable.

                          Also, every newer system I had was faster past 2005. I recently had to use an older backup. Much slower. Finally, performance isn’t the only thing to consider: the newer, process nodes use less energy and have smaller chips.

                          1. 2

                            I’m slightly overstating the claim. Performance increases have dropped to incremental from exponential, and are associated with piecemeal attempts to chase performance increase goals that once were a straightforward result of increased circuit density through optimization tricks that can only really be done once.

                            Once we’ve picked all the low-hanging fruit (simple optimization tricks with major & general impact) we’ll need to start seriously milking performance out of multicore and other features that actually require the involvement of application developers. (Multicore doesn’t affect performance at all for single-threaded applications or fully-synchronous applications that happen to have multiple threads – in other words, everything an unschooled developer is prepared to write, unless they happen to be mostly into unix shell scripting or something.)

                            Moore’s law isn’t all that matters, no. But, it matters a lot with regard to whether or not we can reasonably expect to defend practices like electron apps on the grounds that we can maintain current responsiveness while making everything take more cycles. The era where the same slow code can be guaranteed to run faster on next year’s machine without any effort on the part of developers is over.

                            As a specific example: I doubt that even in ten years, a low-end desktop PC will be able to run today’s version of slack with reasonable performance. There is no discernible difference in its performance between my two primary machines (both low-end desktop PCs, one from 2011 and one from 2017). There isn’t a perpetually rising tide that makes all code more performant anymore, and the kind of bookkeeping that most web apps spend their cycles in doesn’t have specialized hardware accelerators the way matrix arithmetic does.

                            1. 5

                              Performance increases have dropped to incremental from exponential, and are associated with piecemeal attempts to chase performance increase goals that once were a straightforward result of increased circuit density through optimization tricks that can only really be done once.

                              I agree with that totally.

                              “Multicore doesn’t affect performance at all for single-threaded applications “

                              Although largely true, people often forget a way multicore can boost single-threaded performance: simply letting the single-threaded app have more time on CPU core since other stuff is running on another. Some OS’s, esp RTOS’s, let you control which cores apps run on specifically to utilize that. I’m not sure if desktop OS’s have good support for this right now, though. I haven’t tried it in a while.

                              “There isn’t a perpetually rising tide that makes all code more performant anymore, and the kind of bookkeeping that most web apps spend their cycles in doesn’t have specialized hardware accelerators the way matrix arithmetic does.”

                              Yeah, all the ideas I have for it are incremental. The best illustration of where rest of gains might come from is Cavium’s Octeon line. They have offloading engines for TCP/IP, compression, crypto, string ops, and so on. On rendering side, Firefox is switching to GPU’s which will take time to fully utilize. On Javascript side, maybe JIT’s could have a small, dedicated core. So, there’s still room for speeding Web up in hardware. Just not Moore’s law without developer effort like you were saying.

                    2. 9

                      Although you partly covered it, I’d say “execution of programs” is good wording for JavaScript since it matches browser and OS usage. There’s definitely advantages to them being smaller. A guy I knew even deleted a bunch of code out of his OS and Firefox to achieve that on top of a tiny, backup image. Dude had a WinXP system full of working apps that fit on one CD-R.

                      Far as secure browsers, I’d start with designs from high-assurance security bringing in mainstream components carefully. Some are already doing that. An older one inspired Chrome’s architecture. I have a list in this comment. I’ll also note that there were few of these because high-assurance security defaulted on just putting a browser in a dedicated partition that isolated it from other apps on top of security-focused kernels. One browser per domain of trust. Also common were partitioning network stacks and filesystems that limited effect of one partition using them on others. QubesOS and GenodeOS are open-source software that support these with QubesOS having great usability/polish and GenodeOS architecturally closer to high-security designs.

                      1. 6

                        Are there simpler browsers optimised for displaying plain ol’ hyperlinked HTML documents, and also support modern standards? I don’t really need 4 tiers of JIT and whatnot for web apps to go fast, since I don’t use them.

                        1. 12

                          I’ve always thought one could improve on a Dillo-like browser for that. I also thought compile-time programming might make various components in browsers optional where you could actually tune it to amount of code or attack surface you need. That would require lots of work for mainstream stuff, though. A project like Dillo might pull it off, though.

                          1. 10
                            1. 3

                              Oh yeah, I have that on a Raspberry Pi running RISC OS. It’s quite nice! I didn’t realise it runs on so many other platforms. Unfortunately it only crashes on my main machine, I will investigate. Thanks for reminding me that it exists.

                              1. 2

                                Fascinating; how had I never heard of this before?

                                Or maybe I had and just assumed it was a variant of suckless surf? https://surf.suckless.org/

                                Looks promising. I wonder how it fares on keyboard control in particular.

                                1. 1

                                  Aw hell; they don’t even have TLS set up correctly on https://netsurf-browser.org

                                  Does not exactly inspire confidence. Plus there appears to be no keyboard shortcut for switching tabs?

                                  Neat idea; hope they get it into a usable state in the future.

                                2. 1

                                  AFAIK, it doesn’t support “modern” non-standards.

                                  But it doesn’t support Javascript either, so it’s way more secure of mainstream ones.

                                3. 8

                                  No. Modern web standards are too complicated to implement in a simple manner.

                                  1. 3

                                    Either KHTML or Links is what you’d like. KHTML would probably be the smallest browser you could find with a working, modern CSS, javascript and HTML5 engine. Links only does HTML <=4.0 (including everything implied by its <img> tag, but not CSS).

                                    1. 2

                                      I’m pretty sure KHTML was taken to a farm upstate years ago, and replaced with WebKit or Blink.

                                      1. 6

                                        It wasn’t “replaced”, Konqueror supports all KHTML-based backends including WebKit, WebEngine (chromium) and KHTML. KHTML still works relatively well to show modern web pages according to HTML5 standards and fits OP’s description perfectly. Konqueror allows you to choose your browser engine per tab, and even switch on the fly which I think is really nice, although this means loading all engines that you’re currently using in memory.

                                        I wouldn’t say development is still very active, but it’s still supported in the KDE frameworks, they still make sure that it builds at least, along with the occasional bug fix. Saying that it was replaced is an overstatement. Although most KDE distributions do ship other browsers by default, if any, and I’m pretty sure Falkon is set to become KDE’s browser these days, which is basically an interface for WebEngine.

                                    2. 2

                                      A growing part of my browsing is now text-mode browsing. Maybe you could treat full graphical browsing as an exception and go to the minimum footprint most of the time…

                                  2. 4

                                    And more importantly, is there any (important to the writers) advantage to them becoming smaller? Security maybe?

                                    user choice. rampant complexity has restricted your options to 3 rendering engines, if you want to function in the modern world.

                                    1. 3

                                      When reimplementing malloc and testing it out on several applications, I found out that Firefox ( at the time, I don’t know if this is still true) had its own internal malloc. It was allocating a big chunk of memory at startup and then managing it itself.

                                      Back in the time I thought this was a crazy idea for a browser but in fact, it follows exactly the idea of your comment!

                                      1. 3

                                        Firefox uses a fork of jemalloc by default.

                                        1. 2

                                          IIRC this was done somewhere between Firefox 3 and Firefox 4 and was a huge speed boost. I can’t find a source for that claim though.

                                          Anyway, there are good reasons Firefox uses its own malloc.

                                          Edit: apparently I’m bored and/or like archeology, so I traced back the introduction of jemalloc to this hg changeset. This changeset is present in the tree for Mozilla 1.9.1 but not Mozilla 1.8.0. That would seem to indicate that jemalloc landed in the 3.6 cycle, although I’m not totally sure because the changeset description indicates that the real history is in CVS.

                                      2. 3

                                        In my daily job, this week I’m working on patching a modern Javascript application to run on older browsers (IE10, IE9 and IE8+ GCF 12).

                                        The hardest problems are due the different implementation details of same origin policy.
                                        The funniest problem has been one of the used famework that used “native” as variable name: when people speak about the good parts in Javascript I know they don’t know what they are talking about.

                                        BTW, if browser complexity address a real problem (instead of being a DARPA weapon to get control of foreign computers), such problem is the distribution of computation among long distances.

                                        Such problem was not addressed well enough by operating systems, despite some mild attempts, such as Microsoft’s CIFS.

                                        This is partially a protocol issue, as both NFS, SMB and 9P were designed with local network in mind.

                                        However, IMHO browsers OS are not the proper solution to the issue: they are designed for different goals, and they cannot discontinue such goals without loosing market share (unless they retain such share with weird marketing practices as Microsoft did years ago with IE on Windows and Google is currently doing with Chrome on Android).

                                        We need better protocols and better distributed operating systems.

                                        Unfortunately it’s not easy to create them.
                                        (Disclaimer: browsers as platforms for os and javascript’s ubiquity are among the strongest reasons that make me spend countless nights hacking an OS)

                                      1. 5

                                        It’s not for everyone. It really is not. Some people prefer having other people around, some don’t.

                                        I understand why they’re saying this, but it makes me wonder… how badly to you have to need to have other people around for it to be worth putting up with a commute?

                                        Say you sleep 8h a day and work 8h a day; that leaves 8h to spend on yourself that you haven’t allocated to your employer or the demands of your body. If you travel an hour each way for your commute, are you really so reliant on having other people around that it’s worth sacrificing 25% of your hours for it, not to mention the residual wear-and-tear on your mental health that driving in a city incurs?

                                        We’ve normalized the daily commute to the extent that a lot of people don’t even question it, but when you sit down and look at the numbers they’re frankly somewhat horrifying; we consider it normal to sacrifice a quarter of your life just for this anachronistic practice.

                                        1. 8

                                          We’ve normalized the daily commute to the extent that a lot of people don’t even question it, but when you sit down and look at the numbers they’re frankly somewhat horrifying; we consider it normal to sacrifice a quarter of your life just for this anachronistic practice.

                                          No doubt a lot of people are in that situation, but working in the office doesn’t automatically mean a miserable commute. I have a ~15 minute bike ride into work, and it’s awesome. Some days the commute into the office is the best part of my work day.

                                          On the flip side, I pay a bit higher rent to live in the city (Boulder) instead of further away in the suburbs. It’s totally worth it for me, but I understand why it’s not for everybody.

                                          1. 7

                                            I get this sentiment, but it only really covers car commuters. a longish bike commute can be nice, and sometimes subway or train commute time is all the time a person has to themselves.

                                            that said, I work from home and have no desire to go back, even though I never commuted by car.

                                          1. 9

                                            I have been doing remote work for 5 years and I think the “work room for work” and “don’t work in your pyjamas” rules are overrated. I am doing just fine typing this from my couch while waiting for a build to finish.

                                            1. 8

                                              For my first two years working remotely I had a dedicated office in my house. I think that helped me to build the discipline and boundaries necessary.

                                              6 years in, I can work effectively and with balance in about any situation.

                                              1. 5

                                                Same here; I think the rules for “transitioning from office-based work to remote work” are very different from “effective remote work for someone who’s used to it”.

                                                1. 1

                                                  I found out that when my home office became my work office my new home office was the coffee shop after working hours.

                                                2. 1

                                                  I work from home about 2 days a week (at my last job it was 3 to 4). I often didn’t shower until the end of my work day and I’ve never been in a place large enough to have a separate work room.

                                                  I do run multiple X servers. Ctrl+Alt+F8 is my work X11 instance and I have a different username for it. My git repos have my work/home laptops as each others remotes so I can push branches back and fourth without touching origin. (I often squash some of those intermediate commits before creating a real origin pull request).

                                                  I often find my time at home is way more productive. Open work spaces such and even my fancy noise cancelling headphones can’t drown out some of the chatter around me.

                                                1. 3

                                                  I like the truly p2p aspect here, but it’s a big red flag that SSB seems to refer to a specific node.js implementation and not to a wider protocol with multiple implementations. I did a bit of digging and couldn’t find anything, but maybe I missed something?

                                                  1. 4

                                                    The protocol is defined: https://ssbc.github.io/scuttlebutt-protocol-guide/

                                                    rust client: https://crates.io/crates/ssb-client

                                                    Other versions(go, c, etc) are being worked on as well.

                                                    1. 3

                                                      A pity the signing / marshalling algorithm is such a PITA to implement (the signature must be the last key/value pair in the JSON document, and it signs the bytes of the document up to that point).

                                                      1. 2

                                                        and order has to be maintained. Indeed. Not sure why they designed it that way.

                                                        1. 1

                                                          At least being able to produce a known canonical order is important for signing. And the signature cannot be part of that which it signs.

                                                          1. 1

                                                            Oh yeah - the canonical form is nonexistent, you just sign whatever bytes you’ve written so far.

                                                            If you were signing a message body (eg a json string value) it would be different - but as it stands relays have to implement white space compatible json marshalling with the sender.

                                                            1. 1

                                                              duh! sorry, you are right! asleep at the wheel apparently when I wrote that :)

                                                        2. 2

                                                          Having alternate clients is a good start, but is it still true that there’s only one server implementation?

                                                          1. 1

                                                            I believe someone is working on a go implementation, but I don’t know where the code may be, and I’m not on my SSB machine to try and find it. But there is definitely only one that’s usable at the moment, that I’m aware of…

                                                            and I agree, it’s a good start. It’s also not smartphone/mobile ready yet either, but work is happening on that front as well.

                                                      1. 4

                                                        Ultimately the control and customizability enjoyed by the mailing list style of development comes from diverse tools built for open standards. […] SMTP has an RFC.

                                                        SMTP has an RFC, but sadly it’s not particularly relevant. We live in a world where Google and a handful of other companies have a near-monopoly on the protocol, and if you want to run a server that can actually send mail to the people who use Google, you have to play by their ever-shifting rules. If they decide to blacklist you, there’s no accountability or appeals process to get your server functional again.

                                                        As much as I want this to happen (because being able to choose your own client is really wonderful), the lack of a realistic ability to choose your server kills it for me.

                                                        1. 5

                                                          Finally a redesign! Looks great, too.

                                                          1. 5

                                                            Looks an awful lot like Slack with a different colour scheme.

                                                            1. 1

                                                              A different color scheme and a governing body that isn’t hell-bent on destroying anything standing in their way, I guess.

                                                              1. 1

                                                                Sure, I’m not exactly in love with Slack either. My point still stands: calling it a redesign is a bit strong.

                                                          1. 11

                                                            You’re not a full-stack developer until you design your own instruction architecture and written a compiler for it.

                                                            1. 5

                                                              This is why I hate the meme: it turns a web developer into a “full-stack” developer when former made sense but later conflicts with previous meaning of software stack. It was the whole setup. They watered the term down much like crypto is cryptocurrencies instead of cryptography.

                                                              True full-stack developers include Chuck Moore, Niklaus Wirth, and the folks that did NAND2Tetris.

                                                              1. 4

                                                                I think taking “full-stack” to mean “well-versed in all relevant technologies the engineering team will be customizing” is a lot less prone to strawman attacks.

                                                                1. 3

                                                                  I don’t think it even needs to include “well-versed”. “Okay at using them” is good enough for me.

                                                                  1. 2

                                                                    There are plenty of ways to convey that idea without the whole “denying the existence of over half the levels of abstraction you build upon” part.

                                                                  2. 3

                                                                    With all due respect to Wirth and Moore, who have both done amazing work, have either of them spent time in the last decade building with modern web technologies? Otherwise we can’t call them full stack developers ;)

                                                                    1. 1

                                                                      Damnit, you got me! Lmao. Ok, pre-Web, full-stack developers. (pauses) That should be OK.

                                                                      Now, we need some full-stack developers with Web. I’d start with people who have done hardware and at least RTOS projects. Then, look to see if they’ve done the web stuff.

                                                                1. 3

                                                                  For a good laugh, look here at this PR.

                                                                  1. 17

                                                                    It’s both easier and more polite to ignore someone you think is being weird in a harmless way. Pointing and laughing at a person/community is the start of brigading. Lobsters isn’t big enough to be competent at this kind of evil, but it’s still a bad thing to try.

                                                                    1. 6

                                                                      https://github.com/tootsuite/mastodon/pull/7391#issuecomment-389261480

                                                                      What other project has its lead calmly explaining the difference between horse_ebooks and actual horses to clarify a pull request?

                                                                      1. 3

                                                                        And yet, he manages to offend someone.

                                                                        1. 4

                                                                          Can someone explain the controversy here? I legitimately do not understand. Is the individual claiming to be a computer and a person? Or do they just believe that someday some people will be computers and desire to future-proof the messages (as it alluded to in another comment)?

                                                                          1. 7

                                                                            This person is claiming they think of themselves as a robot, and is insulted at the insinuation that robots are not people.

                                                                            Posts like this remind me of just how strange things can get when you connect most of the people on the planet.

                                                                            1. 6

                                                                              So, I tried contacting the author:

                                                                              http://mynameiser.in/post/174391127526/hi-my-name-is-jordi-im-also

                                                                              Looks like she believes she’s a robot in the transhumanist sense. I thought transhumanists thought they would be robots some day, not that they already are robots now.

                                                                              I tried reading through her toots as she suggested, but it was making me feel unhappy, because she herself seems very unhappy. She seems to be going through personal stuff like breaking up from a bad relationship or something.

                                                                              I still don’t understand what is going on and what exactly does she mean by saying she’s a robot. Whatever the reason, though, mocking her is counterproductive and all around a dick thing to do. Her request in the PR was denied, which I think is reasonable. So “no” was said to something, contrary to what zpojqwfejwfhiunz said elsewhere.

                                                                              1. 6

                                                                                As someone who’s loosely in touch with some of the transhumanist scene, her answer makes no sense and was honestly kind of flippant and rude to you.

                                                                                That said, it sounds like she’s been dealing with a lot of abuse lately from the fact that this Github thread went viral. I’m not surprised, because there are certain people who will jump on any opportunity to mock someone like her in an attempt to score points with people who share their politics. In this case she’s being used as a proxy to discredit the social justice movement, because that’s what she uses to justify her identity.

                                                                                Abuse is never okay and cases like this require some pretty heavy moderation so that they don’t spiral out of control. But they also require a pretty firm hand so that you don’t end up getting pulled into every crazy ideascape that the internet comes up with. If I was the moderator of this GitHub thread, I would have told her, “Whatever it is you’re trying to express when you say ‘I am a robot,’ the Mastodon [BOT] flag is not the right way to do it.” End of discussion, and if anyone comes around to try to harass her, use the moderator powers liberally so as not to veer off-topic.

                                                                                Then you could get into the actual meat of the discussion at hand, which was things like “If I have a bot that reposts my Twitter onto Mastodon, could that really be said to ‘not represent a person’? Maybe another wording would be better.”

                                                                                In the end she’s just a girl who likes to say she’s a robot on the internet. If that bugs you or confuses you, the nicest thing you can do is just take it like that and just ignore her.

                                                                                1. 8

                                                                                  I don’t think she was rude to me. She’s just busy with other things and has no obligation to respond to every rando who asks her stuff. I’m thankful she answered me at all. It’s a bit of effort, however slight, to formulate a response for anyone.

                                                                                  1. 3

                                                                                    I mean, I can kind of see where you’re coming from, but I’d still argue that starting with “You should develop your software in accordance to my unusual worldview”, followed by flippantly refusing to actually explain that worldview when politely asked, is at least not nice.

                                                                                    Regardless, that might justify a firm hand, but not harassment, because nothing justifies harassment.

                                                                                    1. 2

                                                                                      I see this point of view too. But I’m also just some rando on the internet. She doesn’t owe me anything, If someone needed to hear her reasons, that would have been the Mastodon devs. They handled it in a different way, and I think they handled it well, overall.

                                                                                      1. 1

                                                                                        I’m inclined to agree on that last point, though it’s hard to say for sure given all the deleted comments.

                                                                                        And I do hope she can work through whatever she’s going through.

                                                                                2. 4

                                                                                  I don’t know, personally, anyone who identifies as a robot, but I do know a bunch of people who identify as cyborgs. Some of it’s transhumanist stuff – embedding sensors under the skin, that sort of thing. But much of it is reframing of stuff we don’t think of that way: artificial limbs, pacemakers, etc, but also reliance on smartphones, google glass or similar, and other devices.

                                                                                  From that standpoint, robot doesn’t seem a stretch at all.

                                                                                  That said, I agree that the feature wasn’t intended to be (and shouldn’t be) a badge. But someone did submit a PR to make the wording more neutral and inclusive, and that was accepted (#7507), and I think that’s a positive thing.

                                                                                  1. 2

                                                                                    Actually, that rewording even seems clearer to me regardless of whether someone calls themself a robot or not. “Not a person” sounds a bit ambiguous; because you can totally mechanically turk any bot account at any time, or the account could be a mirror of a real person’s tweets or something.

                                                                                  2. 1

                                                                                    That’s unfortunate. It’s always difficult to deal with these things. I, too, understood transhumanism to be more of a future thing, but apparently at least some people interpret it differently. Thanks for following up where I was too lazy!

                                                                                  3. -6

                                                                                    American ‘snowflake’ phenomenon. The offendee believes that the rest of the world must fully and immediately capitulate to whatever pronoun they decided to apply to themselves that week, and anything other than complete and unquestioning deference is blatant whatever-ism.

                                                                                    1. 16

                                                                                      Person in question is Brazilian, but don’t let easily checked facts get in the way of your narrative.

                                                                                      1. -5

                                                                                        Thanks for the clarification. Ugh, the phenomenon is spreading. I hope it’s not contagious. Should we shut down Madagascar? :-D

                                                                                        1. 3

                                                                                          TBH I think it’s just what happens when you connect a lot of people who speak your language to the internet, and the USA had more people connected than elsewhere.

                                                                                          1. 0

                                                                                            It definitely takes a lot of people to make a world. To paraphrase Garcia, “what a long strange trip it will be”.

                                                                                      2. 3

                                                                                        She says “she” is a fine pronoun for her.

                                                                                  4. 1

                                                                                    It’s wonderful. :)

                                                                                  5. 3

                                                                                    What is happening there? I can’t tell if this is satire or reality

                                                                                    1. 2

                                                                                      That’s pretty common with Mastodon; there’s an acrid effluence that tinges the air for hours after it leaves the room. That smell’s name? Never saying no to anyone.

                                                                                      1. 12

                                                                                        Seems “never saying no to anyone” has also been happening to lobster’s invite system :(

                                                                                        People here on lobsters used to post links to content they endorse and learn something from and want to share in a positive way. Whatever your motivation was to submit this story, it apparently wasn’t that…

                                                                                        1. 4

                                                                                          The person who shared the “good laugh” has been here twice as long as you have.

                                                                                          1. 1

                                                                                            I’m absolutely not saying you’re wrong, but I’m pretty confident there’s something to be learned here. I may not necessarily know what the lesson is yet, but this is not the first or the last situation of this kind to present itself in software development writ large.

                                                                                    1. 6

                                                                                      The fact that Guix is written in Scheme is a big appeal for me as opposed to Nix’s custom language. I preferred Nix as a way to support a standard environment (it has more packages), but this new feature makes the distribution of fat binaries a lot simpler than the other solutions. Less is more!

                                                                                      1. 1

                                                                                        FWIW, I tried to dissuade Gentoo from using Bash and Nix from creating their own language, both at basically around the 0.0.1 timeframe. I guess I am not terribly persuasive. Guix and Nix should merge. The separation is kinda ridiculous.

                                                                                        1. 3

                                                                                          Guix and Nix should merge.

                                                                                          Seems like a great idea until you consider Guix’s commitment to freedom, and as a result blobless experience. Unless NixOS adopted that stance as well, the philosophical incompatibility would doom it. Nix adopting guile is more likely, I’d say, especially since guile did have a lua like front end that might make it a bit easier to slowly migrate everything…

                                                                                          1. 2

                                                                                            It is similar to vegetarian and non-vegetarian, one can have a blobless, freedom filled diet and then occasionally should they choose, sprinkle some bin01bits on top.

                                                                                            1. 1

                                                                                              I upvoted, but as a vegan, I kind of take offense to vegetarians (in a half hearted way, of course), who only “half” commit. But, I recognize that not everyone does it for the animals (even vegans).

                                                                                              But, why would you go out of your way to run a completely free system, only to sprinkle some blobbits on it? That completely invalidates the point! That blob, is where the nasty things that disrespect your freedoms are.

                                                                                              1. 1

                                                                                                you wouldn’t run it for the freeness, but supposedly guix has some other strengths as well

                                                                                            2. 1

                                                                                              I didn’t realize Guix forbade blobs (though I’m not surprised, given its origin). Is there a with-blob version of Guix? I didn’t see one, but that doesn’t necessarily mean no…

                                                                                              1. 1

                                                                                                Obviously, you can acquire and install the blobs yourself, and I’m sure there are blog posts around in support of that. But, yeah, it’s like Trisquel, gNewsense, and the others that have similar governance for totally-libre.

                                                                                                1. 1

                                                                                                  I haven’t used it in a long time, but I thought that you could point Guix at the package store from Nix, similar to how you can point Debian at apt repos from other sources. You would have to be really careful with this; I remember early on getting burned because I asked Nix to install Firefox and it gave me Firefox-with-adobe-flash which was pretty gross.

                                                                                              2. 3

                                                                                                Ha! Well, there must be an alternate universe where you managed to convince them ;) I think they do borrow some ideas and even some code (I remember a FOSDEM talk from Ludovic last year mentioning that). Implementation wise, I would suspect Guix has the upper hand, but the restriction to GNU packages is problematic not you need specific packages.

                                                                                            1. 15

                                                                                              It’s nice people are working on discovering these things. I wish they didn’t have to make a big publicity stunt out of it every time though.

                                                                                              1. 3

                                                                                                I’m sure there do exist some GPG users who have images set to download automatically, but the idea that every GPG user “must take action now” is absurd.

                                                                                                1. 1

                                                                                                  If I understand this well, if someone that has history of exchanges with you doesn’t act, then he might leak some informations that you exchanged together. That’s why if everybody stops using it temporarily, it might help everybody.

                                                                                                  1. 6

                                                                                                    Proper use of PGP assumes trust both in every participant, in the hardware/software involved, and in the OPSEC skill of every corespondent. This “vulnerability” changes nothing. If you used PGP with a client that automatically downloaded imaged (extremely unlikely), you had been doing it wrong already.

                                                                                                  2. 1

                                                                                                    That’s not necessarily required – Thunderbird preloads content, but does not display it. So you’d be vulnerable there, too.

                                                                                                    1. 2

                                                                                                      OK, then Thunderbird is broken and badly needs to be fixed. This is true regardless of whether GPG is used or not.

                                                                                                      1. 2

                                                                                                        Thunderbird does not automatically download remote content: https://support.mozilla.org/en-US/kb/remote-content-in-messages. It does download entire messages, including attachments; but I would be very surprised if this were not common MUA behavior.

                                                                                                1. 6

                                                                                                  I have a hard time in understanding how decentralized systems are better at protecting me from abusive government agencies, groups, and even individuals? With big online companies, it is not perfect but, as a citizen I have more tools to ask for accountability.

                                                                                                  And even for daily stuff, how can I trust “decentralized” systems run by some individual who may or may not be good at following security best practices etc. Again, with big online companies, again it is not perfect but, I have more power as a citizen.

                                                                                                  I think centralized systems scale better when it comes to power / responsibility balance.

                                                                                                  I vote against decentralizing lobster but happy to read more counter arguments.

                                                                                                  1. 3

                                                                                                    It’s more about people outside the US. Big Corps like Reddit or Google basically follow the US law and the US law mostly protects only US citizens.

                                                                                                    Instances in the fediverse follow local law (which is why usually people don’t federate with Japanese instances that allow NSFW material) which is great if the US law is silly in your culture/country.

                                                                                                    The easy answer is simply that you pick a community, not a corp for your server. If you pick a corp for your server you should pick on in the same legislation as you are in.

                                                                                                    1. 6

                                                                                                      It’s even good for people within the US; for instance, I can pick a fediverse server in Germany and know that the admins will be required by law to ban nazis even though I don’t live in Germany.

                                                                                                      1. 3

                                                                                                        I agree that federating big platform like reddit, Twitter, or YouTube makes sense because these platforms host multiple communities with conflicting norms and expectations regarding privacy, speech, etc. In an ideal scenario, individual reddit nodes could choose to omit subreddits they found objectionable or implement their own local censorship regimes (a la USENET).

                                                                                                        That said, I am inclined to agree with ctulek that lobste.rs is best suited to central hosting. In scale, lobste.rs is more like an individual subreddit than the reddit platform. We pick our community each time we choose lobste.rs over other forums discussing similar topics.

                                                                                                        1. 1

                                                                                                          I agree, yeah, Lobsters is more like a single sub but it could be useful if lobste.rs could federate…

                                                                                                    1. 11

                                                                                                      Future Change Warning: Proposed Federal censorship regulations may prohibit us from giving you information about the possibility of calling this function. We would be required to say that this is not an acceptable way of terminating a program.

                                                                                                      The joke in question is not about abortion, it’s about censorship.

                                                                                                      The GNU project is a political movement, not a safe and clean firm from Silicon Valley.
                                                                                                      As such, the GNU documentation must be NSFW.

                                                                                                      Everybody can fork the documentation (or even the library) so if you don’t like the joke you can remove it yourself. But I think that his veto, this time, is perfectly coherent with the GNU philosophy.

                                                                                                      The free in “free software” is not just a matter of price. And censorship fights freedom.

                                                                                                      1. 9

                                                                                                        It’s also very unclear to anyone not living in the US that it’s even a joke. To people coming from other countries or cultural backgrounds it just seems like a bizarre disclaimer and maybe a warning against actually using that functionality.

                                                                                                        1. 5

                                                                                                          I am not from the US and it’s obvious to me that it is indeed a joke. A very funny one in fact.

                                                                                                        2. 3

                                                                                                          The GNU project is a political movement, not a safe and clean firm from Silicon Valley. As such, the GNU documentation must be NSFW.

                                                                                                          Huh? Not being a company in SV means you must have NSFW content in your documentation? Could you walk me through the logic of that?

                                                                                                          1. 1

                                                                                                            Could you walk me through the logic of that?

                                                                                                            Oh it’s very simple.
                                                                                                            I wrote: “The GNU project is a political movement […] As such, the GNU documentation must be NSFW.”

                                                                                                            Now the point is: what does NSFW means?

                                                                                                            NSFW (Not Safe For Work)
                                                                                                            adj. Initially intendeded as a warning for porn, NSFW is a conventional marker for contents that might affect, in any way, the productivity of a working group, by moving the focus of people from the profit of a company. Not to be confused with NSFC (Not Safe For Children).

                                                                                                            Now imagine the concern of your boss, when she realizes that you are reading a political joke against censorship in software documentation! She might feel unsafe. She might feel the urge to argue that censorship does not affect software, that censorship does not affect developers or even that technical documents have no reason to be censored.
                                                                                                            Worse, the political joke might infect you, and you might infect others collegues in turn.
                                                                                                            How many hours would you subtract from company profit by thinking about freedom?

                                                                                                            Huh? Not being a company in SV…

                                                                                                            Suppose this was happened in a SV company: a developer paid in the six figure finds a similarly political joke in documentation: “After blocking all signals, the slave will keep working until killed. A good worker indeed.”
                                                                                                            Git says that the CEO put the joke in. He don’t want it to be removed. Do you think we would be arguing now?

                                                                                                            Many people raised in such culture argues that “political jokes should not be in the code or manual in any way”.
                                                                                                            I argue that it’s a perfect place for a gentle reminder about the moral responsibilities of programming.

                                                                                                            Indeed the title of the thread is wrong. It should ask: Who protects GNU values?

                                                                                                            You are using Free Software. It’s not safe for Capitalism. By design!

                                                                                                            1. 2

                                                                                                              If that’s your actual goal, I’m surprised you support this joke being in the documentation. There seems to be a reasonable large group of people that just don’t know what to make of a joke they interpret as being about abortion in documentation, another group that think an abortion joke is inappropriate, and at least one more group that think this joke represents some set of meaningful values. If the goal is to communicate something that helps people think question capitalism, this joke doesn’t seem to accomplish that for a lot of people.

                                                                                                              1. 0

                                                                                                                If the goal is to communicate something that helps people think question capitalism, this joke doesn’t seem to accomplish that for a lot of people.

                                                                                                                Aren’t we doing exactly that?

                                                                                                                1. 2

                                                                                                                  Most of what I’ve read in this thread is not about capitalism, it’s about if an abortion joke is stupid or not. I don’t know how that furthers the FSF agenda.

                                                                                                                  1. -2

                                                                                                                    Currently I count 15 occurences of “censorship” and just 9 occurences “abortion” (some of them claiming that the joke is not about it).

                                                                                                                    We are talking about censorship, freedom, governance, accountability and ethics.

                                                                                                                    Tangentially, the fact that people have strong feelings against a political joke in GNU documentation, show how much they unconsciously align to the capitalist view of work: something solely oriented and completely devoted to profit.

                                                                                                                    That’s not the vision of hackers, and for sure not the vision behind Free Software.

                                                                                                                    It’s sad to see people against politics in the GNU manual of a GNU project.
                                                                                                                    It’s like if you say: “Please FSF, give us the code and shut up!”

                                                                                                                    If you prefer carefully hidden politics, you should definitely go for corporate open source.
                                                                                                                    Instead of jokes, you’ll get subtle manipulations that won’t force you to think.

                                                                                                        1. 24

                                                                                                          The title is a little misleading. The author is not against adblocking in the abstract, but is against Adblock Plus, a specific adblocker.

                                                                                                          1. 2

                                                                                                            I think that was done on purpose, because the title wouldn’t have made sense otherwise. For me personally it is click-baity but definitely more tolerable and enjoyable than the standard clickbait titles one sees on the internet.

                                                                                                            1. -2

                                                                                                              The title capitalizes Adblock, which makes it pretty clear that it’s talking about a specific product.

                                                                                                              1. 21

                                                                                                                It wasn’t clear to me. All the other words in the title are capitalized, and “adblock” without qualification usually refers to all extensions which block ads.

                                                                                                                1. 13

                                                                                                                  The title capitalizes all of the words. It’s in title case.

                                                                                                                  1. 10

                                                                                                                    That’s The Most Annoying Thing When Reading American Websites Online

                                                                                                                    1. 0

                                                                                                                      Americans are the only people on the planet who don’t adhere to your capitalization rules?

                                                                                                                      1. 0

                                                                                                                        As far as I know, yes. British, French, Spanish and Portuguese-language sites don’t capitalize everything and it’s such smooth sailing.

                                                                                                              1. 2
                                                                                                                1. 2

                                                                                                                  Love and appimages

                                                                                                                  The copy of Love in my repos was too old and I had never used an appimage before.

                                                                                                                  I was very confused. “There’s nothing for appimage in my repos. Where do I download the tools to mount this?”. Eventually I twigged:

                                                                                                                  $ file EXO_encounter-667-x86_64.AppImage 
                                                                                                                  EXO_encounter-667-x86_64.AppImage: ELF 64-bit LSB executable, ...
                                                                                                                  

                                                                                                                  Love looks interesting, I might give it for my next little project. My self-written ASCII engine became a small nightmare when I ported to Windows, the fact Love takes care of the cross-platform bit is enticing.

                                                                                                                  Sidenote: 12 - 35MB for your game is a sign of the times. Have you ever played Goldeneye 64? It worked with something like 4MB of ram total (including the framebuffer too IIRC). One of these days old crumpets like me will open enough holes in the atmosphere so that all games and programs over a certain size get statistically lost due to solar radiation. We’ll be the ones running around holding floppies and chanting.

                                                                                                                  Understanding the game

                                                                                                                  I was completely confused by the door graphics.

                                                                                                                  All I could see were blue squares with a gap next to them. One that looked like a rover could fit through, but this never worked.

                                                                                                                  It turns out these ‘gaps’ were piston bits holding up the blue ‘floor’ of the doors. It took me well until the end of the game to work this out. Even then things still looked confusing – I had to look for indirect clues like the location of the strange dark bit (above or below the blue bits) and the relative positions of other nearby doors (for multi-door segments).

                                                                                                                  I would have really appreciated a colour difference between ‘up’ and ‘down’ doors. It would have saved me using the Doom “UNGH” method to determine door states.

                                                                                                                  Fun with the game

                                                                                                                  Yes :)

                                                                                                                  For the first half of the game: I felt my every move was ‘correct’ because of the constant text prompts. I’m glad this ended.

                                                                                                                  For the second half everything I did felt like I was breaking the puzzles or perhaps doing things out of order. This felt good.

                                                                                                                  I didn’t use your son’s solution for the last puzzle, instead I drove a rover into the base from the SW corner and shot a laser through a gap in the wall.

                                                                                                                  Tone of the game

                                                                                                                  Held together very strongly by the front, music, story and graphics; as well as other bits of your presentation (eg camera animation). Let down by the gameplay seeming unrelated to all of this, but that’s a hard one to solve.

                                                                                                                  Resizing the window would also break the tone for me because the HUD text and camera were no longer centred.

                                                                                                                  End story was appreciated. Felt rewarding.

                                                                                                                  Misc notes

                                                                                                                  Bug I only noticed at the end: you can warp rovers through walls by ejecting them from the temple when you’re butted up against a wall on your north side.

                                                                                                                  Less fun: camera slower than the rovers. Turn it into a feature, weave it into the story, something about photonics being slower on this planet :D

                                                                                                                  I found that having my kids playtest continually as the game evolved meant that they didn’t see certain flaws; things that were clear to them weren’t obvious to first-time players. (Of course, as the author I expect to be blind to many flaws myself.)

                                                                                                                  Ooh yes, I know that one. Not just games too, all GUIs. I’ve been on both sides of this divide.

                                                                                                                  1. 1

                                                                                                                    Thanks for your feedback! I added a note about needing to chmod the AppImage to the downloads page.

                                                                                                                    12 - 35MB for your game is a sign of the times.

                                                                                                                    I know! I realized 2 hours before the jam ended that the song I chose for the endgame scene was 10 MB on its own! I’m going to replace it but didn’t have time during the jam. I appreciated the fact that I could just eat the size problem since I had bigger problems to deal with at the time, but it was a bit embarrassing.

                                                                                                                    I was completely confused by the door graphics.

                                                                                                                    You’re not the first to say this. I’m going to try animating the opening of the doors as well as adding sound effects; we’ll see if that helps. But I might need to replace the sprites altogether or at least alter them. Maybe as you suggest changing the color would be enough; I’ll see.

                                                                                                                    I also definitely need to work on the scrolling logic for the post-game-jam edition, especially the logic for when it stops scrolling because you reached the edge of the map. I tried making some tweaks to this during the jam but all my “fixes” made things worse in other ways; it’s more subtle than it looks.

                                                                                                                    Glad you enjoyed it!

                                                                                                                    1. 1

                                                                                                                      I know! I realized 2 hours before the jam ended that the song I chose for the endgame scene was 10 MB on its own!

                                                                                                                      Hahaha, that explains it. Glad to see that the rest of the love code and graphics are ~2MB then. I was worried that there were massive overheads.

                                                                                                                      I’m going to try animating the opening of the doors as well as adding sound effects

                                                                                                                      This will work if I’m near them and pay attention to them at the time, but I’ll most likely be somewhere else directing beams. A static descriptive component (eg colour) would still be as useful as a dynamic (sound/anim) one.

                                                                                                                  1. 4

                                                                                                                    Original author here; happy to answer any questions. Working on part 2 which should be up in a few days.

                                                                                                                    1. 2

                                                                                                                      late to the party on replying here, but this looked stellar. Congrats on the win, and thanks for introducing me to Fennel, hadn’t heard of that one before.

                                                                                                                    1. 5

                                                                                                                      Rich Hickey: When a library breaks, it can break in many ways. Some of those may or may not be manifest in types, others would just be manifest in behavior, or missing information, or additional requirements - things that you can’t express in types, because most of what your program needs to do can’t be expressed in the type systems we have today. So yes, it still takes a string and still returns a map of information, but it stopped returning you some of that information, or it started returning other stuff, or it had additional requirements about the string… No, the types don’t capture that.

                                                                                                                      It seems like every talk or interview coming from Rich ever since Cognitect started hawking clojure.spec contains at least a handful of poorly supported, vague, dogmatic claims about static typing in opposition to…well, “how Clojure does it.”

                                                                                                                      Perhaps his style hasn’t bothered me up until recently simply because I’ve mostly agreed with his dogmatic statements about stuff like persistent data structures, but at this point I’ve lost interest in a lot of what he has to say because of how he talks about static typing.

                                                                                                                      There are a lot of other ways he could be talking about clojure.spec and why it works well in Clojure. A more nuanced appraisal of the trade-offs of clojure.spec vs. various static typing approaches would be a nice start, but I am skeptical that will happen any time soon.

                                                                                                                      I still think Clojure is a better language than many, and gets a lot of things right, but it’s not perfect and this is one area I think the creator is mistaken. While that’s fine and to be expected, I think he’s doing real damage by making statements about static typing that are either too vague to be useful, or misrepresent how static-typing advocates think about and use type systems.

                                                                                                                      1. 5

                                                                                                                        It seems like every talk or interview coming from Rich ever since Cognitect started hawking clojure.spec contains at least a handful of poorly supported, vague, dogmatic claims about static typing in opposition to…well, “how Clojure does it.”

                                                                                                                        I’m not too familiar with clojure.spec, but I know a bit about the overall idea of it. Let me see if I can explain the difference between static types vs clojure.spec from a formal methods perspective (which differs a little from the PLT perspective).

                                                                                                                        Clojure.spec is a contract system. A contract is a formally specifiable property of the code, usually as pre/postconditions on functions, that you expect the code to follow. You’re able to, through the contracts alone, specify the complete behavior of the function via specs. For example, using Deadpixi Contracts in Python:

                                                                                                                        @require("l must not be empty", lambda args: len(args.l) > 0)
                                                                                                                        @ensure("result is head of list", lambda a, result: result + tail(a.l) == a.l)
                                                                                                                        def head(l: List[T]) -> T:
                                                                                                                            return l[0]
                                                                                                                        

                                                                                                                        With this we have that head is only specified for nonempty lists, and also that its result will always be, in fact, the head of the list. This is not something we can do with the type system of Python, or even the type system of Haskell, as the type of head is indistinguishable from the type of last. We’re calling all sorts of other functions and can, in fact, run arbitrary code. In fact, we can completely decouple the specification of contracts from the verification of them. This is both a strength and a weakness. The strength is that we get both expressive power and flexibility. The weakness is that expressive power is usually a bad thing. In the general case contracts are unverifiable due to the halting problem.

                                                                                                                        In practice, there’s four approaches to verifying contracts:

                                                                                                                        1. Restrict yourself to a subset where you have simple, automatic static verification. For example, you might not be able to autoverify “this function will be called only with positive even numbers”, but we can autoverify “this function will be called with only integers”. This gives us static typing! I think you could reasonably argue that “type systems are special cases of contract systems”, but that’d get you stabbed to death in 99% of programming forums out there, so uh yeah
                                                                                                                        2. Limit verification to throwing runtime errors. Every time a contract comes up, check if it’s correct, and throw an error if isn’t. Most contract-oriented languages combine this with static typing to get “conventional” contract systems. You can do a lot of cool stuff with this. Eiffel’s AutoTest can turn your runtime contracts into integration tests, Ada can place contracts on global mutations, most systems let synthesize contracts into dynamic types, etc.
                                                                                                                        3. Formally prove the contracts correct. This is formal verification. A lot of people are doing this in different ways: Dafny uses pre/postconditions and loop invariants, Liquid Haskell uses refinement types, Idris uses dependent types, etc.
                                                                                                                        4. Informally prove the contracts correct. This is how we get Cleanroom, which is actually a lot more effective than you’d think. People write the contracts, attach english “proofs” of why they hold, and everybody verifies them through code review.

                                                                                                                        So, in summary: contracts generalize static types in a form that is good in some ways, bad in others. There are multiple different styles of contracts, just as there’s multiple different type system, but the unifying idea is that they can fully specify the program’s behavior. In verifying them is another matter, and clojure.spec’s approach is “runtime checks” as opposed to most other languages, which reduce the specification power in return representing contracts as static types.

                                                                                                                        1. 1

                                                                                                                          It’s worth noting that the halting problem also affects Turing complete type systems, such as one found in Scala.

                                                                                                                          1. 1

                                                                                                                            Which is a reason you really don’t want your type system to be Turing complete!

                                                                                                                        2. 3

                                                                                                                          It seems like every talk or interview coming from Rich ever since Cognitect started hawking clojure.spec contains at least a handful of poorly supported, vague, dogmatic claims about static typing in opposition to…well, “how Clojure does it.”

                                                                                                                          I haven’t been paying all that much attention to the talks more recently, but this is also how I feel about it. There are trade-offs between static types and specs, and specs have some advantages over types, but because of all the straw-man arguments it’s hard to find useful analyses of the trade-offs.

                                                                                                                          1. 3

                                                                                                                            The problem is that most of the “types vs ‘specs’” arguments are between people who have languages with types and no ‘specs’ and people who have languages with ‘specs’ and no types. If you want to see a more nuanced comparison, you have to look at languages that have both of them, because then you can see how people proficient in both context-switch between them.

                                                                                                                            The other problem is that there are many more languages with a lot of thought to their type system than languages with a lot of thought to their contract system. If you need both, you’re pretty much limited to Ada.

                                                                                                                            1. 1
                                                                                                                              1. 6
                                                                                                                          2. 3

                                                                                                                            I fail to see what’s vague or dogmatic about his statements. He’s basically saying that types primarily focus on checking internal self consistency, while what you really care about is semantic correctness. Expressing semantic correctness using types ranges from being difficult to impossible depending on the type system. At the same time static typing can introduce a lot of complexity that’s incidental to the problem being solved. You often end up writing code in a way that facilitates static verification as opposed to human readability.

                                                                                                                          1. 10

                                                                                                                            When web agencies/developers say “full stack”, in my experience they mean “jack of all trades, master of none”.

                                                                                                                            Someone who is equally happy writing php or nodejs as browser javascript or css. Possibly SQL. In todays climate they probably expect ‘devops’ which for the type of shops saying ‘full stack’ probably means “search for a docker image that sounds reliable and cross your fingers”.

                                                                                                                            Given your history with compiled languages, perhaps mobile app development is a good route? It’s definitely a market with demand right now.

                                                                                                                            Alternatively look on some of the remote specific job boards. https://github.com/lukasz-madon/awesome-remote-job/ may also help.

                                                                                                                            1. 8

                                                                                                                              When web agencies/developers say “full stack”, in my experience they mean “jack of all trades, master of none”.

                                                                                                                              I always interpreted it as a way of saying “I am unaware of any abstraction layer lower than the virtual machine”.

                                                                                                                              1. 2

                                                                                                                                I always interpreted it as a way of saying “I am unaware of any abstraction layer lower than the virtual machine”.

                                                                                                                                I think “full stack” is a web term, where the stack basically ends at the virtual machine. In web you basically outsource the lower parts to your SaaS provider anyway.

                                                                                                                                I have never seen “full stack” desktop developers or “full stack” HPC “full stack” compiler developers or whathaveyou.

                                                                                                                              2. 1

                                                                                                                                When web agencies/developers say “full stack”, in my experience they mean “jack of all trades, master of none”.

                                                                                                                                I worried as much.

                                                                                                                                […] perhaps mobile app development is a good route? It’s definitely a market with demand right now.

                                                                                                                                Thank you. I will take a look at that.

                                                                                                                                https://github.com/lukasz-madon/awesome-remote-job/ may also help.

                                                                                                                                Thanks for that too!

                                                                                                                              1. 9

                                                                                                                                I just finished EXO_encounter 667, my entry for the Lisp Game Jam, so I’m going to be writing up a handful of blog posts as a retrospective on what it’s like to write a short game in the love2d game engine with the Fennel programming language.

                                                                                                                                https://technomancy.itch.io/exo-encounter-667