« first day (1074 days earlier)      last day (23 days later) » 
14:00 - 22:0022:00 - 00:00

14:45
Martin Ender has unfrozen this room.
Now that it's winter break time, I figure we can get the ball rolling on this project.
3
 
1 hour later…
15:57
who all is interested in participating?
Winter break starts in 1 week for me. Maybe then I'll participate
16:14
Break starts on the 20th for me, but I'm not that busy at this point in the year.
It'll probably be a week or so before we actually start on anything, but we should start brainstorming project ideas.
What previous projects have there been?
So only ASCII projects? No GUI?
@KritixiLithos I wouldn't say GUI is totally off-limits. ASCII is in the group name because of what we made, not the other way around.
^ for starboard
room topic changed to The ASCII Collab Club: Users collaborating on ASCII art games and stuff. See pinned message for github repos. [python]
16:29
So, we are doing it in Python again?
undecided
I don't know Python...
Neither did the rest of us.
Challenge accepted
Python is probably one of the easiest languages to learn, and has definitely the best docs of any language.
I don't know any of those games you suggested.
16:31
Just saying, Java is nice, there are switch statements in Java
Have you thought of doing Backgammon?
@KritixiLithos C# is nicer, and we could do the UI with WPF.
But that requires everyone to have Windows
Not any more.
VS is beta-released on Mac.
And I hear C# runs on Linux now too.
I prefer Python to C#
I could do Java, not done C# before but I could give it a shot
16:34
Well, Java/C# seems to be a bit of a holy war. Why don't we just do Python 3.6 so everyone loses (and wins).
2
As long as it's not C#, I'm in!
hm, I need to update my Python. Still running 3.3 :P
OK, how are we going to pick a project?
I'm in!
Python 3.6 go!
Everyone enter something and vote/random selection?
16:35
@Hosch250 Multiplayer, with a server/client infrastructure, maybe?
We can all run this: random.org
Selection with the most votes wins.
Wait, how do I see my Python version?
opening shell should tell you at the top
Umm, 3.6 isn't published on the web.
It is finalized, but haven't published the download.
I have 3.5.0
16:38
3.5.2 is the latest published download.
We can just start from there, I guess.
I'm in hackmd.
But there really shouldn't be a problem between 3.5.2 and 3.5.0, right?
No.
GTG finish a paper.
just installed 3.5.2
How do you update Python?
16:41
I really don't know. I just install over, but be careful about %PATH% and file association
Got it, command-line also recognises it as 3.5.2
Added a new entry on hackmd.
Er... I can't vote on the possible projects
Click the Edit button.
The pencil.
You can sign in with GitHub, or Facebook, or a bunch of different common sites.
Oh, got it
16:57
Looks to me like Twin Tin Bots is winning.
As for the AI, I vote that we consider that, but see how well the project works out before committing to it.
@Hosch250 OK.
^^^
Copyright?
Copyright?
I've never made a neural network AI, but I would love to see how one works
You mean, how will we license it?
We've done the others under the MIT license.
I hate GPL licenses.
@KritixiLithos It's pretty simple.
if y'all have any python-specific problems, I can help; it's my native language
17:07
That's pretty obvious given your user name.
@Hosch250 making it explicit
11
Q: ASCII generator

MastToday I stumbled upon CodinGame, a site with programming challenges. I'll describe one of them. ASCII art allows you to represent forms by using characters. To be precise, in our case, these forms are words. For example, the word "MANHATTAN" could be displayed as follows in ASCII art: # ...

Is that the kind of stuff you guys are working on or did I miss something?
That is not what we are working on.
We are doing a game with an ASCII art UI.
Dwarf Fortress style?
That's one of the losing proposals.
17:14
lol
We've done hangman and checkers (which has a tendency to crash around the end game).
I did a bit of chess by myself, but the AI doesn't work.
Chess AI is tricky.
Yeah.
Theoretically, it works, but it is too slow to be reasonably useful.
Sounds good, that modularity thing. I'll lurk here every once in a while to see what shiny things happen.
Also I might not be able to work on the project at all times
17:29
@KritixiLithos isn't that everybody?
Has everyone voted?
If so, we have a clear winner.
I've voted
Me too.
Do we have quorum?
I'm fine with TTBots
@Hosch250 I think so!
I can do code reviews to check for style and readability.
Let's get this on github.
Let's organize it into classes.
Hey, does anybody want to do live pair programming, just for the sake of watching others code?
Give me your GitHub names. I'm going to add contributors so I don't have to handle merging.
kritixilithos
CrazyPython
@noɥʇʎPʎzɐɹC I prefer programming alone. That way, I can move at my own pace if I do/don't understand something.
17:44
@Hosch250 I mean, just to see what it feels like; to see how other people code.
Sure.
I'm cloning...
I don't know Python very well, but I can watch you, if you like.
I know python well, so I can watch you and show you some shortcuts maybe, if you like.
[Hosch250/ASCII-Twin-Tin-Bots] Ping: Keep it logically awesome.
17:47
@Duga What's the Code Review bot doing here?
I hate how some GUI programs don't respond to kill signals.
Because I told it to post a few pieces of data about PRs, etc.
If you want, I can kill it.
Somebody's gonna need to setup the basics - ie name the main file, setup the basic logic.
@Hosch250 No, it's fine.
@noɥʇʎPʎzɐɹC You can do that. You know more about Python than the rest of us.
I sent you two collaborator offers.
17:51
What do we want to call the main file? main.py OK?
my git is FTcode if you need it
@Flp.Tkc Huh? Cannot parse that sentence.
Invitation sent.
@PhiNotPi got an invitation too.
@noɥʇʎPʎzɐɹC Sure, or maybe twintinbots.py.
Do you want me to add empty init methods as a template? It's probably a good idea.
(Adjust for the appropriate naming.)
Sure.
Just set up the basic structure for the rest of us to work with.
17:56
Working on it.
@Flp.Tkc Gimme the rundown on what classes the game needs to function. I have Order and Game right now.
no idea, I'm researching the game right now
17:59
btw I'm using type annotations which are just optional type hints, no need to include them.
aa = 1 # type: int or def x(a:int):
They are ignored by the interpreter. 100%
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit f30cff09 to master: Extremely basic super incomplete framework
@everyone OK, I set up a very basic framework. It's extremely incomplete because of limited knowledge about the game. Tell me what I need to add.
❯ git commit -m "Extremely basic super incomplete framework"
[master f30cff0] Extremely basic super incomplete framework
 2 files changed, 41 insertions(+)
 create mode 100644 logic.py
 create mode 100644 main.py
