« first day (182 days earlier)      last day (3378 days later) » 
00:00 - 20:0020:00 - 00:00

12:00 AM
Ah, had to open the Git perspective
 
RELOAD!
[Cardshifter/Cardshifter] 13 commits. 2 issue comments.
3
[Cardshifter/cardshifter.github.io] 25 commits. 4 opened issues. 3 closed issues. 8 issue comments.
4
[Good night, CRitters!\‌​] 1 closed issue.
2
 
@Phrancis that one was for you ^^
 
@Duga What the heck
 
[[Cardshifter/Cardshifter](null)] build #690 for commit [40ff1932](null/commit/40ff1932cae8557c0212c1c76382fdc310f3a79d) on branch [gdx](null/tree/gdx) passed
 
Sweet, this wasn't hard at all!!
 
12:05 AM
@Duga ah, you lose that information when the commit is the day before, and the travis result on the day after
@Phrancis I think there is more integration than that though, you are currently in the git repository view, open the project layout view (or whatever it is called)
 
Any of these?
 
nope, wrong menu
or well, you could switch to Java in that one
or Web
or Java EE
probably Java EE
 
Well I got to get going, meeting with Jay tonight. All those views kind of look the same to me, but it certainly can wait until tomorrow
TTYL @SimonAndréForsberg Good work again :D
 
@Phrancis tell him that the developers have done work today!
 
Hahah will do!
 
12:20 AM
> made enchantments give abilities
[Cardshifter/Cardshifter] build #691 for commit 2dd665f4 on branch gdx passed
 
12:55 AM
> The "Inside Man" creature now has the ability:
- Cast 2 Bodyman minions at no cost next to this unit - Inside Man (Bio)

These Bodyman minions are created, but they are not shown in the client because Server never sends the information required to display them.
> The above functionality has been implemented. Closing this issue, as essentially - it works. Adding new features is not too hard either (at least not for me who knows how the ECS stuff works)
> "Inside Man" creature now summons two "Bodyman" creatures when played
[Cardshifter/Cardshifter] Zomis pushed 9 commits to develop
> Names has been added and showing properly, descriptions are not showing correctly yet though. (Neither flavortext, nor actual descriptions about what the effects are)
> Show the flavortexts for cards. Possibly as a mouse-over "hint". The actual flavor-texts to use also needs to be added to the mod.
[Cardshifter/Cardshifter] build #693 for commit 81f64b14 on branch develop passed
> JavaFX can show effect descriptions (but not at the same time as name) currently. Additionally, the text for some of the cards with long names go outside the card itself, as shown in screenshot.

Also, effect descriptions should be improved to actually show something that makes sense

![2015-01-31_2-03-31](https://cloud.githubusercontent.com/assets/1405379/5986054/599c18c0-a8ed-11e4-8a52-45aa68e66808.png)
> Input wanted from @skiwi2 and @bazola
 
1:15 AM
> Hi Simon,

We noticed you recently created a branch in GitHub. Did you know that we’ll move an issue to ‘in progress’ and assign it to you if you reference it in the branch name? Just put the issue number at the beginning of the branch name with a '-' or '_' behind it or anywhere else in the branch name with a '#' in front of it.

Here are some example branch names:

123-fix-bug

bug-fix#123

bug-fix-username/repo#123 (issue in another repo)

This prevents us from moving issues based off other numbers sometimes used in branch names.
@skiwi Waffle is the cause! ^^
 
[Cardshifter/Cardshifter] build #694 for commit eea5da09 from pull request #153 to branch master passed
> Is this something that @Phrancis could work on for the website? I could help with the descriptions of the events, of course.
 
1:35 AM
TTGTB
 
2:04 AM
> I'm down, not exactly sure what you are looking for though...?
 
 
9 hours later…
10:40 AM
> Currently, we're not supporting gwt - which means we can't export as HTML5 application. If we make the following changes, we could:

- Remove log4j dependency in cardshifter-api, or possibly try http://log4j-gwt.sourceforge.net/
- Remove jackson dependency in cardshifter-api, use jackson mixins instead, or possibly write the code in such a way that jackson annotations are not required
> Add the Deck Builder in libGDX
> Show the players, the battlefield, hands, decks, cards, etc. in libGDX after starting a game
> I'm thinking that in the "Make your own mod" section, these things could be stated, that the events are the main way mods interact with the game when it is being run. Then follows a list of all the events with a description of when they're being executed.
 
11:14 AM
@Phrancis I think you sometime sent me a PowerPoint with some design, I think I lost it.... could you send it again?
@Phrancis nevermind, found it.
Chat searched helped me :)
 
> added GUI design PPT from Phrancis
 
now I don't lose it :)
 
