625 karma · joined December 14, 2009
http://mattdw.github.com/ http://problemattic.net/
So for example, exposing the corruption of a politician (online) may well be illegal under the act.
They do feel like quite similar languages; I'd think of them as a complementary Systems/Applications pair.
["def", "foo", 1]
["fn", "foo", ["a", "b"], […]]
It's not the most attractive Lisp I've seen…Excel VBA and legacy business systems and nasty abandoned PHP and shitty Java monoliths are way more common out there than Angular and Node and the like.
"…solved many business problems with languages I didn't previously know, such as Excel VBA" sounds like it would make you a fantastic employee for any number of small businesses out there, the trick will be finding them.
I lucked into my first gig via a short-term contract (through a friend) that turned into full-time employment. The job was a mix of Filemaker (which I'd never touched before) and PHP and weird CSV import/export formats (so, basically the most awful combination of technologies in existence), but I solved real problems and was of real value to my employer. Sounds like you could pretty easily do the same, you just need to look for the opportunities.
The stuff that gets talked about on HN seems to be a weird microcosm of cutting edge tech, too much money, and "we have to convince investors we're worth buying so we have to keep up with all the buzzword tech". Meanwhile the other 99% are just tucked away in small businesses solving boring business problems with boring legacy tech and keeping the world turning.
Any of Ursula K Le Guin's books, but particularly The Left Hand of Tomorrow.
Ancillary Justice.
Anything by Peter Watts or Iain M Banks.
The case has made it through preliminary hearings and is now proceeding to a higher court; if they win a massive precedent will be set, allowing for claims of gender discrimination at the level of entire industries and vocations.
(I think it's totally a fair claim.)
So you don't tend to see animals running for hours because that's a human speciality (among predators), and it's part of why we've been so successful as a species, despite our physical weakness compared to other predators.
(An interesting model is Norway's oil – they're maximising in the sense of getting all the oil out from under the sea, but they're stashing most of the profits away as a rainy-day fund, which puts the country on very secure footing for about the next hundred years or so. You might call that 'maximising without consuming', or 'camping'.)
I think the future of the human race depends on finding a better answer to this whole question, but I think accepting that pillagers beat conservers in a lot of cases is a necessary step to finding something better.
(I don't think we actually disagree; we seem to be arguing different points.)
An economy that first maximised, then second optimised, would beat an economy that first optimised, then second maximised, because the latter would have nowhere to expand.
An economy that optimised and maximised would beat an economy that only optimised.
I'm a web dev, I know that ajax loading sucks, that without enough budget to do it right (and we never have enough budget) UX ends up broken, messing with scrolling sucks, page-based is best, don't make an app if it should actually be a site, etc.
Do I get any say? Not really. What do I end up building? Magic-scrolling ajax-loading apps, and if I have any budget left at the end of the job it goes on tweaking typography (i.e. designer-visible stuff) rather than fixing back buttons.
Which is to say, devs still know that this stuff sucks, but we're no longer in charge of the relevant decisions.
The 'generator' use of coroutines could be implemented with Receiver::iter, which is an iterator over a channel.
(As I understand it, coroutines are just a special case of channels.)
[Edit: see <http://doc.rust-lang.org/std/comm/> for channel docs]
I suspect particularly that ClojureScript (which would otherwise be my choice), with its use of persistent/immutable types and collections, might burden the GC quite heavily for a game.
CoffeeScript, IMO, offers so little over JS that it's not really worth the trouble.
- Learning core software/skills is not billable. "Core" is "any decent dev in this niche already knows this stuff." That's the stuff you read up on in your evenings. (One way my main client works around this is to have a senior dev always quote the tech side. Even if a junior dev does the work, they only get paid the quote, so they effectively self-adjust their hourly rate according to their skill level.)
- I would charge (and have charged) reading the docs, figuring out how to compile, and integrating a third-party payment lib I'd never seen before. So, specific tools/libs outside of the norm, I consider chargeable.
- Research for what I do is usually a write-off, but I can sometimes work a couple hours into the quote for a prototype if there are big unknowns. Or, before quoting, I say "give me a couple of hours to prototype, with the understanding that if we go ahead it's a component of the quote, if we don't go ahead you'll pay me anyway." Sometimes I don't charge the prototype, but it's instrumental in convincing the client to go ahead at all, so it's still a win.
- Tangent of a tangent, but kinda related to your 'research' point – quoting is really hard, mainly because quoting thoroughly approaches the complexity of doing the work for real. So a lot of my quotes are "if things go how I hope they will this will take 1 hour. If things go badly I'll come back and talk to you because we could be looking at days." Unknowns are really hard to quote without just doing the work.
I suggest starting by setting a bare minimum for yourself – the rate you need to charge to survive. Freelancing should probably be about double the rate of full-time employment, as you have a lot of unchargeable (or just plain idle) time, so you have to allow for that.
Then, it's really just a matter of looking around and trying to figure out what other people are earning for similar work. It also helps if you have some idea of the value you're providing for your clients, as your rate should be roughly proportional to that.
For instance, I know one of my main clients charges out (both my time and theirs) at a flat rate of NZ$150/hr, and a bunch of their time is unbilled, so the NZ$80 they pay me is in the "reasonable" zone (especially for pretty solid guarantees of ongoing work). My "survival" base rate would be about NZ$60/hr (NZ$40/hr at the kind of hours I manage to bill wouldn't really provide me a living.)
But like I say, you're in entirely different circumstances to me, so the details don't really translate at all. It's a matter of (for all of us) figuring it out for yourself, really.
The market includes feedback mechanisms. Game criticism is one of said feedback mechanisms. If people are criticising a game, that is an element of the market at work.
I actually did the ClojureScript tuts via LightTable, which was slightly less complex than the alternatives, but still required a bit of fussing.
(Incidentally, modifying my emacs setup in order to work on a project is the very definition of "incidental complexity".)
My thinking with the above is that CSS code paths in the browser are (with a very few exceptions) going to be a lot faster than trying to do the same in JS, and you don't have to wire up e.g. onresize handlers yourself.
Some things I'll just ignore; if your browser doesn't support border-radius or text-shadow, you get square corners and flat text; if your browser doesn't support box-sizing, the layout will be wrong but at least everything will still be visible.