btw nice bot
Why are you asking me? :P
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit 287571ab to master: Remove extra newline at end of main.py
18:07
Wow, Duga is fast!
@KritixiLithos Huh?
On what are you working on?
@TuxCopter The project skeleton.
I meant Duga
I need to know what classes should go in.
@TuxCopter e.g. lay out the foundation of the code
We can't all commit different foundations :P
18:09
Yes but the skeleton for what project
@noɥʇʎPʎzɐɹC I don't know the game either. Ask someone who does...
I'm reading through the rules right now
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit 66746026 to master: Fix incomplete docstring definition
OK, no more commits without PRs.
(I'm a little bit busy right now) but the core is basically: there's a hexagonal grid with robots, crystals, bases, and obstacles. Each player "owns" two bots, a base, and a collection of programming tokens. Each bot has a 3-token-long program. On each player's turn. they can edit their programs and then the bots' programs are executed.
@Hosch250 Nonono I haven't even commited the basic framework yet
18:11
I also want this to be unit tested once we reach that point.
@noɥʇʎPʎzɐɹC Well, write it up and submit it with one PR. A PR can have multiple commits.
I don't know the game either, so...
Basically, we'll need a class for the "board", and another for a "player".
PR is pull request, right?
And we'll need some methods for input and making a move.
Yep.
How do you do a PR? What is the function of a PR?
18:17
I think it's a request to merge two branches
so you can fork into a new branch, write code there, and then request to merge the branches
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit cb04142f to framework: Add a type skeleton
That makes more sense
Implementing new classes from PhiNotPi's description
How would we represent a hex grid as a datastructure?
From what I understand, we need these classes for the basic bot structure:
- Bot: Holds 3 commands, which can be edited by the player. Stores the 3-token program which is executed on each turn
- Token: One of the tokens a player can use for their bots' programs. needs some kind of call(bot) method.
18:28
@Flp.Tkc Done for all of them, but I need to implement the three-token restriction
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit a46e6e04 to framework: Add many new classes
What is a .pyi file?
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit c2541444 to framework: Create a todo comment
@KritixiLithos it's optional type annotations.
The interpreter ignores them. It's an official method
> Who calls what? Are the classes just data structures, or should they have the correct helper methods? Do methods that take, say, an order and a player get implemented on the board, the GameState, the order, or the player?
I would say an Order has a helper function which calls itself upon a given bot. Bots store their own location which is read by the GameState (via the Player class, which stores its two bots)
18:41
I tried to answer that, I don't know for sure. Feel free to post other opinions.
Bot should primarily be a data structure, but it needs to contain state about how many crystals it has, its position, etc.
I have a beautiful OrderList implementation
Cool.
from abc import ABCMeta
from collections import UserList


class TooManyOrders(ValueError):
    pass


class OrderList(UserList, metaclass=ABCMeta):
    """An abstract order list"""


class DefaultOrderList(OrderList):
    """
    An OrderList with max size three, like in the original game.
    Supports all Python list operations.
    """

    max_orders = 3  # type: int

    def __init__(self, orders=None):
        # This method is called every time an inherited list operation is run.
        # See the comment below docs.python.org/3/library/collections.html#collections.UserList.
If you try to DefaultOrderList and append too many items, it raises the exception
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit 22218e5d to framework: Add helper classes
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit 608adc9c to framework: Add comment to init of GameState
18:49
Oh, you need to work in your own fork and make a pull request to Master.
This is fine, though--just make a PR from framework to master.
@Hosch250 That's what I was thinking.
I've used git before :P
Can someone do a code review?
Yeah, make a PR and I'll check it.
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython created pull request [#2: [WIP] Add basic framework](github.com/Hosch250/ASCII-Twin-Tin-Bots/pull/2) to merge framework into master
> Todo:
- [ ] Get code reviewed
- [ ] Add specific method templates
- This is the only "real part" that needs to be worked on
- [ ] Outline `main.py`, create game event loop

Not on the list:
- System for I/O
@Hosch250 Done.
Checking.
Looks good to me.
18:55
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython edited pull request [#2: [WIP] Add basic framework](github.com/Hosch250/ASCII-Twin-Tin-Bots/pull/2)
@Hosch250 Realllllly?
I don't know Python very well, and it looks like a basic framework we can use.
It will probably need some changes as new requirements come, but sure.
Let's design it with an AI in mind, even if we just make it two-player for now.
[Hosch250/ASCII-Twin-Tin-Bots] FTcode edited pull request [#2: [WIP] Add basic framework](github.com/Hosch250/ASCII-Twin-Tin-Bots/pull/2)
^ accident
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython synchronized pull request [#2: [WIP] Add basic framework](github.com/Hosch250/ASCII-Twin-Tin-Bots/pull/2)
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit 607053c0 to framework: D'oh! Remove actual code from logic.pyi
19:00
@Hosch250 I'm largely thinking "is this too much OOP"?
OTT OOP is better than spaghetti procedural
This is the first time I'm seeing Python OOP code
@Flp.Tkc Can you review it please?
@KritixiLithos Python is more purer oop than java
The Bots/Helper classes look really good
19:01
@noɥʇʎPʎzɐɹC Looks fine to me.
@Flp.Tkc OTT?
What do you mean "purer"?
Say anything at all that could be improved, anything at all.
@KritixiLithos Use oop when you need to, everything is an object, don't have to use it, plays nicely with other paradigms
@Flp.Tkc Thanks! :)
[Hosch250/ASCII-Twin-Tin-Bots] Hosch250 edited pull request [#2: [WIP] Add basic framework](github.com/Hosch250/ASCII-Twin-Tin-Bots/pull/2)
Why does the bot class look good, though?
19:03
I meant the Bot's Orders
I can do the output, once I know the specs for it.
I've read through all the files and looks like a solid framework. Do I need to tick some "reviewed" box or something on github?
Just submit an approval review.
You don't need to because I already did, but it will mark it that you reviewed it as well.
@Flp.Tkc Click "add your review" on the files changed tab, and select "approval". Then send it.
How do I switch branches using git?
19:08
@KritixiLithos git checkout branch-name
Hello
@noɥʇʎPʎzɐɹC Thanks
:( why write in python
I reccomend cheddar
I even added classes
19:12
@Downgoat nobody knows it
@Downgoat can you write a transpiler?
and it's super intuitive
@noɥʇʎPʎzɐɹC I've already started on one but it'll take time
@Downgoat Transpile to a JS intermediate then transpile to cheddar
:OOOOOO Python has strict typing??
19:15
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython edited pull request [#2: [WIP] Add basic framework](github.com/Hosch250/ASCII-Twin-Tin-Bots/pull/2)
@Downgoat It is an extremely specific type system that has accurate type checkers; the default implementation does no runtime type checking (it checks if your annotations are valid, though); but mypy (which is by the same people as CPython) supports runtime type checking.
oh, so you're not using normal python
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython pushed commit ec40c754 to framework: Reformat URL in comment
@Downgoat We are. Type annotations are defined by CPython too...
[Hosch250/ASCII-Twin-Tin-Bots] CrazyPython synchronized pull request [#2: [WIP] Add basic framework](github.com/Hosch250/ASCII-Twin-Tin-Bots/pull/2)
19:19
@PhiNotPi @KritixiLithos Review, please! And consider implementing the todo :)
@noɥʇʎPʎzɐɹC We don't need their reviews to merge.
@Downgoat If you want to be a contributor, just let me know.
@Hosch250 I want them.
You have to give me time to get my Python hands started :)
And if you want to let someone else to do the todo, then we can just merge it and let other people start contributing.
Can I write cheddar version of program :P
19:21
@Hosch250 Push to framework, it's not my fork
I'm too tired to start programming in an unfamiliar language right now.
Same here
I feel like I could sleep my break away.
Maybe I'll go read.
Have fun programming!
I've committed a lot, waiting on others to commit a bit
So I commit to framework?
@KritixiLithos Yes!
nice progress so far
@KritixiLithos Ping me if you need help with python. Oh, send a PR to framework
@PhiNotPi With great power comes great code review
19:47
@noɥʇʎPʎzɐɹC We should each PR to master, I think.
@Hosch250 OK. @KritixiLithos
It's alright either way.
Squash, Rebase, or Normal @Hosch250 ?
Just normal.
Are you ready to merge?
Let me do one more review quick.
Oh, nvm.
Merge pull request #2 from Hosch250/framework

Add basic framework
@Hosch250 Do it!
It's merged, but fine.
I'm sure it is OK.
Python has great docs btw
I'm outlining the outline of the project.
19:52
LOL.
Already 6 issues, 4 ready for anyone to implement
@Hosch250 you seem pretty heavily involved for someone who said they had a bunch of other work to do. :P
@PhiNotPi Just cheerleading.
LOL, it hijacked my other work.
Too tired to do anything but read and cheerlead anyway, for now.
I'm just doing a test push to see if things work
19:57
Please, you guys, work in your own forks!
Then how do we collaborate?
@Hosch250 No, branch off master.
@KritixiLithos Make a new branch off master, send PR between master <-> new branch
That way, we work on PRs together.
I merged framework.
20:34
@KritixiLithos progress update? I reccomend you do #6, it's easy and simple. don't worry about style, that'll be fixed during code review
[Hosch250/ASCII-Twin-Tin-Bots] web-flow pushed commit 1662f754 to add-hexagon-grid: Add hex grid skeleton
@noɥʇʎPʎzɐɹC Sorry, it is night here and I'm going to sleep
@KritixiLithos ok
But I will do try in the morning
21:25
@Flp.Tkc want to add some code?
14:00 - 22:0022:00 - 00:00

« first day (1074 days earlier)      last day (23 days later) »