I think this site leans pretty niche.
123 karma · joined May 16, 2011
I think this site leans pretty niche.
I think it makes sense for professional productivity apps, like CAD stuff.
I don't think basic desktop apps are worth a fee, since no one will buy them with all the free alternatives, but maybe a case can be made with something that ties into managed cloud compute services (like superhuman's use of AI).
The issue occurs when you for example accidentally boot windows within windows, you can possibly get file corruption.
The workaround is to configure a virtual disk with only the partition you need plus a bootloader that can load it up. I haven't gotten that far.
EDIT: It seems there is an article about how to do this: http://lifehacker.com/how-to-dual-boot-and-virtualize-the-sa...
Create a Dualboot situation for normal linux work but set up a VM in your windows host that points to your bootloader and linux partition.
Now you have the best of both worlds, more memory and speed when you want it with native boot, but access to the dev environment from windows.
This was most effective in the case where a client required proprietary windows-only VPN software, but I wanted my dev environment. Configuring a vpn'd bridge adapter between Virtualbox+linux-guest and Windows host was a piece of cake.
Lines of code is an objective measure. How meaningful that might actually be, well, that's subjective.
I'd skip Objective-C and learn Swift to actually make a thing.
If you want general language knowledge, a really hairy production language and toolset isn't the place to look. You'll be fighting with lots of incidental stuff along the way.
Learning different kinds of languages will help you learn more languages.
Lisp is relatively more concise than C or Java for the same tasks.
Java is relatively safer than C for the same tasks.
It's under $1/GB
For me, there's a huge advantage in literally using tree-paper, either for code-reading, designing, taking notes, what have you.
It involves more of your senses, it's more tangible, every letter is written with more care and the medium is incredibly flexible (maybe I feel like drawing a circle on a whim, can't do that in emacs.)
It's better for scratch-pads than a text-buffer, imo.
Insights come more consistently and easily after iteratively marking up a printout. It's just fully-intuitive.
It's treated like a hobgoblin.
I prefer a thin, readable compiler and core library over such abstractions. I don't mind the stacktraces, but I could see how some people might.
The fact that clojure is host-centric makes clojure and clojurescript compelling to java or javascript programmers at the expense of some aesthetics, and it also has performance implications.
I was always somewhat halfway interested in learning common lisp, but when clojure came along I actually got excited enough to do something about it.
You even say you're 'very happy' to be working in it, but I think 'an experiment in STM' is too reductionist and shallow to address the numerous use-cases that are improved by persistent data structures and the other features that clojure provides.
Here's an example for the kids at home.
compiled: https://github.com/gtrak/node-cljs-template/blob/master/src/...
from: https://github.com/gtrak/node-cljs-template/blob/master/src-...
I think if you're mutating deeply nested things, or doing heavy algorithmic bookkeeping, it's worthwhile to evaluate different approaches (maybe pure java) as an 80/20 thing, and I wonder how hard it would be to have comparable mutability facilities and data structures as a library?
Of course, programmers want to get things done without spending time on building up their own tools, and I understand that.
It was a pretty transparent change.
http://disnetdev.com/blog/2012/10/14/hygienic-macros-for-jav...
and http://brendaneich.github.com/Strange-Loop-2012/#/40 http://www.infoq.com/presentations/State-JavaScript
We have control over the amount of real reasoning we can do about our code. The hassle of the real can be minimized. For example, I like clojure, and there are real benefits to theoretical things like immutability by default, or garbage collection. This ability to reason mathematically while being practical is worth promoting in computer science and engineering. If I couldn't reason this way about programming, I wouldn't be a programmer. Engineering is the intersection from theory to practice, and I appreciate that in computing, incidental complexity can usually be traced back to someone's neglect. Without this, we only have heuristics.
There is no silver bullet, but things can be made measurably better. We can accept reality without giving up on reason. I think to prove it, we can look at the influence of mathematics on real discoveries in history, and maybe ponder if humans are just meant to think this way in order to make progress. I hope my code reflects more order (purity, generality, conciseness) than chaos (special cases, entropy, technical debt).
I would just call the procs thing a 'wart' and avoid using it. I don't think my opinion favors the mathematically inclined programmers over the empiricists.
So, let's think about the kinds of things that get done as a consequence of certain types of thinking.
Tradeoffs.
Function invocation overhead, you say? Why would I want that?
How about Garbage Collection? It'll never work.
It's their responsibility to create foundational research, and it's ours to filter through it and prove the good bits with fire.
'Practical' is a red-herring, I think. We have no way to predict the future, but we all care about progress.