? Editing: Post:21.body Save Delete Cancel
Content changed Sign & Publish new content


trying out this distributed thing

Latest comments:

Check out 0rc!

on Mar 20, 2016

Me, hhes and a few other people have been working on 0net Relay Chat, a slack-like replacement for IRC on 0net. It is still heavily WIP, but come check it out at dev.0rc.bit!

Read more

Starting to learn python

on Dec 13, 2015 ·

Just started to learn python. I know general programming concepts, but not Python specifically or its syntax, so this was new for me. I love it. Coolest thing? for line in file: This is so great.

Anyways, I made a python script, that when run, creates a copy of itself in the same directory. I think it's pretty cool.

import os
import binascii

def replicate(path):
    # Replicate a file given the path of the current file.  Opens current file
    # and new file and reads all lines into new file.
    with open(get_new_filename(path), "w") as newfile, open(path) as program:
        for line in program:

def get_new_filename(old_name):
    # Gets a new filename given a filename to work off of.  Splits the old name
    # by periods, then adds a random hex string right before the filetype
    # ending.  Given 'files.py', a valid output would be 'files-2b57f5.py'.
    # The function also checks for collisions and adds another random string to
    # the end if necessary.
    # http://stackoverflow.com/a/2782293
    broken_name = old_name.split('.')
    while True:
        ending = '-' + str(binascii.b2a_hex(os.urandom(3))).replace('\'', '')
        broken_name[-2] = broken_name[-2] + ending
        name = '.'.join(broken_name)
        if not os.path.exists(name):
    return name

if __name__ == '__main__':

I want to do something with my new knowledge, but I don't know what. I think an entire os made of python would be pretty cool, but my skills are definitely not at the level, and python might be too high level and slow.

Read more

Nginx, Let's Encrypt, and https

on Dec 12, 2015

Just finished upgrading one of my servers to using https on my domain. Go check it out at dep.cgm616.me.

Pretty rough process, especially as I've never done this, but google was my kind friend and I figured it out. Lots of nginx errors and so on. Best part of the whole ordeal: no errors when configuring and building nginx from source. That was so surprising but immensely welcome.

I was able to get an A+ on SSLLabs test online, so that's pretty exciting. I have a personal ZN proxy for use with my phone on this server, and it was messed up, but I'll see if I can get that working over https.

Past this, I want to see if I can mirror this blog into the real web and enable https for that. Might need a different server, this one is already doing tons of stuff.

Read more


on Dec 11, 2015

Swift looks so cool. The open source way Apple is playing is pretty great. Time to setup a dev environment and play around.

Read more

Why isn't my kernel working?

on Dec 11, 2015

So I start to follow the guides, add in all of the processor checks to get to long mode, and suddenly it stops to show okay. Time to do some debugging.

Read more

Cross-compiling GRUB for x86_64 on Mac

on Nov 25, 2015

It is very hard and convoluted. Many hours went into figuring this out. I was eventually able to do it, but I had to not only modify source files, but also the Makefile. It also took ots of Googling, but it should work now.

Read more

Messing with assembly

on Nov 24, 2015 ·

Recently I've been trying to follow Philipp Oppermann's excellent set of tutorials on creating a kernel using rust. I haven't ever done any rust or assembly programming, so it's very new. I also have only a tiny understanding of hexadecimal or the low level parts of a computer, so that's been interesting.

I haven't actually been able to run any code yet. I'm on a mac, on amd64, not x86_64 like he is programming for. Which means I also need to cross compile binutils. Not that difficult, actually went smoothly without a hitch. However, remember I'm new to all this, so it's all a bit uncertain. Having done that, I need to use the grub-mkrescue command. Cross compiling grub can be done, and I found a guide on how to do it on OSDev wiki. However, I can't seem to get that to work. I'll edit this blog piece later on that mac so I can copy some code snippets in, but objconv is failing with a not very descriptive error on what seems to be not a very special file. I'm still trying to figure it out. This was the millionth error with this process I had to debug, but I like the challenge. Assembly seems really cool, and botting up my own kernel, no matter how useless, will be a fun learning experience.

I'm trying to understand the code as I go, too. Of course the rust is really hard to get, but I'll get there. Right now I can kind of understand what some assembly will do, even if I don't know what it does in a higher sense. I can look at what registers are moving where and whatnot.

Read more

Domain up!

on Nov 18, 2015 ·

If you go to blog.cgm616.bit, it will redirect to this blog! Sweet! Anyone know how to configure normal web nameservers for it? I have DNSimple, but it can't detect the nameservers for the domain even though I have them in the record in NameCoin.

Read more

Just got NameCoins

on Nov 17, 2015

