Anyone have any idea when State of Clojure 2021
results will be available?
Hey, is there any reason to use tmux other than to have multiple terminal windows? Can't I just make more actual terminal windows?
tmux continuum / resurrect is also nice for retaining sessions between reboots.
@c.westrom I am not sure about "keeping open SSH connection". I think it is more about preserving the session even if you get disconnected. You can re login and resume the session.
That's usually what I do. It seems like that tmux can allow you to auto-reconnect without retyping (or up-arrowing) ssh <mailto:blah@blarg.org|blah@blarg.org>
again. Or is that not what y'all are saying?
tmux doesn't "keep open ssh connections" on its own. The out-of-the-box workflow here is to connect to the ssh box and start tmux there, so if you close the ssh connection, the session still exists on the ssh server. In other words, your terminal is detached from the ssh connection. If you're looking for a more accurate, but still wandwavy, summary, you can just say that tmux is pretty good at organizing your terminal workflow
The other benefit of tmux is that you can disconnect without killing whatever commands you were running. If you have a long running task over an SSH session, you can disconnect and come back to it again.
You definitely can configure tmux to automatically reconnect to your ssh connections but that's not its standard use. The tmux wiki describes some use cases (it actually shows the ssh workflow as well): https://github.com/tmux/tmux/wiki/Getting-Started#about-tmux
IIRC using either tmux/screen was also recommended to speed up compilation of SBCL. The compilation prints a lot of output to the terminal and rendering time could slow down the process. Starting the compilation in tmux then detaching the session solved the issue.
I think redirecting output to something other than stdout
will have the same effect. command > command.log 2>&1
Yep, since it also skips rendering to the terminal
@c.westrom - another cool feature of tmux is using it for pair programming by having people connect to the same machine and share sessions or window groups
https://www.hamvocke.com/blog/remote-pair-programming-with-tmux/ - check it out
I only use tmux
when connecting to remote hosts so I can reattach to the running session if Iām disconnected (so I donāt lose the context.) Locally I start multiple terminal emulators.
I guess itās also useful when using a terminal emulator without support for a scrollback buffer ?
Yeah working over ssh is the most obvious use case I personally use tmux to group terminals per project as well. Navigation seems much easier to me that way.
I actually do everything (cli related) within tmux sessions
and there's ~0 overhead during context switching
Just type Ctrl-b s
and choose the session of the new context
No existing context? Ctrl-b Ctrl-c
to create a new one
I use i3(-gaps) so I just spawn off a new terminal. I do love me some i3. It's a tiling window manager, so no windows overlaps. I'm on Arch btw.
You can have a session for project A with 1 window and 2 panes split vertically Another session for project B with x windows, the first having 4 panes, a quarter of the screen each. (using the definitions of tmux for sessions/windows/panes) Can't really fathom how I'd be able to keep my terminals organized without tmux.
@dharrigan Yeah I'm also using a tiling wm (sway) on fedora but still can't live without tmux š
š
tmux takes time to feel comfortable with (took me a couple of months I think, I'm not sure, it's been more than 5 years now). It's been a few years since I've settled with a specific workflow but I definitely haven't mastered it yet. I recommend https://github.com/gpakosz/.tmux
I use Terminator for having multiple panes. Really like it, navigating between panes and creating / killing panes feels very intuitive in it
sorry, just been delayed for silly reasons like waiting on various humans to ok it :)
I don't think Slack provides the ability to limit who can do this
I've had several times where I needed to restart my window manager and it was nice to not lose my terminal session
Maybe some of you (other) elitists would find this interesting š https://georgestocker.com/2021/03/28/no-one-gives-a-shit-what-programming-language-you-use/
Written from someone who does not know that from LISP you can basically manufacture every other programming language... I think on a philosophical level it certainly matters which language you use, but on an outcomes-level maybe people can still make money using other things, but are we comparing only results or process or upsettedness-when-confronted-with-something-new ? It seems like this person has not tried a lisp-style language in good faith ;/
the zeal of the newly converted
luckily I can just use blue collar Clojure then, if my customer doesn't find not using static typing unethical š
I mean, elitism is relative ;)
who is the newly converted in this case? I mean, the uncle has been talking about Clojure for a while now?
I guess he preaches like he started yesterday
Ive watched a couple of streams of him writing clojure. I hope people don't write clojure how he writes clojure.
Just looks like the TweetRageMachine pumping on all cylinders to me
I think most programmers would agree that it is objectively less productive to use assembly language for most application development nowadays.
That is an opinion that might have differed in the 1950s and 1960s, but technology has changed.
There is certainly less difference in productivity between Clojure and Python, and agreed that there are people who make poor arguments for one versus another programming language. That doesn't mean they are all poor arguments.
As noted in the September piece Stocker wrote about āUncle Bobā (linked from the above), Mr Martin unfortunately espouses some pretty unpleasant things outside the software world and Iām one of many who stopped following him on Twitter because of the non-software stuff he would spew. I would hate to see his reputation tarnish Clojureās good name by associationā¦ š
I also stopped following lots of people, even friends, because of politics issues. Specially now that I changed countries, knowing what's happening in my old country will just lead to unnecessary worries and anxiety for no-reason at all
I wish I was one of those "illuminated beings" that have a brain firewall to filter only what matters on their feeds, but I'm really not like that š. I don't really think that a programming language should be tarnished because of political views of a group of users, or even maintainers, but I also know that it's not how people usually think, so.... :man-shrugging:
Mostly it's a way to have multiple terminal windows for me - just got used to it.
It's pretty portable, scriptable and so on. With some tweaks it has good history search, yanking text from command output (or logs). Persistent in different forms, you can save sessions or create per project configuration.
For certain tasks it's been a godsend, like controlling multiple computers for various cluster maintenance tasks with the multi cursor thing.
> Pick the language and stack based on your teamās needs and comfort, based on your businessās need and risk tolerance, and based on how easy it will be to produce software for your target users in that language or framework. Itās worth point out, though, that unless you invest time in programming for its own sake and weekend hobby projects, that answer is never really going to change. If you were writing C++ in 1990, at what point was your team magically more comfortable and faster in Java than C++ if no-one ever wrote a line of Java outside of a commercial project? Plus, thereās a fairly large element of self-selection with teams. Someone with mostly C++ experience probably isnāt going to apply to a team writing in Haskell.
Exactly, at work we obviously have to "based on your teamās needs and comfort" all the time, but no one learns anything new outside of work and no one has time to learn at work. IT means all our projects are C# backend and plain vanilla JS front end. ANd when I say plain JS, I mostly mean the sort of JS that runs on IE9
On the other project it's all Visual Basic
because thats what that team knows
Its like if we were lumberjacks, with a forest to cut down with only blunt axes for tools. You can point out there's chainsaws over there, but if no one can use the chainsaw... There's not much you can do, you can point out the chainsaw has lots of instruction manuals, but people will tell you they don't have time to read a chainsaw manual, I mean they're busy! Look at all those trees they've got to cut down! And you can't suggest to them to learn how to use a chainsaw in their own time, because after work they're exhausted, I mean, they've been hacking down trees all day!
Thereās also a fairly big difference between woodworking tools and programming tools - programming tools tend to get better with a larger community, while woodworking tools largely donāt.
You don't want to follow the advice of people who give poor reasons for choosing a language/environment, certainly. But his article's recommendation comes down to "what your team supports, and is a good fit for the application". If he thinks that "what your team supports" is somehow going to avoid poor reasoning for choice of language/environment, well, that depends completely on how reasonable your team is.
And his software views are kinda questionable, too - https://www.hillelwayne.com/uncle-bob/
what to avoid in particular? (Iām not familiar with uncle bob)
Well, I've never seen him once use a REPL. He uses the same test driven techniques you would use in java and C#. From what I've seen of him actually typing in teh code he never uses parinfer / paredit so he's manually organising his parens. His code is verbose. I don't think he really thinks functionally... I think he's basically doing what he would do if he were coding java, except he has all these parens now all over the place š
thanks for the answer, it makes sense as feedback
If he doesn't use a REPL, does he restart his Java process for every eval?
he will definitely love babashka if that is the case
From what I saw, he was wrirting tests, then running them to see them fail. Then he writes his clojure code and sort of tries to work out what his code is doing and why it isnt' working by creating more and more tests
I absolutely think that is valid when doing C# / Java, but I think ifyou have a REPL and evaluate as you go you can reason about your code and see what is happening much more clearly, rather than editing a test to write to output to see what the result of a function call was
It feels like that approach to me is definitely hard mode clojure
Also, even if youāre focused on delivering to a consumer, playing around with new techniques and practicing your skills is pretty common. I doubt that the woodworkers he knows are experimenting with different advanced joints on a project theyāre making for a particular person without trying them out first.
And cooks definitely spend time making food thatās not actually intended to be eaten by diners
:rolling_on_the_floor_laughing: I hadnāt seen that hit piece ā but I do mostly agree with the sentiment there. Thereās Bobās Way and then thereās the Wrong Way!
> I think he's basically doing what he would do if he were coding java, except he has all these parens now all over the place Sounds like a description for a generic lisp noob. Maybe that's why it seems like the parens are such a weird and overwhelming thing (imperative programming in lisp causes paren overload) :thinking_face:
scriptable is what I love about tmux
you can send keypresses to a session for example, or read the terminal buffer
One way to do it is to sneak a new technology in via the back door (by solving a problem with it), rinse & repeat, eventually the company starts hiring people to use technology X
To get around the stable-point that arises if "stick to the tools your team knows" is overemphasized wrt "best tool for the job"
By āunpleasant thingsā do you mean politics? I also had to stop follow some well-known people from computer science because of their toxic non-software opinions.
George Stocker doesnāt care what languages you use but believes that: āI believe through Test Driven Development, we can double productivity in some cases. This isnāt a pipe dream ā itās possible right now. Iāve been a software developer for 20 years, and worked in teams of all shapes and sizes.Ā I cut my teeth on Perl, a gloriously productive language that is still useful today.ā Sounds like a plan. I should contact him right away to double my productivity.
āgloriously productiveā is my favorite part (from here https://georgestocker.com)
You know you gotta do it:
Hello... if I was looking for freelance clojurescript help, is there a preferred channel to post the details? Thank you.
@skohler Probably #remote-jobs (or #jobs if you need folks āon-siteā).