20 karma · joined March 26, 2017
Take a look at my GitHub profile: https://github.com/diegojromerolopez
Now, what I am asking is, could we expand this by having static annotations that enforce runtime behaviours before running the code? I'm not advocating for the removal of the tests or some manual testing phase, but in the same vein of type errors being shown in our IDE, could we have static checks like contracts for functions or class invariants?
Full disclaimer: I leveraged AI technologies to create them.
About the cost, AFAIK it is not prohibitive.
I will continue working as I was, thanks for your opinion!
Feedback welcome!
Thank you for your input!
Having said that, I think dataclasses are a better solution for making immutable objects if the class is going to be made from the start.
Performance is bad, I mean, all params are deep-copied because I assume frozen then "inplace" is not intended as they could be objects used by other parts of code.
I added this feature yesterday. Note the default value is "exception". With "nothin" I was thinking in passing some frozen object through a pipeline of unsafe/inherited/bad code, but without polluting the console with warnings or stopping the execution with exceptions.
I was thinking the other day about my days working with Ruby On Rails and how the strings are mutable in Ruby and the freeze method. My mind wandered about that, the several freeze packages that exist (even the frozendict [2] package) that make frozen classes of objects.
I haven't worked professionally with Haskell or Erlang, but some of their functional capabilities are nice and have ejerced a big influence in my work with Ruby on Rails and Python. Specially the ideas of having immutable objects and keeping updates at minimum.
I thought on doing a freeze package that could make frozen objects recursively in Python. The idea is to make easier to share objects between threads without having to worry about updates inside threads.
However, I'm not sure that this package is useful at all. Maybe is because Python is not a well-suited language for this? Maybe is because my lack of knowledge about functional programming? Maybe is because it doesn't make sense to "freeze" objects?
Some ideas I have in the back of my mind for this package are:
- Some kind of basic datastore-server where data is immutable (threaded server?). - Storing all updates some kind of super-object by storing all history as immutable objects.
What are some sources to learn about immutability on programing languages? How could you use a freeze package in Python or other languages? Would it be useful to share information between threads?
Any advice/idea/feeback/criticism or comment on this matter is appreciated.
When I started with Rails I was so frustrated with ActiveRecord that I develop some of the Django QuerySet API as a gem[0].
I really miss Django and its way of making queries and I think it could be a good add-on for Rails.
- Task classes.
- Lead time.
- Cycle time.
- Number of backward movements for any list.
- Cumulative card evolution.
There are some good books about this subject:
- David J. Anderson's Kanban (https://www.amazon.com/Kanban-Successful-Evolutionary-Techno...)
- Actionable Agile Metrics for Predictability: An Introduction (https://www.amazon.com/Actionable-Agile-Metrics-Predictabili...)
Shameless plug: checkout my personal project DjangoTrelloStats that measures these metrics for you: https://github.com/diegojromerolopez/django-trello-stats (include a somewhat Trello synchronization tool).