If you use Keepass on something like Dropbox it's a blessing.
1,531 karma · joined November 10, 2013
GitHub: f-f
SoundCloud: cassalpopolo
Email: hn at ferrai dot io
[ my public key: https://keybase.io/ff; my proof: https://keybase.io/ff/sigs/cTLLkmwQyOpSnUQc9gDnJJb5O-QxTSXOxAp1z6Iv_i8 ]
If you use Keepass on something like Dropbox it's a blessing.
How to approximate FP in a mostly OOP language:
- use immutable data structures: there is no way around being able to fearlessly modify something. The naive way is to copy the object before touching it, the better way is to use efficient structures, e.g. Clojure data structures from Java.
- you either have data classes (no methods, no private fields), or execution classes (no data fields, only static methods), no mixing
- of you stick to the above, you will find that returning void from a method is very difficult.
Congrats, you're doing FP: the gist of it is that it's all about keeping state explicit; if you pass some A in a function, you will return a B at some point, and that's your result. No implicit state.
Of course, we're missing the whole part about side effects, so to add to the above: if you cannot write a unit test without mocking something in your method, you're doing side effects. They should be done only at the "border" of the application, to (maybe) get you the data you need, so you can bring it and process it in the pure core.
And this is where languages like Haskell help: to understand where the side effects are (because they are included in the types) and to prevent mixing them around (which only gets you an untestable mess in the end).
HTH
But then I read "Do Artifacts Have Politics?", and changed my mind. Everyone in tech should read this: https://www.cc.gatech.edu/~beki/cs4001/Winner.pdf
There's an effort to make something better and on the same vibe as Haskell's `stack`, which is `psc-package` [1].
I switched to it for all new projects, and while it still has some rough edges, I don't really miss bower.
Haskell-like (but taking away some of the pain points), for the frontend, compiles to very readable javascript.
1. Having strong and documented boundaries at API level
2. Being able to generate clients from a server spec, so I don't have to write interop code anymore.
3. Being able to generate server client from a design document (the spec) - I did it just last week, and it works magically. Should I do it by hand?
Swagger is bad only if you use it wrong, like it's the case with SOAP, Java, and other things which have good parts but have been misused so many times people got pissed of them.
This was also discussed in the issue tracker, in a now closed issue, in which the intuitive behaviour (staying in the same container) was proposed, but got sidetracked and in the end implemented something totally different.
So if anyone from Firefox is listening here: please PLEASE consider implementing Ctrl+T in the same container :)
I think the subscription model is the most valid, but what happens e.g. with Spotify is that most of my subscription goes to a small artists I don't care about.
The right way to do it is: take my subscription, take a cut, split the rest to the artists that I listened to based on the amount of playing time I put on each of them.
In practice, it depends, mostly on the size of your app. It's one of the cases in which TodoMVC is too small to make the framework shine properly. You're going to love it especially when your app starts to get bigger (and the complexity of "real world" starts to creep in) and the small complexity of the abstraction that you added in the beginning pays off. This is because you have a framework to put the new stuff in, but it doesn't get in the way.
This is the opposite of what I usually felt with the other js frameworks I worked with (Angular, Backbone, React doesn't count because not really a framework), in which once your application scales in size its complexity terribly increases.
But please get in touch so we can figure something out! :)
For more info: http://www.migri.fi/working_in_finland/an_employee_and_work/...
KSF Media is not a startup, but a 150 years old end-up. Our five newspapers are national, regional and local. Four of them are published in Swedish, the minority language of Finland. Hufvudstadsbladet is our best known brand https://www.hbl.fi. All of our newspaper titles have their corresponding digital brands. Our portfolio includes also brands like Ratata (blogging platform), Faktapp (learning app), plus a few more.
Our digital operations are constantly growing and we are therefore looking for another Fullstack Developer to join our team of 6. Someone that can add technical debt to every layer of our stack ;-) Someone that will help us tame the legacy monoliths (before you ask, it’s Python, PHP, Java, JS, and some more langs) and write some good, reliable, tested, small new services in the clouds. For writing the new stuff we're open to everything as long as you document it and we're able to pair program (currently JS, Python, Clojure, and I’d love to pair program some Haskell too). The position is full-time.
Watch our short pitch about saving the Media Industry and possibly winning Nobel Prizes: https://youtu.be/6Cl92_FYQ8k
More info about the opening here: https://custom.hbl.fi/custom/static/embed/hbl/job-ad.html
Applying:
Humans involved: mail me at fabrizio dot ferrai at ksfmedia dot fi, or DM me at @fabferrai
No humans involved: http://bit.ly/F-kingExcellent
The only problem is the lack of ESC key really, but after you remap it to Caps Lock everything is good again.
I pay publishers I like for their content (buying newspapers, subscriptions, etc) and I don't get why Google should be the middleman in this.
If you always wanted to learn Clojure but never had the time, 2017 is the right year, and Clojure for the Brave and True is your companion. Buy it, or just read it for free on the website.
(Disclaimer: I'm not in any way associated to the book or the author, I'm just super thankful for all the times this book has helped me to learn new things and solve issues :)
Clojure is growing fast, and a complaint I'm hearing consistently lately is that there are not enough clj/s devs around.
Just this morning I finished reading Solaris (by Stanisław Lem, it's an amazing book about reflecting on "how an alien could look like", 10/10), so I stopped thinking after every question to consider different scenarios possible with either answers.
To me it feels like a great tool to start laying down the plot for your next scifi book ;)
I can understand them though, but mostly because I know Italian. (Romansh also sounds to me somewhat Portuguese and Slavic at the same time, it's a very cool language).
I got confused with the terminology, apparently my brain doesn't work well when trying to speak three languages at the same time :)
Also, this is made with semolina flour, which is different (and much better IMHO) from the flour used to make pasta usually (in Italy and in the rest of the world).
So I would say that "modern" Sardo (defining the "old" as the first written texts some centuries ago) it's close enough to Latin to see where every word comes from, but definitely too far to give you understanding.
I can understand Spanish though :) (context: we've been in the Spanish Kingdom for like 400 years, and the language have been influenced a lot, many shared words.)
Now I'm super curious about it, but the preparation in sheep broth and pecorino is one of the best combinations to have with pasta IMHO, very promising.
Btw if you've never been to Sardinia make sure you visit at least once in life, you won't regret it :)
The draft/proposal is dated to Jan 2015 [1] (it's in Swedish, sorry), and it was in the works, and came up again today on the newspapers after the Minister of Justice called for a debate on this. Here's an up to date article on this: http://yle.fi/uutiset/osasto/news/working_group_tables_const...
EDIT: add sources.
[1]: http://www.defmin.fi/sv/uppgifter_och_verksamhet/lagstiftnin...
Instead of using Hazel I directly set an "rm -rf ~/Downloads/*" at every restart. This way I only save files when I really move them instead of having them pile up there.
Funny fact: at some point it was mounted in ram, but I couldn't download files larger than half of the ram. :D