[Cardshifter/Cardshifter] build #695 for commit cfa97e71 on branch database passed
 
 
1 hour later…
12:27 PM
hey
 
how are ya?
 
I don't know, let me check.
(...)
I'm alright thanks :) you?
 
@SimonAndréForsberg That's a good thing?
Also fine... just having some headache
Grmbl, I read 45 of my 50 emails yesterday, and now there's 25 new ones waiting!
 
@skiwi mv /dev/inbox /dev/null
 
12:37 PM
@SimonAndréForsberg But there are some of them with your name on it!
You don't want me to remove those, right? ;)
 
@skiwi must be from github. I haven't sent you any mail manually, I believe.
 
@SimonAndréForsberg Github ones, yes
 
12:58 PM
Bugger, forgot to get one more win yesterday in HearthStone, now I miss out on a daily quest :p
I'm glad @Simon that you somehow managed to find motivation for Cardshifter again ;)
 
@skiwi It's a dirty job but someone's got to do it.
 
1:48 PM
Hiya
 
hey @Vogel612
 
hey @Vogel612
 
2:00 PM
[Vogel612/JavaBot] Vogel612 pushed 7 commits to master
> Merge pull request #40 from Vogel612/develop

Fixes #34 and fixes #39
[Vogel612/JavaBot] Vogel612 pushed 1 commit to develop
 
inc. wall
 
> Removed differentiation between InteractionBot and DefaultBot in Program
- Bots are now maintained in a Set in Program.
> Moved Command Binding to DefaultBot Instantiation
> Moved javadoc Command to CoreBotCommands.
- JavaDocAccessor is now embedded to the CoreBotCommands
- Program is no more responsible for Javadocs
> Changed Command calling: removed case-sensitivity
- also slightly simplified the filter by moving the extraction of the
command-name to outside of the stream
> Added Command Info text to a few commands
> Implemented message reply functionality, fixes #17
- PrintUtils now can "format" text as a reply given a String and a ChatMessage
- DefaultBot now replies to processed messages
> Fixed Bug in command processing
> Please quote the section with Pattern.quote(trigger), otherwise if someone makes a trigger like $beer$, we'd be in trouble.
> Quoted trigger for proper removal of Regex-containing Triggers
> Hmm, escape of this during object construction?
> Is it really always guaranteed to succeed? Also, why not separate that into a Predicate<String> and Function<String, Whatever>?
> We used to have that architecture... but it was abolished because of the redundancy to reprocess stuff to match the predicate anyways. Commands can now be written to return an error message instead of silently failing when they don't match the Predicate
> Same here; ah well, this would mean modifying the builder: .withPredicate().withFunction() or something
> OK, but then this architecture is less testable!
 
2:28 PM
Holy shit, that's a wall!
 
> The last .map() can be replaced with a method reference
> not necessarily. After all you can still test the Function<ChatMessage, String> to properly handle errors and return the "correct" response
 
because some people comment on commits instead of the PR itself...
meh
 
> Naming conventions
> Method ref for the last .map()
> incorrect. You cannot use a method reference when processing data from outside the stream. We're Streaming CommandHandles here and the last map is matching a Consumer<? extends ChatMessage> and not Consumer<? extends CommandHandle>
> Method reference; also, uhm, `l` and `l`? Quite confusing.

