Open Side Menu Go to the Top
Register

04-27-2013 , 12:15 AM
I wrote some software called Range vs. Range, for advanced range-based situation training and analysis for NLHE. I'm considering completely rewriting it as an open source, simple, web + email application. But I'm not sure how to go about starting an open source project. Any suggestions?

I'm both a C# .Net developer and a Python developer, so I'm considering either MVC 4 or Flask. I think either will work fine, so I think it'll come down to the contributors' preferences. Anyone interested in helping?

I'm happy to go into more detail about Range vs. Range, and how this version will be better and simpler than the last one – just ask.

Last edited by guyupstairs; 04-27-2013 at 12:21 AM.
Quote
04-27-2013 , 10:03 PM
Just my personal opinion but I would love if this was done with Flask (Python) so that I would be able to contribute. I tried out RvR last summer and it looked really promising and as a long time Linux user I'm really glad you've chosen to open source it!
Quote
04-29-2013 , 11:11 PM
I've written a description of the medium-term goals of the project and what the site is going to look like, on the GitHub wiki, here: https://github.com/RangeVsRange/rang...ange-vs.-Range. I'd really appreciate any feedback, be it design, technical or nitpick.
Quote
05-24-2013 , 09:36 PM
How is it going? And why did you decide to rewrite your program as a web application?
Quote
06-09-2013 , 11:12 PM
It's been a while. There are at least four people interested in helping, and there is a demo game-starting / game-joining process published at http://rangevsrange.com/. (The old website for the download client/server version is still available at http://rangevsrange.wordpress.com/.)

Anyone who wants to contribute can fork this GitHub repo and get started: https://github.com/RangeVsRange/range-vs-range.

I'm really trying to focus on making this rewrite more user-friendly. Hopefully the prototype linked above demonstrates that.

I'm also taking a step up in terms of development methodology, by using git, pylint, and W3C HTML 5 validation, for starters.

Last edited by guyupstairs; 06-09-2013 at 11:19 PM.
Quote
10-13-2013 , 09:31 AM
Hi guyupstairs!
When i open the program after a couple of seconds appears this message and the program closes http://funkyimg.com/i/DCQs.png
tell please what does it mean and how to use this program? tried on Win XP 32bit and Win 7 32bit. the same result. Cheers!
Quote
10-18-2013 , 10:14 AM
is this no longer functioning?
Quote
10-30-2013 , 03:10 AM
Quote:
Originally Posted by Djuizeppe
Hi guyupstairs!
When i open the program after a couple of seconds appears this message and the program closes http://funkyimg.com/i/DCQs.png
tell please what does it mean and how to use this program? tried on Win XP 32bit and Win 7 32bit. the same result. Cheers!
Quote:
Originally Posted by ibavly
is this no longer functioning?
Yes, the server is no longer running. The reason being, there's never anyone on there. With only one person on at a time, no games ever happen. Hopefully the web application can deal with that problem.
Quote
10-30-2013 , 01:15 PM
That is unfortunate.
When do you expect the web app to be online?
Most of the rangevsrange website seems to be down.

Thanks
Quote
05-18-2014 , 06:23 PM
Hey, GuyUpstairs, I really like this app idea. I wish it could more be brought to reality. For anyone with a headsup partner, you could dramatically improve your full table game faster.

I had this exact idea about 6 months ago and was half-inclined to build an Android app myself.

Anyways, it looks like without having enough community support, you're having trouble getting it off the ground. I wonder if it's not user friendly enough or something. I can imagine that frequently making complex range choices can get tedious.

How can you carry this forward? Do you mind if, perhaps, I evolve your code into an Android app?
Quote
05-19-2014 , 08:25 AM
I came up with the original idea for Range vs. Range when I watched this hand from the second Durrrr Challenge - Cates vs. Dwan:
Spoiler:
Full Tilt Poker $200/$400 No Limit Hold’em – 2 players
durrrr (BB): $160375.00
jungleman12 (BTN/SB): $64185.50
Pre Flop: ($600.00)
jungleman12 raises to $800, durrrr raises to $2400, jungleman12 raises to $5200, durrrr calls $2800
Flop: ($10400.00)
durrrr checks, jungleman12 bets $4800, durrrr calls $4800
Turn: ($20000.00)
durrrr checks, jungleman12 bets $14400, durrrr calls $14400
River: ($48800.00)
durrrr checks, jungleman12 bets $39785.50 all in, durrrr calls $39785.50
Final Pot: $128371.00
durrrr shows (a full house, Sixes full of Threes)
jungleman12 shows (two pair, Kings and Sixes)
durrrr wins $128370.50

