« first day (355 days earlier)      last day (3200 days later) » 
00:00 - 22:0022:00 - 00:00

12:00 AM
RELOAD!
[Cardshifter/Cardshifter] 3 commits. 3 closed issues. 2 issue comments. 55 additions. 46 deletions.
[Hosch250/Rubberduck] 2 commits. 241 additions. 187 deletions.
[ShearOfDoom/Cactus] 1 opened issue. 1 issue comment.
[Zomis/StackSTV] 1 opened issue.
Saved Cardshifter/Cardshifter
Saved Cardshifter/cardshifter.github.io
Saved Cardshifter/extra-resources
Saved ckuhn203/Rubberduck
Saved ckuhn203/VBEX
Saved Hosch250/MeekSTVVoteCounter
Saved Hosch250/ResxEditor
Saved Hosch250/ResxTranslationHelper
Saved Hosch250/Rubberduck
Saved Phrancis/GroovySwingPostgres
Saved rubberduck-vba/Rubberduck
Saved ShearOfDoom/Cactus
Saved skiwi2/BusinessSoftware
Saved StackExchange/StackExchange.DataExplorer
Saved Vannevelj/RoslynTester
Saved Vannevelj/VSDiagnostics
Saved Vogel612/JavaBot
Saved Vogel612/TranslationHelper
Saved Zomis/BrainDuck
Saved Zomis/CodeReview-Shield
Saved Zomis/Duga
Saved Zomis/Minesweeper-Analyze
Saved Zomis/Prosit
Saved Zomis/Rubberduck
Saved Zomis/SE-Scripts
Saved Zomis/Server
Saved Zomis/StackSTV
Saved Zomis/SudokuSharp
Saved Zomis/test
> I was reading over [this Issue on this repo](https://github.com/CodeReviewCommunity/CodeReviewCommunity.github.io/issues/4). It seems to me that this user was rejected *because the group was no longer active.*

That doesn't make much sense to me: how is this group ever going to become active if you don't let people join? Rather than rejecting people who want to join, you should allow them in. These new people will spark new projects, which will get more people to join, which will spark more
 
12:48 AM
> Oh, and while I'm at it,

I'm SirPython and I'd like to join the assembly team.
> pretty please with sugar on top?
 
1:49 AM
action('Attack') {
    allowFor {
        ownedBy 'active'
        zone 'Battlefield'
    }
    requires {
        require card.sickness == 0
    }
    targets 1 of {
        ownedBy opponent
    }
@Simon Should this^ be ownedBy 'opponent' (in quotes)?
 
2:02 AM
> 22:00:51.944 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD SUCCESSFUL
 
2:15 AM
[Cardshifter/Cardshifter] Phrancis pushed commit a9c2c4e4 to rules_documentation: documentation of Game.groovy files
[Cardshifter/Cardshifter] build for commit a9c2c4e4 on rules_documentation: The Travis CI build passed
> I'd like to be added. Thanks!
 
2:44 AM
@zippy1981 awesome! Let us know how it goes! :-)
 
3:28 AM
turnEnd {  // perform on end of turn:
    if (you == null) {  // if you are defeated...
        return          // ...return from this method
    }
}
@Simon Is this^ accurate?
 
3:42 AM
[Cardshifter/Cardshifter] Phrancis pushed commit f40baecc to rules_documentation: Game configuration documentation
[Cardshifter/Cardshifter] build for commit f40baecc on rules_documentation: The Travis CI build passed
 
4:20 AM
Is this for spells?
    action('Use') {
        allowFor {
            ownedBy 'active'
            zone 'Hand'
        }
        cardTargetFilter()
        effectAction()

        cost MANA value { card.mana_cost } on { card.owner }

        perform {
            it.destroy()
        }
    }
 
 
5 hours later…
9:44 AM
hey
@Phrancis Looks like we could use a syntax checker :P
 
10:13 AM
@Phrancis actually no. if (you == null) happens if it's the phase before everything starts (the "Mulligan" phase). Although that can be handled differently...
@Phrancis I think it can be in quotes, but also works without in that particular case.
@Phrancis yes it is for spells. Or more accurately, for all cards having a 'Use' action.
 
 
2 hours later…
12:27 PM
Monking!
 
hey @Phrancis
 
One of the rare days today that I woke up earlier than planned
I love the smell of documentation in the morning.
 
@SimonAndréForsberg It built fine with it in quotes, I'll let them be in quotes just for consistency's sake
 
12:43 PM
What does this do/mean? It's under action('Attack') { attack {} } : accumulating(ATTACK, HEALTH, allowCounterAttack)
 
@Phrancis that's one part that is in a way still using the old system. Attacks are a bit special at the moment. But it means that the attack system is like Hearthstone, that attack is accumulated until a creature dies, the amount of damage to deal is specified by the ATTACK resource, how much health a minion has is specified by HEALTH, and whether or not they are allowed to counter-attack is specified by the allowCounterAttack closure.
 
OK
What about this one? always { effectOnSummon 'Battlefield' }
 
that registers a system that listens for when a creature in summoned directly on the battlefield, and performs any associated effects that creature has.
 
Busy monkey :)
 
