I myself implemented 4 colorize functions for that.
Common linear Blue -> Red. Linear Blue -> Red adjusted via Green for visibility.
Blue -> Yellow -> Red also linear. And of course Turbo from that blog..
I think you are mistaken. In nature graphs are never linear. They are curves, special type of curvers. They start slow, then they can grow lineary for a while, and then they switch to exponental growth. This is the case w/ everything if you take a time to look. Epidemics, population growths, Vulcanos, even stars.
The very same thing start on Earth w/ climate change. Temp raises slowly, more CO2 (and more importantly, CH4) in atmosphere. Temp reises more. Atmosphere is hotter, can absorb more H2O vapors as well. Now, when you start hitting first threshold, hydrates (CH4) will be released from shallow ocean bottoms, more CH4 in atmosphere hotter.. cycle accelerates hitting runaway (exponental growth). KABOOM, earth might be doomed.
Its simplified model, not accounting for huge vulcanos on polar, with might explode and make nuclear winter with will block the heating. Complicated stuff, thats why we need scientists :)
I think the feedback loop of climate change causing melting permafrost to release methane and carbon dioxide in turn causing more permafrost to melt is pretty worrying and maybe not getting enough attention.
Haha, yeah I wanted to post very same question. Like WHAT? Maybe he have some retro computing in mind like WinXP (or Win7 at best). Win10 and up is uter crap.
Im on the same boat :) But no worries. You can always build and use older git without rust. Of course, it will work for a while until those kids will change the proto for the "better". And being old and grumpy also means, you can slowly care less and less about all that moot :)
Kids: now downvote it into oblivion :) Like I give a shit...
These things often get presented as an age thing, but I think they aren't. It's very weird, I'm young but I feel like having the same stance in a lot of topics, in politics, but also here. I don't know how to deal with this. You guys have it easy (/s), you don't have to live with this for long, but I feel like I'm growing up into an increasingly hostile environment.
Well, it is age thing, because young people start they experience in current tech and only those determined enough can take a look on past tech, how it was used and how it evolved. Thats always was minority.. There are just 2 kind of people there: Those who belive and those who research.. ;)
Well, dunno what to say about it to you.. Its indeed sad.
Well the young people I meet know a mix of Python, C++ and C. And then they are those, who don't use C, because its too high-level and design their own processors instead. That's the current tech I experience directly.
Its cool to design sth from scratch, like its own CPU, but it only makes sense
if you really enjoy it.. Except, its waste of time. I myself live in retro computing abit, but it have it limits. Like, I would not go back to prised 6502 CPU. Yeah, it was great, legendary CPU, but if we take a look at even cheap options we can buy and use for hobbie projects, there are plenty of pretty quick and capable 32bit CPUs. Its hard to go below 32bit really.
Dont get me wrong, I pay big respect to demoscene, and what they can achieve on C64 for example :). Uber skilled guys, but this is an art :)
It might become part of his diploma, so I don't think it's a waste of time. It's about non-binary logic without a shared clock. I understand nothing, but to me it sounds pretty cool.
While I love CLI and terminals this is like going backward, heh. Instead of making lightweight and lighting fast GUIs where you can render all your terminals and some other graphics, people try to form TUIs again.
Yeah, they were great in 80s where HW was seriously underpowered. I run minimal IceWM and it looks and works great, and its quick :)
> While I love CLI and terminals this is like going backward, heh...
Maybe so...and, yes, somewhat it is utilizing lightweight options...however, more and more, i am using either bare GUIs or legit TUIs for less distraction...a sort of minimalism. I'd like to think that i could be super productive only using TUIs, because it might make me feel like some cool elite hacker...but i know that's not the case always. However, more and more I'm recently gravitating towards TUIs, or at least more minimal GUIs, for the semi-forced focus. I'm learning about myself more and more, and more buttons is not great.
Small example: my favorite GUI text editor is Kate (from KDE). i know it has bells and whistles, but since i keep things to a minimum, it sort of stays out of my way, and helps me write more - both prose and code, etc. What i have noticed over the decades of my usage of software is that for some areas - like writing - if i use more comprehensive tools - say, like VSCode - then i will keep playing with so many settings, and stuff gets in my way; i inadvertantly let myself get too distracted from getting stuff done. On the TUI side, i can use VIM, nano, micro, etc.and I'm quite productive as well. At least, that's what works for me. So, what you might call backwards, might be more like coming full circle for the productivity aspect, at least in ways that make sense for some people, not all of course. :-)
Oh I agree with you :) I love TUIs myself.. But we talk about Desktop OS like in TUI.. with is.. well.. hardcore :)
Most of my tools are TUI really, because its much esier to develop. Code reusability is huge. You wrote some nice interactive TList class? Cool, you can reuse it easly in other TUI projects.
Today world is a bit multitasking, so having TUI based Desktop is very limiting imo. Yeah, distractions.. Thats I think personal thing. I run old OS with 4 virtual desktops because one desktop is not really enough. Desktop 1 is generic. Desktop 2 is work. Desktop 3 is usually some Network Simulations I do.
Desktop 2 and 3 usually have their own Xserver running, displaying stuff from remote servers. So, leaving GUI is not an option. Just use it smartly :)
And yeah, I use ViM ether in terminal or gViM (native Win32).
> ...we talk about Desktop OS like in TUI.. with is.. well.. hardcore
Excellent point; that is pretty hardcore! :-)
> ...I run old OS with 4 virtual desktops...
This is quite interesting, because i know a few acquaintences and friends who also use this approach of several desktops (each maybe with a dedicated app for example) to help them get really focused and productive! It seems to work for them really well...but i've never been able to have it click for me. I mean, i get the idea, and it sounds good...but for some reason it doesn't give me what i need...or, well, maybe its "out of sight, out of mind"...and then i forget about those other screens/desktops, etc. Of course, the possibility could absolutely be that i'm simply "holding it wrong"/using this approach in the wrong/less ideal way. :-)
But we do NOT need to setup CRLF translation at all? Who in his sane mind uses
CRLF even under windows? All my source codes are in UNIX format (aka LF only) and I use it consistent under Windows, Cygwin and UNIX.. Why make your life harder?
I think the issue is that people don't make their own lives harder, but sometimes they make the lives of other people harder (often unintentionally). In my experience, the CRLF files I run into tend to come from developers who are only working in Windows and either aren't aware of the issue or don't particularly care to do anything about it. It isn't something I run into often when cloning a git repo, but having recently started dabbling in the world of mod development for games, there's a lot of stuff out there that seemingly has never been touched by someone who's used Linux before. To be clear, I don't blame anyone for this, since people working on things for free in their spare time shouldn't have to worry about anything other than what interests them, but it's a bit amusing to me that I sometimes have less to configure to run an .exe on Linux than I do to start editing the source for it in a way that makes it easy for me to merge any new changes that happen upstream.
> I sometimes have less to configure to run an .exe on Linux than I do to start editing the source for it in a way that makes it easy for me to merge any new changes that happen upstream.
Are you doing anything more than calling dos2unix?
> Who in his sane mind uses CRLF even under windows? All my source codes are in UNIX format (aka LF only) and I use it consistent under Windows, Cygwin and UNIX.. Why make your life harder?
Why would you use LF if the focus of the application that you develop is Windows? You make the life harder for these users. :-)
Seriously: your argument typically comes from developers who consider GNU/Linux as a first-class citizen as a development or deployment platform, and Windows only as a second-class citizen (assuming that a Windows port actually exists).
I can accept an argument like "I, as a developer, don't care about Windows and its users, so all my source code is in UNIX format." This is a conscious, though quite political decision.
But an argument like "not using LF makes lifes harder" without a relativization on which premises this claim is build (such as "GNU/Linux and macOS users are much more important for as, and if there exist any users or developers who use Windows, we consider them to be undesired, because they make everybody's lifes harder") is intellectual ignorance.
Using LF on Windows is really not difficult. Any text editor actually worth using supports both types of line endings - even Notepad has handled this correctly for years now, from what I remember. I've never been caused any inconvenience as a Windows user by files with LF endings. I never use CRLF if I can avoid it; I only will if working on a codebase that already uses it throughout.
Oh, its simple. There are many many flavors of UNIX and only one Windows. Hence, I see LF as more portable way to store source code, thats why it is prefered.
Additionally, im heavy CLI user so again, more geared toward UNIX systems.
If you develop on windows and only for windows, use CRLF all the way. Just do NOT forget to set .gitattributed correctly, and you are set.
> There are many many flavors of UNIX and only one Windows.
With ReactOS, there even exists a flavor that is not developed by Microsoft. If you consider Wine and its derivates as an implementation of the WinAPI, you have one additional (or multiple if you consider their derivates) implementation of the WinAPI.
Even if you only consider the flavours of Microsoft Windows that are full operating systems, you immediately get multiple ones:
- the discontinued Win 9x series
- the discontinued Windows CE, Windows Embedded CE, Windows Embedded Compact, Windows Mobile, Windows Pocket series (technically quite different from both Windows 9x and Windows NT)
- Lots of variants (indirectly) derived from Windows NT:
* Windows (desktop OS)
* Windows Server
* Windows IoT (I would claim that at least for the Windows 10 IoT Core version, the user experience is quite different from both desktop and server Windows)
* Windows PE [1]
* Further discontinued variants such as Windows Phone
I fully agree, but we're talking history here, before Unix existed.
The confusion about "LF" (Unix) vs "CR" (Apple) vs "CR/LF" (MS/DOS & Windows) is because we didn't have an explicit "Line End" character in 7-bit ASCII.
There was "EOT" (Ctrl-D/ASCII 4/EOF in Unix) , "ETX" (Ctrl-C/ASCII 3), and other characters that were used to mean other I/O, including ones that didn't match the ASCII definition like Ctrl-S/Ctrl-Q to stop/start I/O, and Ctrl-Z to mean EOF (MS/DOS & Windows).
The ability to do that is a recent development. And numerous programming environments still default to adding CRLF and stripping it off when running on Windows, and all the system tools on Windows generate files with CRLF as line terminators so all software needs to deal with them.
The language runtime will insert/remove CR for you if you open the file in text mode on Windows. You'd be surprised how much stuff cygwin itself actually does for you. If your code isn't too Linux specific try building it under mingw instead and you can see what's actually going on.
Cygwin does NOTHING under the hood, because I asked it to do nothing. I am aware of text mode of open() under Windows/Mingw. Im also aware of possibility to do CRLF <-> LF translation under cygwin. I never liked it, and I went to LF only quickly. Hence, I use it everywhere and live is easier :)
Why? WHY?! Why the heck are you using (D)VFS on your immutable data? What is the reasoning? That stuff is immutable and usually incremental.. Just throw proper syncing algoritm on it and sync w/ backups.. thats all. I wonder aby logic behind this...
Docs and other files you often change is completly different story. This is where DVFS shines. I wrote my own very simple DVFS exacly for that case. You just create directory, init repo manager.. and vioala.. Disk wide VFS is kinda useless as most of your data there just sits..
I also used to use git-annex on my photos, ended up getting frustrated with how slow it was and wrote aegis[1] to solve my use case.
I wrote a bit about why in the readme (see archiving vs backup). In my opinion, syncing, snapshots, and backup tools like restic are great but fundamentally solve a different problem from what I want out of an archive tool like aegis, git-annex, or boar[2].
I want my backups to be automatic and transparent, for that restic is a great tool. But for my photos, my important documents and other immutable data, I want to manually accept or reject any change that happens to them, since I might not always notice when something changes. For example if I fat finger an rm, or a bug in a program overrides something and I don't notice.
I don't really need the versioning aspect too much, but sometimes I modify the photos a bit (e.g. rotating or so). But all the other things are relevant for me, like having it distributed, syncing, only partially having the data on a particular node, etc.
So, what solution would be better for that? In the end it seems that other solutions provide a similar set of features. E.g. Syncthing.
But what's the downside with Git-annex over Syncthing or other solutions?
If you want two-way distributed syncing, that is a bit more complicated and error prone, but most tools support it, even rsync. Simpler aproach is to have central primary node (whatever it desktop or storage) when you sync copy data and sync it to backups.
As I said, handling immutable data (incremental) is easy. You just copy and sync. Kinda trival. The problem I had personaly was all the importand docs (and similar) files I work on. First, I wanted snapshots and history, in case of some mistake or failure. Data checksuming, because they are importand. Also, full peer2peer syncing because I have desktop, servers, VMs, laptop, so I want to sync data around. And because I really like GIT, great tool for VCS, I wanted something similar but for generic binary data. Hence I interested in DVFS system. First I wanted full blown mountable DVFS system, but that is complicated and much harder to make it portable.. Repository aproach is easy to implement and is portable (Cygwin, Linux, UNIX, Posix). Works like a charm.
As for downside, If you think git-annex will work for you, just use it :) For me, it was far too complicated (too much moving parts) even for my DVFS usecase.
For immutable data is absolutly overkill, to keep 100s of GBs of data there.
I just sync :)
> Why the heck are you using (D)VFS on your immutable data?
Git-annex does not put your data in Git. What it tracks using Git is what’s available where, updating that data on an eventually consistent basis whenever two storage sites come into contact. It also borrows Git functionality for tracking moves, renames, etc. The object-storage parts, on the other hand, are essentially a separate content-addressable store from the normal one Git uses for its objects.
(The concrete form of a git-annex worktree is a Git-tracked tree of symlinks pointing to .git/annex/objects under the repo root, where the actual data is stored as read-only files, plus location-tracking data indexed by object hash in a separate branch called “git-annex”, which the git-annex commands manipulate using special merge strategies.)
I am looking into using Git for my photos/videos backup external HDDs and the reasoning is simple. It's not about keeping track of changes within the files themselves since like you said, they (almost) never change. Rather, it's about keeping track of changes in _folders_. That is, I want to keep track of when I last copied images from my phones, cameras, etc. to my HDDs, which folders did I touch, if I reorganized existing files into a different folder structure then what are the changes, etc. Also it acts as a rollback mechanism if I ever fat finger and delete something accidentally. I wonder if there's a better tool for this though
Then I think some syncing software like rsync will probably be better. Now sure how often you keep changing archived folders. I split that work TRASH like dirs and archives. When I done w/ files, I move them out of TRASH do proper place and that it. I prefer KISS aproach, but whatever works for you :)
Why... not? Git just works for syncing data and version control and we're all familiar with it. It is also secure, reliable, available everywhere, decentralized, with built-in access control, deduplication, e2ee with gitcrypt... In short, it is great.
The problem is performance in some use cases, but I don't see anything fundamentally wrong with using git for sync.
Git wasnt designed for generic binary blob handling. Sure, if you repo is small and you set proper .gitattributes, it will work fine. But I would advise to use generic DVFS for such task.
https://research.google/blog/turbo-an-improved-rainbow-color...
I myself implemented 4 colorize functions for that. Common linear Blue -> Red. Linear Blue -> Red adjusted via Green for visibility. Blue -> Yellow -> Red also linear. And of course Turbo from that blog..