Fork me on GitHub

I’ve always wondered why clojure doesn’t show local variables in stack traces by default


That alone would go a long way towards making them less sucky


@hello254 that might just lead to even bigger stacktraces that are difficult to understand, since a local variable could be some huge map object being spit to console


But that could be mitigated by coming up with some sort of Display protocol override, but I don't think that would be idiomatic clojure anymore


I guess the way I see it, if I’m debugging stuff, I’d rather have the huge map object that was present when the function died, than 20 levels of function indirections in Javaland that have little to do with the issue at hand


As of now it is in a broken state due to a half-done refactoring. I abandonned this project and rethought it as a live-coding environment. The idea is to have the debugging info printed right into the source code. This has lead me to develop the concept of micros, i.e. macros whose expansion is persisted in the source-file. It's yet another abandonned projet but you can check out the details at


Cool work. You might also sayid interesting :


I work in the field of adaptive e-learning systems (university) and have seen that many projects in recent years have produced research results but no practical results and are no longer used. The projects have mostly extended regular learning systems with adaptive functions, resulting in the creation of a non-harmonious overall system and the inheritance of obsolete usability aspects of the basic e-learning systems. I have developed a concept for a modern learning system (with adaptive and other contemporary functionalities) but am unsure about the project. "Do we really need another learning system / file format for learning materials, etc ..." There are thousands of ready-to-use solutions in each area, but new programming languages / frameworks / file formats are regularly released. :thinking_face: Is there a way to objectively decide whether your own idea really has a right to exist and is not just a product of the "Not Invented Here Syndrome"?


Depends on what your goal is.


And definition of “right to exist”, which I’m going to interpret as: justification.


If you’re doing this as an exercise to understand the area better (personal learning), that is the reason for it to exist. You’re investing in yourself. Learning by reading and doing > learning by reading. (The more relevant question would be, is this the right area to invest in.)


If you’re doing this as a career-advancing move, to showcase your abilities, then again you don’t need more reason than that.


“Not invented here” applies when you’re making a decision on whether to reuse an existing framework or to write something internal. It implies organisational context (where is “here”?). That one is actually a hard business decision that requires good knowledge of the organisation and the field both. For each external framework, you need to estimate the likelihood that it will receive long-term support and bug-fixing, that it’s sufficient for your current and projected needs, and that it’ll grow in the direction consistent with your current and projected needs. And then you compare this with the cost of developing and maintaining a framework internally (using your knowledge of costs of previous such projects.) Often the decision is “let’s use an external framework”, not necessarily because the framework is good, but because an internal framework would be a cost-sink (the business is not a framework-selling business.) To offset this cost, some organisations will develop the framework and then open-source it, in the hope that community will take on some of the burden.


Lastly, if you do intend to become a framework-selling business, you need to read up on user feedback and product adoption measurements. There’ll be a lot of material produced for startups.


Books like “How to Measure Anything” or “The Mom Test”


You’re the specialist and I’m not, so YMMV, but based on my general business/product experience I would start by researching why exactly the existing solutions have failed (as I know they have - the ratio of people finishing MOOCs to people who signed up is really small.) This is something on which you can get objective numbers. And likely, some companies have already researched it to improve their business offering/product adoption. Memrise folks might have something interesting to say for example - I know they’ve been testing various ways to monetise their product, so they must have done some testing on user adoption and retention, and flash cards are a simple case of e-learning.


Thanks for your answer! The main goal is to develop a better teaching/learning experience in e-learning. Implementing adaptive functionalities in a learning system is only one aspect. After talking to many professors and students I understand that one of the main problems is the usability of these systems. Page loading is slow; Everything is Serverside-rendered (bad for authoring content); collaboration outside of courses is not provided; and so on.. In my opinion, E-Learning and Learning in general depends on a good user experience. I've shown a prototype to some users and they were happy that everything is so fast, elements are editable/movable without page reloading and everything looks modern. For me, that feels like justification to continue this project. But If I talk to an engineer they might think that choosing clientside react-reagent over serverside php-rendering, or json over xml for the API, is only a matter of taste and not a justification to develop a new system. Instead of fixing and extending everything, I think we have to break away from some old technology and software to get a really good user experience - but this opinion may be too controversial 😔