1:00 PM
> An invitation has been sent.
[Cardshifter/Cardshifter] Phrancis pushed commit 4903ff3f to rules_documentation: Game configuration documentation
 
@Phrancis I'm just glad that someone deals with that project.
 
[Cardshifter/Cardshifter] build for commit 4903ff3f on rules_documentation: The Travis CI build passed
[Cardshifter/Cardshifter] Phrancis pushed commit 74a412db to rules_documentation: Scrap documentation
 
TTGTW!
I'll probably jump in here from work after a while, but have a pretty large shit data cleanup to take care of first
 
1:18 PM
[Cardshifter/Cardshifter] build for commit 74a412db on rules_documentation: The Travis CI build passed
 
@Phrancis Oh definitely, a shit cleanup would be worse in more ways than one
 
1:35 PM
@Phrancis What do you think about making the documentation on their own lines instead, before the line they are documenting? (just thinking here, and I'd like to hear what you think)
 
I need to figure out how to write this in Groovy
List<Invoice> invoiceList = new ArrayList<>();
//populate
BigDecimal result = invoiceList.stream()
        .map(Invoice::total)
        .reduce(BigDecimal.ZERO, BigDecimal::add);
Pulled it up from an old SO post of mine, it looks fairly easy, but streams do look ugly
 
bah. I disagree.
 
I won't disagree that it's way easier and more maintainable than "the old way"
 
> Although not entirely changed, Groovy and Java interoperates very well, and the current situation is alright. More things may be changed to groovy at a later time.
 
2:08 PM
> This seems to work for me:

card('Test') {
manaCost 1
spell {
targets 1 cards {
creature true
ownedBy "opponent"
zone "Battlefield"
}
}
afterPlay {
set HEALTH to 0 on targets
}
}
> This works for me:

card('Test') {
manaCost 1
spell {
targets 1 cards {
creature true
ownedBy "opponent"
zone "Battlefield"
}
}
afterPlay {
set HEALTH to 0 on targets
}
}

The problem seems to have been that `targets 1 {` should be `targets 1 cards {`
 
2:26 PM
[Cardshifter/Cardshifter] Zomis pushed 4 commits to rules
[Cardshifter/Cardshifter] Zomis pushed commit d7d8af7a to rules: removed unused gradle copyResources task, as the GroovyRunner is now part of core/src/main/java
[Cardshifter/Cardshifter] Zomis pushed commit 365354be to rules: added description delegate, for better description of UseCostSystem
[Cardshifter/Cardshifter] Zomis pushed commit 7435b37d to rules: added a dedicated TestMod that is only used for unit testing
[Cardshifter/Cardshifter] Zomis pushed commit a159010c to rules: included spells and spellcards as issues have been fixed
[Cardshifter/Cardshifter] build for commit a159010c on rules: The Travis CI build passed
 
2:57 PM
@SimonAndréForsberg I like the idea to have documentation JavaDoc/GroovyDoc style, if just for the fact that it displays in a nice, noticeable green color, instead of a faded grey; and also for consistency.
 
@Simon work on the multiplayer server for UTTT and Battleship, and have a bot fight with maaartinus. And get rid of that reload spam when things are saved
 
// instead of:
    action('Play') {
        allowFor {           // only allow if...
            ownedBy 'active' // ...card is owned by active player
            zone 'Hand'      // ...card is on hand
        }

// do this:
    action('Play') {
        /**
         * only allow if...
         * - card is owned by active player
         * - card is on hand
         */
        allowFor {
            ownedBy 'active'
            zone 'Hand'
        }
@Simon ^^ Do you like this type of doc better?
Or did you mean something more like this:
action('Play') {
    /** Only allow if... */
    allowFor {
        /** ...card is owned by active player */
        ownedBy 'active'
        /** ...card is on hand */
        zone 'Hand'
    }
 
Aren't those comments redundant?
Only reason you see silly stuff in Java for example is for javadoc generation
 
3:12 PM
Redundant? Yes. But, considering that modders are may or may not have any coding experience, I'm writing documentation for non-coders.
 
Hmm, maybe you have a point there
 
@skiwi Only 72,341 data errors to fix. #FML
Hey @SirPython!
 
Hello @Phrancis!
 
@Duga LOL
 
Hey @Malachi!
 
3:19 PM
hello
 
3:33 PM
@SirPython @Malachi maybe I should have @Duga post to The 2nd after all?
 
@SimonAndréForsberg I don't know, it may flood. I get emails all day long and I am not watching half the stuff Duga is
 
@SimonAndréForsberg What changed your mind? I thought your reasons were pretty sound (@Duga can get pretty noisy).
 
@SirPython just so that you wouldn't have to keep track of an extra room
 
@SimonAndréForsberg I think it's fine in here for now, since the group still isn't that active (I think more rules and guidelines need to be set down). However, if the group does grow, this room could get pretty crowded. Therefore, if that time comes, a new chat room should be created for general GitHub community discussion, which would be the perfect place for a @Duga feed.
This Cardshifter project looks interesting. I'm going to try and contribute.
4
 
4:01 PM
Should I play the game a bit, or should I be fine without having to?
 
@SirPython I'd recommend starting with playing so you get a feel where we are currently at (and how horrible the GUI is)
I do hope you like doing front-end stuff :)
 
It's a bit better if you try the game, but you could also read the documentation if you preferred, LMK if you need links
 
4:18 PM
Where can I find the rules to the game? The README has a link for rules, but it's for a not-yet-created wiki page.
 
@SirPython Hold on
 
Gosh this code looks complicated...
 
The rules for Mythos mod are not redacted yet, planning on doing that soon enough
 
@SirPython Simon's Overengineering (TM)
3
 
^^^^
 
4:23 PM
Seriously, making a moddable and flexible TCG is complicated stuff
but we'd love to have more devs on board
 
I need to learn more about this .travis stuff.
 
Travis takes care of that. I don't think you need to worry about that.
Gradle is more important
 
@SimonAndréForsberg Travis takes care of me learning about Travis? Wow technology is great!
 
Travis is a good guy. He checks all of our commits to make sure they build. And for free. What a noble and generous soul ;)
 
@SirPython Travis takes care of the .travis stuff, I mean :)
 
4:28 PM
Does Travis block you from committing if there is a build error?
 
No, but it fires a warning if build fails
(git commit happens prior to Travis build)
I normally do a ./gradlew clean build locally before committing any changes to the code
 
@Phrancis Should I download this?
 
@SimonAndréForsberg You haven't even seen my overengineering...
 
@skiwi erhm... actually, I have. You're right :)
@SirPython yes. download that. Every now and then I publish a new snapshot, and @Duga informs about that.
 
Oh thank goodness. For a second, when the game was starting up, I thought the GUI was TTY.
 
4:50 PM
Hm. Should scrap be able to go below 0?
 
@SirPython erhm.... on creatures or on the player?
 
Sorry; on the player.
 
well... no :)
 