Note that if you use Guava, you have `Predicates.notNull()` (or `nonNull()`, I don't recall)
 
@Vogel612 Do you like Guava? ^
 
It's got nice stuff, but I haven't even scrathed the surface there
 
2:34 PM
> You can also just use the normal JDK library methods: https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html#nonNull-java.lang.Object-

Then you can write `.filter(Objects::nonNull)`
 
I dislike dependencies for the sake of a few methods honestly
Who is fge btw? I think I've seen that name on SO?
 
> On a related note... that's @mangstadt 's code... somehow the padding got changed, but I didn't write that. You're correct though
 
I should myself use the Objects.isNull and Objects.nonNull methods more often though...
 
@skiwi ya it's exactly that guy ;=
 
Not that str -> str != null is really bad on the other hand
 
2:36 PM
He's quite active around java and is the maintainer of Grappa (fka parboiled)
 
@Vogel612 I shoudl check what that is...
 
Grammar parser...
oh and he wrote something with JSON Validation...
 
> the alternative is to bind it in calling code. but the calling code gets cluttered by that.
the reference is contained in the CoreBotCommands and will be used for lambdas so... it's kinda escaping anyways
> oh but you're right... it looks like the pattern is outdated...
> Updated names in PrintUtils to match naming conventions
> Patched javadoc regex to match actual syntax
 
I wonder why fge isn't active on CR if he likes to review though
 
3:28 PM
because he's got too many sideprojects he's actually dedicated to I guess..
27 "source" repos for him
 
3:40 PM
> How about using a factory method and making the constructor private? Construct first, then call new CoreBotCommands. This is the recommended approach in both Effective Java and in Java Concurrency In Practice.
 
@skiwi he has some activity though. he recently posted a question, today.
@Vogel612 I have 24 repos on github, I'm getting close I guess... (although not all are active or real projects)
 
@SimonAndréForsberg I don't quite understand what you're getting at with that comment... Factory for what? the DefaultBot or the CoreBotCommands?
 
> Here's what I mean:

private DefaultBot(ChatInterface interface) {
this.chatInterface = interface;
}

public static create(ChatInterface interface) {
DefaultBot bot = new DefaultBot(interface);
new CoreBotCommands(chatInterface, this).allCommands().forEach(bot::subscribe);
}
 
@Vogel612 ^^
 
there's no this in a static context...
but aside from that... seems simple enough.
how does this stop the reference from escaping, though??
 
3:56 PM
@Vogel612 the object is fully constructed before it escapes
You should avoid escaping this in a constructor
 
hmm. so this is not about preventing the escaping, but about preventing the escaping of an unconstructed object.
makes sense...
 
exactly
for concurrency stuff, it is good to restrict escaping of all objects, but I think you're way beyond rescue there ;)
 
hum... different question...
I have a daemon thread.
ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true).setNameFormat("message-query-thread-%d").build();
Executors.newSingleThreadScheduledExecutor(factory).scheduleAtFixedRate(() -> queryMessagesFor(chatInterface), 1000, 500, TimeUnit.MILLISECONDS);
now when I shut down all other threads beside this thread
the thread doesn't terminate, even when politely asked to interrupt
I'm executing via maven exec-plugin and have following errormessage:
oh crap that's long.
 
@Vogel612 you need to handle interruptions in the thread.
What does queryMessagesFor do?
can you get a stacktrace of what the thread is doing?
 
?? The exceptions in the demon thread are handled.
all threads but the Maven thread and two daemon threads are out of it
 
4:09 PM
@Vogel612 handled how? What's the code?
it might be a maven thing.... or it is a bad-code-thing
I've never used maven exec-plugin
 
it looks like a maven thing from my viewpoint
 
from my too
because you don't have any loops there
(I assume queryMessages() is also not blocking anything)
or... you actually need to properly shutdown the Executors.newSingleThreadScheduledExecutor(factory)
 
it's a daemon thread
without maven it'd have died:
 
22 secs ago, by Simon André Forsberg
or... you actually need to properly shutdown the Executors.newSingleThreadScheduledExecutor(factory)
 
this is the threads that are in the JVM
I only ever create one daemon thread
I know what I do wrong I think..
I should throw an InterruptedException in my main-thread when I shut it down
 
4:13 PM
I personally feel that it's best practice to always shut down the executors you create, be them deamon-threads or not.
 
but that's idiotic
I don't expect my main thread to be waited upon
 
@Vogel612 I don't think that would solve anything.
Are you sure that all your other non-deamon threads does shut down properly?
ExecJavaMojo.joinThread surely sounds like it's a maven thing.
 
@SimonAndréForsberg yes, look at the image
they're all out by that point
 
this sounds like something for SO, eh?
 
4:17 PM
Have you tried shutting down your Executor properly?
 
how would I do that. I don't really want to store a reference.
let me try something first.
 
what's wrong with storing a reference?
 
I got it working
5
A: Running daemon with exec-maven-plugin

VykuntaPosting the answer that is discussed in the comments section of the question. This solution worked for me! Thanks Andrew Logvinov cleanupDaemonThreads = false Something like this in the configuration tag <configuration> <mainClass>com.test.Startup</mainClass> <cleanupDaemonTh...

 
maven exec automatically tries to clean up daemon threads.
 
4:23 PM
> Injected TestingChatInterface to JavaBot's Program, fixes #14
- TestProgram is no more needed
- Main now has the responsibilities, that used to be excess in TestProgram
- Reconfigured Maven to not try and clean daemon threads to allow
proper execution over maven exec-plugin
- Made Gui shut down the JavaFX-thread when getting the PoisonPill
 
5:21 PM
> Has been addressed in cfde4ca
> isn't possible because the consumer / function signature doesn't match
> Changed DefaultBot to work on a Factory basis, this prevents
escaping of this-reference in Constructor
> This has been fixed in 1993f97d
> Please open a separate issue if you want to discuss this further, it's somewhat out of scope for this PR
 
 
1 hour later…
6:53 PM
Monking
 
Monking, @Phrancis
 
> Cleaned Up Program, removed System.exit(), see #34

