Whoops, typo! Fixed c:
Whoops, typo! Fixed c:
I forgive 'em cuz watt hours are a disgusting unit in general
idea | what | unit |
---|---|---|
speed | change in position over time | meters per second m/s |
acceleration | change in speed over time | meters per second, per second m/s/s=m/s² |
force | acceleration applied to each of unit of mass | kg * m/s² |
work | acceleration applied along a distance, which transfers energy | kg * m/s² * m = kg * m²/s² |
power | work over time | kg * m² / s³ |
energy expenditure | power level during units of time | (kg * m² / s³) * s = kg * m²/s² |
Work over time, × time, is just work! kWh are just joules (J) with extra steps! Screw kWh, I will die on this hill!!! Raaah
Disclosure: I’ve done very little UI/UX.
Google’s Material Design (wikipedia) is much more widely-adopted across OSes/Flutter/the web (see how many websites have that dropshadow topbar and ≡?); Microsoft’s Fluent (wikipedia) is Windows-first, but is usable anywhere.
Both are based on responding to user actions. Fluent uses lightup acrylic (translucent) canvases (e.g. hover? border glowy.)
while Google’s Material uses paper-esque whitespace, navbars, dropshadows, and round corners. (e.g. scrolling? dropshadow appears on nav)
Think Microsoft Teams vs. Google Drive.
They’re both full-fledged but Material You is way more common judging by places such as the F-Droid ecosystem on Android. As for which is “better”, Material You supposedly has better colorscheme flexibility since it ‘wants’ to adapt to e.g. user wallpapers. But other than that it’s really just preference (or whether relevant tooling exists :P). I know some devs use Material You for a predictable, unified look across Android apps, while others bend them to their will to reduce animations or whatnot.
If you’re designing something, make sure you keep your own self in the mix too. Breezy Weather uses Material Design, but it’s more customized to have a unique feel than, say, TrackerControl (which also uses Material).
Greppability also contributed to this thingy
int
main()
{
// dam
}
in Mozilla C-style and GNU C-style projects. Of course, it’s a remnant of the past (grep ^main
), but kgmgaehgka.
I always enjoy looking into what other people are doing with their smaller (but 100+ views) websites, thanks for posting.
Usually “this is a good website” websites are pretty text-heavy with the occasional picture. These sites only need HTML anyway and frequently say “you only need HTML anyway”.
Although the linked webpage – a debatable list of opinions (e.g. Cloudflare privacy is hotly contested by people with at least as much credibility as the author) – is an example of this, I was pleasantly surprised by the national grid map under /data and the use of math rendering, which at least surpass the complexity of writing a HTML 1.1 compliant site.
The use of CC0 is a variable choice – some want their work to be more forcibly public, but I guess I see her viewpoint.
As for her gripe on the opacity of code minification, I can’t say I understand that. Just make your site source code open and obvious to remake, as she did with grid. It’s the same result, but with the added benefit of less JS bytes for when you do do something more complex.
Cool I guess. Dark mode is broken on darkreader on this site tho.
[deleted bc kinda personal]
A brave, vulnerably nuanced answer. Suspicious… what are you planning?
I see, I forgot about tampermonkey. At that point I can also just paste a bookmarklet into the script space itself and enable when needed.
Firefox-based mobile browsers unload pages for me when I tab away (maybe it’s a Samsung killer thing? all outside of the scope of this question tho), which could be an issue, but if I’m careful then this method should do it. Thanks!
Not fishy at all! It’s like a lockpicking fan asking about locksport.
If you’re looking for examples, GitHub has a lot of CVE proof-of-concepts and there are lots of payload git repos across git hosts in general, but if you’re looking for a one-stop-shop “Steal all credentials,” or “Work on all OSes/architectures just by switching the compile target,” then you’ll have a harder time. (A do-one-thing-well approach is more maintainable after all.)
If you want to make something yourself that still tries to pull off the take-as-much-as-you-can, you should just search up how different apps store data and whether it’s easy to grab. Like, where browsers store their cookies, or the implications of X11’s security model (Linux-specific), or where Windows/Windows apps’ credentials and hashes are stored. Of course, there’s only much a payload can do without a vulnerability exploit to partner with (e.g. Is privilege escalated? Are we still in userland? is this just a run-of-the-mill Trojan?).
Apologies if my answer is too general.
obligatory navier-stokes equation
Whoa, I didn’t know about this! My trustworthy beloved orange apps were sold to ZipoApps, a company that flips apps into ad revenue.
But has anything changed for the worse yet? I don’t see any odd commits in the history (e.g. Draw). I’ll probably just lock the F-Droid version of the Simple gear I can’t switch.
-1 accuracy point ( ◞ ﹏ ◟)
linux 4.5-rc5 had efivarfs fixed to prevent “rm -rf /” bricking uefi motherboards – so maybe someone can try it out? :]
Obligatory Linux comment (Lemmy moment):
Windows is used often for its compatibility and defaultness but Linux is interesting in the sense that everything is patchable, everything is tinkerable and configurable. The low resistance to tinkering makes lots of Linux users tinkerers – including tinkering via code.
I’m not saying wipe your hard drive or even dual-boot. Maybe an older computer or VM could help, depending on what you have. But just in the past week I’ve screwed around in low-to-medium-difficulty Linux projects that configured my lockscreen with C, that implemented mildly usable desktop GUIs with TypeScript, among others – just not-too-committal stuff that has a return value I literally see every time I lock my computer.
Windows equivalent projects can be harsher on the beginning-to-intermediate curve (back when I first tried out Linux Mint, I’d been struggling to make a bookmark inspector in Visual Studio – ended up Pythoning it instead) – not to say that Windows fun is by any means out-of-reach.
My friends Leetcoded and Codeforced quite a lot. Advent of Code is up there too, with the interesting caveat that Advent of Code also teaches you refactoring (due to the two-part nature of every problem).
However, when I was younger I had contempt for the whiteboard-problem-esque appearances of these, but everyone is different.
If you look hard enough there is always a project at medium difficulty – not way too hard, like a huge project you feel won’t give you returns – not way too easy, like some cowsay clone. Ever tried making a blog? You can host for free on most Git pages implementations (codeberg, github, gitlab…).
As for programming books, consider trying security books like Art of Exploitation – in the same strain, CTFs can use a decent amount of code, and they’re fun in terms of raw problem-solving. I started with the Bandit wargame, which does Linux problem solving from any machine that has SSH.
I’m not by any means a l33t hax3r but I found them pretty fun in my learning journey.
Oh, you’re right. You just pass the -d
detach flag. I stand corrected!
According to tab autocomplete…
$ git
zsh: do you wish to see all 141 possibilities (141 lines)?
But what about the sub options?
$ git clone https://github.com/git/git
$ cd git/builtin
# looking through source, options seem to be declared by OPT
# except for if statements, OPT_END, bug checks, etc.
$ grep -R OPT_ | grep --invert-match --count -E \
"OPT_END|BUG_ON_OPT|if |PARSE_OPT|;$|struct|#define"
1517
Maybe 1500 or so?
edit: Indeed, maybe this number is too low. git show
has a huge amount of possibilities on its own, though some may be duplicates and rewords of others.
$ git show --
zsh: do you wish to see all 489 possibilities (163 lines)?
$ man git-show | col -b | grep -E "^ -" --count
98
An attempt at naively parsing the manpages gives a larger number.
$ man $(find /usr/share/man -name "git*") \
| col -b | grep -E "^ -" -c
1849
Numbers all over the place. I dunno.
Huh, TIL.
To be fair, git switch
was also derived from the features of git checkout
in >2.23, but like git restore
, the manual page warns that behavior may change, and neither are in my muscle memory (lmao).
I’ll probably keep using checkout since it takes less kb in my head. Besides, we still have to use checkout for checking out a previous commit, even if I learn the more ergonomically appropriate No deprecation here so…switch
and restore
.
edit: maybe I got that java 8 mindset
edit 2: Correction – git switch --detach
checks out previous commits. Git checkout may only be there for old scripts’ sake, since all of its features have been split off into those two new functions… so there’s nothing really keeping me from switch
.
It probably is, but I think their main point is the protest against the age-old delineation into “GUI vs CLI” camps. I’m not saying that you’re elitist, even if your statement might be interpreted as such (it’s hard to communicate tone online but the quotations around “their workflow” could appear mocking), but regarding the structure of your statement, I had a “Windows users are all button-presser noobs” phase and would’ve typed something similar about the Git CLI if time was decently rewound (sans the kindness of a “use what you like” statement). They could be interpreting your statement as a propagation of the anti-GUI stereotyping.
Evidently they prefer GUI but can effectively use the CLI – no one disagrees that the CLI is more functional.
First, imagine a number in JavaScript. (Bit of a nail biter here, huh?)
let i = 5
Then, we will construct an incrementor. This is really simple: here is the method.
eval()
.[]["filter"]["constructor"]("return i+1")()
eval()
by using+[]
as 0,+!+[]
as 1, and implicit conversions as ways to create strings. For example, ‘false’ is(![]+[])
, so ‘f’ is(![]+[])[+[]]
.[][ (![] + [])[+[]] + // f ([![]] + [][[]])[+!+[] + [+[]]] + // i (![] + [])[!+[] + !+[]] + // l (!![] + [])[+[]] + // t (!![] + [])[!+[] + !+[] + !+[]] + // e (!![] + [])[+!+[]] // r ][ ([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+ // c (!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+ // o ([][[]]+[])[+!+[]]+ // n (![]+[])[!+[]+!+[]+!+[]]+ // s (!![]+[])[+[]]+ // t (!![]+[])[+!+[]]+ // r ([][[]]+[])[+[]]+ // u ([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+ // c (!![]+[])[+[]]+ // t (!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+ // o (!![]+[])[+!+[]] // r ]("return i+1")()
let i = 5; // haha yay [][ (![] + [])[+[]] + // f ([![]] + [][[]])[+!+[] + [+[]]] + // i (![] + [])[!+[] + !+[]] + // l (!![] + [])[+[]] + // t (!![] + [])[!+[] + !+[] + !+[]] + // e (!![] + [])[+!+[]] // r ][ ([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+ // c (!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+ // o ([][[]]+[])[+!+[]]+ // n (![]+[])[!+[]+!+[]+!+[]]+ // s (!![]+[])[+[]]+ // t (!![]+[])[+!+[]]+ // r ([][[]]+[])[+[]]+ // u ([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+ // c (!![]+[])[+[]]+ // t (!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+ // o (!![]+[])[+!+[]] // r ]( (!![]+[])[+!+[]]+ // r (!![]+[])[!+[]+!+[]+!+[]]+ // e (!![]+[])[+[]]+ // t ([][[]]+[])[+[]]+ // u (!![]+[])[+!+[]]+ // r ([][[]]+[])[+!+[]]+ // n (+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+ // ' ' ([![]]+[][[]])[+!+[]+[+[]]]+ // i (+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]])+[])[!+[]+!+[]]+ // + +!+[] // 1 )() // no virus i swear. execute arbitrary code in your browser console.
Anyway, that’s just everyday JS work. It’s like step 5 after resizing the button, but a bit before centering the div.
based on this. some translation methods done differently.