Ah. Shall I submit an issue?
 
5:00 PM
I have a screen shot. Should I put that in, along with the log of server messages?
 
@SirPython Yes please
 
at least the screen shot
 
well i made an algorithm that generates rivers
 
> ![negative thing](https://cloud.githubusercontent.com/assets/8549957/8856855/6d86a6f8-313b-11e5-80d4-b43bb5a08c8c.png)

*Note: It was originally -5 but I discarded a card.*

Here is the server log (Note that it may contain excess information):

UpdateMessage [id=37, key=MANA, value=3]
[2015-07-23 12:51:51,828] INFO GameClientLobby [JavaFX Application Thread] ( GameClientLobby.java:167) - ZoneChangeMessage [entity=62, sourceZone=39, destinationZone=40]
ZoneChangeMessage [entity=62, so
 
@bazola how? what algorithm did you use for that?
 
5:13 PM
someting i came up with on my own, but its a modified drunken walk type thing
heres the code that generated the above:
        //if river
        IsoDirection sideToStart = IsoDirection.values()[this.game.random.nextInt(IsoDirection.values().length)];
        IsoDirection oppositeDirection = IsoDirection.opposite(sideToStart);
        IsoPoint startPoint = this.edgePointForDirection(sideToStart);

        for (int i = 0; i < CityWorld.WORLD_HEIGHT; i++) {
            startPoint.move(oppositeDirection, CityWorld.WORLD_WIDTH - 1);
            Tile firstTile = world[startPoint.x][startPoint.y];
            firstTile.setBuildingType(IsoTileType.WATER01);
 
feels strange to call water a 'building type'
I like it, it's simple but creates good results.
what does the randomMoveTowards method contain?
I smell a possible bug btw when using a map with different width and height
 
yeah right now the map has to be square for this code to work
public void randomMoveTowards(IsoDirection direction, int bounds) {
    Random random = new Random();
    int randomNumber = random.nextInt(2);
    switch (direction) {
    case LEFT:
    case RIGHT:
        if (randomNumber == 0) {
            this.move(IsoDirection.UP, bounds);
        } else {
            this.move(IsoDirection.DOWN, bounds);
        }
        break;
    case UP:
    case DOWN:
        randomNumber = random.nextInt(2);
        if (randomNumber == 0) {
            this.move(IsoDirection.LEFT, bounds);
 
instead of random.nextInt(2) you can use random.nextBoolean(), it will have the same effect
 
ah wow
that is awesome :)
 
> @SirPython Do you recall if the game let you cast an enchantment card (any card with a Scrap Cost > 0) which exceeded the SCRAP you had available at the time?
> Unfortunately, that log is only from the client and not from the server, and does not mention any SCRAP values, so that doesn't help.
> @Phrancis No, I do not think it did. Here is what I remember:

1. I notice the -5 scrap
2. I scrap a card with a +3
3. Screenshot

There might have been other things before/after/between those steps.
> @Zomis I apologize. At first, I was trying to copy something from the console. Then, to copy I hit CRTL-C which shut down the game. I figured that the client log would also be helpful, because it included what information was send and what information it recieved.
> Those series of actions make sense, I'm mostly wondering what happened before there was the -5 scrap.
 
5:48 PM
Now we're talking through @Duga again
 
> @Zomis This may be completely biased, but I think it was either:

- I was attacked by an enemy card.
- I played a card that required scrap points.

I am leaning towards the first one a little.
 
@SimonAndréForsberg It's good for future reference and for those who aren't in chat.
 
true that
@SirPython Do you remember what deck you used? Did you used one of the pre-built ones or a custom one?
And did you use the snapshot version as we linked to?
 
The top one. I think it's the "Defensive" deck.
Yes.
 
top one is 'Balanced'
 
5:50 PM
Hold on. If I see both decks, I should be able to know.
 
@Phrancis do you even remember what you were supposed to update?
Jul 10 at 18:57, by Phrancis
@Phrancis TODO: Update README.md in main repo
hmm, I think I found it
 
I just found another bug on my way to finding the other bug...
 
I managed to reproduce your bug
 
> Here is what happened:

1. I opened up Cardshifter.
2. I logged in to the `dwarftowers.com` server.
3. I clicked "Deck Builder" at the top.
4. To the chat feed, this was logged:

<br>

[time] SERVER ERROR: java.lang.NullPointerException
 
Wow. @Duga is fast.
 
5:56 PM
@SirPython That's what you get from being used to @CaptainObvious
2
 
@SimonAndréForsberg Do you still need the deck?
 
@SirPython nah, I'm good.
 
How do I assign tags to issues?
 
@SimonAndréForsberg Yeah I'll look at it tonight
 
6:00 PM
> This probably happens because you haven't selected a mod to play yet (different mods have different possible usable cards). I thought there already was an issue for this, but there doesn't seem to be.
 
@SirPython You need to be added as contributor. Simon can add you if you like :)
 
I don't think I should be added. I haven't contributed any code so far.
 
> @Zomis That could be the issue. Afterwards, I tried to start the game and was given the error message that I still needed to select a mod.
 
Time is slow when you are watching it
 
6:06 PM
> I managed to reproduce the bug by playing a card that required scrap. Somehow it seems that you're allowed to that despite not having the scrap available.
 
Is there an IDE that is being used by the developers? Everything seems so perfectly structured.
 
IntelliJ IDEA
 
@SirPython Most of us use IntteliJ IDEA - Bazola uses Eclipse. Either works, but IDEA has better/simpler Groovy/Gradle support
 
use anything except netbeans
"perfectly structured"? I'm not sure about that...
 
@SimonAndréForsberg It has a better structure than anything I can get out of sublime text.
 
6:10 PM
Ah, yeah that's for sure
 
@SimonAndréForsberg What is bad about netbeans?
 
I just don't like it :)
and no other developer is using it at the moment
gitignore is not setup for it, etc.
 
if you want to compile the libGDX stuff on iOS then you will want to use Eclipse
 
I tried Netbeans at first but could never get it to work, and that was when the program was still "pure Java"
 
those were the days :)
 
6:44 PM
[Cardshifter/Cardshifter] Zomis pushed commit 748c0520 to rules: reduced TestMod
[Cardshifter/Cardshifter] Zomis pushed commit ea5f35c4 to rules: removed unused code in Game specifications
[Cardshifter/Cardshifter] Zomis pushed commit fd0e3d96 to rules: fixed bug with scrap actions being allowed despite having no scrap, added test case for it. fixes #328
[Cardshifter/Cardshifter] build for commit fd0e3d96 on rules: The Travis CI build passed
 
@Duga @SirPython ^^ FYI: See Travis
 
@Phrancis Yup! I was just looking over the "Travis pages"... he's a pretty cool guy ;)
 
Not as cool as @Duga.
 
True.
 
[Cardshifter/Cardshifter] build for commit 11c832e5 on rules: The Travis CI build passed
> I think to have a syntax similar to spells might actually work better. From my point of view, the only big differences is that enchantments are always cast as add-ons to your own creatures on Battlefield (and sometimes of a certain type, e.g., Bios for Cyborg-Chronicles), and of course the cost in SCRAP, which again only applies for Cyborg. (we could very well give them a MANA cost as well in different mods/settings). Does that make sense? If not LMK I'll try to come up with some examples
 
@SimonAndréForsberg ^^
 
> So you primarily want to change the DSL for how to write the enchantments? And have them show differently in game? So that they are more equal to spells, in both those aspects?
 
@Phrancis ^^
 
7:29 PM
[Cardshifter/Cardshifter] Zomis pushed commit df895a18 to rules: added doNothing() as a no-op call in EffectDelegate, fixes #323
> It is now possible to use doNothing() as an effect, which will fix this.
> I would say that's a good way to summarize it. Just to compare... this current syntax:

card('Adrenalin Injection') {
flavor "An injection to increase speed and body function."
enchantment true
set(SICKNESS, 0) // give "Rush"
addAttack 1
addHealth 1
scrapCost 1
}

Perhaps instead could be like:

card('Adrenalin Injection') {
flavor "An injection to increase speed and body function."
scrapCost 1
 
@SimonAndréForsberg ^^
Here we are playing Git-Pong again ;)
 
> How about this?

card('Adrenalin Injection') {
flavor "An injection to increase speed and body function."
enchantment true // can also be `enchantment()`
afterPlay {
set SICKNESS to 0 on targets // give "Rush"
change ATTACK, HEALTH by 1 on targets
}
scrapCost 1
}
 
@Phrancis ^^
 
[Cardshifter/Cardshifter] build for commit df895a18 on rules: The Travis CI build passed
 
@Phrancis I'd rather play that, than question-tennis, as I played with a SO mod a few days ago when he migrated a question to meta that should have been on our main site...
he migrated to meta, I had to reject that migration so that he could re-migrate the question to our main site
 
7:52 PM
Oh yeah, I remember that one; quite messy it seems!
 
> That would work really good too, with the assumption that Enchantments are only ever going to have 1 target (which is how it is supposed to work right now anyways)
 
@Phrancis TODO: Update docs and cardsets for issues 326, 323
 
@SimonAndréForsberg just added the coastline generation part:
 
8:07 PM
@bazola What is that?
 
city building game
 
@bazola Beautiful!
 
ty @Phrancis :)
 
I agree. It is very colorful and detailed.
 
@bazola I think that could be smoothen out a bit. Just let me know if you want me to play around a bit with that. (Map generation is fun)
 
8:10 PM
This may just be me, but that screen shot reminds me of this.
 
@SirPython that's kinda the idea AFAIK
 
@SirPython that is definitely intended :) or at least, that game is the city builder that started it all for me, so it is a natural inspiration
@SimonAndréForsberg i think i will post a question in a little bit
 
gotcha. then recommending other algorithms is acceptable, I presume?
 
8:17 PM
BTW @SirPython If you want to get set up to develop, I wrote some instructions here: github.com/Cardshifter/Cardshifter/wiki/…
 
@SimonAndréForsberg ya definitely
 
> This was also added to the wiki
> @Zomis I don't completely understand the reasoning behind this idea...?
> @Phrancis For example: "At the start of your turn, you win the game". That means that your opponent *has* to kill that creature on his turn, otherwise the game will be over.

Another variant could be: "When you have 25 scrap, you win the game".

It's a way of introducing other winning conditions to the game than by killing your opponent.
 
8:33 PM
@Phrancis ^^
 
@Duga This sounds interesting.
 
@SimonAndréForsberg Ahh ok. Sounds a bit complicated to implement something that arbitrary, might be difficult to make it flexible...?
 
@Phrancis it's really an effect like many others. Isn't very hard really to make it work
 
> I think this is somewhat similar/related to #287
 
speaking of which, it's been a while since I saw Lokkij around. He doesn't seem to be pingable anymore
 
8:42 PM
Yeah it appears he dropped off. Might be able to ping him in the Game Dev chat room, where I met him first
 
@SimonAndréForsberg here it is
0
Q: World Generation for City Builder

bazolaI decided that I wanted to add some spice to my bland looking city maps, so I created a couple of algorithms to add water to the map. I also added a "marshlands" setting that would just randomly sprinkle water throughout the map. Here is an example of the river generation: Here is the world g...

 
I'll take a look shortly
@Phrancis I could super-ping him, but I have a feeling that's a bit overkill ;)
@bazola how big are your maps?
 
8:58 PM
@SimonAndréForsberg Probably so lol.
 
@SimonAndréForsberg 40 by 40
 
gotcha. I'll see what I can come up with...
I need a "playground"... maybe I should play around with LibGDX directly, as that's what you'll end up using?
 
I've gone up to about 200x200 on desktop, but mobile can't handle it
 
I can understand that
 
well the basic principles of the algorithm should work on any platform, but yes its all libGDX for me these days
 
9:03 PM
> @Phrancis Now that I think of it, how is this issue different from the way spells are defined as it is today?

For example, this is a valid card:

card('E.M.P.') {
"Electromagnetic pulse that damages electronic circuitry."
manaCost 8
// damage 2 to up to 10 Mechs on the Battlefield
spell {
targets 1 to 10 cards {
creatureType "Mech"
zone "Battlefield"
}
}
afterPlay {
damage 2 on targets
}
}
 
@Phrancis ^^
 
9:20 PM
@SimonAndréForsberg I guess it really isn't much different, at least not that I can see in the way it was explained...
 
@Phrancis so... it is supported already and we can just close the issue? Sounds too good to be true
This looks great, doesn't it?
 
@SimonAndréForsberg Beautiful...
 
Thanks! ;)
 
> @Zomis would it be very difficult to implement a sort of if/else logic for card effects? I'm thinking since that logic is already native to Groovy might not be too complicated to come up with something useable?
 
9:27 PM
I need some different sprites, and then I need to play around with the algorithm itself
 
> I think we should be able to come up with something, but I feel that the whole if/else thingy has been mentioned elsewhere, for example #261
> Good point. Let's generalize #261 a bit more and see what we come up with for this kind of logic.
 
How about now? :)
 
Getting somewhere!
 
@SimonAndréForsberg looking good :)
 
@bazola How about now?
 
looks awesome
 
(just imagine that the yellow is land and the green is water or something)
Would that kind of map generation be something you would want?
 
well I'm definitely moving towards needing that kind of complexity, yeah
 
Comments FTW! https://twitter.com/Nick_Craver/status/623633297978093568
 
9:50 PM
@bazola then I'll try to review your code as well, not only suggest a different algorithm.
 
i really hated having to resort to switch statements to get the right values for building everything, but at least it works, i suppose
 
00:00 - 22:0022:00 - 00:00

« first day (355 days earlier)      last day (3200 days later) »