PorkrollPosadist

joined 4 years ago
[–] [email protected] 7 points 1 year ago (3 children)

It's been a while since I used Arch, but it was smooth sailing while I did. In general, gaming means Steam, and Steam ships with its own runtime so it is not really impacted by whatever library versions are packaged by the distro. Gaming is a very common use case. You'd have to pick a pretty obscure one to find something where it isn't tested and somewhat streamlined.

[–] [email protected] 11 points 1 year ago* (last edited 1 year ago)

I thought communities synced over instances so if an instance goes down, communities are still accessible. Is this not true?

This is not true. ActivityPub (the protocol Lemmy instances use to speak with one-another) does not intend to be a redundant, distributed datastore. There are a few reasons for this. One is practical. It needs to be affordable to start a new instance. If the requirements for starting a new instance entail mirroring significant parts of the fediverse (a network of over 2 million users and 22,000 instances) it would be impossible for anybody to do it unless they were Google/Facebook.

Another has to do with trust. A community has a home. That home is chosen (ideally) because the admins can be trusted. That instance is the universal source of truth for that community. If communities didn't live on a specific instance, they would be vulnerable to various forms of hijacking. The home instance has the final say on who has permission to comment, and who has permission to perform moderator actions. None of these actions could be trusted if they weren't cleared by the home instance first. Third party servers perform basic validataion against the currently known ban list / mod list / etc, but this could easily be spoofed by malicious instances.

When an instance goes down, it is kind of similar to a netsplit on IRC. A queue of outgoing messages build up on your instance, which can be seen on your instance. Queues of messages queue up on other instances, which can be seen on other instances, but they won't be synchronized until the destination instance returns (this depends specifically on which inbox the messages are directed towards - I'm not particularly familliar with the specific implementation in Lemmy).

Finally (though not really), ActivityPub isn't designed to be a broadcasting protocol. In the case of Lemmy, and other Reddit-like clones, it effectively acts as such, but it is intended only to send messages to the places they belong. If you post a message and the subscribers to that message only exist on 3 servers, that message ONLY gets sent to those three servers, even though there are thousands of servers in the network (at least, this is how it is supposed to work in theory).

I might have some details wrong here. I'm more familiar with how Mastodon works (and how it fails) at this point after troubleshooting various problems on my instance.

[–] [email protected] 14 points 1 year ago* (last edited 1 year ago) (1 children)

Liberalism has an actual definition, and it is not the colloquial definition used in mass-media to refer to "the left half of what is acceptable."

Liberalism is an idealist (another word which has a very specific definition) political philosophy which champions private property, constitutionalism, republicanism, rule of law, and free trade. It has a philosophical canon, flowing through writers like Locke, Montesquieu, Mirabeau, Rousseau, Paine, etc. Further economic works, like Smith's "Wealth of Nations," are built on this philosophical underpinning.

Marxists are materialists. This is in contrast with the idealism of Liberals. While Liberals believe ideas are the force which drives change in the material world, Marxists understand that ideas are just a reflection of the material conditions they emerge from.

Liberals find themselves banging their heads against the walls of the institutions time and time again, because from their perspective, these institutions are just a reflection of ideas, and as long as the justification for an institution on paper is sound, there is no reason to think it cannot be reformed. An institution like the US Congress, or the Executive Branch is never at fault. It is simply a good institution simply being run by bad people. Marxists (and Anarchists) reject this quite simply, by looking at the material incentives involved, and the long ghastly history surrounding these institutions.

"Combating liberalism" does not mean being a piece of shit to anybody to the right of Bernie Sanders or Jeromy Corbin. There is a genuine struggle to ensure the new crop of social media platforms don't simply end up defending the legitimacy of the established institutions at the expense of genuine radicals who find themselves at odds with the actual longstanding policy and practices of these institutions. To avoid situations like when mastodon.lol banned CODEPINK, a prominent anti-war organization, for being "Tankies." This is Liberalism, and it should be combated.

[–] [email protected] 14 points 1 year ago (8 children)

For the love of god, listen to some Citations Needed and stop self-congratilating your media literacy because some fucking dork with a website tells you the New York Times and Washington Post aren't biased.

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago)

On Discord, you cannot host your own server, and you cannot use any third party clients (without the threat of being banned).

You can host your own Matrix server, either on physical hardware, or a generic virtual machine you can rent from any number of ISPs. There are over a dozen compatible third-party clients (though many lack full feature coverage).

In summary, Discord is strictly a service. Matrix is a tool you can apply however you see fit.

[–] [email protected] 2 points 1 year ago

Support for groups (i.e. communities on Lemmy) is coming to Mastodon sometime soon.

[–] [email protected] 15 points 1 year ago* (last edited 1 year ago)

https://en.wikipedia.org/wiki/Institut_f%C3%BCr_Sexualwissenschaft

In the state of Florida, it is illegal for school teachers to tell their students WHICH books the Nazis chose to burn first.

