Recent submissions

Comment · 5 years ago
Before you dismiss CryptOrchids as not technically interesting, please believe that’s how I feel about most projects in the NFT space, and I set out to create something unique, clever and only possible because of blockchain technology.

NFTs got a lot of mainstream attention recently and I couldn’t get excited about the space, despite feeling like collectibles are right up my alley. So I did a deep dive, started playing around with Solidity, and came up with CryptOrchids as a fun, small project I could build to learn more.

CryptOrchids are flowers that grow on the ethereum blockchain as ERC721 tokens or NFTs. When a CryptOrchid token is minted, it starts off as a seed.

A seed owner can germinate their seed, which calls a function on the CryptOrchids smart contract that makes a request to Chainlink VRF, a service that provides verifiably random numbers. The contract uses that random number to determine the species of the flower according to an n per 10k scale for each of the 10 species in the CryptOrchids genum - the Shenzen Nongke orchid is the most sought after species, germinating at a 1 in 10k seeds rate.

Germinating a seed starts the game - CryptOrchids are extremely sensitive and must be watered exactly every 7 days, within a 3 hour window.

All of the gameplay mechanics are stored on chain - when a seed is germinated, the contract stores the block timestamp as the plantedAt for the token. Each token also has a waterLevel integer, and we can then do math to determine if a particular plant is alive or dead.

A plant will be considered alive if it’s water level is equal to the number of complete growth cycles the plant has been alive, which looks something like this:

alive? = plantWaterLevel == Math.floor(plantAgeSeconds / GROWTH_CYCLE)

To give players a bit of slack time to water their flower, we provide a 3 hour watering window. So we can express that this way, where if the watering level is 1 less than fill cycles, but the modulo is within the watering window, the plant is still alive:

alive = plantWaterLevel + 1 == Math.floor(plantAgeSeconds / GROWTH_CYCLE) && (plantAgeSeconds % GROWTH_CYLCE) < WATERING_WINDOW

The result is a very simplified way to express the essence of a plant on the ethereum blockchain. Of course real world plants also need sunlight, and nutrients, and they grow different sizes and have things like reproductive cycles.

But from an ontological standpoint, I’m trying to move beyond 2D posters and more towards metaverse objects that behave like their real world counterparts. The contract also stores latin species names on chain, and the species are all real species found in the natural physical world.

Where I’d really like to take this project is to metaverses as 3d objects that owners can water inside the metaverse. I’ve started playing with the Decentraland SDK. It’s not much, it’s not earth or metaverse shattering stuff, but that’s the direction this is all going, and I’m super excited to be trying to make this happen. I can’t wait to be able to own a digital car, to race it in a racing universe, to use it for transportation in an RPG metaverse, or to auction it at a Mecum auto show in a metaverse. But cars are a lot more complex than plants, so I started here.

There’s a great little community popping up around the project, and there’s a lot of interesting social and gaming dynamics that are coming to the fore as people start to engage with the idea. Some have compared the game to Tomagotchis, which feels like a really nice compliment.

It’s been a really fun intro to Solidity, Ethereum and NFTs, but to be clear this is experimental and I while I wrote tests and QAed on Rinkeby extensively, I’m sure there are things that I don’t understand about Ethereum that may cause things to break down over time, so I’m very open to learning what naive mistakes I may have made here!

Comment · 5 years ago
I don't think I've changed the meaning unilaterally, others here seem to agree that the meaning is evolving.

I can concede that we are guilty of wanting the wave of goodwill, but I have a hard time agreeing that this is a bait and switch. And I certainly hope nobody is going to die because we use "open source" instead of "source available".

The part of this conversation that leaves me wanting is that it all seems so positive rather than normative, and doesn't consider the benefits of choosing this license over a closed source product.

Our goals here are to make SAML SSO more accessible and run a business that helps some good customers use the software we've created. There's a lot of net positives in that IMO, and this whole "but it's not ACTUALLY open source" is a distraction borne of inflexibility and a lack of creativity.

So how do we as an industry move forward in a way that allows individual use of source available software, but prevents companies from unfairly profiting off of that? Is that desirable? What do we call that? Maybe business source, maybe source available is fine. That's a lot more interesting of a conversation to me. If you won't have that conversation until we strike open source from our website I understand.

Comment · 5 years ago
Perhaps. Let's use plain English as neither of us are lawyers.

Allowed:

Deploy your own Osso instance and use it in applications you own and operate.

Not allowed:

You use Osso to start a business where your primary business is in helping other companies implement SAML SSO in the applications they own.

If that's not what our license says then we will change the license text.

Comment · 5 years ago
Fair enough. I stand by our interpretation of the current license though - the usage you describe is fair use, but let us know if your attorney disagrees as we'd definitely want to fix that.
Comment · 5 years ago
thanks!! we're running out of names for startups and people! hope we can peacefully co-exist. Spanish for bear and Portuguese for bone! fun :)
Comment · 5 years ago
The other industries you mention have gone through similar changes though haven't they? Not long ago, "idiot", "imbecile" and "moron" were all terms with strict definitions in the field of medicine. Languages, terms that are strictly defined, even terms that are particular to a science or industry, evolve over time.
Comment · 5 years ago
merged! the beauty of open source, er... source available software ;)
Comment · 5 years ago
As I've mentioned or alluded to in other comments, I think "open source" as you describe it is broken and unsustainable, and we're happy to have a constructive conversation about commercially viable open source. But if we can't agree that the definition of "open source", like any word or phrase, can change over time, then I don't think there's much of a constructive conversation to be had. Would you suggest we remove any mention of "open source" from our documentation etc.?
Comment · 5 years ago
I didn't mean for you to take my comment as a guarantee, but if you're more than curious I'd have your counsel read the license, as we are under the impression the use you describe is well within the rights granted by the current license. Put another way, do you consider Sentry "open source"?
Comment · 5 years ago
I don't think we've intentionally made false statements nor committed any fraud. But we appreciate the feedback, we'll review as a team and see what sort of decision we can make that will maintain source availability without upsetting folks who allow OSI to define "open source". We made some mistakes, we're very early, and we were hoping to have a (constructive) conversation around licensing and sustainable open source.
Comment · 5 years ago
Thanks, we'll review this and other folks' comments and see if we can make a change that works for us and maintains an OSS ethos. This is our first launch FWIW, we're appreciative of the feedback but clearly seemed to have ruffled some feathers
Comment · 5 years ago

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton