Blog Posts What am I doing?

DAM: Decentralized Application Marketplace

Network Architecture DiagramHello! This is an idea I had that I don’t think anyone else has thought of yet, considering I can’t find anything similar through a DuckDuckGo search. Simply put, why not decentralize the app store?

Taking inspiration from how the Matrix protocol works, there are three types of nodes: Clients, who want applications, Merchants, who have applications, and Markets, which facilitate the entire process. In comparison to Matrix, a Merchant is equivalent to a homeserver, and a Market is equivalent to an identity server, but with more responsibilities. I don’t think I need to explain what a client is equivalent to (hint: its the same thing).

How the actual protocol works on a technical level is still up for debate, but only two pieces of software would be absolutely necessary: the Merchant server software and the Market server software. The Market software would handle accounts for Clients, as well as payments. There would probably be options for revenue share – either no share (dev gets all the profit from their app), share what you want (dev chooses how much they want to share with Markets), or fixed share (Market sets their take, limited to 50% and under) – since server hosting is not exactly free. The Merchant software would allow for developers to host applications, as well as multiple versions of the same application (i.e. Linux packages, Mac binaries, Windows binaries, Android APKs / x86 binaries, ARM binaries, RISC-V binaries). For share-what-you-want Markets, the dev chooses how much to share through the Merchant software. There could (and probably will be) client software as well, but it would be possible for the Market to have a web interface (through HTTPS) for Clients to use if they don’t want to use client software.

While this does at least appear to be a complicated system, it has one great benefit: you only need to have one account on one Market and you can access any application on any Merchant, and platform holders don’t need to host all the infrastructure necessary to support a large app store – they just need to host a Market server, add a compatible Client app to their platform, and any developer with compatible binaries on their Merchant server is now on your platform. Easy. Of course, it does mean offloading some of this infrastructure to the developers, but better to spread the burden around and make it easier for everyone than to put everything on one person or group.

That is all I can really say at the moment, as the idea is not fully developed, but I think this could be “very, very, interesting”. But what do you think? There should be comments under this post, but if you wish, I have a contact form on my about page which allows you to email me.

(Oh, and of course the protocol would be open source. Why wouldn’t it be? Just need to decide on a license – MIT, GPL, or something else?)

0

I messed up.

Okay, maybe that’s sugarcoating it a bit.

But really, I really regret how much I have messed up this entire school year, my first year of college. First quarter? Failed precalculus because I’m a dumbass who can’t remember to do his homework over the weekend. Second quarter? Passed with thin margins. This quarter? Well, it looks like I’m going to pass two of my classes, but then there’s Calculus I, where I only got 5% on the second test AND I know I forgot to do my homework. I am such an idiot. And even when I tried to fix things, either by taking my advisor’s advice and doing a “Smart Habits” thing to try and get better at, well, everything, or by taking my parents’ advice and follow a strict schedule, whatever makes me such a dumbass that I need to do all of this to not fail just circumvents it! I don’t get it! I messed up, I tried to improve, but somehow it just didn’t happen.

… I am probably going to lose my scholarships. And its my fault. And I just don’t know what to do.

1

53 20 65 20 72 20 69 20 61 20 6c 0d 0a 43 20 6f 20 6d 20 6d 20 75 20 6e 20 69 20 63 20 61 20 74 20 69 20 6f 20 6e

If you decoded the title (and if you really did that instead of reading the permalink, you’re awesome), you’ll know what this post is about, at least generally. (Also, I was going to do binary, but I figured that would be too long).

Throughout computer history, we always needed a way to connect peripherals and stuff to our computers so we can do more stuff. Want to store your data? Connect up a cassette player, floppy drive, optical drive, (floptical drive??), or memory card reader. Want to print out that essay you just wrote? Connect a printer. You get the point, right? The thing is, there are many ways to connect things together.

Generally, there are two approaches towards connecting things to your computer: parallel (sending multiple bits at a time) and serial (sending one bit at a time). Then there are many different capabilities you can add onto that, such as daisy-chaining (think FireWire, or IEC/CBM bus; you connect one thing to your computer, then you connect something else to that thing and both can talk to the computer), multi-master (multiple computers on one bus), multi-slave (multiple peripherals on one bus), plug and play (you can rip the cable out of your computer and it won’t explode), etc.

For the Neutron, I think a daisy-chaining, multi-master, multi-slave serial connection would be useful, as such a connection could be used for multiplayer games and for sharing multiple peripherals between computers. The IEC bus almost fits our needs, with the only problem being that it does not support multiple computers on the same bus. I2C is also close, but still no cigar as it does not support daisy-chaining. So, we’ll have to modify one of them and/or combine them in some way. How to do that is beyond me at the moment.

0

Up down up down up down

I was watching Retro Game Mechanics Explained. It was a video about the Game Genie and how it’s codes worked. It was interesting.

I have a project I’ve been working on, at least in concept. It’s a computer based around the 65816 processor (I’m calling the computer the Neutron), and one of the things it will have is a cartridge port. These cartridges can be up to half a megabyte large without the need for banking hardware. So, I was thinking about how a Game Genie-like device could work for that project.

The 8-letter code entered (yes it had to be 8) would encode 1) a 24-bit address and 2) an 8 bit value. For the 24-bit address, the first 8 bits would tell which 64K bank was going to be accessed. Cartridge space runs from bank F4 to bank FB, so the first two letters would have to encode the hex digits F and 4-B.

As for the letters? It’s kind of simple. Here’s what I came up with:

  • A = 0000
  • Z = 0001
  • B = 0010
  • Y = 0011
  • C = 0100
  • X = 0101
  • D = 0110
  • W = 0111
  • E = 1000
  • V = 1001
  • F = 1010
  • U = 1011
  • G = 1100
  • T = 1101
  • H = 1110
  • S = 1111

Basically, the even numbers are assigned to A through H, while the odd numbers are assigned to Z through S. Simple!

Now for how those letters (and their assigned bits) are mapped to the address and value. For each set of 4 bits, we’ll say the first two will be represented by uppercase letters and the last two will be represented by lowercase letters. The 8 letters will be labeled A through H.

To map each letter’s bits to the address and value, take each pair of letters, say A and B, with bits AAaa and BBbb. The upper case bits (AA and BB) are unchanged. If the mapped address and value are below the bits for the letters, we’ll say that AA and BB go straight down. For the lower case bits, swap the pairs. You’ll end up with AAbb and BBaa. Do this for all other pairs of letters, with the addition that with every other pair of letters, invert the lowercase bits. (I.e CCcc and DDdd become CCdd and DDcc, with italics indicating an inverse bit). Then, take the pairs of sets of four bits (called nibbles), and going from the outside in, swap the first nibbles. So, if you start out with the bits AAaa BBbb CCcc DDdd EEee FFff GGgg HHhh, you will end with the bits GGhh BBaa EEff DDcc CCdd¬†FFee AAbb HHgg. Using those bits, the first six nibbles make up the 24-bit memory address and the final two nibbles make up the 8-bit value that should be returned when that address is accessed.

0

Week Review – 12019 April 6

It appears that there is a bit of a bug going around campus. It’s not too bad, but not good either. At least I can function like a normal person still, even if I’m coughing frequently and have a congested nose.

In other news, I’m doing a #StellarisSaturday stream today. Here’s the link: https://twitch.tv/snappg

0

You may have noticed…

You may have noticed that 1) all the past posts and pages are gone, and 2) the theme has changed. This is because I tried to edit an image and it broke WordPress, so I had to delete everything and re-install. How sad.

I’ll try and get everything up and running again. Just give me a second or two.

0