3,035 karma · joined July 28, 2014
But the barriers to file transfer get larger the farther back you go.
I have two old Macs that I use for writing: a 1985 Mac SE 2/40, and a PowerBook G4 1.67ghz.
The SE is indeed pretty thoroughly cut off from the world, but this also means that if you want to get your data off the drive, you have very limited options to do so. In my case it means using an SD card-based floppy emulator, writing to virtual floppy, loading the SD onto my modern Mac with a dongle because MBP2019, renaming the virtual floppy file so that Disk Utility will still recognize it, and then finally hoping I remembered to save the file as plain text because nothing is gonna read that shit other wise.
I have experimented with a Wifi232 dongle as well, but found that getting a vintage version of Z/XMODEM to talk to a modern one is all but impossible in 2020 and I failed at almost everything I tried.
So: enter the PowerBook. At 1.67ghz it's actually beefy enough that with TenFourFox you could technically get to some websites, but other than a handful of Mac abandonware sites and the old version of Reddit, almost nothing else will work thanks to JavaScript requirements. So distractions remain minimal and the alt-tab addiction is kept at bay.
BUT, it is still internet-capable enough to be able to connect to modern WPA2 wifi (mostly, I had some compatibility issues with my old ISP router that required working around with an old Airport Express), and that means I still have ways to more directly share the fruits of my labors. Email works just as well as any modern machine of course, USB is there (albeit slow 1.0 speeds), and some of the older sites I post my work on even still work in TenFourFox. More recently, thanks to Tigerbrew, I've got working git, so I can even backup my stuff to Github.
The PowerPC line makes a very nice "bridge" generation. Just modern enough to still by able to connect to the outside world, but old enough to be relatively free of distraction, or at least to keep the Twitter habit out of the way while I work.
Somewhere at the bottom, fundamental code is always present.
Increasingly buried underneath all the big talk about privacy and the blog spam, is the fact that Cliqz also is an advertising company: https://cliqz.com/en/magazine/press-release-cliqz-introduces...
They've literally resurrected the ad-riddled browser toolbar: https://myoffrz.com/en/
My bet is spinning off their own browser has nothing to do with anything but fear the browser vendors, Firefox and Chrome alike, will start blocking their real money maker.
This is not even a new strategy. Other companies have tried similar tricks over the years too, though most of them went with Chromium forks instead for their spy/adware laden wares.
Frankly, it's disappointing to see this even on here, but I don't blame anyone for it; they are really working hard to sugar up the pitch here.
Moving the control panel to the upper right despite this making no sense on the massive iPad screen as compared to the iPhone X this feature was developed for.
Making the new floating dock ... and then making the gesture both to raise the dock and to open the app switcher the same gesture, with only fractional timing between them.
And that's not all. There's an additional context menu on Dock items now if you hold them, but ... you also need to be able to hold on a Dock item if you want to drag it up and make a floating window. Once again, fractional timing differences: hold too long and you get the menu instead. Hold too little, and instead either the app switcher comes up, or worse, it tries to drag the whole dock up, even though the dock is not a movable element. So about half the time when I try to drag up to create a window, instead I wind up moving the actual dock a fraction of an inch, and then it bounces back and nothing else happens.
There's also new "cleverness" about how windows are organized, and by cleverness, I mean "Why in the nine hells would I want this?" Previously, if you made a floating window, it was just that app, and you could swipe it in and it would always be the same app regardless of whatever full-screen app was currently open. For example, I commonly would make my IRC client the current floating window, so I could swipe over to it while watching Youtube or reading in Firefox to check chat.
Except now, the current set of windows is app-specific. If I'm in Firefox and I make a floating Discord window, and then go switch to Youtube ... that window is gone. Swiping in will instead bring either nothing, or whatever window I happened to create the last time I was in Youtube. This constantly results in confusing surprises and manually having to reopen windows.
Oh, and they redesigned the Reminders app, and in the process managed to screw up my notifications and delete or corrupt several important medication reminders, so thanks for fucking with my health, Apple.
The rest of the changes are mostly useless or cosmetic. The only vaguely useful thing is something they should've done years ago, which is expanding the app grid dimensions to something more sane for this resolution. The rest just feels like overblown marketing hype, a push for a new "desktop-like" iPad feel ... without any features that actually make it feel like a desktop.
Pointless.
Between the RIAA/MPAA breathing down their necks about piracy, and the realization they could make a mint charging inflated "business rates" than letting you do what you wanted with your own damn internet connection, shit got locked up tight so fast no one even noticed.
It's not NAT that's why my ISP is blocking half the protocols on the Internet. Why every ISP I've had for the last decade has blocked outgoing HTTP. Why I'd need to us a fucking VPN tunnel just to get SSH to my home computer. It's greed.
It's the forgotten front of the net neutrality fight, and it's gone almost entirely ignored. We don't have the right to our own outgoing traffic anymore, and this has been the case for far longer than IP allocation has been an issue.
I'm glad to see surveillance companies suffer.
That's rather the point of the thing.
You know what makes it really easy to comply with the GDPR?
Stop spying on your users.
Just stop.
It infuriates people precisely because it threatens the ad surveillance economy this whole website and most of its users have come to rely on. Consistently, the sites I've gone to with the most intrusive and aggressive complaints and reactions to GDPR ... are also the sites that are riddled with spyware and tracking.
It is very much a case of "methinks thou dost protest too much."
And why isn’t the mining blocked on by default? Most users aren’t going to know to even look for it, and I highly doubt any of them would support what’s basically theft of their resources.
It is sort of surreal how little the needle has moved since the F2P boom. I bought the first gen iPad, and back then there was a ton of excitement about gaming possibilities on the platform, and some good stuff came out.
I left with the 2nd gen and hadn’t touched one since but a couple years ago I got a new current gen iPad on sale, and was surprised to find that basically, a lot of the best games were still just the same ones that were out back then for the iPad 2. And then the switch to 64-bit happened and we lost a ton of those older games entirely that never got updated.
It’s really depressing. I don’t really even try to find mobile games anymore either.
It still kind of is in a lot of places. My country barely bothers to even teach anything else at a lot of schools, and enterprise is almost entirely dominated by the JVM.
You are exactly right. Having worked in Clojure and talked to a lot of other devs here and across Europe, most everyone got into Clojure or Scala because management and cultural complaints left them stuck with the JVM, and at least it beat building more EnterpriseWidgetFactoryGeneratorPatterns.
Oracle and Java are the new IBM, and just like IBM, no one's really happy with them but management yells if you use anything else.
Full-stack setup with Boot and hot reloading on both front and backend, with some basic SASS, DB, and configuration setup as well.
Have a look; even if it's not for you, it might give you some idea how to set up an application and dev environment.
Bucklescript-TEA was kind of nice though, getting to play with the Elm architecture but with a more flexible type system and better inference. But I found the size of the bundles and tools and the slowness in the environment I was using it in made me just go back to Elm instead. :(
As for Reason ... well ... Facebook has taken over webtech with a lot of halfassed misunderstandings of better technologies, but this one might take the cake.
I honestly find that whole project insulting, and so should you. It’s as if they’ve declared JavaScript developers to be so stupid that they physically can’t use a language with any other syntax, so they have to fuck up one to get them to use it.
I think you have confused Scala for something else. “Regular” it is most assuredly and deliberately not.
Unfortunately, the tooling is just as much of a nightmare (though with the dotnet CLI it is slowly showing signs of improvement), and cross compatibility is still iffy for a lot of things, so I’m not sure it satisfies the rest of the author’s specs.
I would kill to see a dialect of F# completely freed of the .net nightmare and allowed to fly free on its own.
Funny how he's now "just entertainment" after such a public and embarrassing misfire.
mashes eject button
Modern T-series still have amazing damn battery life, and I’ve never found anyone else who comes close except Apple, or Android ARM hybrids like the old ASUS Transformer Prime with the double batteries.
So given an and() function, you can't safely do "and(False, fire_missiles())", because the language will evaluate both arguments.
But an and!() macro could: macro expansion is essentially "lazy", in that it happens prior to the evaluation phase, so it can avoid evaluating any pieces of code it wants to, such that "and!(False, fire_missiles());" is perfectly safe, because our macro can stop expanding after "False" and thus fire_missiles() is never evaluated.
Incidentally, this is why at least some macro patterns are unnecessary in lazy languages like Haskell: you can write short-circuiting and() as a function there, because a function in Haskell only evaluates as much as is necessary (provided it's been written properly). Yet even there, Haskell still has support for macros and things like TemplateHaskell and so forth, because there's just some things you can't do solely with functions, like arbitrary syntax, language extensions, etc.
The technique used in the book is to use brag to describe the grammar and generate a parser/tokenizer to s-expressions, and then you can either interpret it compile them directly, or use the Racket macro system itself to expand them into Racket.
And of course, Racket's macro system itself can do quite much without even a parser generator. The standard library even includes an example ALGOL 60 implementation done as Racket macros, and examples of C and Java can be found on the package server.
I used to feel similarly, but that was because I'd been introduced to parser combinators in languages that lacked the features to replicate what made them great in Haskell. Properly implemented, they can take on a very readable, declarative-like style.
Over the weekend for instance, I threw together a JSON parser in Haskell using Graham Hutton's monadic parser library, and I found the result refreshingly clear and readable: https://gist.github.com/jarcane/025f5475418858bba8276f1dfcf2...
With do notation and ADTs, the code comes out looking more or less pretty close to what it describes, and that reflectivity applies both to the reading and the coding. I simply describe the patterns in looking to match and which parts to pass on, and voila: a parser.
To those of you reading this: I beg you. Avoid creating files or directories of any kind in your user's $HOME directory in order to store your configuration or data.
My immediate response was pretty much "where the hell else should they put them then?"
What exactly else is the /home dir even for otherwise?
The purpose of home is for user-level persistent files. Giving it access to something else means giving random programs write access to some global part of the file tree, and I'd rather not allow that except when actually necessary. As it is I hate having stuff that manual installs in /opt, or the way too many programs on Ubuntu are configured to require sudo to work.
I'm actually totally on board with more stuff that installs entirely local only, especially if it's from outside the distro's package system. I don't like stuff mangling the global tree with no clear standardized path for removal and uninstallation. At least if it's in /home, I can just delete it myself without even needing to go sudo.
And the purpose of .dotfiles in /home is because it prevents those user configuration files and other such local data from cluttering your directory when doing a plain ls for regular user files.
This article just sounds like a misunderstanding of how the file tree is even supposed to work.