« first day (165 days earlier)      last day (3695 days later) » 

00:01
RELOAD!
[skiwi2/HearthMonitor-LogAPI] 6 commits. 0 issues opened and 0 closed
[retailcoder/Rubberduck] 2 commits. 0 issues opened and 0 closed
[skiwi2/HearthMonitor-LogReader] 4 commits. 0 issues opened and 0 closed
[Cardshifter/Cardshifter] 5 commits. 1 issues opened and 2 closed
[Cardshifter/cardshifter.github.io] 2 commits. 0 issues opened and 0 closed
00:20
@Duga Thank you ma'am!
00:49
Hey @Phrancis!
Hey there!
Haven't made progress on my issue, but I've been tinkering around with styles in Prettify, and made a little example script to display all formatted elements
Actually that one was buggy, this one is ugly but works good. I'll change the skin to something more... bearable
Ahahaha :P
I like the line numbering, I think for CR it would be handy
I do not have a strong opinion for this :P But it can be handy indeed
01:12
I don't either, but seems most IDEs have that; and could be useful when you're reviewing something that's hundreds of lines long. Main concern I would have is for the line numbers to be carried over in copy-paste to parse the code, which would most likely be a problem
I did see some site that handle that case correctly. It should be somewhat easy in JS
01:40
Got to go but I did work on the app a bit, but still having some issue with delivering static content in the app!
01:54
Good to hear, good night man
 
8 hours later…
09:41
hey
hiya
wow, people are awake and all
ehh that's just your imagination...
I'm still half asleep...
or rather I were, if my index finger didn't hurt when typing with it..
heh ok
I'm supposed to refactor my own code
I've got a bunch of EntryReader implementations that are currently abstract as they need a set of entry readers to read from...
I don't want it as constructor argument either though
So I'm figuring out a way to inject them
Or maybe I ultimately should
 
1 hour later…
11:09
> Refactored AbstractLineLogReader.
- It now takes a Supplier<Set<EntryReader>> as argument rather than forcing implementations to override a method.
- Added EntryReaders alias for Supplier<Set<EntryReaders>>.
- Rewrote implementations to compile under the new AbstractLineLogReader.
- Rewrote unit tests to compile.
- Added utility methods for log entries and entry readers in the tests.
That was a big refactoring...
11:24
> Renamed AbstractLineLogReader to AbstractLogReader.
> Moved concrete LogReader implementations into their own logreaders package.
12:07
A question to whoever is listening:
How would you implement an interface that supports reading strings (like an iterator), and also supports looking forward without actually reading
Say I have an input list of strings: ["A", "B", "C"]
Then if I read 3 times, it reads A, resp. B, resp. C
I can also read 1 time and peek 2 times, then it reads A B C
I can do: read peek peek read read, then it gives A B C B C
If that makes any sense
you need to maintain two "iterators"
and read also "pushes" peek if they are equal
My current implementation is veryyy confusing
public interface LineReader {
    /**
     * Reads the next line.
     *
     * @return  The next line.
     * @throws NoMoreInputException If no more input could be obtained.
     */
    String readLine() throws NoMoreInputException;

    /**
     * Peeks into the next line if more input is present, meaning that the line is not being consumed from the input source.
     *
     * @return  The next line, if present.
     */
    Optional<String> peekLine();
}
I believe I may need to refactor out NoMoreInputException and friends first?
int readIndex = 0;
int peekIndex = 0;

public T peek() {
    T result = data.get(peekIndex);
    peekIndex++;
    reutrn result;
}

