Activity

skullymaster12
  • I finally got Double jump working the way I like it.
  • I updated vein minining. The blocks you can mine with one break will now exponentially rise instead of linear. Also made it so that just actual ores can be vein mined and not everything. I also updated the vein finder algorithm so it works more efficient.
Attachment
0
skullymaster12
  • I updated the double jump logic. It works smoother now, has particles, sound and you won’t get fall damage from double jumping.
  • I improved some Listeners to take less performance. It took me a while to test everything and I had to do lots of small adjustments.
Attachment
0
skullymaster12
  • Villagers can now trade the custom enchants.
  • They can also be found in treasure chests.
  • Using the grindstone, custom enchantments can be removed.
  • I added also added enchantment glints to custom enchanted items.
  • With the lightning strike enchantment, mobs can now convert (Villager -> Witch, Pig -> Zombie Piglin, Creeper -> Charged creeper, Brown mooshroom cow <-> Red mooshroom cow).
  • Added some more enchantments
Attachment
0
skullymaster12

It took me some time, but I finished the base and implemented a few enchantments like exploding arrows, lighning strike attacks and dodging projectiles/arrows.

Attachment
Attachment
Attachment
0
skullymaster12

Shipped this project!

Hours: 10.37
Cookies: 🍪 165
Multiplier: 15.89 cookies/hr

I made a Python caching library with 6 pluggable eviction strategies. It can be used to store data manually or as a decorator for functions to cache their results. Optimizing the algorithms and choosing the right data structures was quite challenging, but I’m proud of how it turned out — the optimized LFU for example achieves 99.7% faster eviction than the naive approach.

skullymaster12

I renamed my project from pycache to opticache and uploaded it to pypi with this name. It can now be installed with pip install opticache. I also fixed some bugs and polished the code and READMEs.

Attachment
0
skullymaster12

I added PyTests and flake8 linting to my project. I also set up a GitHub workflow, so that every time I push my project, the linting and testing will be executed and marked as done in github. There are 17 test functions to test every important feature. I had to refactor a lot of code in my project to make it compatible with flake8.

Attachment
Attachment
0
skullymaster12

I just finished benchmarking and documenting the optimizations I have done. The calculations took quite a long time in total because I ran them with multiple iterations to get more precise results. The image shows one of three documented optimized strategies.

Attachment
0
skullymaster12

I just added some more performance improvements.
I added thread safety to the cache class using a threading lock, ensuring that only one thread can access the cache at a time while others wait in line.
Additionally, I implemented a memoization decorator that caches function results. As shown in the image, the second call returns instantly from the cache instead of recalculating, which can save significant time on expensive operations.

Attachment
0
skullymaster12

I finished adding the optimization tests and added a nice GUI where you can select the test you want to run. I use the python library questionaryfor this. It was surprisingly simple to set this up and one can navigate with the arrow keys and select with enter.

Attachment
0
skullymaster12

I just finished some benchmarks for the strategies to visualize the effect of the optimizations i have done.

Attachment
0
skullymaster12

I just implemented the SIEVE cache strategy. It is primarly designed for web caches. The algorithm was btw. released in 2023, so it is pretty young. It took me some time to bring the time complexity down to O(1) for all methods. I also started to implement a benchmark method to test the strategies.

Attachment
0
skullymaster12

I just finished the base and the LFU, LRU, MRU and FIFO cache implementations. I also learned about how Python implements dictionaries internally. They use a hash table: when you provide a key, Python computes its hash and uses it to calculate an index into an internal array, jumping directly to the stored value. This gives dictionary lookups an average time complexity of O(1) (I find that amazing).

Attachment
0
skullymaster12

Shipped this project!

Hours: 18.83
Cookies: 🍪 199
Multiplier: 10.58 cookies/hr

I built a self-hosted link shortener with Flask! The hardest part was getting the databases right because I wasn’t used to SQLAlchemy — but once the pieces clicked together it all fell into place. It also supports link expiry, click limits, and usage stats, as well as multiple admin functions, all wrapped in a dark themed UI. I didn’t have much time due to exams but I am happy that I finally got it finished :)

skullymaster12

Just switched the database handling to SQLAlchemy and it is so much shorter and easier to use.

Attachment
Attachment
0
skullymaster12

Just finished a first working alpha version. Going to polish this now, then I will implement more features afterwards.

Attachment
0
skullymaster12

Just finished the login interface with backend code and database connection. I also got python flask running in threaded production mode.

Attachment
1

Comments

jam06452
jam06452 3 months ago

I would really recommend a locally hosted / free cloud hosted supabase instance. I am doing the same as you, used to be in python but now in elixir. Supabase is so nice for projects like this. If you want to steal some of my python feel free too.

skullymaster12

I’m working on my first project! This is so exciting. I can’t wait to share more updates as I build.

Attachment
0
skullymaster12

Just finished SQLite implementation and it is a very good fealing to see it running without any errors or warnings.

Attachment
0