Sunday, July 26, 2015

Band linking web app proposal


 This is no longer a proposal but a fully functional realeased project.  For more up to date info on this project see: https://github.com/sacarlson/song-list-rank/wiki

This  now remains only as a historic document that shows the first planning stages of the project.

This is a proposal to create some  webapp software  to help bands organize what songs they want or can play together in real-time and later help find new local band members that play the same songs your band likes to plays.  As far a user is concerned it will just be a website on there browser.

This is an idea that came to me after dealing with my attempts to help organize a group of people in a new band to figure out what we wanted or could play together. We originally started by at least getting our group together on a group chat channel to discuss what we wanted to play and exchanged youtube links of songs that we liked so others in the band could listen and feedback weather they liked it or didn't or if they could play it or not. After a while we had lots of song links spread over days of chatting about some of them and forgetting others we had already discussed before. So what I first did was go back over what all we chatted before and collected all the youtube files and again pasted them on the time-line of chat that we were presently chatting about and said OK which of these do we now want. Some of the songs most of us didn't remember so we would have to start playing them again to even know what artist or song it was and we still didn't come to any conclusion of what we all wanted to play. So what I thought might make this work would be this:

I would create a website that each of the band members could add any number of songs to a list that everyone could see all the changes that everyone made in real time. This list would include:
band members name that suggested the song, the artist name, song name, youtube link.
Each line of songs would also have a vertical check mark box that each band member could check off or a symbol that would include , they like it, they don't like it, they can play it, they can't play it, and maybe a few more symbols. With this at a glance the whole group will see what they could play together or not or see if they had anything in common or not.

In later development in the software this data that is collected above in a mysql database could also be used if more than one band that was doing the same thing linked there data to all the local groups in the aria or world groups so that band members could find a better fit in anther group or band of people to play with in a local or world band if playing with something like Jamulus.

I tried to looking for something like this already on the Internet but failed to find it. Maybe I just didn't look long enuf. So before I continue I would like others to point me to something similar before I start this.

I already have the first test version of this website now running that doesn't have all the planed features yet but gives you an idea of what it will basicly look and feel like when it's done.  see: http://wesuk.ddns.net/

The first version doesn't even ask for a nick name.  anyone can add, delete or edit song link lines to or from it.  The ranking system is also now integrated into the system that auto sorts the list by the bands avg rank if you select the optional sort page http://wesuk.ddns.net/sort_list.php default view is sorted by when it was entered into the system. later we will add admin functions so not everyone can delete and edit things.  and later we will add the other planed features discussed here.  The above link can't handle much traffic so may not be up all the time.  I also continue development so might be bugs that show up.

I estimate the first fully functional very simple website app that I could create would only take me a few days but it won't be pretty. It will be bare bones with nothing fancy so it just works and is simple to use with virtually no security or membership features to start. It will be simple if anyone knows the name of the website of the app, they can simply add there nickname and be in the band much like simple IRC bridge websites work that would  look like this:

After you submit your nickname and band you will be sent to the song list page that looks  like this:


This is the first version of the  play list that you can click on youtube links to hear what they sound like and play the video.  Note the link at the very top left "add new song"  click that and you will get the screen bellow to add new songs to the list.

For a band member to add a song they would hit the "add new song" link and would see a simple form like this one:


  Note it's just 4 boxes with song name, artist, youtube link and  rank number 1 - 5.  when the info you want to share is filled in the member would hit the submit botton that would add a line to the song list.  Note you don't have to file all the boxes or any for that mater to submit a song.  You will then be redirected to the song list to view the new updated list.  Remember more than one person on the Internet can edit it the list at the same time so more things may apear with a refresh than you might expect.  Note the 4th rank box is no longer used so just leave it blank.  Use the group ranking links instead under your name on the list.

. In the future other programers will have to add the needed eye candy to make it look good with background images and things to make it popular in the modern worlds view and interface it to the likes of facebook and or G+ or some totally new social networking system.


Other Planed methods of group ranking
I have other plans other than simple average of rankings that we now use in posible future additions.  It might be something like this later: The total ranking number if none of the members ranks the song as 1 is the total average of all the members rankings for that song
if any member ranks a song with a 1 then the ranking will be the total average of all the members that have not ranked as 1 * (times)  each player that ranked 1 with be a multiple of the total band members reciprical or in this case 1/5 or 0.2 .  what I guess I should also add is if parts of the band have not yet ranked the song yet but not sure what to do in that case yet.


