1. 4

    I’ve been enjoying all the discussion recently about methods people are using to be faster at programming, so I decided I’d contribute my a list of my own.

    I’d be eager to hear what everyone else does that I haven’t listed!

    One area I know I’m quite lacking is in using good keyboard shortcuts and keybaord-based navigation as a whole. I still do a good amount of clicking around the editor to select stuff and move the cursor, and I’ve seen some vim users who take pride in never taking their hands off the keyboard.

    1. 3

      Honest question: Is it really the tooling that does it…? Or is it just icing on the cake? Compared to knowledge of algorithms, choosing the right language for the job, and stuff like that.

      1. 1

        Having to pick up the mouse from time to time is an annoying distraction though. When I moved from Vim to VSCode, not learning the keyboard shortcuts feels quite destructive in the tight modify-compile-run loop. Having learned how to switch between editor window and terminal helps a lot.

        1. 1

          In case you haven’t seen it yet, vim extension for vscode is really good. Less relearning that way.

      2. 3

        Long ago Bruce Tognazzini did some experiments showing that choosing a command from a GUI menu was measurably faster than pressing the keyboard shortcut, even though the people doing it felt that the keyboard was faster. (The exceptions were super common shortcuts like Copy and Paste that were burned into muscle memory.) He hypothesized that subjective experience of time was different when performing a physical task like moving a mouse, than for a memory based task like remembering a key command.

        I’m sure an expert can get the full range of keyboard navigation commands burned into muscle memory to where it’s faster than mousing, but personally, I’m waiting for eye-tracking interfaces that can move the cursor to where I’m looking.

        1. 12

          Dan Luu did a rebuttal to Bruce’s claims: https://danluu.com/keyboard-v-mouse/

          1. 3

            The fundamental flaw with mousing is that you have to look (at things) to use it.

            The operational cycle is: 1) actuate muscle motor skills, 2) watch mouse pointer movement, and other on-screen UI changes, 3) loop (1 -> 2) until target is reached, 4) complete task (click, hover, release drag)

            With keyboard, assuming you are zeroed in on your home row position, you can execute the vast majority of your tasks without looking. The cycle is: 1) actuate muscles, 2) complete task

            1. 3

              Exactly. The point is not to minimize the amount of milliseconds that the operation takes, but to minimize the amount of distraction or context switching. Ideally one can edit the code without paying special attention to the editing process itself, so your mind can devote all space to solving the actual problem you are taking on.

              I’d say this goal is easier to reach with keyboard shortcuts than with the mouse. But perhaps one can do this with the mouse too after enough training.

            2. 1

              Interesting finding! In my case, I opened a really old delphi project recently, I think I hadn’t had delphi installed in years, but the shortcuts immediately were in my muscle memory. What I used often stayed there - just like riding the bike. There are so many commands today that nearly impossible to memorize ’em all, but what you use the most frequently worth the effort to memorize (which is like using it 6-8 times to learn?) - those will actually speed up your daily routine.

            3. 1

              I have this in my .spacemacs:

                ;; Don't use the mouse in emacs. It's just annoying.
                (load-file "~/.emacs.d/private/disable-mouse.el")
              

              https://github.com/purcell/disable-mouse/blob/master/disable-mouse.el

            1. 1

              Well-written and interesting! It satisfied some of my curiosity about how these kind of media-recommendation systems work.

              It’s odd that your system works best with only 8-dimensional vectors, since I’d expect musical styles to have higher dimensionality than that. Is it possible to figure out if there’s some kind of human-comprehensible meaning of those 8 dimensions, like “heaviness” or “dissonance” or “Beatles vs Stones”?

              I want to try out the Music Galaxy site, but while it renders fine on my iPad, I can’t navigate at all because it only responds to keyboard commands. Adding touch gesture support would be awesome! (I’ll definitely try it out next time I’m at a ‘real computer’.)

              1. 2

                Hey - thanks for reading it!

                It’s odd that your system works best with only 8-dimensional vectors

                As far as I can tell, this is mainly due to the limited detail that the source data I use to produce the embedding provides. With a max of only 20 related artist connections per artist, there really isn’t a ton of detail available to represent those kinds of complex relationships. I believe that having access to a larger number of related artists as well as the degree of similarity (how much their audiences are similar) would help with that.

                I can’t navigate at all because it only responds to keyboard commands

                Ah I think that’s an issue with my mobile detection code; there are touch controls that work on mobile phones but that must not be getting activated on iPad. I’ll fix that right now, thanks for letting me know!

              1. 10

                Aside from the high-level decision making the author discusses in the post, development speed is the biggest advantage that modern dev tooling provides in my opinion. Less time spent getting thoughts out of my head and into the text editor.

                Some of the biggest speed increasers that I’ve adopted during my ~7 years of programming are (in no particular order):

                • Getting really good at using “go-to definition” in my editor. Being able to navigate around large codebases quickly and with little friction is so massively important for keeping context hot and thoughts continuous.
                • Learning the best things to grep for in order to navigate code quickly, as well as getting very familiar with the full-codebase search built into my editor
                • Auto-import code assists. I have these for Rust and Typescript and I actually dread to think about programming without them. So much time used to be wasted hunting for which file some function comes from, typing out the full path to it, etc.
                • Embedded linting and errors in the editor. Having to tab over to a terminal and run your compiler and then tab back to the code and cross-reference is horrible.
                • Code auto-formatters. I used to waste huge amounts of time laboring over exact formatting of my code. Now, I’ll type 200+ character lines for things like function signatures or complex conditionals and let the formatter handle adding newlines, spaces, etc.
                • Making sure that my hot-reload tools for frontend webdev are as fast as possible. Especially when doing fine-tuning stuff with styling etc., having a rapid (~500ms) hot-reload is such a massive difference-maker and it prevents me from getting fatigued of the dev process when things work smoothly.

                And most recently,

                • AI-powered code autocomplete. I started with Tabnine and now I’m quickly becoming a Github Copilot addict.

                Wrt. Github Copilot, the jaw-dropping demos aren’t the best part imo.

                I’ve adopted some really neat time-saving patterns. One really neat one is for if I can’t think of a CSS attribute or some standard library function’s name, I can type a comment like:

                // Apply 1px box shadow
                

                or

                // Cross product of a and b
                

                And then almost every time Copilot will generate me valid CSS on the next line that I can then tweak/modify as I need to and delete the comment.

                1. 1

                  It’s crazy to me that anyone would program professionally without doing all these things. Copilot I haven’t tried, but everything else is practically mandatory in my book.

                1. 7

                  Rocket is definitely my favorite rust web framework. It’s super easy to get started with and I find that it’s a very productive environment for building APIs and web app backends. I love the batteries-included database support, their good support of types for routes, their middleware system (“fairings”), and pretty much everything else about the framework.

                  Its recent addition of support for async was the only thing missing for me to go back to using it as my first choice. A few things with that still feel a bit clunky like using a blocking database client from a non-blocking route, but that’s more a problem with the rust async/blocking clash and the fact that the database ORM I normally use (diesel) doesn’t support async.

                  I highly recommend Rocket to anyone looking to build APIs or web application backends in Rust.

                  1. 2

                    Very cool! I tried out “vanadium amethyst orchard” and the results are cool.

                    Final image: https://ameo.link/u/97m.png

                    Full run: https://ameo.link/u/97n.zip

                    1. 5

                      That was a remarkably readable research paper for such an advanced topic! I really appreciate that in papers like this; they could easily have crowded it with Greek letters and math notation for explaining stuff like their IR or other pieces, but instead they explained the complex technical topic elegantly with just words. I was able to grasp the core pieces of the toolchain they built even though my knowledge of the domain is rough at best.

                      Also, I was super impressed at how much they accomplished with such a small amount of code:

                      We implemented a Reticle compiler in 8662 LoC in Rust, together with a Verilog AST library (2486 LoC).

                      1. 38

                        Well, since I’ve not seen anyone here post it yet, I’ll say it:

                        I use the Gmail web application for all my email sending and receiving, both for work and for my personal email, and I really like it.

                        I used to self-host email but through a mixture of inexperience configuring things and my domain getting flagged on spam lists due to me running an open link shortener on it, too many of my emails went to spam and I gave up and pay Google to host my email now.

                        Anyway, I’m very happy with it. It runs very well, is accessible from any device with no installation, and has some really nice features that aren’t really available anywhere else. Their predictive text feature while composing emails is something I’ve come to really like. Their spam filtering is as perfect as I can imagine it getting. The auto-sorting feature for Primary, Promotions, and Updates is really nice; it works quite well too considering how much variety there is in email. The site is very performant as well (although I do have high end hardware) and I never wait for things to sync or load.

                        When I self-hosted e-mail I used an open source web-based mail client called Roundcube (which really is incomparable to Gmail in terms of features and ease-of-use, but certainly did the job). I also used Thunderbird for a while. However I found that for me, there really is no advantage whatsoever over just using a web app, even Roundcube.

                        I totally understand that not everyone can use (or wants to use) Gmail for their email, and I’m not even trying to promote it. Maybe the story is different for people that make heavy use of things like git-by-email, are in huge mailing lists for discussion and questions, or stuff like that. However, I really do believe that an e-mail client is one of the use-cases where a web application can really show its advantages.

                        1. 3

                          Me too. The web client on desktop/laptop, and gmail app on mobile. It’s really great.

                          I have my own domain name. I don’t get Google to host it – I have my own mail server for receiving, but for the last 10 or 15 years it simply immediately forwards everything to my gmail account. When I send mail from gmail it sends as my personal domain.

                          If gmail ever becomes intolerable for some reason I can instantly change the forwarding to go somewhere else – or even (save me!) run my own full featured email server again.

                          1. 2

                            I can’t find any alternative that has anything comparable and as customizable as Gmail’s priority inbox. Spark comes close with their smart inbox categories but it isn’t customizable.

                            I have my unread messages on top, then my drafts, then the rest of my mail.

                            1. 1

                              I use the Gmail web application for all my email sending and receiving, both for work and for my personal email, and I really like it.

                              Same. Email isn’t something I need or actually even want duplicated on any of my devices. The value is in its always-available ubiquity and search-ability, invariant of any forethought or planning on my part. A web app is the best kind of app for this.

                            1. 3

                              Very cool! I had actually wanted to experiment with Rust to do a simple 4-op FM synths on an ARM microcontroller.

                              For anyone not familiar with FM synth sounds… you’ve definitely heard it if you listened any pop music from the 80s - either from the Synclavier or the famous Yamaha DX7. Yamaha’s cost-reduced 4-op FM synths (like the DX100) were also a staple of 90s house music.

                              1. 4

                                Or played on a Sega Genesis / Mega Drive.

                                1. 3

                                  Can we get an in-browser version of the OP-1? ;)

                                  1. 5

                                    You just want the cow, be honest with yourself. :-)

                                    But more seriously, I got a similar idea about making a sampler in the browser à la MPC or SP404. Not sur if the workflow may fit a no-pad no touch device. Or going back to a tracker like Renoise or Sunvox that fit the computer interface.

                                  2. 2

                                    You should def. go for it! It would be really cool to get something running on a microcontroller like that, and Rust seems like the perfect language to make that happen.

                                  1. 11

                                    I’ve been working with audio programming in the browser with Rust + Wasm for a while, and I’m convinced it’s an extremely powerful combo for doing this kind of work. The performance is amazing, and the flexibility it provides is really high since users can run this high-performance, latency-sensitive code on their local machines without having to worry about security issues or installation/setup; just visit the URL and it’s ready to go.

                                    There’s a lot of other really cool audio programming tech that supports compiling to Wasm, namely the Soul programming language and Faust programming langauge. I’ve implemented an embedded editor for my web synth tool where code written in either of these languages can be entered, compiled to Wasm, and then dynamically loaded into the audio graph with an auto-generated UI instantly. As you can imagine this is a very useful ability to have with experimenting with effects or synthesis techniques where a quick development feedback loop is useful.

                                    If you’re doing or interested in doing audio programming in the browser with Wasm and/or Rust, I’d love to chat about it! And if you have any feedback on the synthesizer or questions, I’d love to hear them as well.

                                    1. 4

                                      Try tabnine. It’s autocompletion via machine learning using GPT-2. The suggestions are good to creepy (because they are so good). They offer an offline version (model is a few hundred megabytes and execution is only viable when connected to a power supply, because of the power consumption) and an online version.

                                      1. 5

                                        This may well be an interesting project, but it’s not really responsive to OP’s question?

                                        You don’t need shotgun statistics “machine learning” just to sort a list of already known lexical completions by how well they match an argument’s type, and I too am curious if there is any good reason this isn’t commonly done.

                                        1. 2

                                          Came here to say that. It’s one of the the few, well actually I think it’s the only coding tool that I pay for, and it’s worth it 100%.

                                        1. 9

                                          I’ve used two specialized languages for digital signal processing/audio programming:

                                          Faust is an older language developed in academia and supports a functional design and support for a huge variety of platforms from microcontrollers to the web browser via WebAudio + WebAssembly

                                          Soul is a new language that just hit 1.0 a couple of weeks ago. It is a fresh take on the same problem space, but it has a simpler syntax and seems targeted at devs that are familiar with C++ or Java.

                                          Both have real advantages for doing audio programming and have active communities with a lot of open source code available to build on top of.

                                          Since both support compiling to WebAssembly, I’ve added a code editor to the experimental browser-based audio synthesis platform[1] I’m building to dynamically compile code in either one of these languages to WebAssembly on the fly and then load the compiled module into the WebAudio graph.

                                          The fact that both languages are pretty simple with a tiny toolchain and specialized domain makes this dynamic compilation simple and effective. It’s a great way to prototype audio effects quickly without having to spin up a ton of boilerplate or project setup.

                                          [1] https://github.com/ameobea/web-synth

                                          1. 7

                                            This is some tremendous clickbait holy shit. I have no idea what point this article makes because I’m not going to click anything with a title like this. It’s at the same level as something like “10 crazy things you never knew about Linux”.

                                            1. 4

                                              Submission of an article like this is a good way to get informed contrary opinions for those who may have the benefit of enough domain knowledge to spot the mistakes. There were no comments on HN at the time of this posting, but within 12 hours some very good response here.

                                            1. 4

                                              I’m very surprised that nobody has said they use VS Code yet. I figured it had the lion’s share of the market, but maybe that’s just webdevs.

                                              I use VS Code exclusively as my text editor, except for Vim which I occasionally use for editing config files and writing commit messages. I write Rust for my dayjob (fullstack) and most side projects (also fullstack), and I use the trunk rust-analyzer which works pretty well these days except for situations with lots of complex macros and codegen. I also write a good deal of JavaScript/TypeScript which VS Code supports 100% out of the box.

                                              I make very extensive use of full-codebase search with VS Code (ctrl + shift + f) as well as normal find. I also make extreme use of go-to definition; I feel that my workflow is neutered if I’m working anywhere without both of those features available, regardless of language. I find that I only use the file tree on the left secondarily; I primarily navigate between files by following go-to definition or clicking on results in all-code search.

                                              I use code formatters for every language I write in; I can barely work without one now. I type out a whole piece of logic without pressing newline or space unless necessary and then have it auto-format when I save. I use linter plugins for VS Code wherever available. The thought of not having at least syntax checking in-editor feels incredibly constraining.

                                              A few other editor plugins:

                                              • Auto add trailing newline
                                              • Auto trim trailing whitespace
                                              • Side-by-side markdown preview
                                              • GitLens (show file history, show line history, show blame for currently hovered line in bottom bar, etc.)
                                              • Language-specific extensions wherever available
                                              • VS Code live share which I’ve used for pair programming a few times with mixed results

                                              I have my frontend, backend, and any other pieces running in their own tabs within my terminal (iTerm on Mac, Konsole on Linux desktop). I use zsh/OhMyZSH with some nice plugins:

                                              • autojump (fuzzy-jump to directory by partial/close name)
                                              • show shadow completing all commands while typing (incredibly helpful)
                                              • show git branch and dirty status for current directory if in a git repo

                                              I have a pretty basic set of dotfiles with mostly just config for stuff like NVM, PATH, GOPATH, etc. I have some useful aliases which I use (gd for git diff, cb for cargo build, etc.)

                                              I have three monitors and generally have terminal and/or web browser on the left one, text editor on the middle one, and web browser on the right (usually for displaying the webapp I’m working on). I keep all my windows maximized at all times and primarily use the taskbar to switch between different windows on the same screen. Taskbar is set to only show tabs for windows on the current screen.

                                              I rarely use a debugger with the exception of the browser devtools debugger when I use heavily. I rarely use repls with the exception of, again, browser devtools which I use extremely heavily. When I do use a debugger, I use VS Code’s integrated debugging for Rust and C# (those are the only two languages I’ve used a proper debugger before so far).

                                              Rust utils have taken over my system, replacing many traditional Linux ones:

                                              • ripgrep (grep replacement)
                                              • fd (find replacement)
                                              • dutree (visual size distribution of subdirs/files)
                                              • twiggy (Wasm size profiler)
                                              1. 2

                                                I’ve started using vscode for my typescript and kept using sublime for everything else.

                                                Extremely similar overall, most problems have been just learning new shortcuts etc.

                                                However:

                                                • Sublime is 1 frame faster at rendering text after I press a key. Bothers me slightly in vscode, but most don’t appear to notice.
                                                • Several times a week, code gets into a weird state where code search gets stuck and takes 3-5 seconds to respond to input. Appears to be pegging a CPU. I suspect there’s a keyboard shortcut I’m accidentally triggering which tells it to search everything, even .git and node_modules but haven’t figured out what it is.
                                                1. 1

                                                  Vscode gets pretty slowly when dealing with large projects. Have you experienced that. Even though the eco system is great and they wide range of plugins

                                                1. 5

                                                  No docs, no website, no wiki, last commit 7 years ago…

                                                  1. 2

                                                    Facebook Container prevents Facebook from tracking you around the web - Facebook logins, likes, and comments are automatically blocked on non-Facebook sites. But when we need an exception, you can now create one by adding custom sites to the Facebook Container.

                                                    Interesting that they surface this as a top-level new feature of Firefox, when as far as I can tell it’s an add-on that a new user would have to manually install and enable first. I’m also curious what additional protection this offers that couldn’t be implemented in the base container add-on that was already available. Is Facebook specifically doing things to break normal Firefox containers that have to be mitigated here?

                                                    1. 7

                                                      What I don’t understand is why they don’t have a Google Container. It’s more likely that Google will track you through Analytics, AdWords, Tag Manager, etc without you noticing than Facebook doing the same.

                                                      1. 14

                                                        What I don’t understand is why they don’t have a Google Container.

                                                        They get a lot of money from Google.

                                                        1. 6

                                                          Also, a lot of sites break when you block Google scripts :(.

                                                          1. 4

                                                            This is a big pet peeve of mine. It’s ridiculous how many sites are too lazy (or cheap, I guess) to host their own Javascript.

                                                            A nice extension (or uBlock/uMatrix feature) would be redirecting all of the googleapis.com URLs to localhost or some other server.

                                                            1. 4

                                                              I think this is what decentraleyes does: https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/

                                                              1. 1

                                                                This isn’t about hosting their own JavaScript. Pretty often, it’s business-logic trackers (e.g. “user clicked the buy button” that crash the JS program if they fail, because no one expects them to).

                                                                1. 2

                                                                  because no one expects them to).

                                                                  Decent programmers everywhere do. I don’t, though.

                                                                2. 1

                                                                  Hosting JS, fonts, etc. from CDNs improves the chance that they’ll be cached since other sites use the same CDN URLs for those resources.

                                                                  1. 5

                                                                    Chrome and Firefox will soon partition the cache by the origin of the top-level document to prevent timing leaks. Safari already does.

                                                                    1. 2

                                                                      Most sites are so big it’s kind of silly to worry about a few kilobytes of Javascript, isn’t it?

                                                                  2. 2

                                                                    This isn’t blocking google scripts though - it’s using a separate set of cookies/state for pages that are google-first-party vs the rest of the web.

                                                                  3. 1

                                                                    I made my own container to hold my Google stuff.

                                                                  4. 1

                                                                    At a guess, it’s the usual story: They expect too many complaints about breaking behaviour the users consider normal and desirable. Remember that new features can’t break too much existing usage, or else users switch to another browser.

                                                                    If Firefox were to break every site with a recaptcha, users would complain a lot. Breaking like buttons isn’t as serious… I think.

                                                                  5. 3

                                                                    I just started using Firefox again on Linux, and I got prompted to enable Facebook Container by the browser itself, even from a completely new profile, so it seems that they’ve integrated the installation and enabling into the workflow itself.

                                                                    1. 3

                                                                      Facebook is known to build shadow profiles around users that are not on Facebook.

                                                                      1. 5

                                                                        Is this materially different than the profile Google builds when visiting sites with ads or analytics?

                                                                        1. 7

                                                                          Yes. Facebook apparently connects them to their social graph like normal profiles. So they don’t only track your individual travel, but also your personal connections.

                                                                          1. 7

                                                                            I looked through what Google had on me once. It was enough to send me targeted ads, but it was nothing compared to what it could have been if, for example, Google were to trawl the entire gmail archives for mentions of my name.

                                                                            Facebook is different. You may have seen the “upload contacts” feature? Facebook will read all of your email and store the email addresses. If I send you and someone else email, and you “upload your contacts”, Facebook is said to store not just my email address, but also the relationship between me and that someone else. Sleazy.

                                                                      1. 1

                                                                        Thanks for this!! I took this and adapted it into a slightly simpler approach (just trimmed all my fonts to only include ASCII characters rather than doing your fancy collection mechanism for those) and knocked 70% off of my fonts payload size, which for mobile was a big deal since the images are sized smaller there.

                                                                        1. 14

                                                                          TypeScript has been hard to beat for me recently.

                                                                          Now that tooling has matured to the point of having a fairly no-thinking-required project boilerplate story (prettier, eslint, jest, debugging in VS Code, Dockerfile, tsc config, etc.), I find that it’s the language I’m able to get productive in fastest. I get the whole JavaScript ecosystem at my disposal, have every possible kind of tooling/library/etc. you I may need available, and get to work in a modern typed language with support for my favorite patterns and helper libraries (Funfix, Ramda, Lodash). Cross-platform compat for free, pretty much everyone knows it enough to where they can contribute or at least debug some issue on their own. Types can be shared between the backend and frontend with little effort, and the same language can be used for both (TypeScript + React is my go-to for the frontend).

                                                                          Other than that, the only real other thing I’ll use for webapp backends is Rust. The Rust+Rocket+Diesel+Postgres stack is compelling as well, but the speed at which I can create features is not at the level of TypeScript.

                                                                          1. 3

                                                                            I certainly agree that the screen sharing scene on Linux isn’t ideal, but there’s a lot more there than the author lists in their writeup.

                                                                            I use the public testing build of Discord, and the screen sharing scene is already waaay better than it was a month ago, and it wasn’t very long before that they launched it in the first place. They allow you to select individual windows to share, I’ve gotten no random crashes even after using it pretty regularly over the past couple of weeks, and the only remaining issue is that sound sharing doesn’t work. Given the monstrous complexity of just one of the sound servers available for Linux (as detailed by the writeup posted to Lobsters over last weekend, I really can’t blame them.

                                                                            Linux is so low-priority for Discord

                                                                            The fact that Discord is supported as a first-class platform is impressive tbh given the still minuscule share of users that Linux represents. As much as devs love to rip on Electron, it makes this sort of thing possible for the vast majority of languages and frameworks where cross-compatibility doesn’t “just work.”

                                                                            To watch my screen, viewers have to open a video client, and point it at my RTMP URL

                                                                            This isn’t the only way for that to work. You can create a web page that connects to the server and plays the RTMP stream. There will certainly be some configuration to do, but just googling “HTML5 RTMP player” should be a good start. I’ve set this up myself on more than one occasion.

                                                                            One last point is that the author doesn’t mention Teamviewer. I use that program regularly both connecting from and to Linux desktops and between different operating systems with ease. It’s free for private non-commercial use, it works pretty well, and it’s low-latency enough to support real-time collaboration and remote control.

                                                                            That all being said, I’d certainly love to see more complete and fine-grained support for screen sharing. There’s a ton of room for improvement, but there’s a lot of working solutions to build off of as well.

                                                                            1. 36

                                                                              Twitter is a terrible platform for (among other things) long hand writing, it’s unreadable. I wish people would stop using it for that.

                                                                              1. 26

                                                                                Unlike the other folks who are defending Twitter, I think Twitter isn’t a great format for consuming content, but I also think it reduces friction for producing content, which results in a lot of great content that wouldn’t otherwise exist. For example, foone lays out his reasons for posting on Twitter here:

                                                                                Not to humblebrag or anything, but my favorite part of getting posted on hackernews or reddit is that EVERY SINGLE TIME there’s one highly-ranked reply that’s “jesus man, this could have been a blog post! why make 20 tweets when you can make one blog post?”

                                                                                CAUSE I CAN’T MAKE A BLOG POST, GOD DAMN IT.

                                                                                I have ADHD. I have bad ADHD that is being treated, and the treatment is NOT WORKING TERRIBLY WELL. I cannot focus on writing blog posts. it will not happen.

                                                                                if I try to make a blog post, it’ll end up being abandoned and unfinished, as I am unable to edit it into something readable and postable. so if I went 100% to blogs:

                                                                                You would get: no content

                                                                                I would get: lots of unfinished drafts and a feeling of being a useless waste

                                                                                but I can do rambly tweet threads. they don’t require a lot of attention for a long time, they don’t have the endless editing I get into with blog posts, I can do them. I do them a bunch! They’re just rambly and twitter, which some people don’t like.

                                                                                I’ve tweeted about it before, but I’ve been told this is “unprofessional” and I’m sorry if this surprises you, but I am not a professional writer. of course my hobby writing is going to be unprofessional. Cause it turns out there’s good reasons I’m not a professional writer, and the main one is that I can’t do it.

                                                                                Note that this also address the one direct criticism in the other sub-thread, broken sentences.

                                                                                Personally, if my options are “read foone’s writing on Twitter (or via something that re-writes his Twitter threads)” or “not be able to read foone’s writing”, I’ll choose the former.

                                                                                For some authors, like @jxxf, this is less extreme. He has a blog that he writes on, but the tradeoff is still the same at the margin: because he has a low friction platform available to him, he writes a lot more than he otherwise would and I’m glad he does.

                                                                                I view this the same way I view complaints that making programming easier has dumbed down programming because (for example) people no longer have to understand pointers to produce useful software. I think that’s great, on balance, even if there are some downsides.

                                                                                For people who dislike Twitter so much that they would rather have no content than content on Twitter, they can make that choice for themselves: when they see a twitter.com link, they can not click on it. Some people would prefer to make that choice for other people (as of the time of this writing, this post has downvotes for “spam”, “off topic”, and “broken link”, which are all incorrect IMO) and I don’t agree with that. From looking at lobsters content from twitter, it seems like maybe 2-4 twitter posts get traction each month? IMO, it’s preferable that people who don’t want to read content on Twitter click “hide” 2-4 times a month than to not have this content exist at all or get flagged off of lobsters.

                                                                                1. 7

                                                                                  I’ve read this guy’s reasoning before and I just don’t believe it. The guy may have adhd, I have no reason to doubt him, but I think anyone capable of writing super long tweet messages and doing in-depth device break downs can be taught to write blog posts one paragraph at a time.

                                                                                  Of course, the dude should write however he likes, I’m not his boss. He may believe what he says, but I think his reason is not real.

                                                                                  I agree with your “don’t click on it.” approach as what I love about the internet is our ability to choose and filter.

                                                                                  I don’t comment out of a wish to squash this guys stuff and I certainly don’t have to read it. But I comment because I want to understand why people write this way, and want to discourage others from writing this way, as overall it reduces the amount of content people can read, I think. Since this way takes longer to read, is hard to share and respond to thoughtfully.

                                                                                  1. 2

                                                                                    I have ADHD and I can relate really strongly to the sentiment. My thoughts don’t flow in a natural stream, it’s more spurts and fits. I can sit down and write a blog post, sure, but I’ll be sitting around writing it for 30+ minutes (an eon!) before I either a) get bored, and decide the point I’m trying to make isn’t worth making anyway, or b) realize my thoughts really don’t sound as good as I thought they did, even if they may have some merit. In the end, the blog post ends up getting deleted either way.

                                                                                    I’d say using Twitter over a blogpost is more writer-centric than reader-centric, which obviously hinders the audience, but the way foone puts in the previous post really resonates with me:

                                                                                    if I try to make a blog post, it’ll end up being abandoned and unfinished, as I am unable to edit it into something readable and postable. so if I went 100% to blogs:

                                                                                    You would get: no content

                                                                                    I would get: lots of unfinished drafts and a feeling of being a useless waste

                                                                                    It’s all about focus, collecting thoughts, and forming them into a singular, discrete narrative - which just does not jive with ADHD behavior.

                                                                                    1. 2

                                                                                      Agreed as a fellow. My draft folder is a nightmare, my writing is comment sections and tweets.

                                                                                      Even if I write a blog post it becomes painful, as I usually hyperfocus on it, will spend multiple days on it and end up rereading it too often out of fear for small errors. Tweet chains are much more permissive and raw.

                                                                                      The guy may have adhd, I have no reason to doubt him, but I think anyone capable of writing super long tweet messages and doing in-depth device break downs can be taught to write blog posts one paragraph at a time.

                                                                                      I hate to say it, but if I had a dime for every time a neurotypical person just utters disbelief about how my brain works, I’d have a ton of money on the side.

                                                                                      These effects are very real.

                                                                                      1. 1

                                                                                        I called out the ability to train. I understand ADHD really well. What I meant is that it’s quite possible to train on a writing technique where I write only one sentence or paragraph at a time.

                                                                                        That’s not unique to twitter. I can do the same thing in WordPress or google docs or many other tools that I can adapt to use.

                                                                                        Maybe this author can’t do it, but they can learn to produce content in a way that is still possible given their medical condition.

                                                                                        I was disputing the statement that the author can’t or that it’s impossible given ADHD. I don’t think that’s accurate. Maybe The author doesn’t want to train or learn. That’s cool, that is their prerogative. But the reason they aren’t doing it isn’t ADHD, it’s that the author likes it that way and is unwilling to change.

                                                                                      2. 2

                                                                                        Eh I can believe it. I have ADHD. Sometimes the things you can do, and the things you can’t do, don’t make any goddamn sense. ADHD is an executive dysfunction disorder. Shorter tasks do help…

                                                                                      3. 1

                                                                                        Not an unreasonable insight, but on the other hand if you can write 20 tweets, you can also write the same 20 tweets in a .html page?

                                                                                        By biggest gripe with Twitter is that it doesn’t work in Firefox for whatever reason. Clicking “Show this thread” just doesn’t seem to do anything. Probably due to some Firefox setting I changed or whatnot, but it’s really hard to figure out what (I discovered that copy/paste was broken in Twitter because I disabled the clipboard API, took me a long time to figure out). It can also takes ages to load (although not ridiculously slow, my connection in Indonesia is somewhat low bandwidth/high latency).

                                                                                        It’s all about what your goal is, if you want to just “tweet out in the universe” then by all means, go ahead. But if you want to reach people, then a blog post is probably more effective.

                                                                                        Perhaps this is an opportunity for creating better blogging software that combines the best of both 🤔

                                                                                      4. 9

                                                                                        I like it as a format because it forces you to be concise and make every 280 characters a self-contained point. It’s a fun writing constraint.

                                                                                        1. 13

                                                                                          The endless scrolling, broken sentences (that most attempts have) and crappy twitter experience when JS is disabled doesn’t make it fun to read.

                                                                                          1. 15

                                                                                            I’d suggest maybe turning JS on to make your UX better, but I feel like you’re not going to be receptive to that idea.

                                                                                            1. 4

                                                                                              I suggest nitter, for a far more usable and less hostile experience, without requiring JS:

                                                                                              https://nitter.net/jxxf/status/1219009308438024200

                                                                                              1. 1

                                                                                                Wow - JS or not, that’s a really nice UI.

                                                                                              2. 4

                                                                                                Ok, even with JS on, it’s still a bunch of poorly separated blocks of sentences and sentence fragments.

                                                                                                The comment above mentions a ‘fun writing constraint’.

                                                                                                Writers, find a different way to punish yourselves without punishing your readers. The number of hours a writer spends on a piece is almost certainly less (much, much less) than the number of combined hours that readers spend reading it. Don’t drag your readers through shit for “fun.”

                                                                                                1. 2

                                                                                                  Why not? Nobody is forcing you to read it.

                                                                                                  If someone wants to have fun writing in a weird format, that’s their prerogative. They don’t have to be maximising your utility.

                                                                                                  That said, consider just using something like this: https://nitter.net/jxxf/status/1219009308438024200

                                                                                                2. 1

                                                                                                  I disagree that JS should be required to be treated decently on a website.

                                                                                              3. 6

                                                                                                This isn’t a constraint if it’s split over 50 tweets.

                                                                                                This tweet stream is an example of how things aren’t self-obtained points. Almost all of these tweets are meaningless without context before and after.

                                                                                                This story seems made up, like a business fable and even more so because it’s tweeted out in small amounts.

                                                                                                This was interesting the first few times I saw it 13 years ago. But now it’s weird and confusing and shows how valuable friends and editors are to the writing process.

                                                                                                I read a novel in 1999 where the entire story took place in emails. It was an interesting constraint. But the same book today would not be original enough to outweigh the awkwardness of such a constraint.

                                                                                                I am not sure what’s up with these “tweet storms.” I guess they are best for online brands or something since people can like and tweet each item. This author seems quite successful with hundreds of interactions per message. So maybe it makes more money, or sells more ads, or just shows which paragraphs are best liked.

                                                                                                But I just wonder if the author is capable of setting up a blog.

                                                                                                I liked the story, but it took much longer to try to read because of all the scrolling. It’s also harder to read because the lack of paragraphs and grammar and links.

                                                                                                1. 1

                                                                                                  Is Exegesis by Astro Teller the book you are thinking of?

                                                                                                  1. 1

                                                                                                    That looks pretty cool, but not it. I’ve added it to my to read pile.

                                                                                                    I was referring to E: a Novel by Matt Beaumont. It was set in present day (2000) office place and was just a simple, relatively ok office drama.

                                                                                                2. 0

                                                                                                  I am with you. There is something engaging about the dramatic separation of paragraphs that each read like headlines. Not great for details, but for short stories I find it fun.

                                                                                                3. 2

                                                                                                  I think there should be automation for mirroring twitter threads in an accessible format.

                                                                                                  I don’t click Twitter links anymore, because my Twitter experience typically goes as follows.

                                                                                                  1. Click the twitter.com link on lobsters
                                                                                                  2. “If you’re not redirected, click this link”
                                                                                                  3. “It looks like you’re browsing without JS. Do you want to continue to basic site? [Yes]” (Yes is the only option provided here.)
                                                                                                  4. Get redirected either to the twitter home page or a thread I clicked on 3 days ago on reddit, which was stored in a cookie and did not update correctly.
                                                                                                  5. Repeat steps 0-2.
                                                                                                  6. Arrive at the page, start reading the content in between the repeating author name, user name, and irrelevant timestamps.
                                                                                                  7. Any other Twitter links on that page, go back to step 0.
                                                                                                  8. Trying to open any images takes me back to either the author’s page, the twitter home page, or some other thread I clicked on recently.

                                                                                                  I think browsing without JS is valid, and no-JS users deserve to be first-class visitors.

                                                                                                  1. 1

                                                                                                    @bandali says:

                                                                                                    I suggest nitter, for a far more usable and less hostile experience, without requiring JS:

                                                                                                    https://nitter.net/jxxf/status/1219009308438024200

                                                                                                  2. -1

                                                                                                    Twitter threads are a de facto standard for publishing and consuming content like this on the internet, the ship has sailed, and it’s just mind-numbingly uninteresting to have to endure replies like this every time one is shared to a content aggregation platform. Get with the times, old man 👴🏻 ✊🏻 ⛅️

                                                                                                    1. 3

                                                                                                      De facto standard lol? Since when? Blogging is still alive and well and blog posts outnumber twitter threads 100:1 on lobsters alone.

                                                                                                  1. 1

                                                                                                    Several websites and their associated backends/databases:

                                                                                                    • Apache2 webserver with PHP support. This serves traffic for ~6 different domains and serves as a reverse proxy in front of most API servers and app backends.
                                                                                                    • All supporting infrastructure for Robintrack; everything is inside Docker containers running on VPSes.:
                                                                                                      • Rails backend
                                                                                                      • MongoDB database
                                                                                                      • Redis
                                                                                                      • RabbitMQ as a message bus
                                                                                                      • Periodic Python scraper jobs running via cron.
                                                                                                    • MySQL database used by osu!track and shared by several other applications
                                                                                                    • Personal utility application containing screenshot/file uploader + hoster, email reminder, email feedback endpoint for use on other websites, and pastebin
                                                                                                    • Static website hoster that I use for self-hosted continuous deployment of some websites during development.
                                                                                                    • IRC + Discord chat bot for a video game
                                                                                                    • Elixir backend for a small demo game I made a while back: https://io.ameo.design/
                                                                                                    • Rust REST API server for in-development Spotify history tracker application
                                                                                                    • Rust REST API server for in-development web-based audio creation platform
                                                                                                    • Wordpress instance for my sister’s portfolio website
                                                                                                    • Proxy server for getting Google Analytics traffic for my websites around adblockers so that I can get accurate user counts and traffic statistics

                                                                                                    I used to self-host email, but gave up after spending dozens of hours trying to perfect the configuration but still having emails regularly to go peoples’ spam.