- Main now also uses spaces for padding
- Main is now responsible for wiring commands to the bot.
- Any bot extending AbstractBot can now be shut down by enqueuing a Poison-Pill to them
- Default Bot logger made static
- Made Program less brittle on startup for JavaDocAccessor
- Allowed Injecting ChatInterface to Program via Constructor
- Moved shutdown Command to CoreBotCommands
- Exposed querying thread ExecutorService from Program
- Pro...
gram also holds the Poison-Pill
- Removed System.exit from shutdown command
- Exposed Bot instance from Program
> Updated gitignore to keep javadoc zip files out of the status
> Added proper shutdown mechanisms for classes extending AbstractBot, see #39
- Removed executor shutdowns in #finalize()
- Added protected #shutdown() method to AbstractBot that allows extending classes to clean up threads they introduce themselves
> Message Querying Thread now is a daemon thread, see #39
- Main is now responsible for firing up a Thread responsible for querying
- Removed executor from Program
- Added Logger to Main
- Removed superfluous shutdown call in createShutdownCommand()
> Removed logging in from Program's responsibility
- Extracted "safe" message querying to it's own method
- Made use of ChatInterface's AutoCloseable to handle resources
- Added clarifying javadoc to what assumptions are made about the chatInterface's state when it's passed to Program
> simplified global logging setup
> Merge branch 'master' into develop

Conflicts:
src/main/java/com/gmail/inverseconduit/bot/Program.java
> Merge pull request #40 from Vogel612/develop

Fixes #34 and fixes #39
> Wait, just discovered a problem. Considering that we're using .replace() method which replaces all occurrences of a literal sequence, wouldn't this tear away parts of the message if it includes the trigger as well? !!h!!i -> hi - I think we need replaceFirst.
> Holy carp. You're fully correct! Lucky we have a review ;)
> Or better yet:

chatMessage
.getMessage()
.replaceAll("^" + Pattern.quote(trigger), "")
.split(" ")[0]
 
@SimonAndréForsberg What's the good word today? I got a couple hours to kill here before preparing for a show
 
> @mangstadt Yeah but you're still using .replaceAll, it's that bit simpler to use .replaceFirst, as it tells the regex engine to just replace first and not to keep trying (which always fails for the second attempt).
> Thanks!
> That in turn would make it quite moot to use an anchor and the code then would be:

chatMessage.getMessage().replaceFirst(Pattern.quote(trigger), "").split(" ")[0];
> Considering how we're using this pattern for anchored matching, we could make it "\\d+" and replace the line down there with matcher.matches().
 
@Phrancis I did a little bit of work on libgdx version, didn't get very far though until I was distracted and started working on a feature for @Duga.
 
7:06 PM
Ah cool
I did talk to Jay about some of the new things we've been working on. He said he has some great ideas he'd like to see, gameplay-wise... so I told him "Then get in the freaking chatroom and talk about it dude!"
3
During the day he's usually busy playing Call of Duty watching the kids
 
@Phrancis excellent. I am pretty much able to add any gameplay features he'd like, I think.
 
He works at night and when he's around nobody else really is
He's into YGO so he's used to really unusual and complex gameplay mechanics
Card combos and conditionals and things like that... "To play this card you must already have card X and card Y in play. When you play this card, if opponent has card Z in play then steal it."
Don't know if I want to get that complex, personally ;D
 
@Phrancis well, it's possible to make anyway
 
No doubt
I kind of prefer a HS-like approach though, where there are fewer cards but they are more versatile
(at least at the lower level, before you introduce legendaries and such)
Do you think realistically, after 0.5 is out with the new things, we could start talking about introducing spell cards?
 
@Phrancis absolutely. I have already implemented a mod that adds some spell cards to the existing PhrancisGame
 
7:22 PM
Awesome. We'll have to spend some time playing around with the new cards with effects to see how the gameplay changes, and what kind of spells and other effects/cards could make things interesting!
 
7:35 PM
@Phrancis Care to check MSN if you're still around?
Uh... MSN, what?
 
MSN!?
you mean Skype?
 
MSN lol
 
@Phrancis yes, I hope that although implementing new features is extremely hard for you, I think you should be able to make slight modifications to the existing features, such as adding ranged to a creature, or adding changing a spell's damage effect from 1 to 2, etc.
 
I'm sure that will be the case @SimonAndréForsberg after I get through this book I'm hoping I can actually contribute to the code base and not just the website :)
I'll say, it's both a good and a bad thing that I've been so busy with music lately. As much as I like doing it, I would like to have time to really dig into code and become a real programmer
 
> Fixed name of TransitioningLogEntry variable.
 
7:42 PM
Yeah... think I meant Skype there!
 
[skiwi2/HearthMonitor] build #17 for commit ebea481b on branch develop passed
 
Let's hope I"m not getting too crazy results
WTF?
 
00:00 - 20:0020:00 - 00:00

« first day (182 days earlier)      last day (3378 days later) »