Activity

tanjim

Implement importx() ImportxOpaque ImportxModule ImportxNamespace

yay! now it is essentially done. you can use it now

however its currently essentially useless since i did not implement it in any language other than python yet

Changelog

in libimportx-python

Attachment
0
tanjim

Made the exportx implementation in Python

i made the python implementation for exportx and also some tests for it

Changelog

in libimportx

for pesky ft reviewers: the screenshot is technically “output” not “code”
for normal people the screenshot shows me testing the client:

  • first the thing that is exporting send over the token, it is correct so i send +
  • now i send a request to read the variable und which does not exist, so the client returns an error, errors are prefixed with minus
  • then i read mydict which is successful so its prefixed with plus
  • i try to read a file but files cant be sent over JSON so it uses this special syntax. i can still interact with the file using its methods
  • i try to read a function similar story
  • i call the function a few times, the function is supposed to return true then false then so on which it does
  • i try to read the json module however modules cant be sent over JSON
  • i try to read the function json.dumps
  • i try to call json.dumps but i didnt put any args so it errors
  • i made a mistake with the next one, i forgot to make the args an array so the client thought each char was an argument
  • then i call it correctly (twice) and it works
Attachment
0
tanjim

Refine the protocol

yeah turns out the previous one had many errors and was unimplementable so i fixed than and made it better

  • The JSON output always starts with + or - for success and error. This means I can read one byte to see if it is successful or not.

  • Dynamically generated functions (like functions returning functions) could not be serialized before because they didn’t have an identifier as they were not in any variable. Now it allows both static and dynamic functions.

  • Compiled languages and languages which dont use # for comments would straight up not work since without a shebang the OS would not be able to figure out how to run it. Now the library itself figures it out.

  • Data that could nto be serialized (eg file objects) would not work, now it just uses a special opaque type. so objects that dont exist/cant be moved to the other language can be used as well. (so i could write to a file object through languages!)

Changelog

here is a diagram i made to explain how the opaque object thing works.

Attachment
0
tanjim

Document the api

wait what im documenting it before making it?? yes you heard that right. the reason im doing this is for procastination so that i have a clear and consistent implementation plan. i will have to make this in a million languages so im making sure i dont have to improvise

Changelog

here is this diagram i made to explain the protocol loosely

Attachment
0
tanjim

Make it work with flavortown’s link tracking system

FT has a system which detects if you clicked the demo and repo links or not. Now it automatically tracks that as well. The demo link clicked is always true (since you start out on the demo page) and if you ever switch to the repo tab that is sent to the server as well.

Changelog

in itzmetanjim/spaceshipvote

in itzmetanjim/github.com:

Attachment
0
tanjim

Make the core of the operating system and two apps

the github app and the welcome app. for the github app i had to make my own github client since github.com does not let me iframe
now when you log in you will see a welcome screen and there is a dock to launch apps. you can close (double click titlebar), resize (shift drag titlebar) or move (just drag titlebar) windows

Changelog

in itzmetanjim/hackeros:

in itzmetanjim/github.com:

in itzmetanjim/solarsystem

This one is a seperate FT project

Attachment
0
tanjim

Shipped this project!

Hours: 2.83
Cookies: 🍪 30
Multiplier: 10.45 cookies/hr

its a very generic project but hey i unlock a sidequest!

tanjim

Shipped this project!

Hours: 7.33
Cookies: 🍪 133
Multiplier: 18.08 cookies/hr

This actually helped me get the votes for the ship faster. Yay!

tanjim

Added login and “military-grade” full disk encryption

(military grade encryption is the same as normal people encryption it means absolutely nothing)

This is actually secure, without your password even if i take your device and hack my website it still will be impossible for me to get your data.

Changelog

in itzmetanjim/hackeros

in itzmetanjim/solarsystem

this is a seperate FT project but this depends on this. im including the commits I made there that are just because of this project

in itzmetanjim/github.com

(nothing yet that is related to this)

0
tanjim

Make the extension use my new client and fix bugs

The bugs fixed are:

  • Pages with no backgrounf color would be transparent, now they are white
  • In the README tab images would be rendered at their mpixel size often making them HUGE
  • In my github client there was no way to authenticate using a PAT which meant a measly 60/hr ratelimit. Adding one increases it to 5k/hour
  • Inside the PAT adding screen the “open with github” button used to be green while the submit button was gray, people would probably click the wrong one

Changelog

In itzmetanjim/spaceshipvote

  • Replace github.com links, fix transparent iframes (9bc597d)
  • FINALLY fix that images dont have a max width (2c1ba03)

In itzmetanjim/github.com

Attachment
Attachment
0
tanjim

