I have been on the fence about learning Category Theory more than once. On the one hand the promise of a generalized view on many concepts in mathematics seems attractive and I have hopes that it would help me see connections which I would otherwise miss. On the other hand it does seem fairly abstract (duh) and I am not sure what insights related to programming / designing abstractions would result from it.
What benefits have you reaped from learning CT?
I am thinking about working through Awodey's book. What would you suggest (in addition / instead) to maximize the value of CT for a Haskell programmer?
EDIT: I'd like to thank everyone for the answers... certainly some interesting points! I am not fully convinced either way, but in some way I think I'll have to learn it at some point to figure out my answer...
EDIT2: So I've now watched the video recommended by /u/slacket and must say this was quite helpful in answering the question. In the talk Prof. Gibbons hints at how concepts from CT help one to understand folds, unfolds and bifunctors. If this is a preview of things one might be able to understand thanks to CT, then I want to know it! Thanks!submitted by paulkoer
[link] [10 comments]
Summary: When designing a user interface, think about the user, and what they want to know. Don't just present the information you know.
As part of my job I've ended up writing a fair amount of user interface code, and feedback from users has given me an appreciation of some common mistakes. Many user interfaces are designed to present information, and one of the key rules is to think about what the user wants to see, not just showing the information you have easily to hand. I was reminded of this rule when I was expecting a parcel. On the morning of Saturday 10/1/2015 I used a track my parcel interface to find:
The interface presents a lot of information, but most of it is interesting to the delivery company, not to me. I have basically one question: when will my parcel arrive. From the interface I can see:
- The parcel is being shipped with "Express AM" delivery. No link to what that means. Searching leads me to a page saying that guarantees delivery before 1pm on a business day (some places said noon, some said 1pm). That is useful information if I want to enter into a contract with the delivery service, but not when I'm waiting for a parcel. What happens on Saturday? Do they still deliver, just not guarantee the time? Do they wait until the next business day? Do they do either, as they see fit?
- My parcel has been loaded onto a vehicle. Has the vehicle has left the depot, or is that a separate step? How many further steps are there between loading and delivery? This question is easy to answer after the parcel has been delivered, since the additional steps show up in the list, but difficult to answer before.
On Saturday morning my best guess about when the parcel would arrive was between then and Monday 1pm. Having been through the complete process, I now know the best answer was between some still unknown time on Monday morning and Monday 1pm. With that information, I'd have taken my son to the park rather than keeping him cooped up indoors.
I suggest the company augment their user interface with the line "Your parcel will be delivered on Monday, between 9am and 1pm". It's information they could have computed easily, and answers my question.
The eagle-eyed may notice that there is a plus to expand to show more information. Alas, all that shows is:
I think they're trying to say my puny iPhone can't cope with the bold font that is essential to tell me the status and I should get an iPhone plus... Checking the desktop website also showed no further information.
I need basic calculation (on prices and quantity), and for some reasons I don't like float or double (mainly rounding errors), so I'm thinking of using Ratio (or Decimal ?) instead. Is it something widely used or at the contrary that I should avoid (and if so, why ?)submitted by maxigit
[link] [18 comments]