I distinctly remember watching them play this hand, and being blown away by it. I thought: How did he know to check-calldown there? When he flopped the miracle nuts, how did he know what to do? How often do you call a 4bet out of position with an incredibly weak holding and flop the full house? How can he possibly have enough experience in spots like this to be well informed about how to play this hand postflop? Or, more generally, How can we practice specific post-flop situations? This must have been about 5 years ago now.

What I came up with was... nothing like what I have now. I thought of the idea that you can define post-flop situations (that part I still have, at least). Then I thought, you can start play from that point-in-time situation, by drawing each players hand from their range, interpreting their range as a probability distribution. That's not trivial, because of card removal effects, but it's possible. This is what I called "regular training", and I created a desktop application to play this.

It was actually surprisingly fun to play. This is the most interesting part of this whole story. I later developed what I called "advanced training", and then later "play-on training", and these were both vastly less fun, and almost infinitely more valuable training. It's a shame, but as they say, "if it was easy, everyone would be doing it", and honestly, I don't want to kill the game of No-Limit Hold'em. Because if that happened, everyone would just turn to Pot-Limit Omaha, and I'm still a long way from having Range vs. Range training for Omaha.

Advanced Training was my second epiphone: how awesome it would be if you could play your whole range, and that it could be done by not showing the user their cards, so they would be forced to declare their whole range for each action.

Strategic analysis was my third epiphone: knowing people's ranges, you can determine whether bluffs are good, or bad, which hands are worth calling or folding at showdown, which hands are value bets or bluffs or medium-strength hands at showdown, etc.

My fourth epiphone was Play-On Training, which allows users to play on to a showdown, or even all in, as long as both players keep having a raising range.

So with all of this, we have an idea that is absolutely capable of changing the game. People realise that it might be fun or interesting to play this game. Most people don't realise how powerful an idea the strategic analysis is. This is the first time we've been able to objectively say what someone's range is, let alone both players' ranges, and this implies that it's also the first time we've been able to objectively say what mistakes a player is making, how they could play better, and how much EV they lost, compared to the opportunities they had.

Read that paragraph again.

So... to your questions. If you want to, you can start your own project. You can even follow the functionality in Range vs. Range at https://github.com/RangeVsRange/range-vs-range/. But let me tell you, it is a lot of work, and you really need to think about the experience for users.

Let me reiterate: I already wrote this program. It already had everything it needs. It ran as a desktop application. You can see a really good example of its use that really shows off most of its features (for raw training value, at least) here: rangevsrange.wordpress.com/advanced-training-example/.

The main problems with this software are:
  1. It's not fun to play, because the gamble of normal poker is removed, and there is no winner and no loser.
  2. Specifying your ranges in each situation takes a long time, and makes you think.
  3. No one wants to sit online waiting for perhaps 5 minutes while their opponent makes one action.
  4. With insufficient momentum to have a player base, every time someone logged on, they found no-one else online. 95% of people that connected to the server never got to play a game.
So if you are going to create an Android version, think about how you would solve these issues.

These issues are the reason I decided that Range vs. Range should be a web application. This makes the time investment much smaller – the user does not need to install anything, or even create an account, because they can log in with Google.

It also lets me make it more turn-based, less real-time. One player can take as long as they like making a move, and then the other player can receive a notification (email) when it is their turn. The point here is that even if the game takes a long time, users will eventually get to the point of receiving the sweet nectar of strategic analysis, and once they taste that, they will understand.

And in fact, the web makes it possible to have the best of both worlds. If you have a friend you are playing with, you can chat at the same time, play in real time, and the page can automatically refresh when it is your turn. This isn't written yet, but the technology exists, and it will not be too hard to do.

