| CARVIEW |
Newest posts:
Rethinking my lens setup
(All focal lengths in this blog post are for Micro Four Thirds, so to get equivalent Full Frame focal lengths, multiply by 2.)
My previous idea about using the 12-60, 14 and 20 was quite good, but when I have used the 12-60 or 12-32 zoom, I tend to shoot most often at 20 or 25. Sometimes I have also used 17, but much less frequently than 20 or 25. I much prefer the natural perspective of a standard lens unless I want to use exaggerated perspective or compression expressively. The first thing you learn in musical composition is not to over-use your expressive means, but save them for occasions where they actually mean something, and I think the same applies to photography.
One of my reasons to add the 12-60 to the 20 and 14 was that it is useful in bad weather. I also thought it would replace the Sigma 60 f/2.8 and Lumix G 42.5 f/1.7 for landscapes and close-up since f/4 is usually fast enough. I prefer using smaller and lighter primes to using a zoom, but if the weather is terrible, there are few weather-sealed primes in the MFT line-up except the M.Zuiko f/1.2 Pro lenses that I think are too big and heavy to make sense on MFT. Then I discovered that the mark II of the Panasonic Leica 25 mm f/1.4 is weather-sealed through one of Matti Sulanto's videos. It is not freeze-proof like the 12-60, but it is dust and splash-proof. I have owned the mark I in the past and liked it a lot. Since I gravitate towards a natural perspective and aesthetically prefer the 25 over the 20, I thought maybe I would go the other way and use the 25 in bad weather, with the exception of snow-storms and such where the 12-60 is obviously the better choice.
So this summer, I bought the Panasonic Leica 25 f/1.4 mark II. Unfortunately, I did not get it until December. I also bought the Yongnuo 17 f/1.7 and enjoyed using that a lot this summer. I have wanted to have a 35 full frame equivalent for a while and from previous experience with the Olympus M.Zuiko 17 mm f/1.8, I knew that it was not the lens I wanted. The Yongnuo has much nicer rendering, is twice as sharp and cost half the price. It is a bit larger, but not so much that it matters. As I said earlier, 17 is my third-most used focal length when shooting zooms. I can fit the Lumix 14, Yongnuo 17, Lumix 20 and Panasonic Leica 25 in my very small camera bag without any trouble. There is actually room for one more lens as well since the 14 and 20 are so miniscule. I think the last lens to complete the others would be the Lumix 42.5 f/1.7 since it is smaller, faster, stabilised and focuses closer than the Sigma 60 f/2.8. With cropping to 10 MP, the 42.5 can be a 60 as well and 10 MP is enough for the odd picture here and there even though 20 is better. I used to shoot with a 6 MP camera…
These days, I can afford to have lenses that I do not shoot constantly, even if I think there is no reason to own things unless they have a practical use or sentimental value. A set of primes at standard focal lengths definitely have practical value for me and so does the 12-60 for those cold winter-days, for close-up or for non-winter days where the weather is bad and I want another (or more than one) focal length than 25. Most days when I am going out to photograph, I will have my set of primes in the camera bag and one of them on the camera, usually the 25. Some days, I will bring my camera in a jacket pocket with the 20 mm just in case I see something worth photographing. And occasionally, I will fit the 12-60 on the camera. I don't have to be a minimalist that only owns three lenses.
The good side-window side
I want the content I am working on to be the centre of attention on my screen. I want as little scrolling as possible and most of the content I work with is taller than it is wide (code and org documents). On wide screens, buffers with shells, for version control, REPLs, help, info etc should therefore be on the side of the screen where it does not steal space from the main content. Since I read left to right, I like such windows to pop up on the right side where they do not disturb the flow of my reading of the main content. Emacs has the concept of side-windows that is useful for taming buffers that would otherwise pop up other places.
I set the width of my side-windows to 80 since man pages expect that and it works well for help and shells as well. To be able to have a (wo)man page and a shell, an info node and a REPL, or a shell, REPL and help buffer at the same time, I use slots to divide up the side-window if more than one special buffer is open. I have not included ansi-term in the buffer-list for side-windows since I use it only occasionally when I want more than one terminal, in which case I need to be able to manage its windows in the normal way. Usually, there is no need for a full terminal emulator, but I use Eshell a lot.
At home, my laptops and my external screen are 16:9 or 16:10 wide screens. At my desk at work, I have a 16:9 screen, a 16:10 screen and another 16:9 screen flipped 90 degrees to the portrait orientation. I usually use the tall screen for Emacs to minimise scrolling. Since the tall screen is slim (9:16), I would rather have side-windows in the bottom instead of overlapping the main window on the right side when I use that screen. Even with the side-windows at the bottom, the screen is a lot taller than the wide screens which is nice.
However, I spend most of my time at work not at my desk, but in two classrooms where I either use my laptop only with its built-in screen, duplicated to a large screen in front of the class or only with an external screen when sitting in the back (for ergonomics). And there are also meetings where I use the laptop's internal screen only. All of these screens are wider than they are tall, so I want my side-windows on the right again.
So I made a function that checks whether the height of the frame is larger than the width and if so, side-windows are put on the bottom of the screen where they belong on tall screens, but if the opposite is true, then they are put on the right where they make more sense on wide screens. I call this function when Emacs starts in my configuration to adapt the side-windows to the screen in use, but I also have a keybinding (C-z w) for it so after moving from a classroom or meeting to my desk or vise versa, I can get the side-windows where I want them without having to end my Emacs session. I often prepare a file at my desk that I am going to present in class with inter-present-mode or jot something in a file during class that I work on at my desk later, so it is useful to keep the session going.
Here is my function for deciding which side side-windows should be on:
(defun emo-side-window-side () "Evaluates which side side-windows should be on based on whether the frame is in portrait or landscape orientation." (interactive) (let* ((side-window-side (if (> (frame-outer-height) (frame-outer-width)) 'bottom 'right)) (disp-buf-alist `(("\\*\\(Python\\|ielm\\|compilation\\).*\\*" (display-buffer-reuse-window display-buffer-in-side-window) (side . ,side-window-side) (slot . -1) (post-command-select-window . t) (window-width . 80)) ("\\*\\(shell\\|.*eshell\\).*\\*" (display-buffer-reuse-window display-buffer-in-side-window) (side . ,side-window-side) (slot . 0) (post-command-select-window . t) (window-width . 80)) ("\\*\\(help\\|info\\|man\\|woman\\|Agenda Commands\\|Org Agenda\\|Occur\\|Buffer.\\|xref\\).*\\*" (display-buffer-reuse-window display-buffer-in-side-window) (side . ,side-window-side) (slot . 1) (post-command-select-window . t) (window-width . 80))))) (setq display-buffer-alist disp-buf-alist)))
Tags
This site is built with org-static-blog which has a tags feature. To see all posts with a specific tag, use these links:
There are also RSS feeds for each tag:
Boot RaspberryPi OS on an NVME larger than 2TB
RaspberryPi OS boots from an EFI partition. On other hardware, an EFI partition is used with UEFI which demands that your disk is GPT-partitioned or a hybrid GPT with MBR. However, the RaspberryPi imager and the installer you get when pressing Shift at boot uses MBR. MBR is a way to partition a disk that we used in the 1980s and that made sense back then, but it has the unfortunate limitation that it cannot use disks larger than 2 TB. So when I bought my 4 TB NVME to use with my Raspberry Pi 5, I was unpleasantly surprised that after installing RaspberryPi OS light, I could only see a 2 TB disk.
There are various solutions floating around the internet to get around this problem, but most of them are unnecessarily complex. The RaspberryPi 5 can boot from a disk partitioned with a GPT partition table just fine. The problem is just to get the right partitions with the right data onto the disk since the installer insists on using 1980s technology which means that you cannot use it on large disks. In the early 80s, a large hard drive had 40 MB capacity, so 2TB seemed like science fiction. Who would need all that space when Macintosh System Software, a few programs like MacWrite and MacDraw and a dozen files could fit on a 800kB diskette? (The Double Density 3.5 inch floppy disks that gave 720kB space on MS-DOS delivered 800kB on a Mac.)
In addition to your NVME, you will also need a USB stick and an SD card. If you use a case like my Argon Neo, installing the NVME and SD-card demands a bit of disassembly. The reason we need two other devices is that we need to clone one of them to the NVME and to do that we need to boot from the other. Here is what you need to do to your NVME working:
- Insert the SD-card and the NVME in your case or hat or whatever you use and insert an ethernet cable connected to your router.
- Boot your RaspberryPi while repeatedly pressing down the shift key until you get to the Raspberry Pi screen that downloads the installer.
- Install RaspberryPi OS (light) on the SD card.
- Boot from the SD card. If the boot order is set to boot from NVME first, you may have to press Space when booting to get to the boot order screen first. Since RaspberryPi OS reboots once as part of the isntallation, you may have to go through the boot order screen twice, so be ready to press space again after the first boot. After the second boot, the SD card has got RaspberryPi OS and the root partition (/) has been expanded.
- Insert your USB stick into one of the blue USB3 ports.
- Boot your Raspberry Pi again and repeatedly press down shift until you get to the screen that downloads the installer.
- Install RaspberryPi OS on your USB-stick.
- When the Pi reboots, press space repeatedly to get to the boot order screen and select USB and boot.
- Be ready to press space repeatedly again since the Pi reboots once as part of the installation process and choose USB again to boot the USB stick and let it expand the root partition.
- When you have booted into the USB stick for the second time after the root partition has been expanded, open a terminal (or use the TTY if you used RPi light).
- Write sudo fdisk /dev/nvme0n1 to partition the NVME with fdisk.
- Press g to make a new GPT partition table. You may have to confirm that you want to remove an MS-DOS (MBR) partition table already there.
- Press n to make a new partition.
- Choose the default as the first sector by pressing return.
- Write +512M to make the size of the partition half a Gigabyte.
- Press t to change a partition.
- Choose the default 1 as the partition you want to change.
- Set its type to 1 (EFI System).
- Make a new partition with n.
- Accept the defaults since it will use the rest of the disk.
- Press w to write your changes to the disk.
- Write dd if=/dev/mmcblk0p1 of=/dev/nvme0n1p1 && sync and press return. This will clone the first partition, the EFI partiont, of the SD card onto the first partition of the NVME.
- Write dd if=/dev/mmcblk0p2 of=/dev/nvme0n1p2 && sync and press return. This will clone the second partition, the root partition, of the SD card onto the second partition of the NVME.
- Write sudo mount /dev/nvme0n1p1 /mnt to mount the EFI partition of the NVME to /mnt on your running system (from the USB stick).
- Write lsblk -f to get the UUID of the root partition of the NVME (/dev/nvme0n1p2).
- Open the file /mnt/cmdline.txt with sudo in a text editor. (I prefer to combine step 25 up to and including 33 since Emacs has a built in terminal multiplexer and tiling window manager, and it is easier to copy the UUID from one window in Emacs to another window than to try to remember a UUID from lsblk -f from before I opened Emacs. I also use tramp inside Emacs to open the files with sudo instead of opening emacs with sudo. If you use another text editor in a TTY, then you probably have to write the UUID down after running lsblk -f since your text editor will hide the output from that command when you launch it to edit the file, unless you use GNU screen or tmux.)
- Change where it says root=PARTUUID=somenumber to root=UUID= and write or paste the UUID from lsblk -f for /dev/nvme0n1p2.
- Save the file and exit the text editor if you use a TTY editor without a built in terminal multiplexer.
- Write sudo umount /mnt and press return to unmount the first partition.
- Write sudo mount /dev/nvme0n1p2 /mnt to mount the root partition from the NVME to /mnt on your running system (the USB stick). If it tells you the disk is busy, wait for it. It means that the disk is still writing even if it has tld the OS it has finished. If you fail to wait, then you cannot boot.
- Write lsblk -f again and note down the UUID of both /dev/nvme0n1p1 (the EFI partition) and /dev/nvme0n1p2 if you did not already note it down. (Or use a terminal multiplexer or Emacs to copy it over when you need it.)
- Open the file /mnt/etc/fstab in a text editor with sudo.
- Replace the part of the line that says PARTUUID=somenumber on the line where it says /boot/firmware with UUID= and write or paste the UUID number for /dev/nvme0n1p1 (the EFI partition).
- Do the same with line where it says /, but use the UUID for /dev/nvme0n1p2 (the root partition).
- Save the file and exit your text editor.
- Wait for a while to allow time for the nvme to write out the change. Turn off the RaspberryPi.
- Remove the SD card and the USB stick.
- Reboot the Raspberry Pi. It should now boot from the NVME. If the boot order is set to boot USB or SD Card first, you may have to press space when booting to boot from the NVME. In such a case, you should write sudo raspi-config in a terminal and go to Advanced Options, choose A4 Boot order, and choose B2 NVME/USB Boot … and then press OK and finish and reboot. It should now boot from the NVME. If something went wrong and you end up in an emergency shell, then reboot, insert the USB and SD card again, press space and try again.
I now have a 4TB NVME that boots my RaspberryPi 5. I also tried booting from SD card and using the NVME only as storage for a while, but it was slow and annoying, so it is really worth spending some time to get the Pi booting from the NVME. Hopefully, the RaspberryPi devs will change the imager and installer so they use the GPT partition scheme in the future. There is no reason to use MBR in the 21st century.
Inter-present-mode
A while ago, I wrote that I made a few functions to present from org mode to replace org-present which removes too many glyphs to be practical for my use. I thought it would be nice to use use-package to defer loading these functions until I need them, and I was curious about how to make a minor mode. So yesterday, I created a minor mode around those simple functions.
I made functions for starting the presentation, going forward, going backward and stopping the presentation, so turning it into a minor mode that is turned on and then have some functionality bound to a keymap, and which you then can turn off again was a very natural fit. I added the ability to customize a few things and have some ideas for more functionality to include and more things to customize.
Have a look at the Readme.org at Codeberg.org if you want to have a look or try it out. I might try to include it in a package archive in the future, but for now, you can install it with use-package's vc: keyword.
Made with GNU Emacs, Org-Static-Blog, and Codeberg Pages on GNU/Linux.