491 karma · joined September 6, 2022
I speak specifically of the UI. Obviously the underlying system works. Yet it's totally within reason that the UI has wasted trillions of money and many person years in lost productivity.
Napkin math. It's easy to waste 30 minutes figuring out what the heck is going on after a command didn't work, or explaining what a detached head is to a newbie, or any number of completely avoidable issues were the UI better.
Consider the 26.9 million developers in North America[1]. How does one estimate the average salary across NA? Some in SV make 3x that. Elsewhere, it's conceivable that people make considerably less. Let's just say 100k. That's 100,000÷52÷40=48/hr or 24 per half hour. Anyone with git, I think it's safe to say, has had at least one stupid issue that took 30 minutes because of the UI. That's 26.9×24=645,600,000 monies.
In my experience and what I've seen of anyone who'a used git, 30 minutes is a gross underestimate. And people use git outside of NA. It's easily trillions in waste.
https://en.wikipedia.org/wiki/Software_engineering_demograph...
Would writing a CHIP-8 emulator be such a project? It seems non-trivial, yet not too big, the kind of thing that if you implemented it once, implementing it again in another language would be much faster (apart from the language learning).
I don't know who first uses the asbestos analogy, but it's 1000% on point.
I think Cory Doctrow says it best,
"AI is the asbestos we're shoveling into the walls of our society — and our descendants will be digging it out for generations."
I believe that's exactly the language to combat AI hype.
If you do want Termux, a signed and compatible version is provided by the Emacs devs. It should all be in the README (at least it always has been, through various updates, since I started using the Emacs on Android before it was merged into the main branch).
This reads as a testament to how far the Emacs GUI has progressed!
(global-set-key (kbd "<volume-down>") 'fill-paragraph)
You can use the usual C-h k <key> to see what Emacs calls the key.There are several developer oriented keyboards. I found the Unexpected Keyboard quite good.
This is my Unexpected layout:
<?xml version="1.0" encoding="utf-8"?>
<keyboard bottom_row="false" name="Emacs-rev1" script="latin">
<row>
<key c="q" sw="1" nw="loc esc"/>
<key c="w" sw="2" nw="~" ne="\@"/>
<key c="e" sw="3" nw="!" ne="\#" se="loc €"/>
<key c="r" sw="4" ne="$"/>
<key c="t" sw="5" ne="%"/>
<key c="y" sw="6" ne="^"/>
<key c="u" sw="7" ne="&"/>
<key c="i" sw="8" ne="\*"/>
<key c="o" sw="9" ne="("/>
<key c="p" sw="0" ne=")"/>
</row>
<row>
<key shift="0.4" c="a" nw="loc tab" ne="`"/>
<key c="s" ne="loc §" sw="loc ß"/>
<key c="d"/>
<key c="f"/>
<key c="g" ne="-" sw="_"/>
<key c="h" ne="=" sw="+"/>
<key c="j" ne="}" nw="{"/>
<key c="k" nw="[" ne="]"/>
<key c="l" nw="|" ne="\\"/>
</row>
<row>
<key width="1.5" c="shift" ne="loc capslock"/>
<key c="z"/>
<key c="x" ne="loc †"/>
<key c="c" sw="<" ne="."/>
<key c="v" sw=">" ne=","/>
<key c="b" sw="\?" ne="/"/>
<key c="n" sw=":" ne=";"/>
<key c="m" ne=""" nw="'"/>
<key width="1.5" c="backspace" ne="delete"/>
</row>
<row height="0.95">
<key width="1.7" key0="ctrl" key1="loc switch_greekmath" key2="loc meta" key3="loc switch_clipboard" key4="switch_numeric"/>
<key width="1.7" key0="alt" key1="loc change_method" key2="fn" key3="switch_emoji" key4="config"/>
<key width="3.5" key0="space" key7="loc home" key8="loc end"/>
<key width="1.6" key0="loc compose" key7="up" key6="right" key5="left" key8="down" key1="loc page_up" key3="loc page_down"/>
<key width="1.5" key0="enter" key1="loc voice_typing" key2="action"/>
</row>
</keyboard>The Unexpected Keyboard is a great addition, but even with the stock Android keyboard, it's totally usable. Of course, it helps to add things to menus and remap the volume keys.
You can add buttons to the toolbar with something like:
(tool-bar-add-item "spell"
'eval-last-sexp
'eval-last-sexp
:help "Eval last sexp")
(tool-bar-add-item "back-arrow"
'xref-pop-marker-stack
'xref-pop-marker-stack
:help "Previous Definition")
(tool-bar-add-item "fwd-arrow"
'xref-find-definitions
'xref-find-definitions
:help "Find Definitions")
There are many icons bundled with Emacs that you can reuse: https://cgit.git.savannah.gnu.org/cgit/emacs.git/tree/etc/im...You can remove toolbar buttons:
(tool-bar-add-item-from-menu 'find-file "")
Otherwise, you can add to menus: (define-key global-map
[menu-bar edit expand]
'("Expand word" . dabbrev-expand))
Remapping the volume keys is super handy, especially when you change the behavior by mode or buffer: (global-set-key (kbd "<volume-down>") 'fill-paragraph)
(global-set-key (kbd "<volume-up>") 'my-runner)
(defun my-runner ()
(interactive)
(cond ((equal major-mode 'org-mode)
(call-interactively (local-key-binding (kbd "C-c C-c"))))
((equal major-mode 'emacs-lisp-mode)
(save-buffer)
(call-interactively 'eval-defun))
((string= (my-get-file-name)
"/data/data/org.gnu.emacs/files/.emacs.d/my_python_file.py")
(save-buffer)
(with-current-buffer (shell "*shell*")
(my-send-string
"python /data/data/org.gnu.emacs/files/.emacs.d/my_python_file.py"
t
"*shell*")
))
(t
(message "Undefined action"))
))
Redefining the fill column is handy to set appropriate text wrapping:C-x f runs the command set-fill-column
Otherwise, the menu for Lime Wrapping in this buffer is super helpful.
I set my init to load up Dired so that I'm met with my project directory and am ready to go.
It's hard for me to think of another editor having my back like Emacs has. Again, amazing work by the community!
The only others who compare are his contemporaries, Steve McConnell, Timothy Lister, Tom DeMarco, and Barry Boehm.
Unfortunately, they're all basically retired. It feels like this kind of interest in software development, at least the publishing, ended around the mid-2000s.
My guess is the shift to blogs from books, adoption of Agile (in whatever form), and a shift in industry focus to getting rich rather than getting good ended the efforts to come up with resources like Glass put together.
Understandably, some people complain that it shouldn't need a tutorial or the defaults are bad. There's validity to that angle. There's also validity to Emacs pre-dating GUIs, the IBM keyboard, and the x86 instruction set. Once you get past the history of windows and killing, you can explore. The history is also super interesting!
https://www.emacswiki.org/emacs?EmacsHistory
https://dl.acm.org/doi/abs/10.1145/3386324
After you've read the tutorial, go wild. Try stuff out. Break things. Fix them. Learn your limits. Learn that there are very few limits imposed by Emacs itself.
Hands down, the best resource for Emacs is Emacs itself. Especially, the Emacs manual and the Elisp manual. The "An Introduction to Programming in Emacs Lisp" is also excellent if you're not familiar with Lisp. Learn to read Info files and learn the help system (basically C-h f and C-h v)
https://www.gnu.org/software/emacs/manual/
Emacs really is a flagship of Freedom, with all its pain and glory. It lets you exist at the threshold of your zone of proximal development. Every bit you put into Emacs, you get a return on investment.
Welcome to the Emacs community! It's full of weirdos and wizards, as well as regular folk. Stick around and I'm sure you'll make friends in no time.
Democratic governments clearly are about addressing community needs and coordinating efforts that require pooled resources (at least). I'm not denying there may be a monopoly on violence. However, in a democratic system, such a monopoly would be voted on, giving the monopoly some legitimacy (not saying it's necessarily moral).
Yet in reality, the US, for example, has the Second Amendment, which grants citizens the right to bear arms and form militias. That doesn't sound like the government has a monopoly on violence.
I guess the weasel word is "legitimate"? But is that legal or moral legitimacy (or something else)? By whose definition and arrived at how?
It feels like such a pithy comment, "a monopoly on legitimate violence", like it's expressing something deep. Yet I get the sense that supporting it requires some contortion of logic and language. Maybe I'm missing something but it doesn't seem self-evident to me at all.
What do you mean by this? One can look at Emacs itself as a crusty event loop with some slightly annoying behavior. But seriously, I am curious what you mean.
You may already know (and others may not):
- `M-x toggle-debug-on-error` throws you into the debugger on any error (note this isn't "visual" the edebugger!). Use C-h m to see the navigation commands/keys
- Use (debug) to set a breakpoint in Lisp code
- depending on the circumstances, the edebugger may be more helpful. I always instrument the function to debug with `C-u C-M-x` from within the function's form and use `C-M-x` to interpret it (sorry, I forget the underlying commands)
Of course, there's great documentation for both the debugger and edebugger.
Like, as a user downloading packages, or a person packaging an application?
As a user downloading a package, it's been super easy for me and it's been years of running Guix with little to no issue (yet the benefits of rolling release, rollbacks, installing multiple versions of a given software etc.).
As for using it to package an application, I found the challenges mainly in the documentation. This was years ago and a lot of work has gone into improving the docs.
I'm curious what your experience has been.
> I really hope a future Congress will undo this fucking mess... otherwise the US is probably never going to catch back up to what it used to be. Voters made a terrible mistake.
Putting too much power into the president is part of the problem.
I appreciate you looking for examples. This podcast episode will give you some, as well as a lens through which you may spot others.
https://www.dancarlin.com/product/common-sense-324-whats-goo...
So things like the cotton gin or Ford's use of interchangeable parts don't count as design or somehow didn't change the world?
How is volunteering at soup kitchens more effective at changing the world than interchangeable parts?
And still yet...are you wanting to change the world for the better?
If it's that simple, sounds like you've got your solution! Go ahead and take care of it. If it fits V&V and other normal procedures, like passing tests and documentation, then we'll merge it in. Shouldn't be a problem for you since it will only take a moment.
- Rule 1: Be Funny
- Rule 2: Writing a spec is like writing code for a brain to execute
- Rule 3: Write as simply as possible
- Rule 4: Review and reread several times
The author isn't quite as adept at integrating the humor as seemlessly as Joel, yet it's interesting to see how effective the style is, even for someone still learning it. I commend them for making the topic more accessible. It was probably fun to write and was definitely fun to read!
https://www.joelonsoftware.com/2000/10/15/painless-functiona...