Well, you’ve got some common traps in there


First, things absolutely depend on a good user experience, but sometimes that experience is not what you think it is. It is well known that users rarely tell you what the actual problem is (because they’re rarely self-aware enough.) That’s why you do A/B testing and measure people’s reactions. That’s why companies invest in labs with cameras where they give users tasks, then track their eye movement and how long it takes them to click the right button.


Secondly, asking people in person also doesn’t always yield you the right results because people want to be nice and helpful (agreeable) and will tailor their feedback according to what they think you want to hear (the aforementioned Mom test).


Thirdly, fixing versus breaking away from old technology: this is not a straightforward decision. Rewriting the code from scratch can be absolutely the worst decision you can make:


In short: old technology is tested, edge cases have been detected and handled, a lot of bugs have been squashed. Platform reliability matters a lot in product development.


SPA is a fat client: fat clients have been done, and there are both benefits and costs.


In short, as with everything in software development, you need to carefully and, most importantly, experimentally, determine what the problem is (find a way to observe user actions and reactions, rather than rely on what they tell you; self-report surveys are notoriously unreliable). Afterwards, you solve the problem in the most cost-effective way. The thing is, everything comes with a cost attached. If something looks like it doesn’t have a cost that just means you can’t see it yet. If a decision looks like a matter of taste to you, that means you likely don’t have enough information about costs of all options to make that decision.


Its not that I want to rewrite everything from scratch. Its more about the decision if I should write just another Plugin for the old learning system or build this new feature as a standalone application. Memrise focusses on a specific way of teaching/learning which could have been implemented in an existing learning management system - but as a standalone app it feels complete and harmonious (really dont know if this is the right word..) I observed the problems and benefits of using the existing system for the last two years; both by myself as a student and then as a teacher and also listened to many teachers and also students. I see the problem I want to fix, I know the Use-Case where people could benefit from a new application. But I also know, that If I would integrate it in the existing System, there would be too much limitations (both technically and in user experience) to adequately solve the problem. Your last answer has probably well summarized: determine the problem and weigh the costs (not just time/money) of each option


> I observed the problems and benefits of using the existing system for the last two years; both by myself as a student and then as a teacher and also listened to many teachers and also students Cool, seems like you have thorough insight into the problem you’re going to solve 🙂 This is the most important thing. I will keep my fingers crossed for you, this is an area with many products but no good solutions yet.

👍 4

Thanks for taking the time. Maybe I can say in a few months if I made the right decision 🙈 🍀


is anyone using the emacs-mac brew cask?


i can't seem to start the gui version of emacs after installing that


oh wait, i can, but i can't seem to start the gui version with an emacs daemon and client


Hello Clojurians, anyone here from Russia? Does any of you have any idea how much do developers charge in Moscow for migrating from Wordpress to Wix?


#clojure-russia might be a place to look.


@U7DT92B9R I didn't about that channel, thank you!


When I use a library that has the GPL license and build a wrapper around it, do I need to use GPL license as well?


I think so. GPL is "infectious"


I'd double-check that... requiring a library (:require + :dependencies) is not the same as copying its source code


Yeah I believe for LGPL that (requiring a library not needing to use the same license) is the case for sure


Can I also use a less restrictive license then as MIT?


Short answer: yes. Long answer: it allows dynamic linking, disallows static linking; all of the terms in license mention are mentioned in regard of C/C++, so it’s not 100% clear in not that kind of languages. AFAIR OpenJDK has GPL license, with explicit allowance in regards on classpaths, so when you require classpath - it’s not copying


OK and with an npm module?


If it’s personal - I’d use MIT, if your company - something in line of Apache, or MPL, EPL - they have more mature legal terms


And this is allowed? Or should it be GPL?


What’s allowed?


I’m sorry I couldn’t understand 😓


To use the MIT license when including GPL code


Is that allowed?


Or should I use GPL as well


In short: not allowed. 🙂


We've had some companies reject MPL due to the costs with tracking the changes, just fyi


which is a shame, because I really like MPL