2,601 karma · joined October 29, 2013
author: The Tao of tmux (https://leanpub.com/the-tao-of-tmux) available to read for free online at https://leanpub.com/the-tao-of-tmux/free
software libraries: cihai, unihan-etl, tmuxp, libtmux, vcspull, libvcs
https://tony.sh
(If what I say isn't helpful to you, disregard it. Spread the good will and good tidings!)
The Form of Rights: The Hohfeldian Analytical System [1]
The Function of Rights: The Will Theory and the Interest Theory [2]
Interesting read, "Hohfeld's cube": https://www.uakron.edu/dotAsset/65177fc7-9161-44a4-9a8e-1631...
[1] http://www.kentlaw.edu/perritt/courses/property/Hohfeld.htm
[2] http://core.ecu.edu/phil/mccartyr/1175docs/TheoriesofRights....
Gnome 1, 2, and 3: https://www.youtube.com/watch?v=dMak0R_fE2g
And yup, conventions like this work well Linux and BSD's. To note ~/.config for many configs
These days you see this happening inside of .github/, where configs related to gh repos and actions go.
If tooling authors started universally recognizing .config/ as a directory where we could keep stuff, the root could be super clean.
How about just one file, across languages / CI tools / etc? a "project.toml" or "project.yaml" or "project.json"?
[tool.npm]
name = "frontend"
version = "1.0.2"
[tool.npm.dependencies]
react = "^16.3.1"
[tool.travis-ci]
# ...
[tool.eslint]
# ...
[tool.poetry]
name = "backend"
[tool.poetry.dependencies]
django = "~3.1.0"
If vendors were willing to accept it, it'd be less clutter. Integration tools would only need to check one place (legacy configs would still have to be supported, though, so it's still a dream)Legacy configs could be ported via YAML / JSON straight into the TOML sections. It'd work for package.json or tslint.json, but not stuff involving runtime, e.g. .eslintrc.js
Some skipped Pixel 4 due to removing it. They considered fingerprint reading to be one of Pixel 3's most helpful features.
We still don't know if Pixel 5 will have it or not.
https://youtu.be/U6Og9wtO9jE?t=640
Context: Someone was using fiverr to get people to play a tune on bass guitar. The supposed "pro" player was hooked directly into Ubuntu (it looks like Unity)
Anyone know what app in the background?
But `print 'hi world'` This would really spoil one of the nice consistency things python 3 brought.
Callables without parenthesis to distinguish the arguments. Can you imagine what this is going to do to readability on open source projects?
This was back in June, and probably for the sake of conversation. It got my (and a lot of others) attention, though. If that was the case, mission accomplished.
I'm all for the new parser enabled in Python 3.9 (and switched on by default in 3.10): https://www.python.org/dev/peps/pep-0617/
Use python over SSH. Super fast to begin, if you can ssh into the server, you can run the equivalent of shell commands (subprocess calls in python) remotely. With python, you can abstract and reuse, with the scriptability of bash, but higher level niceties of the language, libraries and toolchain (linting, formatting, autocompletion, imports).
Can it pull the latest version of your app, build it on your server? Yep. Restart daemons? Update libraries (npm, python, etc)? Update system packages? All work fine.
Can it configure a vanilla server from scratch? Yes, it's helpful to bring in a higher level reusable library like https://github.com/fabtools/fabtools helps with that.
When does it hit limitations? More complex orchestration where you have multiple servers (and variations of them) with configuration to talk to each other over networks. Eventually you get to the kind of setup where having a tool like Ansible / Salt / Puppet / etc. makes sense.
For a basic PHP/python/ruby/node site that's just running on a single cloud server? A declarative config manager would be overkill for me.
React will use JSX and can use all the cool new JS stuff, e.g. module imports, template literals. With webpack there's automated code splitting. The toolchain is under very active development (from react, to webpack, to babel, to new dependencies I've never heard of - aside: a downside is the dependency graph in node can be crazy)
If your site is simple enough, server site templates will do. For anything non-trivial, where there's a lot of reusability and its very async / API heavy, the benefits shift dramatically to including a frontend framework.
Regarding server side templates, there's limitations to how far templates engines (e.g. django templates / jinja2) can take you. Extending templates works when done carefully, as does overriding blocks. Anything non-trivial becomes very hard to manage - there's no type safety, setting variables is burdensome.
On parataxic, there's no server. It's all static files served from cloudfront via Gatsby (to get an idea of this: https://jamstack.org/)
- TypeScript
- WAI ARIA / a11y for accessibility
- Passthrough styling props via Styled System: https://styled-system.com/
- Passthrough responsive conditional props: https://chakra-ui.com/responsive-styles
- Light / Dark: https://chakra-ui.com/color-mode (but it doesn't work on Gatsby: https://github.com/chakra-ui/chakra-ui/issues/305)
- I eschew some of the helper components like <Flex>. You are fine just using plain old Box as the shorthand props in Flex component don't add much. You can just pass display="flex" into a Box.
- Passing hover/active styling requires using PseudoBox (or a component deriving from it), so <Box> - or anything built on top of it - can't have hover colors directly. This means configuration for some components require additional wrappers
- Active! https://github.com/chakra-ui/chakra-ui
- Author is very courteous (if my limited interaction with him on the tracker is any indicator!) If you use Chakra and like it, you can support the creator via https://www.patreon.com/segunadebayo
https://www.youtube.com/watch?v=uieM18rZdHY
The story is, they moved all their assets over to Blender: https://www.youtube.com/watch?v=m09ZOHmGf8s
That's the whole kit. Apparently it's awesome at 2D-like animations. They started moving over before 2.80 dropped grease pencil: https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/G...
The creator was updating his Patron saying the lack of updates was him spending a month mastering Blender. Now they don't have to hop around N number of different Adobe applications, with that cloud service running the bg slowing everything down. It even hangs when I restart.
Blender is great teamwork, open source at it's finest. But some bits of it - maybe just my imagination - feel it's a sort of wake up call to players like Adobe that overreach trying to push services cloud stuff on users.
> Therapy (with a body focus) ... IFS (I tend to recommend against traditional talk therapy, I find it a poor way to deal with ourselves)
Though in the end they probably won't be helpful for anything more than soft skills, since it's work.
On the subject of family therapy things in general, the broad concepts taught in them are so good, some of them can come up in groups and basic interaction.
- Triangulation: https://en.wikipedia.org/wiki/Triangulation_(psychology)#Fam...
- The 8 concepts here: https://thebowencenter.org/theory/eight-concepts/ (triangles are the first one)
Good ones: Murray Bowen, Salvador Minuchin, Virginia Satir
Videos: https://www.youtube.com/watch?v=tLQOWoom2d0 (Bowen), https://www.youtube.com/watch?v=UJEewdFPB7M (Minuchin), https://www.youtube.com/watch?v=ql3mPOcX7kY (Satir)
Good book: Interpersonal Process in Therapy: An Integrative Model
As I say this though, Family therapy is intense stuff that I don't think would make sense out of nowhere. Unless they were open minded and willing to put the legwork in. I've been exposed to it many times over years and didn't really connect with it.
Ever been through family / life / circumstances where you were dependent on a selfish jerk who viewed others as their own pin cushion, with no interest in cooperation? Come out of those a couple of times, then look these concepts/books up. You'll get where they're coming from!
I can't go back to edit at this point.
On Linux, it was easy to test:
Grab it via https://inkscape.org/gallery/item/18047/Inkscape-09960d6-x86....
wget https://inkscape.org/gallery/item/18047/Inkscape-09960d6-x86_64.AppImage
chmod +x Inkscape-09960d6-x86_64.AppImage
./Inkscape-09960d6-x86_64.AppImage
They finally updated the UX. Though the only thing I notice is my theme sticks better (could be a matter having gtkrc set locally)Anything related to inkscape and gimp being powered up and having the functionality of Illustrator and Photoshop (without the bloat and background services) is very openly welcomed.
The stuff that I use something like inkspace for (Pen tool, SVGs) and Photoshop (very very basic photo editing, resizing, exporting) doesn't need a huge hulking application.
That's not to mention:
- Blender for 3D: https://www.blender.org/
- Inkscape, Gimp, and Blender, are all scriptable in two ways (headless) and extensions in-app (headless, in app):
Inkspace: https://wiki.inkscape.org/wiki/index.php/Using_the_Command_L..., https://inkscape.org/develop/extensions/,
Gimp: https://www.gimp.org/tutorials/Basic_Batch/, https://wiki.gimp.org/wiki/Extensions
Blender: https://docs.blender.org/manual/en/dev/advanced/command_line..., https://docs.blender.org/manual/en/dev/advanced/scripting/in...
What drives the development of these apps? I'd guess Adobe making the applications heavier/bulkier over years, and pushing a cloud model where an app tries to become a bigger part of daily life than 9/10 people want it to be.
My guess is most Illustrator users like the app, but don't want a daemon running in the tray 24-7. And why invest in saving files in Adobe when there's solutions that work for all files, (and it may require a local network filesystems for sizes that big, cloud won't be practical)
- No caffeine after 1/2/3PM (even "sleep-friendly" tea throws me off)
- Melatonin / Sleep aids: See if they work for you
- Don't drink before bed (because it means a bathroom break in the middle of the night) [1]
- If you do wake up in the middle of the night, a snack may help. (https://www.sleepfoundation.org/articles/food-and-drink-prom...). Though I don't know, I've tried Chamomile tea and it keeps me up.
- Sleep study. Screen for sleep apnea. You may be able to get a CPAP machine depending on insurance.
- Find a psychiatrist to screen for adult ADD/ADHD.
- Consider a single monitor, ultra wide screen, and tiling/snapping window. Always have your content you need to get done open.
- Take a few days to clean and unclutter stuff. It takes an upfront emotional toll to get rid of stuff (loss aversion), but most stuff you forget. Junk is burdensome on the mind.
- A nice podcast on procrastination: https://www.youtube.com/watch?v=YWFWsR0iPqI
- Dietary: Any sensitivities? Consider simplifying your diet to be very plain (cut carbs?) and experiment. I do keto. Simple carbs can impact me heavily!
- Bed: Do you have a comfy bed frame? Blankey? Pillow? Latex pillows are nice. I like soft pillows and hard mattresses. Amazon has cheap, high quality bed frames and mattresses-in-a-box, and I'm a big guy. My bed setup is ~$350 all included, with a comfy comfy pillow. Walmart has mattress-in-a-box.
[1] my hypothesis is for certain people, when they wake up at night, go to the bathroom, it's enough excitement to make it hard to go back to bed.
Subsystems to fix: Unclutter physical possessions, Streamline info spaces (computer workflows, email), avoid stimulants in afternoon / evening. Check for sleep apnea and ADD/ADHD.
{
"trailingComma": "es5",
"arrowParens": "always"
}
Prettier 2.0 changed this to be the defaults, but for some reason the editor plugin wasn't acknowledging it.Also I added a script command to format all the code in package.json:
{
"scripts": {
"prettier": "prettier src webpack data --write"
}
}
Then `npm run prettier` got me sync'd with the latest defaults (the trailingComma and parens styling).It even formatted my JSON and SCSS files. Didn't recognize prettier could do that.
Carl Rogers referred to congruence of the self, as we navigate to actualize ourselves against external introjections from parental / authority figures and society.
Both Rogers and Horney had concepts of an ideal self and the anxiety when we're strained by social pressures. The emotions are hard to articulate, and why bother, what's to gain in vulnerability? If we dare to say our feelings, we fear others will not regard us in a positive light. Our feelings will be hurt deeply. So, we shape ourselves based on the impressions we want the audience to see, which feels safe, but leaves us inner unease. We're not doing what we really want, we're pleasing others.
Another area to dig into is True self and false self: https://en.wikipedia.org/wiki/True_self_and_false_self
In Social Psychology, related terms and concepts include self-monitoring, impression management (https://faculty.washington.edu/jdb/452/452_chapter_07.pdf)
> And they have good reason to: In a game theoretic way, unless they’re already inundated with social bids
Social Exchange Theory and CL-Alt covers this in greater detail: https://smashtyn.wordpress.com/2011/04/24/social-exchange-th...
I get the aesthetic and sentiment, but in practice this doesn't convey the reality. Having a business link or incorporate your open source software project isn't necessarily bad. At the very least, it's a social proof. There could be sponsorships, patches sent back.
There plenty examples of permissively licensed software out there that directly contradict this:
FreeBSD for Nintendo Switch and PS4, FreeNAS
Django, TypeScript, Jupyter. VSCode. Electron. Python. Ruby. CoreCLR. Windows Terminal.
Anyone of these projects, someone could fork it, rename it, repackage it as value added. It doesn't happen since the transaction incentivizes merging contributions upstream - maintaining forked code has passive costs. Pushing it back passes the burden (and also the benefit) of the changes back to the project.
> Go AGPL, they’ll avoid it like the plague.
I feel when we're thinking about gatekeeping who and uses our software and why, we're not really doing open source anymore.
In that case, writing commercial software license from scratch, or based off a permissively licensed project, and not releasing the source is an option.
Meticulous. And clicking the headers link to comparisons at the tag level: https://github.com/PowerShell/PowerShell/compare/v7.0.0-prev...
And the hover link to the left of headers link perfectly to the section: https://github.com/PowerShell/PowerShell/blob/master/CHANGEL...
Sections: Breaking Changes, Engine Updates and Fixes, General Cmdlet Updates and Fixes, Code Cleanup, Tools, Tests, Build and Packaging Improvements, Documentation and Help Content
That's better than what I see in node and python projects.
So much thought and caring. Let's try it:
> brew cask install powershell
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/cask and caskroom/cask).
==> Updated Casks
caskroom/cask/microsoft-edge homebrew/cask/microsoft-edge
==> Downloading ...
powershell was successfully installed!
~ 23s
> pwsh
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
Type 'help' to get help.
PS /Users/tony>
I'm using Powershell, a C# application, on MacOS, in iTerm2. I'm fine with it. Also, the subsequent bootup of pwsh was faster than the first.Edit: You can open vim from it. Somehow, it's even detecting my tmuxp (which is in ~/.local/bin). I'm guessing it inherits PATH's from the parent shell?
The biggest changer to me was TypeScript and DefinitelyTyped covering pretty much every package I end up trying out.
Hooks save a layer of indentation, and in most components, I don't need all the class stuff. In addition I find it harder to manage renders in classes.
Some design decisions, like overextending use of redux-forms can be a pain to back out of. Maintaining typings for these thing break often in my experience. I'm trying to stay away from redux (the data store) in favor of managing stuff through relay mutations.
Nice little comforts like prettier (code formatter) go a long way.
And apparently tslint is being deprecated in favor of eslint (https://github.com/typescript-eslint/typescript-eslint).
Code splitting via React.lazy / dynamic imports working with minimal effort.
The other thing that has helped is webpack's API becoming more stable, editor extensions getting better. I'm getting consistent linting and completion in vim. Stuff is snapping together.
> the developer environment just doesn’t square well with whatever system is running your code. In the olden days of yore, this disparity was so great that we often had to tunnel in to an environment that was exactly like our production server
For web apps, I've gotten stuff working very easily across linux, freebsd, and mac os. Thanks a lot due to package managers, up to date library packages, and any python/ruby/node packages with c/c++ parts generally being able to find the header/.so files. Lockfiles (package-lock.json, poetry.lock) have gotten better as well, so I feel secure knowing that there won't be hiccups there.
Thank you for your comment on docker CLI.
I find docker commands more confusing and obtuse to work with than the commands of postgres, python, node, webpack, combined. All of them. Because it's about having to think about copying files, proxying against the file system, layers of containers. By the time stuff is running I feel so far away from the roots, I'm asking myself how much of a favor is this really doing?
The other thing is deploying these images is a lot of work compared to just running SSH commands via fabric, pulling code, and restarting services. I also think developers benefit from jumping in and wiring in the daemons themselves on whatever system. I think it's part of what fullstack is. It'll come in useful should stuff go wrong in production.
I also found my experimentation with docker inconsistent, even when I cloned projects from git repos with docker compose, I have a high failure rate. To the point I'd be happier if they just gave instructions for me to wire in the daemons and db myself. And when I google, I go down a rabbit hole of configurations and github issues that don't seem to fit (perhaps docker or docker-compose is out of date somehow? Or is it the project itself? Or me?)
I tried AutoHotkey for the firs time yesterday. Am I correct in saying a text file has to be edited to disable the key? What would it look like?
I also heard about Win + D, which could be what I'm hitting a % of the time. Correct me if I'm wrong: but positioning any window after minimization (possibly including the bottom show-desktop / taskbar area) will make it so the window settings can't be reverse back?
My dream scenario would be something in Windows 10 settings where shortcuts can be remapped (or disabled) one-by-one, without registry/group policies.
ConEmu glitches out for me on tmux. Hyper can be a bit slow, but is most accurate for me.
I'm doing tmux + vim with 256 colors. So a lot of stuff has to come together and "just work"
Windows Terminal over the past months fixed glitches. It's update-able via Windows Store.
Oh, and the font "Cascadia Code" is one of my favorites. Very clean. Actually, I'm using it on Linux now in my terminal [1].
The other thing is Windows Terminal works great on a huge monitor, too. No lag when rendering. Feels lite. I compare its snappiness to rxvt-unicode. Faster than iTerm2.
Just my perception, never benchmarked.
And this goes along with WSL 2, which is worth reinstalling Win 10 for if you left because of WSL 1 problems. This stuff is fast. I can throw multiple multiple beefy node projects, python flask/django apps, building C++ projects, importing postgres DB (4gB import with a lot of indexes), all at the same time.
[1] I dual boot still. There is a shortcut on Windows 10 minimizes all windows that I can't disable easily. It loses my workspace positioning and isn't recoverable. I hope this gets changed - it'd be a dream.
Go the website and look at https://shiohara.org/. Top right, there are other projects and they have icons like Period Table of Elements symbols.
Example: https://github.com/openturing, https://viglet.com/turing
On all the projects, you can bounce straight to the release notes. Well organized, you can bounce straight into API docs. And a demo: https://demo.shiohara.org/welcome
Almost feels like Python projects that use Flask-style docs.
Any thing planned to integrate graphql alongside/as an alternative to REST?
My anecdote, since I already had projects in mind and just wanted to synthesize how things were glued together A to Z: I went to SourceForge/GitHub/BitBucket and cloned repos for projects for the language of choice, build them, run the tests.
Also, https://github.com/search and lookup stuff of similar topic / using the same libraries (words like MIT, ISC, Apache 2, BSD are a good sign). Then check if it's permissively licensed. Also, in the end, you likely won't ever end up forking or copying. You're just getting the knowledge of how it's glued, and probably will wire stuff in uniquely for your case.
Building these projects in itself teaches the ropes of getting an environment setup (googling build errors, checking issue tracker), dependencies, test suites, and building a production-ready package.
I kept the best projects I found at https://github.com/tony/.dot-config/blob/master/.vcspull.yam.... Purely for studying the source of.
Python : Flask, Werkzeug, Django, SQLAlchemy
JS : Express, Backbone, blog posts by Addy Osmani and JS enterprise architecture and Derick Bailey on Marionette (but i don't think the backbone would be as relevant today, it def paved the way to modern frontend we see today)
C++ : OpenTTD
In the end, there weren't many books I found espoused building projects. I already had an idea of what to build - I just needed enough to "ramp up", but if you want books:
JavaScript Patterns: Build Better Applications with Coding and Design Patterns
Examples applied directly to the task at hand. All about scoping.
A python book, that hits different areas than this JS book would be The Hitchhiker's Guide to Python: https://docs.python-guide.org/
C++: Scott Meyer books are great
General programming: Code Complete
The blog posts by Kevin Modzelewski went into the internals: https://blog.pyston.org/
Also by the same person, a good article on Python's performance: http://blog.kevmod.com/2016/07/why-is-python-slow/
As a side comment: On the subject of type inference, I really come to like python's type hints. I don't use mypy itself yet, but already had a habit of adding types in docstrings, and like it when I can add a clue that a signature/return is dealing with a something that's not a basic type.
There are some nice little things out there for advanced typing, being added now and then:
- TypedDict and Literal: https://github.com/python/typing/blob/master/typing_extensio... (TypedDict was accepted in PEP 589[1])
- NamedTuple had variable annotation added in Python 3.6: https://www.python.org/dev/peps/pep-0526/
I wonder if typings are added to a codebase, we could give LLVM one more shot. It'd be pretty crazy to build able to build a large graphql server and build it into a statically linked binary like golang.
I was looking up genealogy of my family and found my Aunt already added my great grandparents back in Poland. The church runs the website and offers it free of charge (https://www.familysearch.org/), you don't need to be a member to use it.
Another anecdote is Matz, creator of ruby is a member: https://www.youtube.com/watch?v=bkh0gPf4Noc
Also they make really nice music: https://www.youtube.com/watch?v=msoqtX4YAIY
On the subject of churches asking for tithes and donations - I've seen various denominations do it and never felt odd about it. Back in my hometown, our church was the ones doing outreach to help the local homeless and getting them back on their feet (not the city or country, that's for sure). This was the early 90s though.
This was a fast release cycle. It was back in November 2019 we were talking about 3.7, and now it's in.
I'm not even thinking about Ivy. But it's nice to have all the nice comforts of typescript ready and working out of the box. (I mainly work in React, but dabble with angular/vue to stay up to date)
And what a smooth update process (abbreviated):
ng update @angular/cli @angular/core
** Executing migrations of package '@angular/cli' **
** Executing migrations of package '@angular/core' **
Your project has been updated to Angular version 9!
For more info, please see: https://v9.angular.io/guide/updating-to-version-9