The ranking numbers can be thought of as this:
0. unranked default value (no effect on rank)
1. hate it or can't play it
2. can't play it but maybe can learn
3. want to learn to play it with this band
4. can play it
5. love it and can or have played it already in a band

We could make ranking range from 1 - 10 later if desired.

In the sample view above it's just a speadsheet but on a browser the youtube links would be clickable to be able to view the song for the other members of the band to check out before they rank it.

Future aditions
One thing I was thinking about was to a least add a play list export so it would play or export a list that would be downloaded or ported to some kind of player.  I know youtube supports play list so I will have to look into what format they support to allow importing or auto creating playlists in youtube.com

Tecnical plans
I presently plan to write this in php code that will run on an appache server with a standard LAMP install.  It will first reside as a test on one of my local websites that I keep on my local linux system.  It could also be written in ruby or python or many other such programing languages if we find a need.  I might add some ruby links to the php at times if needed as I'm better at ruby programing than php.  The database will be in mysql with supporting apps also linked into the package like phpmyadmin.  It could be designed to install as a deb package in ubuntu or debian dirivitive but also could be just a ziped package that is uploaded to an already running appache LAMP hosting system.   The software will be published on my sacarlon github account as open source as most all my projects are for others to use and improve upon.

Tuesday, April 21, 2015

P2P open source poker program proposal

Note: This is no longer a proposal, This project has already been released  as a fully functional system, details can be seen here: 
https://github.com/sacarlson/pokerth_accounting/wiki

This article now only remains as a historic document of when it was just an idea.

I was thinking about setting up a P2P open source poker game for some time and had already done much research on it's possibilities.  My original plan was to use the already running open source pokerth game with some modifications that would allow a payment module to be plugged into it.  The original plan of the payment system was to use bitcoins built in multisign scripting to allow for a completely uncentralized escrow method of payment.  I had already done some programing in bitcoin and created a branch called multicoin that would enable testing using worthless crypto currency to start to just keep score and to test out if the idea would really work for real bitcoins first?   I later had other interests and dropped out of my software development of Multicoin.  I just recently went back to look again at what we now have in open source crypto finance and found something even better than bitcoin for poker p2p finance called Ripple.  Ripple doesn't fully replace Bitcoin but it actually can be used to transact and auto convert bitcoin if desired to any desired currency at even faster speeds of 5 seconds per transaction compared to bitcoin that would take up to 1 hour at times to do a transaction.  Ripple has everything we need to both play with real money in virtually any currency at the same time.  Ripple not only provides a way to transact  funds over a no name no address accounts much like bitcion with just a big number and secrete number, but also has the built in tools of multisign to allow again for the escrow to hold the pot of a game until the winners of the game are determined and can be paid out.  Ripple being uncentralized much like Bitcoin can't be taken down or controlled by governments to sease assets and there is no central point of all assets that can just run off with all the money.    It can also be setup to play in a virtual fake money to start that can be used just to keep score in the beginning and to test for problems so we can debug and fix them.  And to also allow those to continue to play and just keep track of there score by looking at there virtual Ripple coin accounts to see there status.   If that ends up working it would only require switching to the standard Ripple network to allow for real money games at cost per game money transactions of as little as 0.0001usd per game so we are taking about playing poker for 100 years for like $6 for a lifetime.  Ripple also allows for controlled credit limit loans so you could even have poker bankers involved in the games if desired in real or fake money.   Also since the cost of the transactions are so low you can also play in micro pots of like 1 cent or less even in real money.  So at these numbers people wouldn't need to have so much trust to get started in it.  Also inside of Ripple transactions there is memo data that can be added and used to add notes of what games the transaction was used for and who the players were that you won it from and what software was used in the game.   One other thing I think that will be needed is a method of tracking trust of players.   I'm sure there will be some cheaters or attempted cheaters, but at some point there will also be reputable people that many people will get to trust.  With the cryptographic signatures you will be sure you are playing with the same people you know each time.

There are still many unanswered questions as to how all this would have to be setup to make it almost impossible to cheat or at least just work.  

