Show newer

@freemo Haha, yeah everyone always comments on the reflective insulation. It's making me hesitate about putting accoustic damping panels on the wall behind my desk...

The workbench has taken its rightful place as a work station for electronics and such (though some of the components migrate to the main desk if I need to program a microcontroller...)

This is likely the last picture of a tidy workbench I'll get for a while.

Show thread

"Bigger" here means 27" or 32". I probably would have upgraded long ago, but I find it hard to tell whether my day-to-day experience (using Linux and not playing games) would be significantly degraded by getting some of the drastically cheaper models available.

Show thread

Some steps in the evolution of my workstation:

1. Workbench as desk
2-3. Switched to standing desk
4. Added monitor arms

Next steps: Get at least one bigger monitor, setup up my cable management game.

@freemo Yes, very much so! My first keynote.

I'm still a little sad that I can't do it in person, but logistically it's challenging to get there and back anyway (particularly with a family in tow), so it's probably for the best that it's virtual.

Exciting announcement: I'll be giving a keynote talk at PyConf Hyderabad, which will place December 5-6th, 2020 (virtually, this year):

twitter.com/pyconfhyd/status/1

Tickets are available here: pyconf.hydpy.org/2020/

CfP is still open until November 8th: twitter.com/pyconfhyd/status/1

@jasper I do think it's the sort of thing that hurts our ability to write optimizing compilers and such without modifying semantics. It's hard to do constant folding and such when the "constant" is actually an attribute on a mutable object (and may even be dynamically returned, see PEP 562: python.org/dev/peps/pep-0562/)

@jasper Some classes and objects can be made immutable (or, at least, immutable enough), but it's certainly not the default.

At the end of the day, I think the ability to monkey patch modules and classes is a net benefit. Everyone knows that it's a code smell, so it's not done widely, but the fact that you can do it allows you to avoid some other even worse patterns.

I just had a thread about this, actually: qoto.org/@pganssle/10510754410

I am enthusiast as just a general nerd.

My interests in general are:





(Though it's been a bit since I've made it out to the forge lol )

@freemo Though I'm fine if it's not, it just means that I'm less likely to be able to take advantage of the features in some scenarios, which is not necessarily a big deal.

@freemo Yeah, presumably individual clients will support different features — that's one of the great benefits of choosing your own client.

The only worry I have is that if each instance implements "remote timeline" a little differently, every client needs to support every implementation. Most projects don't want to support every idiosyncratic thing on every instance, but would be happy to be "fully featured" clients if there's wide adoption of a non-standard feature.

I'm curious to know if you are developing /implementing this stuff in a siloed way, or if it's part of a broader "Mastodon+" type effort that is likely to be worth clients' effort to support.

Of course, there are legitimate reasons for this sort of dependency injection-style parameterization, but adding support for arbitrary interfaces broadens your "supported configuration surface" so much that usually it doesn't pass the YAGNI test — unless you need it for tests.

Show thread

That's obviously a pithy twitter-sized take, but I think most of the time when you have some highly parameterized class / function, you aren't doing it because you actually want to support an interface where someone supplies their own provider of some core language functionality.

You do it because it makes your testing easier, and you can nominally it allows you to test using only the public interface.

That sort of thing is a necessity in languages without monkey patching, but it seems like it's a considerably worse code smell than patching in tests.

Show thread

Listening to Anna-Lena Popkes on @TalkPython@twitter.com and I realized something I've never consciously understood: mocking is bad because it is tightly coupled to implementation details, but dependency injection solves this problem by promoting those details to be part of the public API.

In the book "Brooklyn", @builtbrooklyn@twitter.com says early aviator Calbraith Rodgers was "blogging all the way" on a cross-country flight.

I am kinda startled to find that I can't think of a non-anachronistic verb to describe what he was doing: sending regular dispatches for publication.

Citation: google.com/books/edition/Brook

@freemo Awesome improvements. Is this stuff standardized enough that it could be supported by mobile apps? Probably >50% of my browsing fediverse is done on Tusky or something similar, so I miss out on some of the custom features of the qoto instance.

# Remote Timelines

I wanted to take a minute to explain QOTOs Remote timeline feature, specifically the new aspect we just released on the advanced interface: Domain Favourites.

This feature allows you to pull up a column which is identical to the local timeline of a remote instance, thus addressing the need for users to have multiple accounts across multiple instances. You can be here on QOTO and see the remote timeline as a separate feed just as if you were on the remote instance itself! For example attached to this post is what the Koyu.space remote timeline looks like from QOTO.org.

**Note:** This feature can not and does not bypass security permissions. If a user has blocked you you wont see that users posts in the remote timeline either.

There are several ways to pull up or switch between remote timelines, and you can have several remote timelines up at the same time or even combine them in a single column.

One way to do this is with the QOTO lists feature. Here you can create lists that are either collections of people you wish to follow in their own timeline, or a list of domains where you wish to follow the remote local timeline of the whole domain. Create the lists you want then open your lists and switch between them to view the various timelines you define.

You can also go into your settings and under preferences there is a subsection called "Favourite domains", you can add domains there as well. If you do this the domain will show up on the main navigation bar and you can select it with fewer clicks than through the list menu. There is also a Favourite Tags section in preferences that works much the same way.

You can also pull up the remote local timeline of an instance from a posted status itself. Simply click the three dots on a post from any user from the desired domain and one of the options will be to open the remote timeline for that domain.

That is all there is to it, enjoy!

@freemo Also I'm in the 11th judicial district of NY. There are around 18 people running for 9 spots.

I wasn't able to find lists of cases for these people last time around, and I'm not especially interested in spending hours on it anyway, considering how unimportant my vote is with the hordes of party-line voters.

I think the fact that no one has bothered putting together voter guides or information about this, and that even candidates with no record seem to not campaign *at all* indicates that these are not properly contested elections and the outcome isn't really in doubt.

Show older
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.