In summary, yes, you can write an Android app if you want. But my advice, my preference, and my request, is that instead, you help me write the web application.

You can see where it's up to by following the commits, or by trying it out at rangevsrange.pythonanywhere.com.
Quote
05-19-2014 , 11:41 AM
It would be awesome if one more developer hops on to help the project.

Regarding the software issues. The biggest problem is number 2:

Quote:
Specifying your ranges in each situation takes a long time, and makes you think.
The user interface both for web app and for the old desktop app for selecting and managing ranges is way too raw and cumbersome which would discourage almost everyone. In comparison, other poker software like CREV, poker ranger, combonator have much better and quicker interface to partition ranges postflop into categories/groups.
Quote
05-19-2014 , 06:00 PM
Right. It can be made somewhat better. Of course, CREV, poker ranger, combonator (I don't know these things, but I think I get the point) have the advantage that someone else is not waiting blindly with nothing to do while you use them!

But yes, my range editor could be better. Right now, when there are two hearts on the board, if you want to select your nut flush draws, you have to Ctrl-click A2s (to select all suited aces), then click the suit combos "None" button to de-select all suit combos, then click the button to re-select the appropriate suit combos. That's three clicks.

In fact, it's much worse for straight draws. If there are a 5 and a 7 out there, it's four clicks to select your OESDs (86s, 86o, 64s, 64o), and 10 clicks (I think!) to select your ISDs (98s, 98o, 96s, 96o, 84s, 84o, 63s, 63o, 43s, 43o).

This is absolutely the kind of thing I could use some help with. It's not that I couldn't do it myself, but it takes time, of which I have precious little already. And I'm working on the strategic analysis, without which the software is far, far less useful.
Quote
05-19-2014 , 06:09 PM
Nostalgia: thinking about how I came up with this idea, I remember there was an intermediate step where I thought: Wouldn't it be great if you could practice having a set of 6's against an opponent. Just over and over again, always having a set of 6's. Obviously, I immediately realised that this wouldn't work, because your opponent would know you have a set of 6's, and play accordingly! The only way to make it work... with a real human, at least... is to draw your hand from your actual range at that point. Which to start with sounds bad because you won't have a set of 6's very often, but even then it's not so bad, because if you call on the BTN for example, if every single hand you play is calling on the BTN, you will flop a set very often.

Of course, with the Advanced Training now, when you train the situation where you called preflop on the BTN, it's a completely different story: you flop every set every hand. And usually show them all down every hand too (for aggressive players, at least).
Quote
05-20-2014 , 06:22 PM
Quote:
Originally Posted by StrayJ
How can you carry this forward? Do you mind if, perhaps, I evolve your code into an Android app?
On second thoughts, the best way to pool our resources is probably for you to create an android app that hooks into my app. I've designed it with that possibility in mind. There is an API layer, under which all the database interaction occurs, and above which everything is passed around as DTOs.

This internal API is already consumed by the web application, and a local command console. It wouldn't be hard to also expose (most of) it as a JSON API.
Quote
08-17-2014 , 07:14 PM
Ok. I'm quite impressed with your work. I think the thing could be made more friendly. Really you need a critical mass of players so that anyone wishing to "just try it" has someone to play against. I sat for months with nobody to play against, but now I see that you initiated a game.

Where are you located? If you're near the San Francisco bay area, I'd love to get together for coffee sometime and chat about poker programming stuff. I'm personally working on a GTO solver which I think will be very advanced and could be a nice collaboration with your work.

How can I get ahold of you outside of 2+2?
Quote
08-17-2014 , 07:23 PM
Well, I've recently become convinced that any web app can have very similar functionality as an Android/iPhone app . But the web app is very valuable for cross-compatibility, so it seems like the winning approach. Not sure about the difficulty of building a web app vs. an Android/iPhone app.

Unfortunately I have a lot of poker analysis code already in Android (Java), so I'll have to do some porting. But I'm already committed to it.

I'd like to talk to you by voice, if possible. I'm working on a lot of ideas.
Quote
08-18-2014 , 03:32 AM
You can email my gmail.com account, username is rangevsrange. We can go from there.
Quote

      
m