[–] [email protected] -2 points 1 year ago (1 children)

Elections aren't going to save us. I will make sure to vote against anybody who has the slightest whiff of engaging in this anti-trans hysteria, but you could hardly describe this place as a democracy to begin with. The desires of the people have absolutely nothing to do with what gets enacted as public policy in this country.

We need to prepare as if the state will do NOTHING to protect us, and treat any counterexample as a pleasant surprise.

[–] [email protected] 9 points 1 year ago* (last edited 1 year ago) (2 children)

X11 used to require very cumbersome MANUAL configuration, where you would specify the exact parameters of your keyboard, mouse, monitor, and other peripherals. If you accidentally ended up overclocking your monitor it would melt. For at least a decade, it has been able to run with no configuration file at all, but in the 90s/early 2000s you had to produce a unique >75 line xorg.conf file for your specific hardware.

[–] [email protected] 14 points 1 year ago (1 children)

You should be aware that the people over at Raddle have a massive grudge against Lemmy and they post shit like this all the time.

It is true. You can host an image somewhere (i.e. actually run the web server) paste a link to it, and if anybody clicks on it they will show up in your web server's access log. Typically this will include an IP address and a user agent string (indicating OS, browser version, etc.). To mitigate this, Lemmy would need store copies of any media which gets linked here and serve those instead of allowing hot-links. Mastodon does this, but for the same reason it requires hundreds of gigabytes of storage to run a small instance.

[–] [email protected] 5 points 1 year ago (6 children)

I feel like PeerTube hasn't broken through yet in the way Mastodon has, and Lemmy is kind-of broaching on. Mastodon itself is heavy for what it does. I need 8GB of RAM, >600GB of storage, and 2 CPU cores to run a 100 person instance. Lemmy is leaner (as well as some microblog style alternatives to Mastodon like Misskey / Pleroma). Peertube, on the other hand, can only get so lean. Hosting video content is orders of magnitude more intensive than hosting a text-based message board. It is much more costly to do this, and to compete with platforms like YouTube, it is not sufficient for just spin up a single instance. You also need to work out CDNs, caching, load balancing, etc.

Like Jack said, I'd just find an instance you vibe with and post stuff there, but it will take a lot of resources to grow the network as a whole.

 

Ian Betteridge (of the "Betteridge's Law of Headlines") opines on the recent Meta (Facebook) / Fediverse controversy.

 

I stole this from u/fuckass on Hexbear

 

