Profile

Cover photo
Bradley Meck
Works at Nodejitsu
Attended St. Edward's University
853 followers|8,797 views
AboutPostsPhotosVideosReviews

Stream

Bradley Meck

Shared publicly  - 
 
More fun on Infrastructure Development : DNS As a Service

DNS... It makes my computer not be a terrible flaming piece of garbage for most things, but what happens when you want to setup specialized DNS for your personal network? I wonder how other people have solved this and would be interested if anyone could chime in.

What do you want from specialized DNS?

1. Avoid going out to public network if we are hosting a site locally
2. Create helpful fake domains ala `localhost` does for /etc/hosts ( think of using instance.service.local instead of a random IP for private addresses! )
3. mDNS, seriously clouds love finding things to use. This will help you add flexibility

How do you get the information for filling this out?

1. Database holding info on your servers
2. mDNS services ( funny but true )
3. Flat files ( T_T )

What do you do once you have your information?

1. Feed it to your DNS server via something ala _changes feed from couch
2. Restart the DNS server ( T_T )

Restarting servers is generally chaos ( especially when syncing SOA ) so lets try and find an alternative that goes with #1

1. Custom server (tons of Node.js implementations, you can just pick one)
2. Load balance multiple DNS servers and rotate them as you update via restart ( be careful about losing state )

I am choosing #1 as we think it will be easier to deal with in-memory state rather than potential confusion from rotating servers.
1
Add a comment...

Bradley Meck

Shared publicly  - 
 
Been thinking about Decentralized P2P Document Databases, just thought some people might want some insight.

As I can figure the database I am talking about is shared between a multitude of people; of which, they are either admins or consumers. However, all people are able to fully replicate the database. An admin is able to modify the database, while a user is only able to consume the database.

The advantages:

1. Content distribution is uniform across roles.
2. Content is freely readable but not editable (explained below) by users.
3. Replication means merely using the database.
4. Ad hoc replication becomes possible.

The pitfalls:

1. Updates to existing documents can get out of sync and be hard to determine if an admin update was valid for both.
2. Updates need to be validated on updates (mitigate this with digests).

So... onto how this works.

The first thing is we need to determine what is needed for such a database.

1. Keys for encryption ( normal public / private pair works ).
2. Database or document revision ids ( document updates would change the entire database revision in the way described below ).
3. Data, a list of links for example.

So lets work on a simple example implementation. Our database will be held in a simple JSON representation and is meant to contain a list of strings.

```
{
"key": "my_public_key",
"digest": encrypted_via_keys('{
"id": current_id,
"digest": current_digest,
"next_id": "next_id"
}'),
"links": ["http://google.com"]
}
```

Ok so the basic idea of using this structure is that the public key is freely available at any time to allow people to confirm the digest. The digest is used to test the data's validity and provide what the next revision will be using as an id in its digest. Finally the links are in nice plain text and can be confirmed against the digest (though the implication is the initial replication is from a trusted source).

When a user wants to view the list of links he would simple replicate the JSON down and read the "links" property.

When an admin wants to update the links, he would send out a new copy to his peers who would also update their peers. The process in doing so is merely to take the "next_id" property of the "digest" and use it when generating the "digest" for the next revision. This would give no exposure to the private key while maintaining validation between versions for users.

Should an admin wish to change the private key more information would need to be exchanged, since the old key was used to generate the encrypted "next_id" it, so you would need to do something like include "next_key" in the "digest". This becomes very important because after each update you only have until the "next_id" is cracked for your private key.

Anyways just wanted to post some thoughts, this is by no means a complete solution since it lacks revision reconciliation, but it is a decent start.
1
Liam Breck's profile photoBradley Meck's profile photo
3 comments
 
Oop, I'd have thought folks I follow could get my address. name: liam, domain: networkimprov .net. IM is fine too.
Add a comment...

Bradley Meck

Shared publicly  - 
 
Always fun to think about remote debugging.
1
Add a comment...

Bradley Meck

Shared publicly  - 
 
Don't forget your local Node meetup! We are always looking for speakers, and sponsors! This is an amazing meetup, Node and Robots! Come see how Arduino and Node can be paired in order to make SkyNet!
2
Add a comment...

Bradley Meck

Shared publicly  - 
 
Nothing quite as cool as having a podcast host add you to a circle. In other news Kingdoms of Amalur looks really fun. If I ever have a chance to get time not programming I will be all over it.
1
Add a comment...

Bradley Meck

Shared publicly  - 
 
Wish I could design stuff, just don't have the eye for it. I'm going to be looking for a UI Designer for a theme roller it seems. Non-designer building a design building project seems... inept. On that note: why has no one built a theme roller for deck.js and impress.js yet!?
1
Add a comment...
Have him in circles
853 people

Bradley Meck

Shared publicly  - 
 
Wish all databases had someway to subscribe to a _changes feed like couchdb, I would use other DBs more often if they actually cared to notify of changes to outside subscribers :(, but a lot of things for syncing and in memory caches benefit soo much from those.
2
Add a comment...

Bradley Meck

Shared publicly  - 
 
Sitting here wondering about OS / Low Level API design... Wish there an easy way to jump into it, but facing off against UNIX is like electric engines facing off with combustion engines in the 90s.
1
Add a comment...

Bradley Meck

Shared publicly  - 
 
Looking for speakers for the Austin Node.js meetup. If you are new to Node or are a guru, come on up and tell us about your experiences, projects, and time with Node. People have explicitly stated wanting to learn more about:


* Isomorphic code (sharing between browser and Node) success stories
* Performance and scaling a Node application in production
* Random and interesting of Node uses / module

If you know anyone interested in talking about Node please get a hold of me.
1
1
Ben Brown's profile photo
 
I'd be interested in talking. Our services SendTab has a Node-based web service, and Javascript-based clients for Chrome, Safari, and iPhone. Email me!
Add a comment...

Bradley Meck

Shared publicly  - 
 
An interesting phenomenon that I have been watching for a while. Even successful men can feel this confusion. Instead of just documenting a trend it would be nice if there was more on ways to prevent this demoralization and apathy.
1
1
Add a comment...
People
Have him in circles
853 people
Work
Occupation
Programmer
Employment
  • Nodejitsu
    Software Developer, 3 - present
Basic Information
Gender
Male
Story
Introduction
Nerd.
Education
  • St. Edward's University
    Computer Science, 2006 - 2009
Links
A great place to get some coffee and relax. It is almost always busy but is still spacious. The back patio is amazing on sunny days.
Public - a month ago
reviewed a month ago
4 reviews
Map
Map
Map