public T read() {
     T result = data.get(readIndex);
     if (peekIndex == readIndex) {
        peekIndex++;
     }
     readIndex++;
}
peek should also be able to throw it..
or be documented to return null in case there's no more input
I was more thinking of adding hasXXX methods
gotta grab lunch quickly
12:28
back
I was thinking about something like: readNextLine, hasNextLine, requestExtraLine, hasRequestExtraLine
but that's not nice enough (by far) yet
Don't worry about the implementation, those are covered already
alternatively you could make peek read stuff into a queue and have read prefer the queue over the actual input stream
All I pretty much care about is the interface right now
The one I have is functional, but awful
@skiwi do you really need a double-peek to "read" two ahead? What is the use-case here? What's the actual context?
12:44
@SimonAndréForsberg That's something I've been wondering while I was away for a few minutes
I'm not thinking of an interface along the lines of:
- readLine
- hasNextLine
- nextLineMatches (predicate)
13:07
Monking!
13:36
Morning everyone!
hey @Marc-Andre
@SimonAndréForsberg Double checked, I'm not using that functionality
13:55
overcomplication averted
@skiwi So, next question: Do you need bool hasNext() only or do you also need String peekNext() ?
hey @Marc-Andre
Hey @SimonAndréForsberg!
14:29
> moved DeckConfig to API and changed it to use 1.6
> added Map serialization
> added Object serialization
> added recursive serialization
> can now use non-public constructors when deserializing with ByteTransformer
> ordering by name to get the same order when recursively (de)serializing
[Cardshifter/Cardshifter] build #676 for commit 9540e353 on branch gdx passed
@SimonAndréForsberg I need boolean nextMatches()
@skiwi what do you mean 'nextMatches'? matches what?
@SimonAndréForsberg Take a look at this awful code:
Optional<String> nextLine = lineReader.peekLine();
while (nextLine.isPresent()) {
    if (!LogLineUtils.isFromNamedLogger(nextLine.get()) || LogLineUtils.getNumberOfSpaces(nextLine.get()) <= 4) {
        //if the next line does not look like a tag value line
        break;
    }
    Matcher tagValueMatcher = EXTRACT_TAG_VALUE_PATTERN.matcher(lineReader.readLine());
    if (!tagValueMatcher.find()) {
        throw new NotParsableException();
    }
    String tag = tagValueMatcher.group(1);
    String value = tagValueMatcher.group(2);
@skiwi description please?
@SimonAndréForsberg It's for parsing this blocK:
[Power] GameState.DebugPrintPower() -     GameEntity EntityID=1
[Power] GameState.DebugPrintPower() -         tag=10 value=85
[Power] GameState.DebugPrintPower() -         tag=TURN value=1
[Power] GameState.DebugPrintPower() -         tag=ZONE value=PLAY
[Power] GameState.DebugPrintPower() -         tag=ENTITY_ID value=1
[Power] GameState.DebugPrintPower() -         tag=NEXT_STEP value=BEGIN_MULLIGAN
[Power] GameState.DebugPrintPower() -         tag=CARDTYPE value=GAME
[Power] GameState.DebugPrintPower() -         tag=STATE value=RUNNING
You have the indentation there, GameEntity has indentation of 4, tag= has indentation of 8
It should keep parsing as long as indentation > 4
14:44
soo.. peekLine returns an empty Optional for no more input?
I question that design choice...
I take a look ahead at the next line here, and then check if it is present and matches
@Vogel612 I question it as well
@skiwi I honestly question the entire idea of separating into so specific readers.
I would use a reader for GameEntity, and that reader itself is responsible for reading the entire GameEntity object.
And then when it encounters the part which it should not read, it returns the String it read but could not handle, which is passed on to another reader.
15:03
@SimonAndréForsberg That's somewaht reasonble, I'll try to explain more later though
15:35
> reading unused size int on recursive reading
> fixed reading of longer messages, PlayerConfigMessage is now received correctly
3
[Cardshifter/Cardshifter] build #677 for commit 6256d5e3 on branch gdx passed
 
2 hours later…
17:47
I'll still be busy for a while...
18:30
[Vogel612/JavaBot] Vogel612 deleted branch develop
@Duga Nooo!
Why would you do that?
> I have been informed, that JavaBot will be licensed under the Apache Software License. Until further evaluation of the exact terms of use (and I understand it well enough) development is on hiatus
@SimonAndréForsberg cc ^^
You never delete the develop branch in the Git workflow model
lucky we're using the feature-branch model and develop was just intended as hotfix development place
18:37
> added versions to maven plugins, fixes #31

- maven assembly plugin is now version 2.5.3
- maven compiler plugin is now version 3.2
> tests fixed

- Fixed BotConfigTest concerning Invalid Room handling
- Fixed Java8PageParserTest concerning \r\n in parsed description
- changed groovy-dependency to be latest non-beta version
> Formatting, Subscribable now exposes method to get subscribers

- Added getSubscribers to Subscribable interface
- Adjusted DefaultBot, AbstractBot and InteractionBot as well as StackExchangeChat accordingly
- minor formatting changes
> fixed multiple bugs, implemented listCommands command

- Commands weren't correctly called by name (calls are case-sensitive currently)
- help-command didn't search CommandHandles outside of CoreCommands
- implemented a listCommands command
> Merge pull request #32 from Vogel612/develop

Develop
> Creates LICENSE. Resolves #30!
@Vogel612 I believe it's still normal to release features to develop, and then create a release branch from develop and merge that ultimately to master
@Vogel612 thanks. Apache License seems like a good choice. Although I am not fully aware of what obligations I have if I include your code as a library.
Neither do I..
see issue comment ;)
@skiwi errr.... oh okay
> Created TimerCommand, see #29

This is a working state for the timer command. Unfortunately the Improvements made for #23 are not in the working state's master. Merging #28 would greatly improve the code's quality.
oh.. created??
lol
18:49
Monking!
What's @Duga doing?
@skiwi rebooting. It's on a second computer, so not affecting the "real" @Duga
@SimonAndréForsberg Ah ok, but is using the same chat account
@skiwi yup. it will be the new @Duga later on, but you won't notice.
@SimonAndréForsberg Ok interesting...
19:25
Monking!
19:42
ermph... licensing questions are a hassle...
0
Q: Is a license header in source-files required?

Vogel612Reading through the Apache Software License 2.0 appendix I am left unclear what exactly I have to do now: APPENDIX: How to apply the Apache License to your work To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" ...