;;; Package Management
;;;; Bootstrap straight.el
(defvar bootstrap-version)
(let ((bootstrap-file
       (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
      (bootstrap-version 5))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
         "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

;;;; Select And Install Managed Straight Packages
(defvar straight-package-list
  '(auto-complete
    company
    company-box
    darktooth-theme
    dap-mode
    doom-modeline
    ebuild-mode
    fill-column-indicator
    flycheck
    gdscript-mode
    helm
    lsp-mode
    lua-mode
    magit
    mood-one-theme
    no-littering
    outshine
    prettier-js
    rustic
    silkworm-theme
    solarized-theme
    suscolors-theme
    tide
    use-package
    web-mode
    xresources-theme
    yaml-mode
    zenburn-theme
    ))

(dolist (package straight-package-list)
  (straight-use-package package))

;;;; Install Packages Directly From Repositories
(use-package arc-dark-theme
  :straight (:host github :repo "cfraz89/arc-dark-theme"))

(use-package ligature
  :straight (:host github :repo "mickeynp/ligature.el"))

;;; General Emacs Settings
;;;; Memory Management
(setq gc-cons-threshold 100000000)
(setq read-process-output-max (* 1024 1024)) ;; 1mb

;;;; Extra search paths
(add-to-list 'load-path "~/.emacs.d/lisp/")

;;;; Do Not Litter
(require 'no-littering)

;;;;; Backups
(setq backup-directory-alist
      `((".*" . ,(no-littering-expand-var-file-name "backup/"))))
(setq auto-save-file-name-transforms
      `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))

;;;;; Customizations
(setq custom-file (no-littering-expand-etc-file-name "custom.el"))
(if (file-exists-p custom-file) (load custom-file))

;;;; User Interface
(setq frame-title-format (concat "%b - Emacs " emacs-version))
(setq inhibit-splash-screen t)
(menu-bar-mode -1)
(tool-bar-mode -1) 
(when (display-graphic-p) (scroll-bar-mode -1))
(column-number-mode t)
(setq mouse-wheel-scroll-amount '(1 ((shift) . 1) ((control) . nil)))
(setq mouse-wheel-progressive-speed t)
(setq warning-minimum-level :error)

;;;;; Mode Line
(setq doom-modeline-buffer-file-name-style 'buffer-name)
(doom-modeline-mode 1)

;;;;; Font and Theme
;;(setq-frame-font "firacode 8" nil t)
(add-to-list 'default-frame-alist '(font . "firacode-8"))
(setq custom-safe-themes t)

(setq solarized-use-variable-pitch nil
      solarized-scale-outline-headlines nil
      solarized-scale-org-headlines nil)

(when (display-graphic-p)
  (load-theme 'zenburn)
  (setq zenburn-scale-org-headlines t))

;;;; Editing
(setq-default fill-column 80
              indent-tabs-mode nil
              truncate-lines t
              tab-width 4)
(setq yank-excluded-properties t)
              
;;; Text Modes
;;;; Text Mode
(add-hook 'text-mode-hook
	  (lambda ()
	    (turn-on-auto-fill)
	    (flyspell-mode 1)))

;;; Programming Modes
;;;; General
(defvar indent-width 2 "Preferred indentation width for all configured programming modes")
(setq-default company-tooltip-align-annotations t)

(defun setup-prog-mode ()
  "Custom setup function for prog mode"
  (interactive)
  (show-paren-mode 1)
  (company-mode))
(add-hook 'prog-mode (lambda () (setup-prog-mode)))

;;;; C / C++
(setq-default c-default-style "stroustrup"
	      c-basic-offset indent-width)

(defun setup-c-mode ()
  "Custom setup function for C/C++ modes"
  (interactive)
  (lsp))

(add-hook 'c-mode-hook 'setup-c-mode)
(add-hook 'c++-mode-hook 'setup-c-mode)

;;;; Rust
(setq rustic-lsp-server 'rust-analyzer)
(setq rustic-indent-offset indent-width)

;;;; Web
;;;;; Formatting
(setq-default web-mode-code-indent-offset indent-width
              web-mode-attr-value-indent-offset indent-width
              web-mode-markup-indent-offset indent-width
              web-mode-css-indent-offset indent-width
              typescript-indent-level indent-width
              js-indent-level indent-width
              css-indent-offset indent-width
              web-mode-auto-quote-style nil
              web-mode-auto-close-style nil)

;;;;; TIDE Mode (Typescript IDE)
(defun setup-tide-mode ()
  "Setup function for tide."
  (interactive)
  (tide-setup)
  (flycheck-mode +1)
  (setq flycheck-check-syntax-automatically '(save mode-enabled))
  (eldoc-mode +1)
  (tide-hl-identifier-mode +1)
  (company-mode +1))

;;;;; Web Mode
(add-to-list 'auto-mode-alist '("\\.[jt]sx\\'" . web-mode))
(defun setup-web-mode ()
  "Setup function for web-mode."
  (interactive)
  (when (string-match-p "[tj]sx" (file-name-extension buffer-file-name))
    (setup-tide-mode)))

;;;;; Hooks
(add-hook 'js-mode-hook #'setup-tide-mode)
(add-hook 'typescript-mode-hook #'setup-tide-mode)
(add-hook 'js-mode-hook 'prettier-js-mode)
(add-hook 'typescript-mode-hook (lambda () (setup-tide-mode)))
(add-hook 'web-mode-hook (lambda () (setup-web-mode)))

;;;; Python
(add-hook 'python-mode-hook
	  (lambda ()
	    (setq indent-tabs-mode t)
	    (setq tab-width indent-width)
	    (setq python-indent indent-width)))

;;;; Emacs Lisp
(add-hook 'emacs-lisp-mode-hook
	  (lambda ()
	    (setup-prog-mode)
        ;; Use outshine mode for init file
        (when (buffer-file-name)
	      (when (file-equal-p user-init-file buffer-file-name)
	        (outshine-mode)
	        (outline-hide-body)))))
(add-hook 'ielm-mode-hook 'setup-prog-mode)

;;; Tramp
(setq tramp-default-method "ssh")

;;; Version Control
(setq vc-follow-symlinks t)
(global-set-key (kbd "C-x g") 'magit-status)

;;; Programming Ligatures
(setq prog-ligatures '("++" "--" "&&" "||"      ; Arithmetic
                       "+=" "-=" "*=" "/="      ; Arithmetic assignment
                       "%=" "|=" "&=" "^="
                       "->" "=>" "::"           ; Scope
                       "==" "!=" "<=" ">="      ; Comparison
                       "//" "///" "/*" "*/"     ; Comments
                       "\n" "\\"                ; Escaped characters
                       "<<" "<<<" ">>" ">>>"    ; Shifts
                       "<<=" ">>="))            ; Shift assignment

(setq rust-ligatures '(".." "..." "..="))       ; Ranges

(setq html-ligatures '("</" "/>" "</>"          ; Tags
                       "<!--" "-->"             ; Comments
                       "**" "===" "!==" "?."))  ; JavaScript

(setq lisp-ligatures '(";;"))                   ; Comments

(ligature-set-ligatures 'prog-mode prog-ligatures)
(ligature-set-ligatures 'rustic-mode rust-ligatures)
(ligature-set-ligatures '(web-mode html-mode js-mode typescript-mode)  html-ligatures)
(ligature-set-ligatures 'emacs-lisp-mode lisp-ligatures)
(global-ligature-mode)
view more: next ›