HN user

beezee

76 karma
Posts10
Comments33
View on HN

When I first went from CT as an implementation detail of typed FP to studying CT on its own, I was very aggravated by this point: "where is there a functor that isn’t an endofunctor?"

Over time it has fallen away in two directions.

In one direction is that though you are always stuck in a category with types as objects and functions as arrows, that doesn't stop you from subdividing. This became more intuitive to me as I encountered more and more categories that are basically just Set with extra structure (just as the one we program in is basically Set with bottom). If you start putting extra structure on your arrows (that is something that carries around a function along with some extra proof-relevant structures, like say a way to show that some zero element in the domain under the function equals the zero element in the codomain and that multiplication is preserved under the function, now you have monoid-homomorphisms) then you end up in the general case with something that looks a lot like a binatural transformation of profunctors, which pretty cleanly encodes "exo"-functors between different sub-categories of the category with all types as objects and functions as arrows.

In the other direction is realizing that even imprecisely, there's quantifiable value in observing functors to and from the category of types and functions, say one between whiteboard diagrams and code, or between a specific problem domain and code, etc etc. If you have some other space with composable relationships that you want to preserve when you write code to correspond to it, or you have some other representation you want to produce based off some given codebase while preserving the structure of the code taken as input, you can gain a ton of conceptual leverage out of identifying a functor.

BondLink | Junior/Senior Software Engineer | Boston, MA, US | ONSITE | Full Time

We are a small team of Scala engineers who care about rigor and proving our code correct. We use advanced functional tools and techniques to ship reliable, rot-proof software. Presently that includes things like scalaz, generic type-level programming, free monad based programs, and monadic logging among others, and we eagerly embrace new approaches that help us to do our jobs better. If these things are familiar you will feel right at home, if they are interesting to you and you want to learn, you will find a safe and supportive environment to grow on the job (many of us have learned most of these things here at work.)

About the company:

BondLink provides a SaaS platform to bond issuers in the $4 trillion municipal bond industry. We have recently raised a large Series A, we have strong revenue growth, and we are already working with many of the largest issuers in the country.

The company was founded by a former Massachusetts Assistant State Treasurer who raised nearly 25 billion in funding for the state and set the gold standard in the industry for transparency and investor outreach, partnered with a multiple-time startup founder with several successful exits under his belt.

We have deep expertise and credibility in the industry we serve, great product-market fit, a strong footing with a ton of momentum, and a great handle on our software delivery.

If this sounds like something you'd want to be a part of, shoot an email to brian(at)bondlink(dot)com

Does unification of getter and setter have to be lost?

Assuming you are in a unityped context, hkts are gone, functor is not a thing. so

  (a -> f a) -> (s -> f s)
is not meaningful. If we pretend that unityped means everything is parametrically polymorphic, for the purpose of this discussion, can't we leverage parametricity to choose a representation that provides this unification?

for example, if i provide laws that show for a given

  lens :: (s -> a, s -> a -> s)
that
  (snd lens) s (fst lens $ s) == id s
doesn't that provide the same assurance, even if less elegant and not typechecked (the latter of which is much broader than just applicability of lenses)

BondLink | Junior/Senior Software Engineer | Boston, MA, US | ONSITE | Full Time

We are a small team of Scala engineers using advanced functional techniques to ship reliable, rot-proof software. We use lots of shapeless and scalaz, a free monad based program/interpreter architecture, monadic logging, and more. If these things are familiar you will feel right at home, if they are interesting to you and you want to learn, you will find a safe and supportive environment to grow on the job.

About the company:

BondLink provides a SaaS platform to bond issuers in the $4 trillion municipal bond industry. We have recently raised a large Series A, we have strong revenue growth, and we are already working with many of the largest issuers in the country.

The company was founded by a former Massachusetts Assistant State Treasurer who raised nearly 25 billion in funding for the state and set the gold standard in the industry for transparency and investor outreach, partnered with a multiple-time startup founder with several successful exits under his belt.

We have deep expertise and credibility in the industry we serve, great product-market fit, a strong footing with a ton of momentum, and a great handle on our software delivery.

If this sounds like something you'd want to be a part of, shoot an email to brian(at)bondlink(dot)com