been working on fixing my wild matching algorithm this morning, man is it ugly!
-(NSMutableArray *) matchesInAllRows {
    NSMutableArray *matches = [[NSMutableArray alloc]init];
    for (DMRow *row in _board.rows) {

        OrbType typeToSearchFor = ((DMOrb *)row.orbs[0]).type;
        NSMutableArray *matchingOrbs = [[NSMutableArray alloc]init];

        for (int i = 0; i < kNumOrbsPerRow; i++) {
            DMOrb *orb = row.orbs[i];

            if (orb.type != typeToSearchFor && ![self wildOrHigher:orb.type]) {

                //when a different type is encountered, add the match if it has 3 or more
19:57
just one edge case I can't solve, which is X Wild Y Wild, where Wild Y Wild is supposed to be a match. the algorithm only changes which color to search for at a non wild color, so when it hits that Y it is still looking for X
and the other problem is that it will prefer matches going from bottom to top and from left to right since that is the direction that it searches.. but I think that one might not be solvable
the problem extends to situations like Blue Blue Wild Wild Brown (Wild) where (Wild) is the orb moving into this row. Unless the one after (Wild) is also Brown, it won't be able to find it as a match
Its almost like I need to keep track of the last color and next color when I hit a wild, and then check for both of them somehow but only choose the correct one
 
1 hour later…
21:06
@bazola sure that's solvable!
21:23
Who is Vincentyification?
> updated example code, but local Prettify still not working
@SimonAndréForsberg well it has to choose one or the other though if a wild is touching 2 of 2 different types. like for example Yellow Yellow Wild Blue Blue, it will either have to be Yellow Yellow Wild or Wild Blue Blue but not both
21:52
@bazola well, it can be both if you want it to be both.
@Phrancis it's someone who @Vogel612 is developing a Java SE chat bot with.
Ah ok cool
@SimonAndréForsberg yeah i could see that
@bazola if you want it to be both, then it is possible to make it be both.
When I did my Scala Bejeweled thing, I did a two-step process. Step 1. Find out which tiles should be removed. Step 2. Remove them.
that is pretty much how mine works also, just with the added complication that it will only remove them if they are attached to the tiles that are swapped
why have that requirement?
when you swap tiles, and new ones appear, and there happens to be a matching group of tiles somewhere, then those should be removed, right?
22:03
theoretically, but I am experimenting with some different match 3 gameplay than the norm so combos will not work with it
maybe I just need to go through all the row and columns backwards as well as forwards
I think there is another way as well
hmm
let's say that a row has AWWBW. W = Wildcard. When you encounter a wildcard, you can keep an extra variable about where that wildcard was in the line or something, and so you start counting Wildcards + ready to start counting the other letter.
22:14
ah, yeah. Well I'm glad to hear you say that because I was thinking of something similar but was worried that it was too complex
A: letter = "A"; count = 1;
W: letter == "A"; count++; letterB = "W"; countB = 1;
W: letter == "A"; count++; letterB = "W"; countB++;
B: letter = "B"; count = 1; letterB = "B"; countB++;
W: letter = "B"; count++; letterB = "B"; countB++;
22:27
trying to puzzle out the implementation but I think I need more caffeine :) i appreciate the help though. right now I am storing the tiles in an array so I need to figure out how to integrate a second array into the mix
you don't need to
you just need to add a second set of variables when iterating over it
playing HearthStone on my tablet for the first time. I have to say that I am disappointed.
@SimonAndréForsberg why is that? haven't tried it on android
it looks exactly freakin' the same as it does on desktop!
the UI isn't adjusted at all for a tablet
the buttons are too small
the texts are too small
i never really felt that way about the version on iPad. supposedly they are supposed to be making a version for phones also
23:11
Here's what I think about the UI on the tablet:
lol
i'm sure they did everything they could to make it look exactly the same though
Yes, but why should it look the same?
It's a completely different device.
A tablet is not a desktop computer. Not controlled the same way.
It should not look the same.
I think they just took their C# Unity code, put it into Xamarin and made it to an Android app. I think most of their code is that portable.
I am disappointed.
activision is notorious for being money hungry
well @SimonAndréForsberg this is what I came up with, which appears to be working (but I haven't tested every edge case yet)
-(NSMutableArray *) matchesInAllRows {
    NSMutableArray *matches = [[NSMutableArray alloc]init];
    for (DMRow *row in _board.rows) {

        DMOrbType typeToSearchFor = ((DMOrb *)row.orbs[0]).type;
        NSMutableArray *matchingOrbs = [[NSMutableArray alloc]init];
        NSMutableArray *wildMatchOrbs = [[NSMutableArray alloc]init];

        //if the first orb is a bomb, search for the next one that isnt
        int index = 0;
        while ([self wildOrHigher:typeToSearchFor] && index < kNumOrbsPerRow) {
23:28
Objective-C is too confusing for me to read at this hour.
lol
additionally it is ugly code

« first day (165 days earlier)      last day (3695 days later) »