One feature I would like is that it would be cool if you could exit a game at any time and take what you already won or leave with what you have left.  At this point this would be hard for me to do but not impossible.

 At the beginning to make it simple all that join a poker game would be part of the multisign escrow.   Each player would put in some random decided pot amount that would buy you some random number of chips to start the game.  Each player would play until they have no chips left or have won the entire pot.  Any number of players could play from 2 – 10 people.   When the final two players finish the game the destination address for payment is set in the escrow by the winner and each of the players signs off that he was the winner so he gets the total funds transfered into his Ripple account.  In the event that something goes wrong in the game for any reason.  There can be a dispute of the group of players that would have to conclude with more than 50% that there was a problem with software or other.  In this case all the money goes back to each of the players less a small transaction fee if needed in the Ripple transaction.  Ripple also has time values that can be added into the escrow contract, so if no one signs the transaction over some period of time that would also be concluded as something went wrong and the money again returned to the original players.  The escrow time can also be set to allow some time for the players to ether agree or setup a dispute.  In most cases this would not be seen by the players.  It would all be handled invisibly and automatically in most cases by the pokerth payment system.  At some point we could also add a third party trusted entity to some games if desired that can mediate if needed in bigger money games.  In this case the third party would most likely want some money to act in such a capacity.

On the side of cheating. How can we be sure that some players don't use a modified version of the open source game to allow them to cheat by looking at cards or changing card values in play?  I'm hoping others can figure that one out as I'm not really sure.  I haven't looked at the pokerth code that closely yet.  I don't know anyone that presently cheats in pokerth but that maybe due to the fact that it's used to play with fake money not real.   So until we get the fake money in Ripple working with pokerth, we can figure this part of the security out later if we find we need it.   The cryptographic playing card section of p2p poker might be another project in itself for all I know.   I can only say that I've played Pokerth for many hours  with very few problems to date.  It seems very stable as is.

See the references below for more details on the proposed multisign features of Ripple:
https://ripple.com/
https://www.stellar.org    we switched to stellar.org

https://wiki.ripple.com/Multisign
https://wiki.ripple.com/Contracts
https://wiki.ripple.com/Main_Page
and the pokerth site:
http://pokerth.net/


Present links to the now completed pokerth_accounting project:
https://github.com/sacarlson/pokerth_accounting/wiki

Method to contact us to feedback your thoughts in real time chat:
https://kiwiirc.com/client/irc.freenode.net/#pokerth

Also note that some of these multisign and contract features of Ripple are said to be future features.  I'm looking to see if the code in any of the Github branches  already has some at least partly working version of  these features that we can start to test with.  I see them speaking about it months ago that sounds like they almost had something.  So we might just have to wait and see.
by Scott Carlson (c) Apr 21 2015

Update Jul 10, 2015
We now have a working prototype of our dream software that is now published on github: https://github.com/sacarlson/pokerth_accounting  also see the more up to date wiki for more details https://github.com/sacarlson/pokerth_accounting/wiki that also contain links to screen shots .  We have now tested the software with over 2300 transactions without any noticable problems.  Added voice status so you can play poker and know what the accounting is doing and what your recieveing.  We still need to integrate Stellars built in escrow system and the mental poker shuffle algorithum and then it will be complete.

Sunday, April 5, 2015

How to pigyback a wifi gateway on an already existing wifi infrastructure system

This is an experimental method to pigyback on the PBC buildings wifi ifrastructure, or most any buildings or shops infrastructure to allow distribution of another available Internet connection to the PBC buildings already available wifi distribution.  Rather than run another wifi system to distribute my network.  I just pigy back on the already installed systems.  This can allow the users a better, faster network service than is presently normally available on the buildings wifi network or at times allow them some service even when the normal wifi service is no longer functional at all.  It was much easier before, but now the system they have installed on this buildings wifi distrubution has added some kind of arp poisoning to there security system that made it a bit more difficult for me to figure out how to do it.  So I thought I would share it here so others didn't have to go through the trouble I did to have to figure it all out.  I have not as yet added any notes on how this can also be done on windows yet but I know it can be done.  I'm a linux guy so I"m slow on windows research.  These notes, scripts and screen shots are for using a tp-link or most any box running an openwrt firmware that acts as the added gateway on the wifi system.  The client_perm_arp.sh is an example of what needs to be run on a linux client to put it in static llc mode.  The settings will be lost when the laptop or tplink box is rebooted.  If you desire it to become permanent on reboot you will have to set that up yourself.  Also for easy setup I saved a backup of the openwrt config as backup-OpenWrt-2015-04-05.tar.gz  that can be installed from luci system restore on openwrt from your browser.  for more details see the link to the files in my google drive here: https://drive.google.com/folderview?id=0B4pSHwxHXW9Sd1NVWTVqa2pyazg&usp=sharing