My reasons are made clear in the README. I don't want to contribute to nonfree software. It's pretty simple.
Businesses who want to use my work in nonfree software are welcome to get in touch to negotiate such a license.
IMHO, for anyone who has seriously considered the morality and ethics of software licensing options, the AGPL is the obvious choice. I'm surprised it isn't more popular. It was a shame large donors strongarmed the FSF into splitting it from the GPL, and that the FSF kept pushing the GPL as it's go-to license.
Libarray (and my other C libraries; Libvec etc) have served me very well on a 20k LOC project. With ~150 source files, the entire project builds from fresh in 20 seconds on a i7-2620M. Rebuilds are super-fast; with proper Makefile specification, there's no need to rerender/recompile the templated files.
I would suggest working on how to improve your Python tooling; Vim with Jedi, or PyCharm are both great options.
I think Python's module semantics are harder to use and understand, but when you know how to wield them (or reading the code of someone who does) they serve you far better than other systems. Python's module semantics are closer to Java's (explicit packages) rather than Ruby or JavaScript (global namespace), but unlike Java, Python's modules are derived from the file structure and not `package` statements.
The consequence of this is that most Python developers throw everything that should be in the same module into the same file, because that's "easiest". It stops being easy when the file grows large.
What you can do to address the problem of large modules in a single file is to turn the module into a directory of the same name, create an `__init__.py`, then put separate files in that directory to hold sections of the module (e.g. a file for each class if that's appropriate), and then in the `__init__.py` import the classes and whatever else you want to export from the module. Done - and client code needn't change.
Python's module system (and namespace system in general) is one of the largest reasons I prefer it over other dynamic languages. Knowing where every identifier came from in a file makes it so much easier to learn a codebase.
To me, this sounds like a failure of your tooling rather than the code you're reading. Vim with Jedi, PyCharm and PyDev can all jump straight to definitions. What's your development environment?
I'll use `from <module> import <identifiers>` when the identifiers' names express their purpose, and aren't dependent on the module's name. Importing identifiers directly makes the code using them less noisy [0], and makes it possible to replace the source module for the identifiers later on. In Django projects, I'll often need to rename modules or move identifiers between modules, and so using `from` imports makes that a lot easier.
I agree that `as` imports should be used sparingly.
[0]: your suggested solution is even more noisy than using the qualified name, because now you have a variable hanging around and readers have to work out if `now` is going to be reassigned or used later.
- that there's only one class of "humanic" intelligence;
- that we can approximately represent instances in this class of intelligence as vectors of {memory, learning speed, computation speed, communication speed};
- that any AI that could be created is merely a vector in this n-dimensional intelligence space, lacking any extra-intelligent qualities;
- that productivity and achievement increases exponentially the more intelligent being you devote to a problem, but logarithmically for more beings you devote (e.g. a being with intelligence vector {10,10,10,10} might be as productive as 10000 {1,1,1,1} beings);
then this doesn't exclude the possibility of us creating an AI with an intelligence vector twice an average human's intelligence vector, which can suggest improvements to its algorithms and datacenter and chip designs to become 10x as intelligent as a human, and from there it could quickly determine new algorithms, and eventually it's considering philosophy (and what to do about these humans).
The point is: viewing intelligence the way you suggest doesn't help us on what to do about "super" artificial intelligence.
This is really cool (I've been wondering how to do a string-switch for a while now), but I don't think getopt is a great use case, because getopt still results in imperative argument parsing and this always results in pain.
The main idea is that each argument is by default parsed and stored as a string, or you can optionally specify a function of the type `void f(char * name, char * arg, void * dest)` to parse the argument string and store it in a well-typed destination. This way, you can have an `int` argument by passing `int__argparse` as the parser, and if the user passes a value outside the range of `int`, then an appropriate out-of-range error is printed to the console. Similarly with `uchar__argparse` or something like `point__argparse` (e.g. taking some format like `{x,y}`).
libargs is quite flexible and has worked well for me so far. Automatic help text generation can be added in future while maintaining (non-ABI) backwards compatibility.
The main disadvantage is that it depends on other libraries I've developed that are essentially Jinja-templated C source files that function as makeshift generic types / typeclasses in C. Your inclination towards this approach depends on taste; personally I much prefer deferring the pain to the build system, as opposed to the source code.
What the web is increasingly unable to do today: provide text content without requiring a code execution environment. This site is another example of that.
All non-application websites should provide all their content in semantic HTML at appropriate HTTP endpoints, with CSS styling (in as few requests as possible) as required per the design, and JavaScript (in as few requests as possible) that takes the semantic HTML and makes it interactive (potentially adding and removing elements from the DOM) as required per the design. The CSS should not depend on mutations resulting from the JavaScript, nor should the JavaScript assume anything of the applied styles (as the user agent should be able to easily apply custom user-styles for your site; e.g. Gmail only providing a limited set of styles that are managed server-side is laughable).
Thus, all content is readable and styled properly without requiring an arbitrary code execution environment. That is what the web was meant to be. Unfortunately, most "web developers" have made the web worse over the past 10 years because simple, functional, minimal technology is not impressive, and hipsters love to show off.
Nor does it help that there are few capitalist incentives for the web being open and malleable -- e.g. so users can easily use a different front-end for Facebook, or users can easily choose to avoid analytics or advertisements, or users might prefer to use the website rather than the app (providing access to personal details, contacts, location, tracking, etc).
The state of the web is emergent and I'm not sure what anyone could do about it (perhaps make a better browser?), but it really irks me when web developers pretend like they're actually doing something good or useful, or that the web is actually in a healthy state. In my experience, it's the people who don't talk about web development who are the best web developers; these are the people who don't wince when they write a HTML document without a single `<script>`.
I didn't find this video helpful at all. You have to skip 10 minutes ahead to get to the actual talk. The talk is stunted and, as always with Rust documentation, dwells only on the basics. Audio isn't clear, but neither is the speaking.
I don't know of a succinct overview of Rust for experienced system programmers, and this video certainly isn't that.
I used Thunderbird and Enigmail for a year or so. I later moved to Evolution for the better GPG experience (no flickering on opening the message as there is with Enigmail) and better GNOME integration. I used Evolution for another year, but its rough edges wore me down; I had to get in the habit of closing it if I wasn't using it, because it would noticeably slow my system down. It would take at least 5 seconds to open. Parts of the UI would often lock up and need a reset by switching between the panes.
I've been using Claws Mail for the past few months. It's simple, fast and stable, and GPG support is fine. That's all I need. It sucks for reading and writing HTML emails, but I'm okay with that. Parts of the UI are still rough (e.g. the main window isn't responsive while the "sending" dialog is open), but it's less worse than Evolution.
Your electricity usage patterns are enough to determine your schedule, especially if you have electric water heating. Browse through some systems at PVOutput.org until you find one that publishes power usage data; you can usually see when the occupants wake up, when they do their washing on the weekends, when they turn on the TV in the evening, and when they go to sleep.
With higher precision usage readings, you can determine what they're watching on their TV [0] [1].
I agree that the internet-of-things is another concerning layer of risk for privacy and security, though.
Aside your abstract commentary here is a defense of your argument that the web will lose something valuable if more sites stop directing their visitors' browsers to send requests to advertizing companies and CDNs for resources. I think that's baloney - the web will be better off for it, because it will be faster, more private, and simpler.
No semantic information is lost (except for the semantic information in Google's profile graph - let me play my violin). There's no balkanization, because there's no noticeable difference to end-users (which is why cross-site requests for things like fonts is so nefarious).
The web would provide all the value it currently does, because that value is founded entirely on linking.
You seem to maintain that wanting to achieve private browsing is "paranoid". Can you expand on this belief?
I've found ABP's filters to be sporadic in their effectiveness. Open up the network inspector tab and browse to theguardian.com and others - look through what cross-site requests are still getting through.
I detail what I use in this comment [1], but I still set up friends and family with ABP because it's easier to use. I just find I have to manually blacklist a lot of domains to get it to actually work. You only need to make one request to Google for them to know what page you're on.
My first sentence does not imply that he's speaking for Google, or other Google employees. cromwellian is an employee of Google, and I would regard his opinion here as being contemptuous of privacy.
Edit: okay, I see the implication now of me referring to all Google employees in that sentence. I had intended for the plural to refer to "more than one", which I think is a safe bet - but it could also be construed as referring to "all" employees. I've qualified the sentence with "some".
And here we see the contempt for privacy that some employees of Google hold.
What would you regard as private, pray tell, if it's not being able to access a web page without telling Google (and other advertizing companies) that you're doing so? You regard a pursuit for that freedom as "paranoid"?
Linking is the great power of the Web, and is why it is what it is today. That's all. Scripting is sometimes useful, but more often than not, it's used to enable an industry of services-as-software-substitutes ([1]) to thrive. Cross-site resource requests are not important or valuable (I think they're detrimental), and they are totally replaceable anyway, as you mentioned. As HTTP2 becomes more commonplace, cross-site requests will be replaced in favor of same-site requests. I look forward to that.
I use NoScript and Policeman on Firefox, with conservative settings (disallow all active content (scripts, fonts, WebGL), whitelist-only cross-site requests). I've also configured Firefox to block cookies by default; only permitted sites can store cookies for the session, and just a handful I allow permanent cookies.
Web pages load much quicker, Firefox uses less resources, my browsing is significantly more secure (see [1] for risk of loading arbitrary fonts), and I can browse the web without Google/Facebook/AdvertizingCorp (and thus the Five Eyes) building a profile of everything I do. It's a nice feeling.
This set up also blocks ads served from third parties, which I feel is an agreeable compromise on web advertising. If I send a request to your website, and you send me a document with embedded images stored on your website, I'll download them and view them alongside the page. However, if you try to tell me "go send 5 unsecure requests to each of these three companies you've never heard of, and execute their 20KB of code, to get flashing ads alongside this page" - I'll ignore you.
Sites loading resources from external domains (usually Google) is nothing new. I've been browsing this way for two years now, and I've developed a healthy level of contempt for 95% of web developers. The vast majority of them just don't care for their users; campaigning to get the developers to change their habits is a broken model. Ultimately, you have to take control, and decide for yourself what you want to run on your computer.
I don't know why more people don't browse this way; some actually ridicule this approach ("get with the times"). It boggles the mind.
> This kind of censorship has nothing to do with being a nanny state. ... Is China a nanny state? North Korea? Saudi Arabia? Eritrea? What about the continent-spreading empires of the last century that were run by mustachioed gentlemen, were they 'nanny' states?
It is related, because censorship is authoritarian, and nanny-statism is authoritarian. If the government of a democratic society thinks it should tell its people what they can and can't say, then it's likely that that government (i.e. society) also thinks it should intrude into people's lives and protect them from themselves, because personal responsibility is dangerous. This correlation certainly holds for Australia, which is why I mentioned it.
Those countries you mentioned - China, Saudi Arabia, etc - aren't democratic, so I don't think their authoritarianism reflects the societal will. Thus, the authoritarianism doesn't transfer to, e.g., the government telling people they can't ride a bicycle without a helmet. Authoritarian and democratic countries are nanny-states, almost by definition: e.g., the UK, Australia, Singapore.
> RSF still rates the US as being less free than Australia when it comes to the press
I love the Reporters Without Borders, but I don't think their Press Freedom Index has much merit. Not only is its methodology flawed and subjective, but the calculation of the index is highly opaque, and so I suspect it's somewhat politicized.
We don't know (1) the number of respondents from each country, (2) the kinds of respondents from each country, or (3) the distribution of answers to the questionnaire for each country. Without those things, we can't talk empirically about press freedom. As it stands, we can only speculate on what the simplified "index" means.
You mentioned the US as a comparison for press freedom: I'd like to point out that the US is home to a number of organizations that publish very controversial opinions, like Twitter, Reddit, 4chan, Cryptome, The Intercept, etc. I find it very, very difficult to imagine these organizations existing in Australia (or many of the countries at the top of the RSF's index) -- don't you? I mean, it's illegal to publish "racist" opinion here, and the majority of Australian society seems fine with that - any American I mention that to laughs in my face, and rightly so.
Furthermore, the US also has a number of excellent (at times) news organizations, like The New York Times, The Washington Post, NBC, and PBS. Sure, these organizations are influenced by the US government, but influence isn't quantitative. To say that the ABC, or the Sydney Morning Herald, or Nine are influenced by the Australian government less is mere speculation.
All news organizations are influenced by the society to which they serve, and the government to which they report on. You should always try to vary who and where you get your news from, and always be aware of bias.
> As for whether it's a good thing or not to be a 'nanny' state, perhaps have a look at the quality of life in the 'nanny' versus non-'nanny' states.
As an Australian, I don't think banning psychoactive drugs, nor banning "racist" speech, nor mandatory bike helmets, nor bar lockouts at 12pm, nor homeschooling restrictions do anything to improve the quality of life here. In fact, I think those policies harm the quality of life significantly.
Australia's economic success (and thus "quality of life") is thanks to its (small-l) liberal economic policies of the 80s and 90s, and the resources boom of the 00s -- not because I can't buy a joint at a cafe here.
FWIW, if you're basing your judgment of "quality of life" on the UN Human Development Index, know that that is another highly simplified and flawed index. I'll let you look into that on your own. The HDI certainly isn't a ranking of quality of life - but a well-traveled person like yourself would know that, right?
I'm from Brisbane, but am currently overseas (I'm going home soon!). My only contact who could (maybe) hire someone has just left the country for a few weeks.
What experience do they have? What are their doctorates in? Where in Brisbane are they?
Businesses who want to use my work in nonfree software are welcome to get in touch to negotiate such a license.
IMHO, for anyone who has seriously considered the morality and ethics of software licensing options, the AGPL is the obvious choice. I'm surprised it isn't more popular. It was a shame large donors strongarmed the FSF into splitting it from the GPL, and that the FSF kept pushing the GPL as it's go-to license.