How many commenters in support of this perspective were in the area and part of all this? As someone who was a short distance from the explosions during the marathon, and the focused area of the manhunt during todays lockdown, I'd expect the answer would be none. And if I'm wrong, I'm shocked at the lack of empathy, or even lack of ability to emulate empathy through simple taste and common sense. This is a really disappointing thing for me to see on HN.

The time it takes to walk someone through all the use cases that need to be tested is not trivial. The reason for having a dedicated tester is so that knowledge of the system accumulates. I can't imagine how having to re-introduce your system to a new tester for every upcoming deployment could possibly be a realistic approach. In order for this to make sense I'd have to build a relationship with a freelance tester so that the same accumulation of knowledge could take place.

I can't disagree with you there - while I did spend some time in the Chrome debugger to see if I could find some clues, at the end of the day I'm stingy with my time when it comes to pull requests, largely based on the # of open issues on the repo. Maybe I'm jaded but after losing a few hours to pull requests that never went answered and reading multiple different takes on github etiquette, I tend to play that safely.

Additionally to directly address your reference to "negativity on HN" - as someone who submits their side projects here I'm all about fostering a supportive environment, however I don't think the same rules apply if your website includes a profile for me that I did not create and is effectively misrepresenting me. Wouldn't you say so?

All about this but when I see 2 year old issues on a repo with code attached that have not been answered, I generally don't hold out high enough hopes of getting a response to justify forking cloning editing pushing and opening a pull request. At least with the blog post I had a chance to rally enough attention to make it the maintainers best interest to fix.

True enough, it's not about how 'legit' the service is though. At the end of the day the domain resume.github.com looks official enough, and it boils down to what url someone is handed, and what their personal preferences are. That's why I gave the example I did in my blog post (remember the imaginary hiring manager happens to prefer viewing via the github resume repo...)

I did comment on the HN post, and also opened an issue on the repo (see my comment on this thread,) and based on the many ignored pull requests and issues on the repo and watching my comment go unnoticed in the original hn thread decided this would be my best chance to get a change implemented.

Glad to see this got some discussion. Someone else commented on the blog post suggesting I open a pull request, correclty pointing out it would have taken the same amount of time as writing the post. I'll paste my response to them below to clarify why I chose the route I did-

Well aware [I could have opened a pull request] thanks Carina. I took a gamble that this would be a more effective route after opening an issue here https://github.com/resume/resu... and noticing 19 others open, many around 2 years old with code attached and no response. Not sure if you've had a very different experience but I'm pretty cognizant of those factors when choosing who to bother submitting code to at this stage.

I actually did spend a little time putting breakpoints in Chrome before posting, but based on circumstances felt that my best chance to get it addressed was to shed light on the underlying issue in a way that might get a volume of other folks involved.

just filed an issue - but the error message is pretty obnoxious for a catch all- bound to the $(window) error event is a catch all error that blames me for not having enough data (56 public repos not enough?)

This means that anyone who knows this url and decides to look me up will see a message accusing me of being a non-producer if anything goes wrong with the resume

It actually bugs me the sense of entitlement- YT is a free service, technically can take stuff down for no reason at all and nothing anyone can say about it. I can understand why this woman is frustrated, but expecting YT to have human resources in place for DMCA takedown requests is totally unrealistic- chances are that channel would be flooded if it existed.

Either way, if you're not paying for something, what do you expect.

What is really absurd is they've gone offline and given people no way to confirm their password. Their suggestion:

"If you can’t remember what your Tuts+ Premium password was, we encourage you to change passwords on all services you use"

All I need is to try a handful of "important" passwords, make sure that none of them work for this compromised service, and I can go on with my day. But they figure, hey, if you can't remember our password, go change them all, not our problem.

Real brilliant way to handle it.

This is marketing 101- the issue is why would you work somewhere that you have to continuously market yourself just to keep your job? That's what the interview is for.

Personally in my experience working with startups, everyone at the company knows why I'm there, what I do, and there's no question about the value I bring. What I call myself just doesn't matter. I would wish this type of experience for everyone.

The developer would be me, thanks for the shout Alex! :)

Quick shameless plug, this was a weekend project and it's up on Github, just PHP and MySQL, so if anyone wants to contribute it is more than welcome.

One major flaw with comparing programmers to doctors and lawyers is that there's no acknowledgement of liability. It is far more often the case that a lousy lawyer or doctor puts lives at risk than it is a lousy programmer does, and liability is one of the most justified determinants for compensation.