1. 5

    The semicolon is alive and strong, with amazing superpowers: being programmable

    1. 5

      semicolon is technically programmable in C++ with the use of destructors ;-)

    1. 10

      Last language I really learned was either C or Python, though the timelines are sort of interleaved, so it’s a bit tricky to give a definitive answer on which is the “last” language I learned.

      Currently I’m not really learning any language, but I want to learn Haskell, though most resources are sort of… bad. I want to get the prerelease of @bitemyapp’s Haskell Programming book, but sadly I’m currently unemployed and can’t afford it.

      1. 10

        but sadly I’m currently unemployed and can’t afford it.

        Send me an email to the one on my Github profile.

        1. 4

          Thanks a bunch! I’m definitely going to buy the book when it’s released.

        2. 1

          It’s true, resources are wanting. Have you looked at this page?

        1. 2

          If having used a language in anger means you have learned it, then I have learned Haskell. But when I look at blogs like ezyang’s and dons' I get the impression I haven’t learned much. Learning Haskell is like removing a veil just to find another veil. I’ve got some C projects lined up at work and look forward to re-learning. I was once the guy who was asked by his C instructor to give a lecture on a particular assignment, but that was a long time ago and I’ve never used it in anger. I aspire to learn idris and rust. They’re like Reese’s Peanut Butter Cups. Two great tastes that taste great together (probably).

          1. 2

            Great work. I look forward to the release of the book.

            1. 2

              Are you waiting for later chapters? It’s 912 pages and pretty comprehensive already. We do edit earlier material, but people are getting a fair bit of mileage out of it now.

              We outline what is currently available and coming up in the book here: http://haskellbook.com/progress.html

              Not trying to pressure, just like to get a sense of what people believe they want out of the book.

              1. 1

                What I would like is how to recognize that what I have fits a particular typeclass. How do I know the data structure + functions I have for it is a monad, or an applicative, or a functor. Put another way, how do I apply the implications of monads, functors, applicatives, etc?

                1. 2

                  That’s of the current MFAM (Monoid/Functor/Applicative/Monad) sequence as well as the material preceding it. There’s an abstract structures applied chapter after the Monad chapter as well. I would be surprised if you didn’t feel more comfortable determining this after reading the book. Try not to skip around too much though, it’s a cumulative method and the exercises are a big part of it.

            1. 3

              ix, my dopewars clone, compiles and does stuff. Mostly eat up memory. I think I know why and will be looking into it this week.

              1. 13

                After 15 years on Linux I could not take it anymore and have started to migrate to OpenBSD: http://git.uggedal.com/obsdenv/tree/

                1. 3

                  I switched my VPS from Arch Linux to FreeBSD last week. I’m in love.

                  1. 1

                    Could you talk about what you love? I have actually considered doing what you have. I love Debian, but want to try BSD as well and see the differences.

                    1. 3
                      • Going from rolling release distribution to a more stable environment was a big plus
                      • FreeBSD has a wealthy amount of release information (they’ll tell you what they’re planning and when to expect it)
                      • The package manager (pkg) has been a very simple, yet powerful tool that I’ve gotten used to over the last few weeks
                      • Packages seem to be easier to setup and are cleaner (I haven’t verified this). I hate that Arch Linux has to have two separate entities, “official packages” and “AUR packages”… This is a frustrating model, in my opinion.
                      • FreeBSD takes their security very seriously – they have a page dedicated information on security here
                      • They have excellent documentation
                      • They have an excellent handbook
                  2. 1

                    I would be using NetBSD right now, save for the fact that ghc isn’t stable, the haskell ecosystem is terrible. Now that I think about it, I could probably just run linux VMs on a simple and secure NetBSD host.

                  1. 3

                    Still upgrading to reactive-banana 1.0.0. Shift from union to unionWith is complete. The type change of accumB and friends is current pain. I’m sure the solution is easy and I’m probably making it harder than it has to be.

                    1. 2

                      Well … the library that my tradewars clone is centered around reactive-banana, just had a redesign. I decided that I would take the project as far as I could with the 0.9 version, but my inclusion of conduits has compelled me to stop working with 0.9 and just move over to 1.0. The problems I am experiencing are centered around the new requirement of having to be explicit about what happens when two events happen at the same time. Re-writing. All. The. Things.

                      1. 6

                        I’ve introduced conduits into my tradewars clone. This has led to a refactoring task I’m in the middle of this week. No more Lists, we use Maps now. Like big boys. Bytestring instead of Text in some places. Hooray for a modern type system that is on my side! Makes the task so much easier.

                        1. 2

                          I uploaded an alpha of my dopewars clone ix, last week. https://github.com/mlitchard/ix

                          current task is updating the server to use json and conduits.

                          1. 1

                            This is great stuff. I think I may have a space leak in my game. I’ll use this technique to find out.

                            1. 1

                              I use function/action signatures combines with type names to minimize the amount of comments I have to include.

                              so instead of makeOffer :: Int -> Int -> Either ErrReport Acquired I’d do makeOffer :: Amount -> Price -> Either ErrReport Acquired

                              where both Amount,Price and Acquired are type synonyms for

                              newtype PInt = PInt Int which has it’s own (abused) typeclass enforcing truncated subtraction and a smart constructor assuring conversion from Int to PInt always results in a non-negative. I believe the code for this is self-documenting.

                              1. 3

                                I’ve got the pierce book. I can give 10 hours a week to this project. Let’s do it.

                                1. 2

                                  I’m sorting out a re-factoring of a dopewars clone I’m making. The old code is on github, will be posting the new stuff by Thursday methinks. https://github.com/mlitchard/emporos/tree/master

                                  1. 4

                                    I like how it spells out why we call them sums and products.

                                    1. 1

                                      Doing a section of a re-write of an incomplete game. Specifically I’m attempting to encode some game rules at the type level. I’ve been advised by people with more sober judgment to not do that. Meh, doing it anyway. Maybe I’ll have a nice war story about why it was a bad idea.

                                      1. 1

                                        I’m working on a re-write of an incomplete game based on trade wars, while time is available. https://github.com/mlitchard/emporos I ran into some surprising bugs the first time around, so this time I will use Travis and quickcheck this time. Also, ghc has some cool newish features that I believe will help me encode game rules at the type level. This goes against the sober judgment of others, but I’m doing it anyway.