BTC-E just let me withdraw my NameCoins. At the moment I'm waiting for them to verify, then I'll issue the domain request. You'll eventually be able to find this blog at blog.cgm616.bit.

I don't know what I want to build yet. I think my first priority is making a proof of concept ZeroIndex.

Read more

Another idea...

on Nov 16, 2015

I don't know if this will work, but an alert if you are replied to anywhere in ZeroNet.

Whenever a site you are seeding is updated, the owner sends it to a few peers, then slowly it proliferates through the network, everyone sending it to someone else.

Now, with comments, it's a bit different. The first time, the comment poster contacts the owner of the site then asks for permission to add content. This permission is given, and the public key of that user is stored on the site. The next time they try to post a comment, it no longer has to go through the owner. It can go straight to the peers. [1]

So every new comment on every site you are seeding eventually goes through you. The client could check these new comments and see who they are replying to. If it is any of the users on that computer, they can make an alert. If not, nothing happens.

This would not only serve a huge purpose, especially as ZeroNet starts to grow, it would also make the entire network feel very interconnected.

[1] This is my understanding of it. Please correct me if I'm wrong.

Read more


on Nov 15, 2015 ·

So, not everybody can easily get domain names. The way I've found websites is either going on ZeroName and clicking every single one, or searching through the all the forums and blog posts I can find.

There has to be a better way.

I propose ZeroIndex. It has a interface that looks almost exactly like ZeroHello, except instead of showing sites you already have, it shows sites you don't from a list it has. It could be almost like an app store for websites, with new sites and interesting sites.

The premise would be when you create a new site and have it working, you submit it to ZeroIndex. Along with that submission you include some tags and a short description of what it is. Of course, sites go down. That would be the main problem, but there is a solution. On the client, ZeroIndex would be scanning to see if the sites are still up. If any go down, aka their owner has stopped peering them, and so has everyone else, your client would mark it as down. When someone sees it come back up they mark it as up. Pretty simple. This wouldn't happen very often, because with the decentralized nature sites should very rarely go down.

It doesn't sound like that hard of a problem. In fact, it sounds pretty easily doable right now. I don't know CoffeeScript, so I probably can't make it, but I'll look into what I can do.

Read more

The problem with ZeroNet

on Nov 15, 2015 ·

There isn't content. Without content, there is no community and there are no users. Without users or a community, there is no content.

The problem is there isn't a reaosn for people to use ZeroNet. Ordinary people that want to use twitter or such have no reason to switch to ZeroNet. And they can't, there isn't a social media website yet.

I've been trying to think what could be done to remove this problem, and I have a few ideas. We have to get the people who know what this is to make something that would draw in people interested in tech. Then, at least some of these new tech people will make content, and at least some of it will be appealing to a new audience. Then some of those people make content, and so on.

Gradually the content diverges from the tech and ZeroNet starts to be used instead of the normal web.

Another thing we need to help ZeroNet: people knowing about it. It feels polished, and at least partway done, to me. The underlying functionality is all there. The problem is no one knows about it. I knew about IPFS way before I gave a damn about decentralization, simply because so many tech websites were mentioning it, and it reached the frontpage of Hacker News. I tried to use IPFS, but I couldn't get it to work and in the end it wasn't worth it. I was able to get ZeroNet to work, all I had to do was download it and run a script. Even on windows.

Not only that, it is easy to use. You start the script, it automatically opens a url that provides access. Done. Now you can fully access the network. This level of simplicity among distributed/decentralized networks is un-paralleled. To start a new blog you click two buttons. Starting a website is a bit hard, but that could easily be built into the online interface, or even a native wrapper app around zeronet.py and zeronet.cmd.

The thing is, ZN is ready. All we have to do is introduce the world to it, then make them have to use it for a tiny specific thing.

Read more

Domain will take until the apocolapse

on Nov 15, 2015

I was trying to convert the little amount of bitcoins I have to namecoin, and I had to update armory, which took forever. Then I sent everything I had to btc-e to convert to namecoin. This was all fine and dandy, but because I just registered my account on btc-e it won't let me withdraw my namecoins for three days. Or let me convert them back into bitcoins and withdraw those.

This sucks. I guess I'll have to wait to make a domain name for this blog.

Read more

UiPassword plugin

on Nov 15, 2015

So remember how I said that --ui_password wasn't working? Well, it isn't because it has to be enabled as a plugin.

I guess I'm really good at selectively reading documentation.

Read more

Peering machine done

on Nov 15, 2015

Okay, I'm not going to do a crawler. I do have it working though.

I made a big list of many different sites I could find, added them all to the VPS's ZeroNet instance, and now it's peering them all. Sweet. Only taking a half a gigabyte too.

Read more
Add new post


21 hours ago · 2 min read ·
Read more


21 hours ago · 2 min read


user_name1 day ago
This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More