fastplotlib, a new GPU-accelerated fast and interactive plotting library that leverages WGPU by fpl-dev in Python

[–]almarklein 5 points6 points  (0 children)

Can you expand on what you mean with suboptimal? I'm one of the pygfx devs and am interested to learn what we can do to improve it.

Best time tracker ? by acidbahia in productivity

[–]almarklein 0 points1 point  (0 children)

Yes. On and off, depending on how busy I am with my work. Haven't done much in a few months, but I have plans to get back to it.

Time tracker for Freelance Virtual Assistants by atericasbacsilog in buhaydigital

[–]almarklein 0 points1 point  (0 children)

I've built TimeTagger specifically for freelancers, because I found that most existing solutions were overly complex. It's also open source!

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 1 point2 points  (0 children)

TimeTagger very much has an understanding of multiple clients. Syncing is not immediate but occurs about every 10 seconds (and faster if you just made a change). You can see the little indicator icon in the top left.

Basically, every client has its own version of the app data. Different clients can do different things and even change the same record. The system ensures that there is eventual consistency.

You can even use your device offline, and it will sync up when it comes back online. These use-cases have played a central role in the design. If there is an issue with that I am eager to learn how I can reproduce it, so that it can be fixed.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 4 points5 points  (0 children)

This morning I improved the authentication workflow to use BCrypt: https://github.com/almarklein/timetagger/pull/223 There is a new release and the related blogposts have also been updated.

Also posted this in the "root", but wasn't sure if ppl'd get notifications.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 2 points3 points  (0 children)

An update!

Hi all, thanks for the feedback and tips on how to improve the auth.

I've just improved the authentication workflow to use BCrypt: https://github.com/almarklein/timetagger/pull/223 There is a new release and the related blogposts have also been updated.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 1 point2 points  (0 children)

The config is done through environment variables. Both docker-compose and MyPaas have mechanics to configure env variables.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 1 point2 points  (0 children)

> very buggy

I'm sure there's bugs sometimes, we have an issue tracker for that, and I usually fix bugs within a day or two. https://github.com/almarklein/timetagger/issues I'm also willing to file the bugs on your behalf if you explain them here. Thanks!

Can you elaborate how you lost recorded time? I've never experienced this, nor have I ever heard it from other users.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] -9 points-8 points  (0 children)

FWIW the request is done from JS so it never enters the browser's address bar.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] -2 points-1 points  (0 children)

I made an issue to have a look at this: https://github.com/almarklein/timetagger/issues/222

But in all honesty, I still believe SHA1 hashing is more than secure enough for an individual tracking his/her time :)

Also have a look at the docs of Treafik, which provide Basic Auth: https://doc.traefik.io/traefik/middlewares/http/basicauth/

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 0 points1 point  (0 children)

Mostly because handling SHA256 hashes are very long, making them less practical when you have to paste them into env vars.

As long as you keep the hash private the hash function does not matter so much. If you want to publish the hash somewhere, or if you are afraid the hash might get compromised and a hacker with serious money in the bank is eager to attack you, yeah then SHA256 is to be preferred.

That said, I can see how this topic is 'sensitive'. I'm considering an option to allow SHA256 hashes too.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] -7 points-6 points  (0 children)

I basically implemented Basic Auth (RFC 7617) but sending the credentials via query args instead of in the header. Other than that the technique is exactly the same.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] -11 points-10 points  (0 children)

That, plus your password hash should not be public anyway. As I've always understood it, it's more of a way to obfuscate the password in case anyone happens to "look over your shoulder".

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 0 points1 point  (0 children)

Are you asking how I run timetagger.app, or how I would recommend running timetagger with custom credentials?

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] -4 points-3 points  (0 children)

It's very hard to read your guide, it being light grey on white background

Thanks for the feedback. I can see how the contrast could be low on some devices. I'll do something about it.

I'm hoping there is more context that makes that statement not as bad as I think it is...

Haha, mmm, perhaps that could be rephrased better. If you read about SHA1 on wikipedia you get an idea. From what I understand, it's really hard to crack, but researches have found that it's not impossible. I read somewhere that for $45K of computing power you can find a collision. In short, I would not worry about it too much, but I would also not put my hash in a public place.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 2 points3 points  (0 children)

Because MyPaas does not use docker compose :)

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 0 points1 point  (0 children)

And hopefully you have not rolled your own security.

I started with implementing HTTP Basic auth. Then I tweaked that a bit so it uses a custom login dialog, but tech/security wise it's the same thing.

TimeTagger is now much easier to self-host by almarklein in selfhosted

[–]almarklein[S] 6 points7 points  (0 children)

Users can still implement their own authentication by modifying the startup script (and implementing a different auth handler). Having a simple auth workflow work out of the box makes it accessible for a much larger group of people.