Homeoffice hat was verändert

Thanks to [Volker](https://vowe.net/2022/04/09/ will-hybrid-work-last/), I read Mark Bergen’s article for bloomberg.com and would like to share a few thoughts on the following statement. Two years into the pandemic, the older generation of executives — even those inside Silicon Valley — aren’t accustomed to managing workforces remotely. “Leaders find it really hard to lead virtually,” Bock said. I am a manager myself. I have to lead a team remotely. I find remote leadership more difficult. I also enjoy working from home. I am said to have a modern management style, and I am happy for each of my employees to be able to work from home. Many are more productive there and can better balance their professional and private lives. ...

April 9, 2022 · 3 min · 497 words

Proprietary software is antisocial

Recently I leafed through a conversation between LWN and Richard Stallman from about two decades ago. Even at that early stage his remarkably confrontational style already stood out. LWN writes in “Interview with Richard M. Stallman |”: Proprietary software is antisocial, so developing it is wrong. In most cases, the user of proprietary software is expected to promise not to share with anyone else. It’s wrong to make that agreement, wrong to keep it if you have made it, and especially wrong to lure someone else into making such a promise. Using part of the proceeds of this antisocial activity for a worthy cause cannot justify it. ...

April 4, 2022 · 1 min · 124 words

Apple Store Notifier

Apple announced new products a few days ago. As always, stock in the stores is limited. If you’re smart, you check online whether the product you want is available at your local Apple Store. If you’re lazy, use the following Python script to automate that. Note: Pushover is required. #!/usr/bin/env python3 import requests import os import time def fetch_availability(product_number, store_id): payload = { "store": store_id, "little": False, "mt": "regular", "parts.0": product_number, "fts": True, } url = "https://www.apple.com/de/shop/fulfillment-messages" r = requests.get(url, params=payload) data = r.json() stores = data["body"]["content"]["pickupMessage"]["stores"] store = next(store for store in stores if store["storeNumber"] == store_id) avail = store["partsAvailability"][product_number] return { "store_name": store.get("storeName"), "available": avail.get("pickupDisplay") != "ineligible", "store_pickup_quote": avail.get("storePickupQuote"), "pickup_search_quote": avail.get("pickupSearchQuote"), "pickup_display": avail.get("pickupDisplay"), } def assemble_availability_text(product_number, store_ids): avail_text = "" for store_id in store_ids: avail = fetch_availability(product_number, store_id) avail_text += f'{avail["store_name"]}: {avail["store_pickup_quote"]}\n' return avail_text def create_file_if_not_exists(filepath): if not os.path.exists(filepath): with open(filepath, "w") as f: f.write("") def do_it(part_no, store_ids, **kwargs): availability_text = assemble_availability_text(part_no, store_ids) create_file_if_not_exists("/tmp/cache.txt") with open("/tmp/cache.txt", "r+", encoding="utf-8") as f: if f.read() == availability_text: print("No Changes", flush=True) else: print("Changes detected", availability_text, flush=True) if kwargs["pushover_enabled"] == "1": requests.post( "https://api.pushover.net/1/messages.json", data={ "token": kwargs["pushover_token"], "user": kwargs["pushover_user"], "message": availability_text, "title": "CHANGES DETECTED", }, headers={"Content-Type": "application/x-www-form-urlencoded"}, ) f.truncate(0) f.seek(0) f.write(availability_text) if __name__ == "__main__": while True: do_it( os.environ["MONITORED_PART_NO"], os.environ["MONITORED_STORES"].split(","), pushover_enabled=os.environ["PUSHOVER_ENABLED"], pushover_token=os.environ["PUSHOVER_TOKEN"], pushover_user=os.environ["PUSHOVER_USER"], ) time.sleep(int(os.environ["POLLING_DELAY_SECONDS"])) The script is in the repository dprandzioch/apple-store-notifier on GitHub. ...

March 19, 2022 · 2 min · 243 words

PiXel ScaLer

Here’s a quick recommendation for pixel artists. The tool PiXel ScaLer scales up small pixel graphics by several times while preserving the pixel structure. PiXel ScaLer is a scaling application that provides a relatively easy way to convert pixel art to illustration style art using xBRjs. You may use the converted pixel art for personal or commercial use within the limits of your conscience. The text was automatically translated from German into English. The German quotations were also translated in sense. ...

January 22, 2022 · 1 min · 81 words

Ghost Bookmarklet

After switching from Grav to Ghost I have to tweak a few articles. To be able to quickly jump from the frontend to the backend, I wrote a super-simple bookmarklet. Just save the following code as a bookmark. javascript:window.location.href=window.location.href+'/edit'; After you click the bookmark, the browser will navigate to http://DEINEBLOG.URL/edit and, if you’re logged in, you can edit the article directly. The text was automatically translated from German into English. The German quotations were also translated in sense. ...

December 23, 2021 · 1 min · 78 words