this is a post about learning the hard way.
aka: the only real way to learn.
the naive vision
i wanted to do urbit app development without touching linux. so i built a browser-based text editor called %eyas
(soonTM to be %hawk). it was a good project. it won a prize. people told me “good job”.
and then i made this app, %feeds. i did 100% of the coding for %feeds
from within %eyas. it was a pleasant experience and i was excited to get my work out into the world.
so on my distribution ship, i ran |merge %feeds ~taster-migrev-dolseg %feeds, =gem %only-that
it worked! a few people installed the app. and i kept on pushing changes.
the problem
a few days go by and i keep pushing changes. but i notice that the installs are taking forever. multiple hours to install a relatively simple app. what gives?
turns out that my |merge
strategy doesn't work. you can't just pull in the most recent commit of a desk, you pull it's whole build history. even when used with only-that
.
this is only really a problem with using with my editor %eyas, because %eyas
never touches linux. this means every time you save the file, you commit to clay.
so whenever you'd install my app, you'd by installing a history of every time i'd ever saved a file in my app while developing it. sad.
the solution
i had to breach my dister moon.
now, i just copy the files manually through linux to the distribution ship and|commit
the old way.
luckily, after breaching everything works fine. the ships who already had it installed just kinda figured themselves out.
breaching moons is not that big of a deal, i guess.
urbit can't delete things!
who made this urbit thing anyways? it makes no sense! i can't delete a desk? i can't just copy in some files over the network? clay makes me mad sometimes. devs do something!