The History of Corporations Recruiting Artists to Inspire Their Employees - <AUTHOR> https://www.artsy.net/article/artsy-editorial-untold-history-corporations-recruiting-artists-inspire-employees <comment><USER2> For more on Facebook's art focus, see their Little Red Book (2012) given to every employee:

[http://www.businessinsider.com/inside-facebooks-little- red-b...](http://www.businessinsider.com/inside-facebooks-little-red- book-2015-5)

At Stanford, Professor Fred Turner has written a critique of Facebook's art culture (both the Analog Research Laboratory and the Artist in Residence Program), putting Facebook in the context of art programs that came before. Excerpt:

"First, the Lab's posters have linked calls for labor to calls for self- transformation. In the industrial era, a motto like "STAY FOCUSED AND KEEP SHIPPING" would represent a straightforward professional exhortation: DO YOUR JOB. But set in the same type as a poster reading "WHAT WOULD YOU DO IF YOU WEREN'T AFRAID?" and placed in the same sorts of locations, the corporate slogan can become an answer to a request for self-discovery."

[http://fredturner.stanford.edu/wp-content/uploads/Turner- Art...](http://fredturner.stanford.edu/wp-content/uploads/Turner-Art-at- Facebook-Poetics-Preprint.pdf)

<comment><USER3> That second link you posted was excellent. It's a very cutting criticism.

"When the Analog Research Lab posts a picture of Dolores Huerta on the walls of a company whose engineers have no unions, it demonstrates its own power to transform the most embodied and institutionalized political movements into acts of decontextualized expression. On a poster, Dolores Huerta's image becomes a sign, emptied of its history, and repurposed. A picture that might once have inspired marches in the street by impoverished farm workers now offers wealthy engineers an opportunity to celebrate the variety of identities their company embraces. In the workplace, that embrace may mean a more diverse set of em- ployees. Online, it means a larger, more varied set of communities and social experiences to mine."

</comment></comment><comment><USER4> Despite the emphasis on sponsoring the arts, a lot of SV promotional materials feel uncomfortably close to Soviet era propaganda posters to me

[https://www.google.com/search?q=soviet+propaganda+posters&cl...](https://www.google.com/search?q=soviet+propaganda+posters&client=opera&hs=agt&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwi_ntyGv43cAhWFN30KHZ5MDacQsAQIQA&biw=1366&bih=749)

<comment><USER5> I have told my coworkers that walking around in some sections of the office feels like walking around in Eastern Germany. Pretty much the same posters and also the obvious disconnect between the messages in the posters and reality.

<comment><USER6> I noticed this too. What do you think it means, in the context of the culture of SV?

<comment><USER7> This is a well-researched and frequently discussed topic in critical theory circles. What it means is not much up for debate anymore.

It means corporations have more in common with authoritarian regimes than is obvious. They are systematically cold and all-powerful, and merely acting out the typical series of behaviors that cold and powerful organizations act out. By definition, corporations have no social commitment to the society within which they operate and this seems to be at the heart of the issue.

Be careful to note the difference between authoritarianism and socialism. They do not favor one another. In fact, they are mostly in opposition if anything. Socialism concerns social and economic structures and authoritarianism concerns governmental structures.

You might like a book called _Brave New World_ by Audus Huxley. It's a science-fictional narrative that explores the potential of human society to succumb to these cruel structures.

</comment></comment></comment></comment><comment><USER8> It's been a while since I thought of this.

(More Javascript-y, now, but perhaps still the same registrant.)

[https://despair.com/collections/posters](https://despair.com/collections/posters)

A personal favorite, from a dark time:

[https://despair.com/products/burnout](https://despair.com/products/burnout)

</comment><comment><USER5> Is anyone else tired of the whole "inspiring" stuff? When a company does this I always think that's just a cheap way to squeeze more out of employees. I'd much prefer to be "rewarded" or "enabled" or "respected".

<comment><USER9> The things you list are not mutually exclusive.</comment></comment>


Why does the IT industry continue to listen to Gartner? - <AUTHOR> http://zdnet.com/why-does-the-it-industry-continue-to-listen-to-gartner-7000001394/

<comment><USER2> <http://news.ycombinator.com/item?id=4281781></comment>


Native, Ionic or React Native - <AUTHOR> https://medium.com/chris-nielsen/native-ionic-or-react-native-e6b20d366f6c <comment><USER2> Another thing to look at is nativescript. It is more or less an angular-based analog to react native.

I used react native to build a prototype (so thin experience here, it was just a prototype to compare between ionic, react native, and nativescript). It was okay, but felt a lot less complete and polished than ionic. There is some platform-specific stuff and the tooling isn't nearly as much fun. The ionic CLI is great. It made me a bit sad that I no longer need my hand-tooled complicated gulp scripts for express dev server, live reload, live rebuilds, and so on, but on the other hand, things work great out of the box. Tooling isn't nearly as good with react native or nativescript.

Also, the react native layouts are only mostly html. As in, there's some stuff that doesn't translate well. A well-laid-out react app could get ported across, sure, and react native will get you 90% of the way there, but the last 10% is a bit tricky. Flexbox, for example, isn't fully supported (or wasn't six months ago, life comes at you fast).

Ultimately, they're all worth a look, and I think the "which one should we use?" question is best answered by trying them all out and seeing what best fits your needs.</comment>


Profitable Startup Seeks Tech. Cofounder - <AUTHOR>

Hi!
I'm the founder of Helpjuice.com -- A knowledge base platform that helps companies deliver instant support to their customers.
We're profitable, we're growing and we need help.
If you're a rails guy that has a passion for UX, building things and scaling, I really want to talk to you.
I'm sick of being a solopreneur. It's really hard. Especially when you start losing deals with big customers as you can't keep up.
[Video pitch @ Demo Day: http://www.youtube.com/watch?v=DZso8AZ1QpQ]
=== About me: === * From Bosnia. Now in Austin, TX.
* Built a successful consulting company before I turned 18. Had many, many projects in the past.
* Love to hack (hacker + designer + hustler).
Please, drop me an email; firstname.lastname@example.com <comment><USER2> Congratulations on your success!

I recommend this article for tips on a less direct approach to seeking a cofounder:

[http://joel.is/post/15604799978/avoid-the-50-50-co- founder-m...](http://joel.is/post/15604799978/avoid-the-50-50-co-founder- model-heres-why)

<comment><AUTHOR> Thanks, Jonathan!

P.S.: Love what you're doing with HowSociable. Wish you the best.

</comment></comment><comment><USER3> I had a great telephone conversation with Emil last night re: my Offer HN post. He's very smart, down to earth and knowledgable.

This is a great opportunity if you're looking to found. He's already eliminated some risk and validated part of his market.

<comment><AUTHOR> Thanks Brian, it means a lot to me.

</comment></comment><comment><USER4> Your pitch @ Demo Day was very good. I'm curious to known if you've found the tech. cofounder you were looking for or not yet?</comment>


Coolpkg, a package manager inspired by Nix for OpenBSD - <AUTHOR> https://github.com/andrewchambers/coolpkg <comment><AUTHOR> author's comments at lobster.rs: [https://lobste.rs/s/edtn3z/openbsd_workstation_guide#c_9ivrg...](https://lobste.rs/s/edtn3z/openbsd_workstation_guide#c_9ivrg5)</comment>


Vulcanizer: A Library for Operating Elasticsearch - <AUTHOR> https://githubengineering.com/vulcanizer-a-library-for-elasticsearch/ <comment><USER2> Nice. I'd suggest also pulling out e.g. metrics and recovery progress. Also interesting to list aliases.

More dangerous, but useful would be running queries via chat as well. You could use the same syntax as the dev console in kibana for this.

</comment><comment><USER3> Oh yay, that's sorely needed.

This should help in writing a replacement for Curator. Curator is very handy and essential to many deployments, but also completely dumb.

</comment><comment><USER4> Repo link: [https://github.com/github/vulcanizer](https://github.com/github/vulcanizer)</comment>


"I am no longer allowed to be a Google user" - <AUTHOR> https://www.reddit.com/r/androiddev/comments/2jw9cj/as_an_android_developer_and_user_having_your/

<comment><USER2> I didn't see any explanation to why the dev account was terminated in the first place. Though it is true that Google "support" suck.</comment>


Neanderthals had outsize effect on human biology - <AUTHOR> http://www.nature.com/news/neanderthals-had-outsize-effect-on-human-biology-1.18086 <comment><USER2> Interestingly, if you use 23andMe's genetic analysis service, it'll tell you how much Neanderthal DNA you have. The average European has 2.7% (I have 3.2%).

<comment><USER3> Do they allow you to test your DNA anonymously? I have no interest in having a company linking my DNA analysis to my identity.

<comment><USER4> They don't want you to test another person's DNA without that person's permission.

<comment><USER3> Hm, that's reasonable.

</comment></comment></comment></comment><comment><USER5> In the article only the negative effects of Neanderthal genes are discussed. Is this because genetic datasets are mostly about gene/diseases correlations, or is it because the researchers did not analyze any gene/benefits datasets? The third option (all Neanderthal genes are bad) does not seem reasonable.

<comment><USER6> If there were notable positive effects, it would likely be danced around, because saying positive things about the groups with Neanderthal admixture is a touchy subject.

<comment><USER7> could you expand on that? I have never heard of anything like it.

<comment><USER8> The highest rate of Neanderthal admixture is in East Asians, but there is also a non-trivial rate (2-6%) in most Europeans. The admixture in sub-Saharan Africans is much lower, which creates a risk of any discussion of positive Neanderthal traits pulling in much broader baggage relating to race & genetics.

<comment><USER9> Fine, but who is eluding the discussions ? PHD in european universities ? The media ?

Is research on the subject tabooed and not encouraged ?

<comment><USER10> What strange planet have you teleported in from? Yes, research on the subject of race is taboo in Western Civilization. Not so much in Asia.

<comment><USER9> I come from Europe (eh).

You didn't answer: is that vetoed in public research program or is it the media or the philosophy undergrad who don't know how to deal with the subject and thus avoid it ?

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> I like the idea that Neanderthal genes helped Homo Sapiens spread, through increased resistance to diseases unique to Europe. Explains why their gene contribution is so prevalent - it directly contributed to survival in the new environment.

<comment><USER9> Maybe so but the article only mention diseases both genres suffered from and that are DNA related (asthma, skin disorders, etc.) with almost identical links to genes.

I'd venture to guess HS would have spread with or without Neanderthal genes.</comment></comment>


What is your optimal way of staying in touch with the world? - <AUTHOR>

Do you care to stay in touch? How do you stay current with the world? What topics to you follow and how? Is it the most efficient way or do you think their could be a better way? <comment><USER2> I'll answer your question to say I don't stay in touch with the rest of the world.

I live in a bubble, with the occasional outside news bit from facebook, Reddit, or overhearing a coworker...other then that, I live in this strange feedback loop of what I suppose is a very private life.

(And I'm someone with a child, who loves going to concerts or on vacations, has friends, but all of these things are 'contained', if that makes any sense)

</comment><comment><USER3> Using Bit of News [0]. Sends you a short daily summary of what's happening today.

[0]www.bitofnews.com

<comment><AUTHOR> is that all you use? how did you hear about it ?</comment></comment>


Doing Python Configuration Right (2019) - <AUTHOR> https://whalesalad.com/blog/doing-python-configuration-right <comment><USER2> I recently ran into a few roadblocks as well when trying to get my python applications set up in a true 12factor way, and I was surprised by how much I had begun to take for granted the ease of configuration that the Go library Viper provided. I went ahead and wrote a library [Gila]([https://gitlab.com/dashwav/gila](https://gitlab.com/dashwav/gila)) that implements a similar set of features that I think does a very good job of allowing for 12factor app building in python.

Specific to the article, my way of handling the issue of "turn everything into an environment variable" is to rely on the cascading feature of Gila/Viper and store sane defaults in code that only are overridden when need be. This allows for default values to be set, overridden by config files provided, and further overridden either by code or by ENV variables.

This would allow us to instead of having config written in python (something I usually try to stay away from) we could have it written in something like YAML or TOML instead and loaded in on the fly in each environment, while still allowing for overrides in either the code or by ENV variables.

I recently (last few months) have switched all of my python projects over to using Gila and I have been super impressed by how well the language itself lends to building dockerized 12factor apps when using tools made for that purpose - which is a sentiment I would not have had last year at this time.

[https://gitlab.com/dashwav/gila](https://gitlab.com/dashwav/gila)

[https://gila.readthedocs.io/en/latest/index.html](https://gila.readthedocs.io/en/latest/index.html)

I appreciate any feedback either the author or HN in general have as well.

<comment><USER3> Just lightly skimmed the docs, so I am probably missing something. Do all the consumers of gila config use the singleton class instance and just call gila.get() everywhere?

If I'm just focusing on how to make my code easier to read by my fellow developers, I would want to see something like this be based off of a dictionary-style API, that could be imported and used like so:

        import gila as config
        bucket_name = config["bucket_name"]

Since .get() is already so close to this API, I wonder if you considered this and rejected it for a specific reason?

<comment><USER2> First off, thank you for looking at the project and giving feedback - I really appreciate it!

\- Do all the consumers of gila config use the singleton class instance and just call gila.get() everywhere?

You can either use the singleton pattern (which is the recommended way of utilizing the library) or you can assign the Gila object to a local variable and ship it around your code (this would allow you to have two separate configurations at the same time). You could see that here: [https://gitlab.com/dashwav/gila/-/blob/develop/examples/mult...](https://gitlab.com/dashwav/gila/-/blob/develop/examples/multi- file-example/example.py#L39)

I also think striving for readability is the way to go when building code in general, and that is actually one of the reasons I opted to keep the `.get()` syntax! This may come down to personal opinions but I think that when the behavior of a library is fundamentally different than that of a base type like dict it should be explicit that a library is being used.

While dictionaries also have a `.get()` syntax I think that seeing `config['value']` would lead a developer to make the assumption that config is simply a dictionary, and this might lead to erroneous code whereas `gila.get("value")` (or even `config.get('value')`) will make it more obvious that this is not a dictionary but actually a library that is doing more than a dictionary under the hood.

As a final point this syntax keeps it closer to the Viper go library that I was inspired by and therefore eases the transition between the two should anyone have familiarity with either library.

</comment></comment></comment><comment><USER4> As someone who has been on call for applications with such complicated configuration logic, this looks like a treasure chest of future frustration.

One reason that 12 factor apps use environment variables to store configuration is because then you have a single source of truth on how your application is configured.

Using the principles of the 12 factor app, someone who had no hand in writing the code doesn't have to wrap their heads around whatever convoluted logical path your application takes to figuring out which Redis instance it will connect to, especially during an outage in which their priority is to fix your service as quickly as possible. They can in an emergency SSH into whatever machine is hosting your application or exec into the docker container and inspect the environment to have an almost complete picture of how your application is configured.

The "globals().update(vars(module))" line actually increased my blood pressure. Please show some consideration to your teammates that help you keep your applications running.

Have had nothing but bad experiences keeping apps running that used dotenv in node land and viper in go land. The 12 factor app people did not speak lightly.

<comment><AUTHOR> I agree with you 100%. There is nothing stopping you from using environment variables in these configuration files. I do it all the time, in fact. If you scroll down to real world examples I share a few examples, one is for connecting to Redis. (grep page for os.environ)

This approach is not mutually exclusive with 12-factor. It is complementary to 12-factor.

> They can in an emergency SSH into whatever machine is hosting your > application or exec into the docker container and inspect the environment to > have an almost complete picture of how your application is configured.

Totally agree with this too. I build apps with ops in mind and this specific realtime debug ability.

> The "globals().update(vars(module))" line actually increased my blood > pressure.

Being a little dramatic here, aren't we? Please elaborate on what is wrong here. I have been writing Python professionally for approaching 12 years, so I am very interested. It is certainly not something you would see every day, but this is not an area of the codebase you visit on a daily basis. Also, as a sidenote, I would strongly encourage you to look under the hood at some of your favorite/popular Python libraries. You'll vomit out your nose.

> Please show some consideration to your teammates that help you keep your > applications running.

I forklifted FarmLogs from Heroku to a homebrew Kube cluster in 2016, led operations and support with that tool (40 microservices around the time I left) all while continuing to be an IC and ultimately became the CTO. I have an extreme amount of consideration for others when building software (almost to a fault). Clearly I have some work to do on my writing.

> Have had nothing but bad experiences keeping apps running that used dotenv > in node land and viper in go land.

Yes. IMHO viper and dotenv strictly hobby tools that should be used for projects that involve a single developer and a single environment. I agree whole heartedly that they encourage bad practices and make things tough to debug and find.

I cannot tell you how many times I had to matrix my way into a running container and try to figure out what the fuck was going wrong. Let me tell you ... when you have a microservice that depends on 50 environment variables to _boot_ you are not going to be happy. If you can shove as much of that INTO the application as possible (without handicapping yourself or your fellow team mates in the production environments, losing flexibility in deployment target, etc..) why would you not want to do it? That is ultimately what I want people to gain from this.

<comment><USER4> Sorry if I was abrasive in my response. Let me address two of the points here:

>> The "globals().update(vars(module))" line actually increased my blood pressure.

> Being a little dramatic here, aren't we? Please elaborate on what is wrong > here.

and

>> Please show some consideration to your teammates that help you keep your applications running.

The reason I don't like this is that it first dynamically imports the right module and then implicitly sets global variables using the variables from that module using vars. This means that someone couldn't use simple greps or such searches to trace the logic through which a parameter was set (a go-to tool when debugging code someone else put into a docker container).

\- - -

> Clearly I have some work to do on my writing.

Your writing is good. I disagree with your approach to solving the problem. Willing to accept that my position is wrong, but am reluctant to do so since it's built on bitter experience.

</comment></comment></comment><comment><USER5> > One of my favorite Python features is the way that the files and directories > your application is made of map one-to-one with how you import and use them > in code.

Funny to see this stated explicitly in this way. In my opinion, this is one of Python's biggest flaws (I'm a big fan of everything but the module system). Paths to files on disk should be treated as string literals, not magic unquoted strings that look like they're language keywords.

You can easily end up in situations where a directory in your project's tree has a name conflict with some library, and this causes issues, which is mind- bogglingly bad design (incidentally: also not a one-to-one map). If you don't live and breathe Python, and accidentally put a hyphen in a filename, God help you.

<comment><USER6> There's also the thing where you used to need to have a magic __init__.py file for a folder to be a considered as a module, but now it's optional, although I still have no idea what the formula is for when Python decides something is a module…

<comment> globular-toast It's not really optional. There's just this new thing called namespace packages which is not quite the same. I don't fully understand what it's for yet.

<comment><USER7> Namespace packages let you ship `foo.bar` and `foo.baz` separately. `bar` and `baz` are really two separate packages that are both part of the `foo` namespace. `foo` is not a real package.

They are not new but _implicit_ namespace packages are new-ish. Before 3.3 it was more complicated to set up, now you just omit __init__.py from `foo`.

I don't see any reason to use this if `foo` is shipped as a single package.

<comment><USER6> If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

</comment></comment></comment></comment></comment><comment><USER8> In a cloud native world, code should not be aware of the environment. I don't see a reason to have multiple files per env and not just different configuration. This kinda of creates a mental model against true configurability.

The solution with multiple files actually goes against the 12fapp

"Sometimes apps batch config into named groups (often called "environments") named after specific deploys, such as the development, test, and production environments in Rails. This method does not scale cleanly"

<comment><AUTHOR> Nothing is black and white. There is a multi-dimensional scale that your application will land on. The dimensions might be static (yaml) versus dynamic (py) or all data stored outside the app (ENV vars only or similar, devout adherence to the 12 factor religion) versus storing config 100% in your app.

If you plotted those axis' on a four quadrant grid you'd be able to draw a little dot somewhere on it for your particular app. Your app is not my app. My apps are not always the same, either. My personal blog for instance has a far simpler configuration than the tools I build for my clients.

"In a cloud native world, code should not be aware of the environment."

This is a dogmatic fallacy. There are tons of reasons code should be aware of its environment. The problem is that most people are unable to agree on what "aware of its environment" actually means. I do not agree that my code should not know what the staging or production environment is. This is _literal_ devops! Developing and building your application/system with the logistics of shipping it in mind.

When the dust has settled from configuration arguments the most important thing you can do when designing your application is to first replace the word "application" with the word "system" in your mind and begin to think about it as a system. The system contains subsystems: config, persistence, presentation, blob storage, logging, etc... and all of these are self- contained and isolated units that start and stop for their own unique reasons during the app/system lifecycle. If you design things to allow for this decoupling, the right approach for configuration will manifest itself.

</comment></comment><comment><USER9> Author claims frustration with Django's settings, only to re-implement it almost exactly. How is ENV=production any different from DJANGO_SETTINGS_MODULE=myproject.settings.production?

Sure, by default Django may create a single settings.py, but common practice is to split that into a settings package, containing a base settings module for common settings, and other files for different scenarios, say "development" and "production". Either / all of them can load secrets etc. from the environment, so the "production" settings file is probably better thought of as "deployment" settings, when supporting multiple deployed environments e.g. staging and production.

<comment><AUTHOR> I don't like to build applications that are 100% coupled to a framework. In my ideal world, Django (if it is being used) is just one puzzle-piece of my application.

Then again it will depend greatly on the surface area of your application. A small app will do fine with a single configuration file or the DJANGO_ approach, but a larger application deserves its own config.

</comment></comment><comment><USER10> Applications that load their configuration different depending on "dev/staging/prod" environment are one of my greatest enemies. It's a bizarrely common pattern that creates a whole level of confusion, miscommunication, and errors in figuring out the configuration of applications running on developer computers, in testing, and in production. Even better, since one of the sets of configuration is usually obtained from file or env vars, there's no clear advantage over not having this switch at all. So you sometimes end up with one of the environments used in all cases, often "dev" because that's the one the developers started using.

Your configuration paradigm should be: simple. Environment variables are probably preferable because they're widely supported by different tools (on account of being a "12 factor app" thing for whatever that's worth), but I'd say a file is also just fine, so long as it's easy to figure out where it's being loaded from (I don't want to see any "configuration is merged from files found at the following five paths and then overridden with environment variables..."). The chief concern in operations is being able to quickly and easily determine the set of configuration in use, and strangely enough, developers appreciate this too.

The overhead saved by having some "dev/prod" switch or override scheme is really not overhead at all, if you set one environment variable in your dev/test/prod infrastructure you can set ten.

<comment><AUTHOR> > It's a bizarrely common pattern that creates a whole level of confusion, > miscommunication, and errors in figuring out the configuration of > applications running on developer computers, in testing, and in production.

This stems from not having one person or one team design the entire configuration system that will support the entire application.

All the mayhem you are referring to is certainly possible. I have experienced it too. But I would posit that this is not due to having 'named environments' but rather just a poor implementation with no leadership.

<comment><USER10> I would disagree with you, in that I encounter this exact problem with first- party software on a team of three. Yes, anyone with total knowledge of the configuration system can figure out the configuration state, but my point is that it should be as easy as possible without any complications - because in practice, even if "everyone knows everything" many mistakes and inconsistencies are introduced.

<comment><AUTHOR> This is one of those things that is tough to discuss wihtout really seeing code. We might be talking about two different things right now. I can certainly understand the issue you are discussing, but I feel like I have been able to avoid it with this approach.

Another thing that I did not put in the post but that I tend to add-in to this concept is a 'dump my env' function. I will occassionally bundle this up and write it out when certain relevant issues or crashes happen.

        def get_snapshot():
            """
            Provides a snapshot of the current system configuration.

            """
            return filter_dict(vars(module), exclude_predicate)

Very handy. From my ipython shell I can just hit config.get_snapshot() and understand the state of the world.

</comment></comment></comment></comment><comment><USER11> I've been using Dynaconf: [https://github.com/rochacbruno/dynaconf](https://github.com/rochacbruno/dynaconf) for application configuration, and it's been quite pleasant.

It has various options for cascading configuration sources, such that it makes it relatively straightforward to build a hybrid approach in the event that you're attempting to migrate from a file-based config system to a more modern 12-factor approach.

At one point I needed to write a custom config source for Amazon Secrets Manager, and it proved quite easy to implement. Perhaps I should open source that…

</comment><comment><USER12> The whole "env is figured out behind the scenes and work is done to autofetch the correct values to load into the CONSTANT_CASE variables you import all in one line" thing seems to be a pretty clear violation of "Explicit is better than implicit."

In my experience the productivity you gain from such abstractions is negligible compared to the complexity they add to your code.

</comment><comment><USER13> If it's one thing I find about working efficiently with Python development and execution env, - it's that you should plan for its configuration from day 1 to accomodate items like multiple python versions and to have a well defined idea of what you need (e.g. is python + pip installation enough or do you want to utilize anaconda).

</comment><comment><USER14> I don't get how this can be used anywhere except when you have 2 deployment targets which seems really limited.

Also checking for environments is done weirdly, why not use

if 'ENV' not in os.environ:

instead of

ENV = os.environ.get("ENV", None)

if ENV is None:

<comment><USER15> Maybe just a habit, that way you don't have to repeat the literal "ENV" twice. In this case it doesn't matter much though.

Also it's a bit better from the performance perspective (but not that it also matters in this case).

<comment><USER16> >(but not that it also matters in this case)

Then why mention it?

</comment></comment></comment><comment><USER17> The python environment story has led me to the conclusion that it's not really suited for serious production software.

I was recently onboarded into a project which is using Python in a server-less setting, and when my colleague walked me through the concept of setting up a virtual environment for each one of my python projects I could not really believe it. It seems like you practically need to containerize a python code- base to make it repeatable.

<comment><USER18> I used to think that, end then I just realized that this is really just Python showing its roots as a relatively old programming language with Unix roots.

C and C++ have a a fairly similar problem with dependency hell due to shared libraries being installed in a single system-wide location. They have their own hacks for getting dealing with it. I don't know which way of doing it is technically superior, all I know is none of them offer a developer experience that I'd choose for myself if I were designing a new programming language in this day and age.

FWIW, I give Python some credit for coming up with a solution that doesn't rely on containerization, and therefore will work consistently on many OSes, and not just Linux. Containerization is an option, too. It's really down to whether you need a system that works for one language on many OSes, or one that works for many languages on one OS.

Or, if you'd rather keep it really simple, there are zipapps, which are Python's answer to fat binaries. Similar to uberjars in Java. Or to good ol' static compilation in most the languages I like to use even when someone isn't paying me to do it.

(That said, there is one thing about environment management in Python that absolutely drives me up the wall: There are more than a fistful of competing tools for doing it, and a zillion different ways to work with them, and no clear preferred way. Which sucks for everyone, and makes learning the ropes without a good mentor way more of a chore than it needs to be. That's not too far off from C, either, though.)

<comment><USER19> > There are more than a fistful of competing tools for doing it, and a zillion > different ways to work with them, and no clear preferred way.

Generally, newer projects are settling around Poetry.

<comment><USER20> There is a good chance it will be something else in a few months.

<comment><USER19> It's stuck around for the last year. Pyproject.toml is standardised.

</comment></comment></comment></comment></comment><comment><USER21> It's been a while since I've been relying on environment variables per- configuration key. I haven't defined profiles such as dev or production for a really long time, with Django projects in particular. I have collected a handful of little secrets that I can share with you.

I do have if DEBUG: based switch all along my settings file, and enforce DEBUG=True in manage.py at the same time: in manage.py set os.environ['DEBUG'] = '1', and in settings.py DEBUG = bool(os.getenv('DEBUG', False)).

My objective is that when a new developer clones the repo, and runs ./manage.py runserver or shell, it will load with all development settings by default.

In theory this could cause the problem that running manage.py commands in production would run them with DEBUG=True. I tried that, and in practice this turned out to never be a problem. But this could certainly bite you if you're not careful.

In particular, I also spread env vars in two config files: docker- compose.persistent.yml for persistent deployments, and docker- compose.ephemeral.yml for ephemeral deployments.

To complete that, because I don't want to store secrets in the git repository, I do have things like that to load multi-line environment variables in CI:

        - export $(echo $PROD_EMAIL_SETTINGS | xargs)
        - export $(echo $PROD_ENV | xargs)
        - export $(echo $PROD_SOMEAPI | xargs)

So for example, in PROD_EMAIL_SETTINGS I have a a multiline value with EMAIL_SOME_SETTING=something for every setting that settings.py will fetch from the environment to provision the Python email settings.

And if I want the production email server settings in staging and production, I can load the set of variables that configures for the production email server with that single line.

Anyway, for me the best setting profile management, is no profile management at all: local clone should have development settings by default and just work with 0 config, configuration for deployments in compose files for non-secrets, in CI vars for secrets, and I should be able to easily decide if I need any of the settings that are in production to develop something in which case I end up building a custom profile with environment variables (ie. to debug a blackbox such as a partner API) just "for the time being", for example I have dumped the blackbox request/responses and then build up my unit tests based on that.

I'm extremely happy with that trivial setup that I have in a bunch of projects now for the last years, I thought that's what everybody who's not using a profile-based system was doing, I thought that was the essence of 12factor/config, at least that's what I understood.

<comment><AUTHOR> Mitigating human errors is certainly important. The brittle nature of your onboarding story is exactly why I wrote this post and encourage the practice in it.

Larger apps that I deploy have a development.py.example file that people can copy to development.py (or fredsmith.py, madonna.py, it doesn't matter. These would not be checked-in to Git)

Then all I need to do before running anything in my project is prefix with ENV=fredsmith.

As a team we could settle on a different name for this variable. We could all have our own environments. We could even decide, as a team, to check them into Git so that we can all see each others config in case there is an issue.

<comment><USER21> Copying a file is a manual step, that's the kind of step that I strive to remove from workflows I provide to others.

Using different names for the same thing across different teams also looks like something I'd typically strive against.</comment></comment></comment>


Tufte CSS - <AUTHOR> https://edwardtufte.github.io/tufte-css/ <comment><USER2> I used a modified version of Tufte.css (forked years ago) for my website[0]. I love the way it works for the longish posts I wanted to make but Tufte's ideas are not without their problems when converted into a web page.

The design really works best in landscape mode. Portrait "works" but the sidenotes interact with the main text and each other in annoying ways. This sometimes makes writing documents harder than it should be since I have to test the output in both Landscape and Portrait to make sure it doesn't look terrible.

This somewhat defeats my goal of having a nice clean markdown->styled html workflow. I often have to make small changes to get things looking OK.

That said, I am very happy with the overall look and functionality of the style.

[0] An example page: [https://sheep.horse/2017/4/so_you_want_to_start_an_unpopular...](https://sheep.horse/2017/4/so_you_want_to_start_an_unpopular_blog.html)

<comment><USER3> I wonder if there's a way to move the footnotes to the bottom of a section when the display is narrow...

<comment><USER4> I _somewhat_ solved this problem with my Jekyll theme based of Tufte CSS[0]. Not perfect, but it just places the marginnote below it's corresponding element.

[0] [https://et-jekyll.netlify.app/et-jekyll-theme/](https://et- jekyll.netlify.app/et-jekyll-theme/)

Edit: I realize you are referring to "footnotes" and not margin/side notes, but I believe you could use the same method.

</comment></comment></comment><comment><USER5> Good ideas here. I don't think that the hack to produce attractive underlining for links is any longer necessary, as recent versions of major web engines seem to render underlining in the style that he's going for by default. Am I wrong?

<comment><USER6> I use the Tufte-CSS underlining on gwern.net and noted the recent announcements, which I thought would simplify the CSS nicely.

But the support is still less than the 95% or so of users that most people try to support, and there are still glitches and bugs with them. Given that you'll have issues with the new skip-ink stuff and probably will have to include fallbacks, why bother with the churn? Maybe in another few years...

</comment></comment><comment><USER7> There's a minor, but longstanding, problem with the ETBembo/ETBook font in use. Any contributions toward fixing it would be helpful: [https://github.com/edwardtufte/et- book/issues/20](https://github.com/edwardtufte/et-book/issues/20)

</comment><comment><USER8> Thanks, this looks beautiful and simple to use.</comment>


New dutch euro uses free Google web font  - <AUTHOR> http://fontsinuse.com/uses/5105/dutch-euro-coins-2014

<comment><USER2> This might be more surprising if the fonts on Google Web Fonts were somehow exclusive to them, but the news here seems to be that someone used a free typeface on a coin?</comment>


15-second ads coming to Amazon's Alexa - <AUTHOR> https://arstechnica.com/gadgets/2017/05/amazon-alexa-ads-voicelabs/ <comment><USER2> My understanding is that this is a 3rd party that may even be breaking Amazon's own rules so this may not come to fruition. Also it would be tied into a Skill so you can just stop using annoying Skills.

Alexa is already too "wordy" though. Many error messages and other responses need to just shut up and use fewer words or be changed to a sound effect. If an ad or any other piece of voice lasts 15 seconds, that _sucks_ on this platform and even advertisers should understand this.

I am reminded of old Star Trek series and I am always laughing at voice interfaces. The ship is accelerating out of control and is about to explode, the crew is asking the computer for VITAL information that should be provided as soon as possible, and yet the voice babbles something like: "Warning, at risk of structural failure, at current acceleration, the ship will explode in 15 seconds" (most important detail last, and the computer used up 10 of your final seconds just speaking it to you).

</comment><comment><USER3> Was concerned that this was Amazon injecting ads into every skill or interaction.

This is actually just a new ad sdk for skill developers.

So this is only for third party skill devs who want to monetize their own skills.</comment>


'Space-time cloak' to conceal events revealed in new study - <AUTHOR> http://www.physorg.com/news/2010-11-passage-invisible-illusion-star-trek.html <comment><USER2> The title of this paper could use some work. Either that, or the space-time cloak has worked as advertised and has successfully concealed the events which are revealed in the new study.

</comment><comment><USER3> It appears to involve a pop-up offering to let me download Google Chrome. I should have known the Googlers would be in on this...</comment>


Craig Wright Who Claims to Be Bitcoin Inventor Registers Copyright for Its Code - <AUTHOR> https://www.bloomberg.com/news/articles/2019-05-21/bitcoin-s-supposed-inventor-says-he-won-copyright-registration <comment><USER2> Note this, important, quote from the article:

"The Copyright Office, they typically don't scrutinize if he is a true author, it's more of an administrative process," said Michael Cohen, an intellectual property lawyer in Beverly Hills whose clients include corporations and entrepreneurs. "They typically grant it if it meets the minimal requirements."

</comment><comment><AUTHOR> The registration is available on the Library of Congress website [0].

[0] [https://cocatalog.loc.gov/cgi- bin/Pwebrecon.cgi?v1=1&ti=1,1&...](https://cocatalog.loc.gov/cgi- bin/Pwebrecon.cgi?v1=1&ti=1,1&Search%5FArg=wright%2C%20craig&Search%5FCode=NALL&CNT=25&REC=0&RD=0&RC=0&PID=5KnODdnFwT4iEYzw9JjqF1mcciN&SEQ=20190521171219&SID=1)

</comment><comment><USER3> Duplicate

[https://news.ycombinator.com/item?id=19970108](https://news.ycombinator.com/item?id=19970108)

</comment><comment><USER4> That should have been the first thing he did. Hindsight.</comment>


FCC Commissioner leaves for Comcast - <AUTHOR> http://news.cnet.com/8301-30686_3-20062054-266.html

<comment><USER2> The level of corruption here is just depressing. And not just for consumers — might tech companies or telcos come out behind when they're dealing with cable companies? Although sadly this is the sort of thing that happens in other industries be it defense or Wall Street.

</comment><comment><USER3> Well, this is not much new here, is it? FCC Commissioner leaves for Comcast. DARPA program manager leaves for Lockheed Martin. Senator leaves for or sets up a lobbying firm. Federal reserve personnel leaves for Goldman Sachs (or vice versa).

It is the people they know (Network) that is valuable in all these cases... Potential for corruption? Yes. Illegal? No.

EDIT: Of course this is very unethical and am not supporting this by any means. Am just stating as a matter of fact that this nexus is very prevalent, almost legalized. In many cases, such job changes are considered a natural career progression...

<comment><USER4> Illegal, no. Unethical, hell yes! I wrote to Comcast corporate, FCC, and the DOJ. Not that it will do any good but at least the urge to punch the wall has almost gone away.

<comment><USER5> There are laws that restrict her from lobbying current FCC employees and even staffers in and around the regulatory body. However, these cross-overs are still too common, meaning the restrictions in place probably aren't strong enough.

</comment></comment></comment><comment><USER6> Because I find this topic interesting, this just fell off the front page: <http://news.ycombinator.com/item?id=2538565>

Edit: After approving NBC buyout, FCC Commissioner becomes Comcast lobbyist (arstechnica.com) is the title.

</comment><comment><USER7> That's funny, I could have sworn she already did work for them...

</comment><comment><USER8> Looking at the NBC-->Comcast transaction, was there anything approved by the FCC that might be improper? I think the FCC Commissioner leaving to work for Comcast is improper, but don't see anything about the NBC transaction that is suspicious. [http://www.reuters.com/article/2011/01/18/nbc-comcast- idUSN1...](http://www.reuters.com/article/2011/01/18/nbc-comcast- idUSN1824165520110118?feedType=RSS&feedName=technology-media-telco-SP&rpc=43)

</comment><comment><USER9> On the bright side, at least she isn't in the FCC, biasing the decision with more corruption, right?

Or has the damage been done, and is irreversible?

<comment><USER6> Except he is a she, and she[1] is married to the son of former chief of staff, James Baker[2].

[1]<http://www.politico.com/news/stories/0511/54765.html> [2]<http://en.wikipedia.org/wiki/James_Baker>

<comment><USER9> Good find.

Guess the revolving door never stops.

</comment></comment></comment><comment><USER10> A missed revenue opportunity?

<http://pajamasmedia.com/instapundit/118348/>

</comment><comment><USER11> sigh.. another day in washington.

</comment><comment><USER12> OT: While looking at this month's home Comcast bill, I did the math: It's gone up about 24% since the end of last year. As best as I recall, this has been in three stages, each a month or two apart. I've made absolutely no change in my service. (Internet, and basic cable -- the latter because basic cable introduces a discount to the Internet pricing that makes the final bill about the same.)

At this point, were there any effective regulation, I would expect local and state level officials, if not national, to be beating down their door. Instead, they get NBC as some sort of prize.

At the time I signed up, Comcast was my only option. (AT&T couldn't be bothered to upgrade their system to reach the extra mile to my community of several thousand. [1]) I hate AT&T with a passion -- a hatred born of long- standing, historical as well as current experience. But I may switch, simply to try to apply an iota of pressure by qualifying for introductory pricing.

(By the way, the quality and maintenance of Comcast's local cable signal has gone to hell since the digital conversion. They appear to put zero time/effort into it, and they constrain the upstream bandwidth to the point where channels become unwatchable due to low frame rates and pixelation. Additionally, channels will "freeze" and take the better part of a day before somebody bothers to "unstick" them.)

\--

[1] And as a result, the best offer I could get from another DSL provider, e.g. SpeakEasy (IIRC) or some well-regarded local/regional outfits -- of the few who were willing to try -- was a $200 installation fee and no guarantee that it would work. And the joy of their trying to coordinate this with AT&T.

</comment><comment><USER13> Fascism, the boot that keeps on stomping on your face.

No wonder there is no competition in local markets for internet access or cable.

America, the founding fathers took corporations rights away, whore lawyer Lincoln gave them back in spades, and people have been getting screwed ever since.</comment>


Best bank account for startups? - <AUTHOR> We're an early stage (pre series A) start-up bootstrapping ourselves with some early traction with our beta product. The product is a SaaS platform, so payment processing is important. We are located in NYC. What is the best bank to set up an account with? <comment><USER2> I don't think a startup's requirements are that unusual - a typical bank account + Stripe for processing should serve you well.</comment>


Allen Integrated Cell is a powerful tool for visualizing biology in 3D - <AUTHOR> https://techcrunch.com/2018/05/09/allen-integrated-cell-is-a-powerful-tool-for-visualizing-biology-in-3d/ <comment><USER2> just saw this; I'm part of the computational modeling team that worked on this -- can try to field any questions or find more qualified people to do so.

<comment><USER3> This is probably going to be a lot, but...

1\. Would you advertise this tool as a visualization to help with future research and understanding cells OR a possible diagnostic aid?

2\. Is there any project that aims to apply these tools to find changes in cells of an aging organism? Do you think that would be useful?

3\. Is it possible to figure out for any given class of cell how much of its volume is understood? e.g. "there's this little part and we have no idea what's going on there" or "this protein is everywhere and we can't figure out what it does".

4\. How can you evaluate the correctness of your probabilistic model? Neural nets and auto-encoders are known to produce bad results. as an exaggeration, you wouldn't want to have this as your model of human face: [https://zo7.github.io/img/2016-09-25-generating- faces/random...](https://zo7.github.io/img/2016-09-25-generating- faces/random-1.jpg)

And thanks for publishing the source code for training!

<comment><USER2> 1\. All of the above. The label free tool in particular gives you such a big free lunch at the microscope that the combination of it and good visualization has the potential to massively impact research workflows.

2\. We are very interested in how cells change as they divide, differentiate, age, are perturbed by their environment, etc. We study cells in culture right now -- getting good images of in vitro cells from multicellular organisms is way harder. So yes it would absolutely be useful. I don't know if we're going to tackle it ourselves, but one of our core missions is to lay the groundwork for the community to take our tools and run with them -- it's a big win for us if we can bring previously unfeasible research within the realm of the possible.

3\. I am a Bayesian at heart, so modeling uncertainty is something that I'm always thinking about. It's high on my list of priorities to do something along these lines.

4\. Image similarity is a hard problem. At the end of the day, metrics only get you so far and the proof is in the pudding. Unfortunately there is no ground-truth data to test against -- the probabilistic model was constructed exactly because we can't measure where everything is all at the same time. Some things we do to convince ourselves that we're on track is to see that the variation in the imputed predictions and the actual data are statistically similar, and to see if experts are confounded in differentiating the outputs of our models from actual data. You can read more here [https://www.biorxiv.org/content/early/2017/12/21/238378](https://www.biorxiv.org/content/early/2017/12/21/238378)

</comment></comment></comment><comment><USER4> this model says mitochondria are clustered around the nucleus which is not what i see in the microscope

<comment><USER2> Characterizing cellular variation is exactly what we're interested in, e.g when and why are the mitts clustered around the nuclear vs not. Lots of images in our data have them packed around the nucleus -- you can look at the localizations from our microscopes here (select the Tom20 tag): [http://www.allencell.org/3d-cell- viewer.html](http://www.allencell.org/3d-cell-viewer.html) here. You can also grab the raw data (including bright field images e.g. what you would "see" in the microscope) here [http://www.allencell.org/data- downloading.html#DownloadImage...](http://www.allencell.org/data- downloading.html#DownloadImageData)</comment></comment>


Seymour Hersh on spies, state secrets, and the stories he doesn't tell - <AUTHOR> https://www.cjr.org/special_report/seymour-hersh-monday-interview.php/ <comment><USER2> Seymour Hersh's reputation has declined precipitously in the years since he was rightly hailed as a hero for breaking the Abu Ghraib story. He was pummeled for publishing, in the LRB, an all-but-refuted story claiming that the entire story about the assassination of Osama Bin Laden was a lie (he relied on the secondhand story of a retired, anonymous defense department employee for his sourcing; his home publication, The New Yorker, refused to run it).

He's promoted a number of other stories that, to put it gently, an unusual quotient of support-among- journalists over impact-if-true. Among them, he believes that USSOCOM is run by a secret cabal of Opus Dei Catholics, and that the Syrian chemical attacks aren't just false, but actually a false flag operation run by Turkey. He believes that the US actively supports Islamist terrorists in Iran and in Lebanon, and that the US trained Iranian terrorists (the anti-regime MEK) on US soil.

This isn't a new wrinkle in Hersh's career. Early on, he made outlandish claims about the Kennedy administration, including that the Chicago Outfit fixed the result of the Presidential election.

Two tricky things about Hersh are first, and most obviously, that he occasionally breaks a story of immense national importance, and secondly, that he tends to orient his reporting in directions that are both largely valid and under-reported. Kennedy was almost surely one of our more crooked presidents. The Bush administration probably did play some kind of footsie with the MEK. But that doesn't make any particular story he reports actually true; in journalism, you can't just end up in the broad vicinity of right.

<comment><USER3> Note that the former head of Pakistani intelligence, Asad Durrani, whose country housed Bin Laden when Seal Team Six did the dispatch - has the same story that Hersh does.

None of these things seem particularly unbelievable. Having researched a number of National Security issues intensely (eg Syria) this all fairly believable. That's just his "lowlights". His publication record thus far has been nothing short of impressive. And, really, you can't imbue anybody with too much faith that they only report absolute objective truths. I don't think even Hersh would recommend that. Certainly this interview he suggests that he doesn't report on a lot of stuff because he isn't sure if it's CIA smoke and mirrors.

Compare this to cable television, which gets the narrative wrong almost constantly, and dumbs everything down so that it lacks substance.

<comment><USER2> Asad Durrani is Hersh's one named source.

<comment><USER3> An incredibly good source, isn't it? That on top of the consistent details provided by his unnamed sources, and the corroboration that's surfaced since.

<comment><USER2> The director of ISI in 1992, retired for decades (plural) at the time the story ran? No, not an especially good source. Also, he appears to have changed his story since Hersh reported it.

</comment></comment></comment></comment></comment><comment><USER4> _You write that you knew about atrocities during the Iraq War, including Americans destroying with acid the bodies of detainees who had died during torture. But you didn't report it because Cheney would have destroyed your sources._

Wow! That is information I have never heard before.

<comment><USER5> I wouldn't take it for granted that he's telling the truth on that. He has been riding on My Lai credibility for so long, but some of his recent stuff such as his piece on how the OBL assassination went down is completely wack.

<comment><USER6> > is completely wack.

Truth is stranger than fiction and a journalist only lives by their credibility. He wouldn't publish it if he didnt think it was solid.

<comment><USER2> There are reputable journalists of statute besides Seymour Hersh, and I think you'll have a hard time finding one that believes Hersh's claims about UBL. That people on message boards find him convincing doesn't tell us much; there were people on HN who believed PizzaGate.

<comment><USER7> Also had a harm time finding a scientist at NASA willling to support the foam strike hypothesis. Semmelweis showed hard evidence of the efficacy of hygiene in saving lives, but was an absolute pariah, literally driven into a mental hospital by his critics. There was a Nobel given to a physician for the lobotomy procedure.

Point is if you just trust the methodology of using groupthink to determine righteousness you will get some things wrong. And it gets really bad once we venture away from scientific fields. You can see in history people's psyches sometimes coalescing around acceptableness of some pretty horrendous ideas like inquisitions, holocausts, abu ghraibs, etc.

<comment><USER2> This seems like an argument that comes pretty close to saying we should disregard all expertise and stature, except for your preferred sources.

<comment><USER8> You are being offered the chance to claim the titles of NSA _and_ NASA shill here.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> " _I was told within two months not to put anything in the computer by somebody who was still inside working for Cheney. And I said, "Oh, god." I said, "Don't worry about it. I'm not going to connect it to the internet." He says, "You're not listening to me." I said, "No. Fucking. Kidding." The guy said I couldn't protect him._ "

What?

This interview is not well written.

<comment><USER10> No it explains why Putin's top staff has gone back to using typewriters.

[https://www.theguardian.com/world/2013/jul/11/russia- reverts...](https://www.theguardian.com/world/2013/jul/11/russia-reverts- paper-nsa-leaks)

Course if NSA can decode speech from just the vibrations of a window how much longer will it take for them to know which key you just pressed on a typewriter?

[https://www.theverge.com/2014/8/4/5968243/mit-turns- recorded...](https://www.theverge.com/2014/8/4/5968243/mit-turns-recorded- vibrations-back-into-speech-and-music)

<comment><USER11> I though that tech was actually quite older, like that it was born just after masers got well powered and mobile

[https://en.wikipedia.org/wiki/Maser#Uses](https://en.wikipedia.org/wiki/Maser#Uses)

</comment></comment></comment><comment><USER12> Matt Taibbi had a well written piece on Seymour Hersh in the Rolling Stones. [1]

The world is a worse place if values are shown to be hollow and lacking substance. There will always be some real politik but between surveillance, dubious wars and neoliberalism the democracy project is in tatters.

Jingoists will defend everything but there is a great responsibility on the the general public to hold their governments to account. If not there will be no credibility and no moral high ground from which to operate, and that's a serious loss that cannot be regained. It's already significantly diminished.

[1] [https://www.rollingstone.com/politics/features/seymour- hersh...](https://www.rollingstone.com/politics/features/seymour-hersh- reporter-w520927)

</comment><comment><USER13> Another interesting story broken by Hersh: Vietnam's My Lai Massacre. Video interview at [https://investigatingpower.org/vietnam- war/](https://investigatingpower.org/vietnam-war/)

</comment><comment><USER14> Great interview, really excited for the book.

</comment><comment><USER15> > In the book I'm writing, I can segue into this stuff; I'm writing a lot > about what was going on in the FBI. There was a lot going on that was > counter-Trump, I will tell you that. I'm telling you, it's the missed story > of all time.

Any idea (or even guess) about what he's talking about here?

<comment><USER16> He would have to be referring to anti-Trump people within the FBI (not necessarily the entire FBI working together).

I don't really know what else it would mean.

</comment></comment><comment><USER17> As much as he was terrible for the country, I find it hard to believe Dick Cheney would have sources whacked.

<comment><USER18> But getting imprisoned, certainly [https://www.theguardian.com/world/2013/may/30/cia- whistleblo...](https://www.theguardian.com/world/2013/may/30/cia- whistleblower-john-kiriakou-open-letter-prison)

<comment><USER2> Kiriakou was not imprisoned for ratting out Dick Cheney and his status as a "whistleblower" is contestable.

[https://news.ycombinator.com/item?id=5796162](https://news.ycombinator.com/item?id=5796162)

</comment></comment></comment><comment><USER19> Good old Hersh has been in war crime denial business lately. In particular denying Khan Sheikhoun chemical massacre, which was attributed to Assad by UN JIT/OPCW.

<comment><USER20> I suspect I'll get downvoted for this by people who believe our media, but I think with some critical thinking it's possible to at least realize the possibility that the UN JIT/OPCW may be influenced to the point of bias by the US and its allies.

Many smart people around me have asked, what would have been Assad's motivation to bring down the wrath of the US on himself at a point when he's winning the war? What is the US doing in Syria without an invitation by the Syrian government, supposedly "fighting terrorists" but against the government? Why does the US have the right to constantly invade other governments it doesn't like because "they're not legitimate"?

Assuming the US was the size of Connecticut and had no nuclear weapons, it would be easy for a power like China to take the domestic unrest after the Bush, Trump, or any of several other elections to claim that the US has become a dictatorship and they need to occupy large parts of our territory to ensure freedom. Then assume that somehow that tiny US manages to start winning against the China-supported "insurgents". Then suddenly, out of nowhere, with the war turning in favor of the US, the US uses some chemical weapons on civilians and brings down international condemnation on itself. Who wouldn't be skeptical?

But our government has done a great job of making every other country in the world and its government seem suspicious, so it's easy for many of us to think it's perfectly reasonable that Assad is a crazy person who doesn't want to live past next week, and so is perfectly happy to use unnecessary chemical weapons in a war he's already winning, with a major global power backing him.

Some of the people who were even in the video showing the "chemical attack" have said that they were not attacked with chemical weapons. Those witnesses have been dismissed as "Russian propaganda". See for yourself, the "Russian propaganda" and a US-friendly media source denouncing the Russian propaganda.

[http://www.abc.net.au/news/2018-04-27/russia-presents- allege...](http://www.abc.net.au/news/2018-04-27/russia-presents-alleged- syrian-witnesses-to-opcw/9702128)

[https://www.rt.com/op-ed/428514-douma-civilians-chemical- hoa...](https://www.rt.com/op-ed/428514-douma-civilians-chemical-hoax/)

By the way, there are plenty of people in the US who have criticized this overall US strategy for a long time.

[https://www.amazon.com/New-Military-Humanism-Lessons- Kosovo/...](https://www.amazon.com/New-Military-Humanism-Lessons- Kosovo/dp/0745316336)

But I suppose people on both sides of this debate will think that the other side is just believing the "obviously wrong" propaganda of the other side.

<comment><USER21> This type of thing is always presented as 'if you don't believe us, you must believe the evil doers!'. Anyone with half a brain will not believe our side and the other side.

<comment><USER22> Thinking in terms of "our side" and "other side" is part of the problem I think. I may pay taxes to one of the involved parties, but that's not a rational reason to root for that side like it was my preferred sports team. It's "my" side only in a very abstract and indirect sense, through some sort of democratic system and accident of geography, but I shouldn't let either of those bias my analysis.</comment></comment></comment></comment>


Why Lisp macros are cool, a Perl perspective (2005) - <AUTHOR> http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.html# <comment><USER2> Source filters are bad because you get a string and parse it yourself and then get it wrong for edge cases. What if Perl already parsed a piece of source for you and handed you a data structure instead? That fixes the greatest shortcoming.

Solution 1: B::Deparse <[http://yapceurope.lv/ye2011/talk/3597>](http://yapceurope.lv/ye2011/talk/3597>), <[http://act.yapc.eu/gpw2014/talk/5266>](http://act.yapc.eu/gpw2014/talk/5266>) Solution 2: B::CallChecker / <[http://perldoc.perl.org/perlapi.html#cv_set_call_checker>](http://perldoc.perl.org/perlapi.html#cv_set_call_checker>)

In other words, you _do_ have access to the parser. It's not as neat as in Lisp because of the lack of uniform syntax, but still allows for powerful program transformations: <[http://p3rl.org/Kavorka::Manual::Signatures>](http://p3rl.org/Kavorka::Manual::Signatures>)

</comment><comment><USER3> > In Lisp, source filters never break.

> Never.

To be perfectly fair, this is not _quite_ true. In Common Lisp (the dialect being used here), macros can break in rare, subtle ways. The obvious happens when you don't use GENSYM:

        (defmacro foo (var)
          `(let* ((x 3))
             (setf ,var x)))

        CL-USER> (let ((x 7))
                   (foo x)
                   x)
        7

        CL-USER> (let ((y 7))
                   (foo y)
                   y)
        3

but is fairly easy to avoid. In practice, as long as you make judicious use of GENSYM and packages, the only thing you _really_ need to worry about is someone FLETing a symbol in the package COMMON-LISP (or _maybe_ an external symbol in your package):

        (defmacro bar (x y z)
          `(list ,x ,y ,z))

        CL-USER> (let ((list '(7)))
                   (bar 1 2 3))
        (1 2 3)

        CL-USER> (flet ((list (a b c)
                          (+ a b c)))
                   (bar 1 2 3))
        6

SBCL actually yelled at me when I tried this for violating the package lock on COMMON-LISP. So in practice, it's really not much of an issue, and is certainly a hell of a lot better than C macros.

If you're interested in learning more about this, look at Scheme's hygienic macros.

<comment><USER4> Variable capture in CL can be avoided with few helpful macros.

        (defmacro WITH-GENSYMS (syms &body body)
            `(let ,(loop for s in syms collect `(,s (gensym)))
             ,@body))

        (defmacro WITH-UNIQUE-NAMES (vars &body body)
            `(let ,(loop for var in vars
               collect `(,var (make-symbol ,(symbol-name var))))
            ,@body))

        (defmacro REBINDING (vars &body body)
            (loop for var in vars
                for name = (make-symbol (symbol-name var))
                collect `(,name ,var) into renames
                collect ``(,,var ,,name) into temps
                finally (return `(let ,renames
                               (with-unique-names ,vars
                                 `(let (,,@temps)
                                    ,,@body))))))

       (defmacro ONCE-ONLY ((&rest names) &body body)
          (let ((gensyms (loop for n in names collect (gensym))))
            `(let (,@(loop for g in gensyms collect `(,g (gensym))))
                 `(let (,,@(loop for g in gensyms for n in names collect ``(,,g ,,n)))
                    ,(let (,@(loop for n in names for g in gensyms collect `(,n ,g)))
                       ,@body)))))

edit: added once-only

<comment><USER5> Let over Lambda uses this (maybe something like this?). Very cool book.

[http://letoverlambda.com/](http://letoverlambda.com/)

</comment></comment></comment><comment><AUTHOR> An easier to read ("=3D" converted back to "=") version of this post: [1]

Previous discussion of this post on HN: [2]

Also see: [3]

[1] - [https://bpaste.net/show/a9bb9668beac](https://bpaste.net/show/a9bb9668beac)

[2] - [https://news.ycombinator.com/item?id=795344](https://news.ycombinator.com/item?id=795344)

[3] - [http://stackoverflow.com/questions/267862/what-makes-lisp- ma...](http://stackoverflow.com/questions/267862/what-makes-lisp-macros-so- special/4621882)

</comment><comment><USER6> Very excellent argument against C macros in any case.

<comment><USER7> Yep. Even as a long time C hacker who knows to avoid the common pitfalls, I wasn't aware of just how many ways there are to botch up the use of macros.

There are lots of cases where macros look like the obvious and elegant solution to a problem. Some of those cases are bugs waiting to happen.

</comment></comment><comment><USER8> Using setf is a nice example of something which a macro can do which a function cannot (as well as being a good example of code-is-data).

Lots of posts discussing lisp macrology lack that kind of compelling use case.

The 'magic' used by setf is a 'destructuring bind': [http://dunsmor.com/lisp/onlisp/onlisp_22.html](http://dunsmor.com/lisp/onlisp/onlisp_22.html)

</comment><comment><USER9> reddit oldest (from 8ya) thread about it is interesting [http://www.reddit.com/r/hackernews/duplicates/2o90ty/why_lis...](http://www.reddit.com/r/hackernews/duplicates/2o90ty/why_lisp_macros_are_cool_a_perl_perspective_2005/)

</comment><comment><USER10> Perl6 advent calendar post (from 2012) on macros might be of interest [http://perl6advent.wordpress.com/2012/12/23/day-23-macros/](http://perl6advent.wordpress.com/2012/12/23/day-23-macros/)

</comment><comment><USER11> Could someone explain why all of the = signs have 3D after them?

$x =3D ...

<comment><USER12> The link is to a web archive of a a mailing list. I'm guessing the software doesn't properly handle the quoted-printable format of the e-mail.

In QP a = is used as the escape character, and =3D is the escape sequence for =.

</comment></comment><comment><USER13> Does anyone know the basic differences between Julia's macros and Lisp macros? Are they the same or is one more powerful/flexible than the other?

<comment><USER14> Julias AST is _very_ similar to an S-Exp so the macros in that sense have a lot of the same benefits of a lisp macro.

However they don't have the same ease since the AST does not necessarily match the way the source looks. In Lisp the AST looks exactly like the source so it's easier to visualize what a macro needs to do.

Julia requires you to mentally translate the source code syntax into an AST as an extra step. That extra step doesn't make them any less powerful/flexible though. It just makes them slightly harder to use.

<comment><USER15> Only loosely related, but I would love to see multiple dispatch come to Julia's macros. I seem to spend a fair bit of each macro switching on the expression's head, and would happily offload that step. (Of course, that might be growing pains since I don't really have a good feel for writing macros in the first place.)

Naturally, the best way to make that happen would be for me to write a macro implementing it... :)

</comment></comment></comment><comment><USER16> OT, I wish JS has macros. There is sweet.js, but I get the feeling its not used very much....

</comment><comment><USER17> So how does one write the (square x) macro in Common Lisp? Presumably, one would like to avoid evaluating the argument twice as well as accidental variable capture.

</comment><comment><USER18> Macros are powerful but still a bad idea. Like GOTO - using GOTO, you can implement absolutely any kind of weird control flow structure you can imagine. You have a lot more freedom than the usual if/else/for/while. And you can, if you use it wisely, make code that's more coherent and consistent than any other. But people don't.

Coherence of assignment is a very good idea. But you don't need macros to get it. If you have a language with simple syntax where assignment is just another function call (perhaps via a typeclass), everything in this example still works; it's not the fact that lisp has macros for assignment that's important here, it's the fact that assignment is _not special_ , not handled specially in the parser; it's just another function. You do that, and you get the advantages, with or without macros.

Lisp's lack of syntax makes macros easy, but they're still a mistake; they still lead to unreadable code because you can't tell what a given piece of code does until you understand which parts are macros and understand all of them. Give users more structured ways of achieving the (often quite small) number of things they want to do with macros. If they need more things, add those things as first-class features, the same way e.g. exceptions were added when people realized if/else/for/while didn't capture all the use cases for goto. But don't throw up your hands and let every library rewrite code willy- nilly.

<comment><USER19> Sigh, the tired argument that because people may use a powerful feature wrongly, that feature shouldn't exist.

>they still lead to unreadable code

Complete unsubstantiated nonsense.

>If they need more things, add those things as first-class features

If JavaScript had macros we could have had 'let' before ES6 instead of writing '(function(x) { ... })(42)'. Do I really need to know that 'let' compiles to a lambda with arguments applied? No, I just need to know that 'let' binds some values to variables and evaluates the body. Do I need to know that 'cond' compiles to a nested 'if' chain to know how to use it? No.

I don't understand why people think that syntax has to be behind a gate that only the language implementors have access to. Syntactic abstraction makes talking about problem domains easier, not unreadable.

<comment><USER20> Javascript has sweetJS. It isn't lisp, but it's about as close as most infix languages can get (with the exception of Dylan).

The let in ES6 cannot be expressed in the same terms as a let in lisp. Mozilla proposed that kind of let with the let block ('let (<assignments>) { <statements> }').

The issue is that other idiots (in some quest to turn JS into Java or C#) decided that a block scoping kluge was a better. After all, it makes interoperability harder (old code using var), makes scoping rules implicit (blocks without let are still bound to function), adds unnecessary cognitive overhead (leading to more bugs as code gets harder to reason about and visually parse) and generally adds a whole new set of ways for new and old JS programmers to screw up.</comment></comment></comment>


Reflections on Trusting Trust (1984) [pdf] - <AUTHOR> https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf <comment><USER2> "Reflections on Trusting Trust" is really awesome; it's a very cogent discussion of the problems of subverted tools (like compilers).

If you read that, you should also take a look at my PhD dissertation which discusses how to counter it. It's "Fully Countering Trusting Trust Through Diverse Double-Compiling" (2009), available at: [https://www.dwheeler.com/trusting-trust](https://www.dwheeler.com/trusting- trust) . It was discussed on Hacker News in 2016; here's the link: [https://news.ycombinator.com/item?id=12666923](https://news.ycombinator.com/item?id=12666923)

Another related work is the reproducible builds work; a good link is here: [https://reproducible-builds.org/](https://reproducible-builds.org/)

<comment><AUTHOR> Yes, its one of my favorite papers. Thanks for the pointers, very useful.

</comment></comment><comment><USER3> This is a nice elaboration of the attacks and issues discovered by co-founder of INFOSEC, Paul Karger, during his pentest of MULTICS in early 1970's. That included a proposed PL/I compiler that inserted vulnerabilities into itself when compiled. Thompson got the report while on MULTICS team. The solution was called high-assurance security which culminated in Orange Book of TCSEC. It came out in SCOMP about same time Thompson started writing on the original problem.

[https://www.acsac.org/2002/papers/classic- multics.pdf](https://www.acsac.org/2002/papers/classic-multics.pdf)

Paul helped invent much of INFOSEC from scratch with lots of his lessons rediscovered over time by mainstream INFOSEC that largely ignores predecessors' work. Here's Paul's other stuff for any interested:

[https://www.semanticscholar.org/author/Paul-A- Karger/2467751](https://www.semanticscholar.org/author/Paul-A-Karger/2467751)

Back to this topic, the definitive solution is high-assurance compiler combined with SCM techniques presented best by David Wheeler:

[https://www.dwheeler.com/essays/scm- security.html](https://www.dwheeler.com/essays/scm-security.html)

<comment><USER2> Paul Karger is well-known and widely cited by people who know about computer security / information security. Yes, there are a lot of snake-oil salesmen and people who think reading one book makes them experts. However, since they generally don't know very much, it's unsurprising that they wouldn't know about Karger either. Karger's work has been influential.

Oh, and thanks for the citation about my paper on SCM security!

<comment><USER3> It's true in CompSci but not popular INFOSEC. Most of them cite Thompson as original, definitive work as he likely intended when not giving Karger credit in first paper. The people discussing these things also dont know about all the attacks and solutions Karger found. If you need evidence, just compare most security-oriented VMM's to Karger's for VAX. It's like nothing got passed down. They even rediscovered covert channels in cloud VMM's around 2010 or whatever. So, I keep referencing him on topics likd these.

"Oh, and thanks for the citation about my paper on SCM security!"

You earned it. :) One thing I am still curious about was who originated the high-security techniques for SCM. Back in Karger's day, they just put it in safes on paper. Im wondering who did fundamental stuff on making it electronic and secure, though. Figure it's in your collection but asking in case you know off hand.

<comment><USER2> I don't think Ken Thompson meant to omit the names of Paul Karger and Roger Schell. At the time it was often extremely difficult to find a paper unless you already knew where it was. Whereas today you can do a search and instantly find it and read it: "Multics Security Evaluation: Vulnerability Analysis" by Paul A. Karger and Roger R. Schell, June 1974, [http://seclab.cs.ucdavis.edu/projects/history/papers/karg74....](http://seclab.cs.ucdavis.edu/projects/history/papers/karg74.pdf)

I've had trouble finding some of the earlier work on high-security SCM; I do reference what I found. If you find something important I'm missing, send me an email: [https://www.dwheeler.com/contactme.html](https://www.dwheeler.com/contactme.html)

<comment><USER3> The paper from the NPS in 2002 referenced Air Force as inventors of configuration management. As military, they might have had security implications in it. Found some pay dirt.

[http://www.dtic.mil/dtic/tr/fulltext/u2/650214.pdf](http://www.dtic.mil/dtic/tr/fulltext/u2/650214.pdf)

[https://www.computer.org/csdl/proceedings/afips/1967/5069/00...](https://www.computer.org/csdl/proceedings/afips/1967/5069/00/50690045.pdf)

First is a retrospect on original document. It referenced accounting procedures for the artifacts. Makes sense they'd look at it from accounting standpoint as that's what they did with other things. Ware Report did that, too, for early INFOSEC. Lacking details from manual, I found a follow-up in 1967 that describes key details on p4 under procedural data esp concerning changes. Sounds like an early form of SCM security. I'll have to try to find the computerized one later on as I have a feeling it independently happened in mainframes or minicomputers outside INFOSEC field.

Btw, your link to Zeigenhagen was dead when I tried it. DTIC to the rescue:

[http://www.dtic.mil/dtic/tr/fulltext/u2/a417577.pdf](http://www.dtic.mil/dtic/tr/fulltext/u2/a417577.pdf)

</comment></comment></comment></comment></comment><comment><USER4> You clearly can't take this argument to ad naseum because then no one could do anything without starting from scratch. Most linux distros distribute binaries+source, and even source based distros like Gentoo have you download a something like a tarball for bootstrapping. Of course, there are things like checksums and such, but you have to, of course, trust the source.

Yet, the world still turns, absent some terrible exceptions. It's almost as if no system is truly safe and secure, which I think cultures have known since the ages.

<comment><USER3> Sure you can. I've proposed how to do it here several times. You can start like Niklaus Wirth with a simple interpreter (eg P-code) + basic, routines for hardware. You write compiler as series of small passes (no optimization) in that interpreter. Compile it with itself. Add optimizations and recompile.

For hardware, you start with simplified CPU like a Forth or ZPU processor. One you can check by hand and eye on an older process node. Reverify it with itself. Then run above step for software on it. Optionally better EDA tools, too.

The diversity method ports the simple interpreter or compiler to a number of CPU architectures or dev tools. Pick whichever you want. If you aim for same binary, you'll need compiler designed to do that or reproducible builds like Wheeler links to up thread.

<comment><USER4> "There exists" is not the same as it is practical. My sentiment doesn't regard possibility, but feasibility for the average user.

<comment><USER3> It's quite feasible. You just pay a programmer or smart student to do it for you using the published literature. Done. Even stronger if you trust them. Use multiple, distrusting pros on same project if more trustworthiness is needed. What you cant afford you crowd fund or ask for grants.

It's a question of priorities rather than feasibility. Most users or customers dont care enough to invest time or effort needed. End of story. Same one as usual for strong INFOSEC.

I'll also add that there already exists certifying compilers for C and Standard ML that both extract to ML. The ML extracted is simple enough to hand-compile to ASM following one of two guides. So, not only can oma human verify no subversion, there's already a production one with machine-checked proof that's also be checked by humans [again].

</comment></comment></comment></comment><comment><USER5> I had never heard about this lecture until a few months back. I read the annotated version on Fermat's Library which really helped me understand it - [http://fermatslibrary.com/s/reflections-on-trusting- trust](http://fermatslibrary.com/s/reflections-on-trusting-trust)

<comment><AUTHOR> Never really knew about Fermat's library. From skimming it looks like a really great idea, especially for reading papers in areas you may not be that familiar with.</comment></comment>


Biofabricate: There's a bio-revolution on the horizon - <AUTHOR> http://makezine.com/2014/12/18/biofabricate-theres-a-bio-revolution-on-the-horizon/

<comment><USER2> Why do users (I guess I'm not being singled out) put up with unresponsivenes of s0.wp.com etc.,? I've given up trying to read it (the article of interest) and it's no surprise when I look at the connection.</comment>


Blogger Adds Threaded Comments - <AUTHOR> http://googlesystem.blogspot.com/2012/01/blogger-adds-threaded-comments.html <comment><USER2> Good One... :)</comment>


How do you extract the most possible value from a book? - <AUTHOR> Reading non-fiction, I've often found that I forget or don't apply anything I read.<p>Apart from trying harder, do you have any strategies to extract the most possible value from a book? <comment><USER3> I find that re-reading the books help. For instance, it wasn't until my 3rd read of _The Goal_ that I felt as if I completely understood the underlying themes.

As others mentioned, being able to relate to the content of the book helps immensely. For instance when reading _The Innovator's Dilemma_ I kept finding parallels to my previous industry and company. This struck me so much that I can list most of the content of the book simply by thinking back to those insights.

As a last note, non-fiction books are seldom gripping. Reading a few pages before going to sleep doesn't cut it for me, words zip past my eyeballs without hitting the brain. I need to actively focus on the content, much more so than when reading fiction. I try to force myself to pause and actively think about the content every few paragraphs: does it make sense? Can I follow the logic of the argument? Does it resonate with my experience? It's the only way for me to actually get anything lasting out of the book.

<comment><USER4> You can try Reedy for fiction. You can easily read because the words move by themselves (200 WPM is great)

</comment></comment><comment><USER5> Read books with ideas you can apply, and use the ideas in practice. Don't read books that you cannot directly apply to something, that's consuming input without producing output. (I quite enjoy reading, and happily read books that I cannot apply, but this is not "efficient"...)

Value extracted, and even the best way to extract value from a book, will be heavily context dependent. E.g, here's a wildly contrived example: If you are trapped in a hut in a snowstorm you may be able to extract considerable value from a trashy novel or physics textbook in your backpack by tearing it apart to use as kindling.

</comment><comment><USER6> Everyone's different, but something that helps me is deliberately testing myself after reading a passage or chapter that taught me something I didn't already know. Literally take your eye gaze away from the page and try to recall, summarize, and answer a question about what you just read.

It's one of those things that sounds too simple to be effective, but it works for me.

</comment><comment><USER7> I like to kind of live with books rather than read them linearly. So I might go and read a chapter from a book. I consider them resources. That's why I deeply appreciate a good table of contents; they were better in the past.

Check out "How to Read a Book", too. It presents book reading in quite a different way than you might be used to. The book as an object that you investigate almost like a strange beetle or a transistor radio—to learn how it works.

Most nonfiction books "do something" in the way that a program does something. There's a main purpose and a lot of subroutines and maybe some boilerplate and repetition. It's not as linear as you might think either. And they're embedded in a web of references. It's very interesting to think about how you actually use a book in your life...

</comment><comment><USER8> Entertainment and/or fulfillment is most of the value in most books. Whether or not a book contains directly actionable information is mostly dependent on what you are trying to do. For example, a book about Kubernetes is only directly actionable when working with Kubernetes. At random, a human being is unlikely to use Kubernetes. So a book on Kubernetes usually doesn't contain any actionable information.

Suppose you read a book on Kubernetes today. You don't use Kubernetes. So you read it just because you are curious. That's the value of most books. If three years from now you start using Kubernetes then the book suddenly becomes directly actionable.

</comment><comment><USER9> Try _longer_. Don't read a book with the assumption that you will derive value from it in the amount of time it takes to simply read all of the words start to finish. You will need to try examples, re-read sections, skip around, ask questions of others, find other sources, etc.

Sometimes it would be nice if life was more like an RPG - reading a book means a few hours ticks by and then you get +1 to your skill of choice - <USER2> unfortunately it's not that easy :)

</comment><comment><USER10> The common strategies that you'll find people do are:

\- take notes in margins

\- phrase what you read in your own words

\- think critically about what you read

But for me, I extract the most value when I discuss what I read with others. Not only does it provide more motivation for reading but I also find myself with a lot more insight after a conversation with a friend about what we just read.

<comment><USER4> >think critically about what you read

Avoid cognitive ease by reading it tilted 30 degrees.

</comment></comment><comment><USER11> Try to take a single element from that book and implement it in real life.

</comment><comment><USER12> Obligatory ref.:

[https://en.m.wikipedia.org/wiki/How_to_Read_a_Book](https://en.m.wikipedia.org/wiki/How_to_Read_a_Book)</comment>


Sewing Needles Reveal the Roots of Fashion - <AUTHOR> https://www.sapiens.org/archaeology/fashion-history-sewing-needles/ <comment><USER2> Coco Chanel started her fashion career with sewing needles..</comment>


Ask HN: Is asking an early startup to intern Doing It Wrong? - <AUTHOR>

Hey HN,
I live in Orlando, FL, far from a tech hub. I'm taking a few classes over the summer at my less than challenging university, and would love to compliment my coursework with some experience at a startup. I've done BigOrg internships before, and I'm looking for something a little different.
Startup selection here is limited, but there's one in particular in town that just opened up and still seems to be finding their feet (third webdesign in as many weeks) that is hiring full-time devs with similar skill sets to my own. However, I'm not at the calibur they're seeking for full time. They want a Flask guru, I've mostly coded Python for academic applications and have made only simple apps with Flask; extend that same analog for the other pieces of the stack and you get the picture. Despite this fact, I feel like I could be useful given their early stage.
Is it silly for me to inquire about an internship at such an early stage startup, when I don't have the full stack they're looking for? On the other end, would I learn enough from an early stage company to make it worth my while, assuming that they even want me?
Thanks HNers! <comment><USER2> I would say do it. Worst case they say you're not qualified yet. THATS WAY better then the case of you never asking. Besides, if your asking about an intern position, it usually is OKAY for you not have the "full stack". Heck when I first interned at this ASP.NET position, I literally had to learn th e syntax day 1. "Figure it out later" _.

_ note: Not the same as "Fake it till you make it". If you know how to CODE well, and have the inpsiration to learn you can learn. If you have no idea how to code (which doesn't seem the case), then start making websites for fun.

</comment><comment><USER3> Play to win, don't play to not lose. Be aggressive. Don't assume they don't want you. Enthusiasm is contagious; if you demonstrate an eagerness to learn and to help them grow, and if you demonstrate that you have the required technical ability, that will set you apart from other candidates. Have confidence in your skills. If you want it you need to reach out and grab it. Just do it. Don't be afraid of "No".</comment>


Aleph Naught – #stopwarnow EP (2018) on #soundcloud - <AUTHOR> https://soundcloud.com/user-972290917/sets/aleph-naught-stopwarnow-ep <comment><AUTHOR> I call it 'lovesense' music.

<comment><AUTHOR> For use with one of these: [https://www.lovense.com/bluetooth-remote-control- vibrator](https://www.lovense.com/bluetooth-remote-control-vibrator)

</comment></comment><comment><AUTHOR> Looking for a label to represent.</comment>