Made an alternative Github client for this

Since real github.com does not allow iFrames, i decided to make my own client using the API. As you see i didnt really try too hard to make it look realistic since i am not trying to be phishing. You can try this client out by replacing github.com with tanjim.org/github.com in a repo URL.
Importantly, this supports Github releases as many people use that as their demo link

Changelog

In the spaceshipvote repo, I did some mnor changes

  • Add README (a1042f1)
  • Add a message that some sites dont allow iframes (abf7373)

In the repo for the client,

Attachment
0
tanjim

Added the iframes and registered the extension

Now it works! hooray!
I also registered the extension by adding the X-Flavortown-Ext-17833:true header which is how FT tracks how many people use the extension. This took less than 15 mins thats why it want in a seperate devlog

HOWEVER! Github does not allow iframing so I have to use the Github API to make a github viewer thing. I guess this is an oppurtunity to optimize the client for voting or something

Changelog

  • added rulesets to register the extension (b12f8b9)
  • add the iframes and stuff so it works (fe8c5ff)
  • Fix the README view for relative links (2f92f60)

In the screenshot: the sidebar on the right is what my extension added

Attachment
2

Comments

rupnil.codes
rupnil.codes 20 days ago

wowzers

tanjim
tanjim 20 days ago

thanks!

tanjim

Hey voting person!

since you are voting you probably have a lot of votes left so to make them faster for you and use less RAM download this then continue voting (takes ~5 minutes to download). now back to the devlog…

Make the space for the sidebar

I moved all the stuff to the left by using this simple uncentrify function, then put an example div there (where the iframe stuff will live) using element.after on the div that shows the project info and devlogs.

function uncentrify(x){
    x.style.alignItems="flex-start"
    x.style.marginInline="0"
}

Changelog

Attachment
0
tanjim

Added auto bounding box clearing

This essentially automatically adds any air blocks you can think of it like that. THe diagram explains it

changelog

  • add boundingbox clearing (d1d27e1)
Attachment
0
tanjim

it works now

made all of the repos and organized stuff up
improved docs

Attachment
Attachment
2

Comments

sakshisuman25
sakshisuman25 about 1 month ago

well

tanjim
tanjim about 1 month ago

what

tanjim

uploaded to mavencentral

Attachment
0
tanjim

Documented the whole thing in the README

Attachment
0
tanjim

made the test mod!

and it works woohoooo

Attachment
0
tanjim

1240% better alternative to brigadier. what takes 62 lines (not counting boilerplate) in brigadier takes 5 lines here. this is JUST the command definitoins not even logic
i built this for past me because i had to suffer this fate when making https://github.com/itzmetanjim/mcgit
the thing builds successfully! time to make a mod to test it out
(look this is not screenshot of code, this is technically output (build passes). i could put it in a non monospace font if you like that better)

Attachment
0
tanjim

Shipped this project!

Hours: 4.89
Cookies: 🍪 33
Multiplier: 6.8 cookies/hr

This is a small project showing off a single algorithm. But I proved Mark Rober wrong

tanjim

it finally works! i also added an automatic testing tool (you can write JS to automatically battle against my algorithm)

Attachment
Attachment
0
tanjim

bugfix ahhhhh

the reviewer requested README changes. i did that. and there was also this other complicated bug that was fixed by refactoring the code.

download v1.0.1 from GitHub https://github.com/itzmetanjim/mcgit/releases/tag/v1.0.1 and put it in your mods folder

Attachment
0
tanjim

Shipped this project!

Hours: 11.03
Cookies: 🍪 151
Multiplier: 27.41 cookies/hr

I finally did it!

All 24 commands are complete. This is actually practically usable as a version control mod. It automatically disables itself (specifically autoadd and autorm) when you are not in creative. This is actually user-friendly and awesome, not lame like my last mod.

tanjim

And I’m done!

Requires Fabric 1.21.11

All commands have been implemented! you can even clone my house if you want: https://github.com/itzmetanjim/village

  • /git init <name> Initialize a new MCGit repository.
  • /git activate <name> Switch to the specified repository.
  • /git add <coords> Add one block at the specified coordinates to the staging area.
  • /git add <coords> <coords> [|hollow|outline] Add a cuboid of blocks to the staging area
  • @/git rm <coords> [coords] [|hollow|outline] Remove blocks/entities from the staging area and revert them. NOTE: Changing blocks/entities in the world needs to be done by issuing commands, as this is a clientside mod.
  • /git unstage ... does not revert , only removes from staging area.
  • /git commit [-m] "message" Commit the staged changes with a message. The -m flag does nothing.
  • @/git revert [commit-hash] /git reset but it changes the world as well. Commit hash can be ommitted to revert to the latest commit.
  • /git reset [commit-hash] Reset to a specific commit hash or the latest commit. This does not revert the actual world. THis is the reverse of /git add
  • /git status Show the current status of the repository, including staged changes, unstaged changes, but not untracked blocks/entities.
  • /git listCommits Lists all commits in the current branch.
  • /git listRepos Lists all available repositories.
  • /git autoadd [toggle|on|off] Enable or disable automatic addition of changes to the staging area. To quickly switch between, use an enchanted red wool in offhand to make this act toggled (so if you have it in offhand, auto add is off, otherwise on).
  • /git autorm [toggle|on|off] Enable or disable automatic removal of deleted blocks/entities from the staging area. To quickly switch between, use encha…

This has been truncated. See https://github.com/itzmetanjim/mcgit for the full list. There are 24 total commands

Attachment
0
tanjim

Added Autoadd and Autorm

/git autoadd [true/false] and /git autorm [true/false] can be used to toggle autoadd and autorm. To quickly invert autoadd/autorm, use enchanted red wool.

Autoadd and autorm cannot be used outside of Creative Mode.

0
tanjim

Added revert reset status listCommits listRepos

NOTE: The Couldn't set block messages are NOT a bug! The command is working properly with all blocks being set correctly.

  • DONE: @/git revert ... /git reset but --hard, ... is a commit hash. This does change the world.
  • DONE: /git reset [commit-hash] Reset to a specific commit hash or the latest commit. This does not revert the actual world.
  • DONE: /git status Show the current status of the repository, including staged changes, unstaged changes, but not untracked blocks/entities.
  • DONE: /git listCommits Lists all commits in the current branch.
  • DONE: /git listRepos Lists all available repositories
0
tanjim

Added the following commands

Requires Fabric 1.21.11

  • /git init <name>: Initialize a new MCGit repository with name. Names have to be unique. Repositories are shared between worlds and servers and stored locally (unless you add a remote)
  • /git add <coords1> [optional coords2] ["hollow","outline", or nothing] Add a single block/a cuboid of blocks to staging. (after another update, automatic adding of placed blocks will be added)
  • /git rm <coords1> [optional coords2] ["hollow","outline", or nothing] Remove a single block/a cuboid of blocks from the world and the repository. (after another update, automatic removal of broken blocks will be added)
  • /git unstage <coords1> [optional coords2] ["hollow","outline", or nothing] Similar to /git rm or git rm --cached in real git. Removes from the repository but not from the world.
  • /git commit <message...> Commit!
  • /git origin <coords> Change the origin of your build. By default, this is the place where you init ed or cloned the repository. All blocks are relative to this origin.
  • /git activate <repo_name> Switch to another repository
Attachment
2

Comments

hack.clubber
hack.clubber 2 months ago

amazing project

tanjim
tanjim 2 months ago

yoo thanks

tanjim

Shipped this project!

Hours: 6.42
Cookies: 🍪 82
Multiplier: 12.83 cookies/hr

Yeah. The audio captcha theoretically_ should work but practically it absolutely does not. The text and image captchas work perfectly fine. Click FETCH CAPTCHA not the audio captcha.

tanjim

i added audio captcha…. well i tried but its way too hard so it doesnt work

Attachment
0
tanjim

ok because of hackatime update delay this devlog covers a lot of things:

  1. I added verification support
  2. Made it an image of text not just text, it is compressed using zlib and its 1-bit
  3. Improved the noise generation, it now uses a more advanced 2D markov chain

In the video, you can notice:

  1. The noise has more “structure” to it than before. This is what the upgraded 2D markov chain is doing, and it makes it harder for ML models to recognize the decoys
  2. The text is actually an image of text, notice the border around it and the pixelation.
  3. I can click “submit” now
0
tanjim

Made the demo for the captcha.
This is incredibly easy for humans, as we can “stop” mvoing the slider in real time. But for AI, you have to send a whopping 50 images to a multimodal (image supporting) AI model. Even using a light model like Gemini 3 Flash, it will take 27,225$ or 54,450 input tokens (equivalent to an 150 page book) and JUST TO CRACK ONE OF THESE!
Oh, if you are thinking of pasting the ASCII text that wont work since the Markov Chain produces decoys that have the same local patterns as real ASCII text art and the AI gives answers all of the decoy texts, and even when its not a decoy its the wrong answer. So without images AI can’t “read” ASCII text art.
The “fake” ASCII arts are generated using a special markov chain algorithm (implemented in the previous devlog) that makes it harder for an ML model to recognize which text is the real one.

0
tanjim

Made a markov chain giberrish generator (you will see why).

Attachment
0