Show HN: Two-faced URLs - <AUTHOR> http://brokenthings.org/

<comment><AUTHOR> This is a URL shortener that gives a link that sends "preview" processes one place and actual users somewhere else. It works for google plus and facebook and several other "preview" bots. Proof-of-concept because I don't like URL shorteners in general, but it links to a restricted list of sites.

</comment><comment><USER2> Yet another reason for URL shorteners to be banished from the web (not that this will ever happen). Besides the arcane input requirements of Twitter and the semi-retarded behavior of certain email clients, I haven't found a good use case for them that couldn't have been solved better with proper link formatting or better content presentation.

When the web is just a sea of opaque pointers to pointers to pointers, with various hilarity like these URLs mixed in, we'll all wonder why the hell we stood by and let it happen.

<comment><USER3> _I'm biased, since I have run more than one shortener/tracker myself. This isn't meant to be a rant, more of a defense for the uninformed._

It's a bit naive to think that most websites are referenced by a simple link to static content. The web has become so complex and urls now reflect that. Short urls are useful for many people for many different purposes.

For an example of how complex urls are, take a look at SEO'd blog post or newspaper urls. They have become a string on keyword rich terms that help to increase SEO. The content that is served is brought up dynamically and may in fact change over time. Ads, sidebars, and comments are brought in after the fact, often based on content or origin of the user or if they have a cookie. It's complicated - url redirection (which already may be happening in this flow) doesn't add much to it.

Advocating for "proper link formatting or better content presentation" reflects the fact that you've never had to dig deep into the complex SEO, user, customization, and other general business requirements that arise when running a CMS.

Short urls are valuable because they allow people an ability to simplify the increasingly long urls for use in many different mediums without the worry of breaking or losing portions of the url.

Yes, they often do allow the creator to change them, but that's no different than what any website operator can do natively on their website.

There are problematic situations that can arise, such as when a url shortener goes down. And this has happened, and it hasn't caused any catastrophic problems. It's inconvenient, but it often only affects old content on twitter or facebook. I'm not saying it's ideal, it definitely doesn't add value to the internet. But it's not _that_ bad.

Regarding the 'arcane' input requirements for twitter or facebook. Somehow I think you missed the point of these networks. Twitters 140 characters is part of what defines them. There will always be short message mediums, they are there because people have a desire for short bursts of information. They aren't going away.

I hope that helps to explain why shorteners arose because there was a need, not just to add complexity or _more evil_ to the internet.

<comment><USER2> > Advocating for "proper link formatting or better content presentation" > reflects the fact that you've never had to dig deep into the complex SEO, > user, customization, and other general business requirements that arise when > running a CMS.

Erm. I don't think you understand what I meant. I meant if a URL is too long to fit within a block of text in your medium, enable hyperlinking it with short, descriptive link text the way just about any media _other_ than twitter or plain text (or HN markdown, but I digress) allows. Have we already regressed from the concept of the well-made hyperlink?

I appreciate that designing URL structure for a site can be difficult. I don't think it's as hard as you make it out to be, because just about any free CMS package will take care of SEO'd URLs for you and set up redirects even if you change your content. Hell, you can customize all of this in Wordpress without touching code. But that's an orthogonal problem, and shortened URLs neither contribute to SEO nor constitute a viable long-term URL structure for any site.

> Short urls are valuable because they allow people an ability to simplify the > increasingly long urls for use in many different mediums without the worry > of breaking or losing portions of the url.

This is what I don't understand. OK, sure, URLs get long, but they could be long before we started putting keywords in them, that's not new. Besides email or twitter, what media are you possibly talking about where I'm dropping bits of a URL on the floor? And if bad email clients can't linkify long URLs properly and twitter won't allow proper link formatting, why are we just rolling over and enabling their problems?

>Twitters 140 characters is part of what defines them. There will always be short message mediums, ...

They could and should make an exception for URLs. Imagine tweeting:

        URL shortener controversy all over again!
        [Read it on HN|http://news.ycombinator.com/item?id=2734728]

and the URL portion and formatting doesn't count toward the limit, only the link text part. Visually, that's only 55 characters worth of information, and that's how the limit should be formulated. You can't tell me that <http://bit.ly/blsa23848> is more informative or contributes meaningfully to Twitter's character limit by virtue of it being shorter than my formatted link _with link text_. In fact, it's _less_ informative, and obscures the link's true destination without deshortening (and as the OP shows, deshortening is fallible).

</comment></comment></comment><comment><AUTHOR> It's actually several things, including user agent strings, HTTP accept/accept language.

The underlying script allows you to route between n different destinations based on header matching and netmasks. The shortened URL is just a hash of the rule set, with a sequence number appended in case of collisions.

<comment><USER4> Clever. I assume the only way for Facebook and Twitter to circumvent this would be to fake all of the HTTP headers sent by, say, a modern version of Firefox. I don't think it's cheating - even though the tools are bots, their job _is_ to preview the content their users are about to see.

Even then, the author could probably find out which IP addresses are used by Twitter and Facebook's lookup engines and send them the innocuous version. However, I just did a test on my own server, and Facebook used two different IPs (184.108.40.206 and 18.104.22.168) for the same request. Pretty big range.

</comment></comment><comment><USER5> That's one thing that mildly annoys me about twitter. It clearly knows where a shortened link is heading because it reveals the full URL on the mouseover. Given that information, why does it need the shortened link any more?

</comment><comment><USER6> This actually could be quite useful. Sometimes people need to post a nicely described link with an adequate thumbnail, yet the Facebook bot finds only some random image. With this little service one can prepare a dummy page for illustrative purposes and then let brokenthings.org handle the bot and the redirection.

</comment><comment><USER7> I've been waiting for this since url shorteners came to be. Sadly I don't think shorteners will loose popularity anytime soon and I will continue to avoid them as I've always done.

</comment><comment><USER8> At a guess: HEAD requests give one URL, GET requests give another?

<comment><USER9> I think it knows the user agent of specific bots and serves different pages based on that, as social networks tend to do a full GET request in order to grab a screenshot.

</comment></comment><comment><USER10> This is not working for me.. Whenever I change the source link, Facebook gives me no preview..

</comment><comment><USER11> Very clever/sneaky!

</comment><comment><USER12> To defend against this, social networking sites should simply cache the link that the preview bot sees, and send users there directly instead.

</comment><comment><USER13> Clever use of content negotiation!

</comment><comment><USER14> This is great! Lots of fun.</comment>


Why Games for AI? - <AUTHOR> http://www.abiaryan.com/why-games-for-ai/ <comment><USER2> >> Limited resources only limit limited brains.

Okay. Here's a test I would like to propose to the author of the piece. If you have children, ensure that they spend their first 16 years of life malnourished, deprived of emotional and intellectual stimulation and deprived of any education. I would say that that would put them in a situation where they have "limited resources".

Then let's see how their brains develop. If they're smart kids, they should grow up fine, yes? According to the maxim at the top of the article, anyway. It doesn't matter if you don't have anything to eat, if you don't have anyone to care for you and don't have access to a good education: if your brain is not "limited", then you should thrive anyway.

<comment><USER3> But you assume that the brain of any child is unlimited.

<comment><USER2> Rather, I assume the author will expect her kids brains to not be limited.

</comment></comment></comment><comment><USER4> >All right, let's take another example to mark the distinction- when we touch a hot saucepan we instantly pull our hand away, what kind of intelligence would you call it since it isn't a goal-oriented intelligence? Maybe consciousness?!

This is an amazing leap.

The Intelligence in reflexes is the intelligence of the peripheral nervous system! Made up of motor neurons which can learn just like every other neuron!

That the author would completely ignore the physical body as an intelligent system and jump to the muddy concept of consciousness, because it's been so ingrained that the brain is the only intelligent thing we have, continues to baffle me. Especially that the researcher is a Post-Doc at UCLA under Pearl!

</comment><comment><USER5> On procedural generation, see also OpenAI's effort: [https://openai.com/blog/procgen-benchmark/](https://openai.com/blog/procgen- benchmark/)</comment>


What to do after you sell your company and retire - <AUTHOR> http://philip.greenspun.com/materialism/early-retirement/ <comment><USER2> Greenspun has interesting things to say on occasion. It's a pity he feels the need to be such an ass:

"The folks who work at a non-profit organization are very interested in drawing a salary higher than their skills and working hours would command at a for-profit enterprise subject to competition. They are not especially interested in efficiency or accomplishment. "

I know several people who work at Cambridge nonprofits. They all earn about 1/3 what they could at comparable for-profit jobs. They do so out of a sense of passion for the mission of the nonprofit. Their lives have more purpose than, say, tooling around in airplanes.

</comment><comment><USER3> Timing was bizarre - I just wrote a column about why entrepreneurs should NEVER retire!

<http://www.gobignetwork.com/wil/2007/4/16/3-reasons-entrepreneurs-should- never-retire/10133/view.aspx>

</comment><comment><USER4> I think there'd be some period of 6-18 months where I'd truly do nothing but relax. Learn a new programming language really well. Travel and visit friends/family scattered across the globe. Then I think I'd end up doing some kind of startup hackery like Joe Kraus or PG.

</comment><comment><USER5> To paraphrase a famous college saying:

"Read the five posts above yours; read the five posts below yours; only one of you will have a successful company."

Do what I do. Don't worry about retiring :) But if I did hit it big, I'd probably do astronomical research.

</comment><comment><USER6> 1) start another company 2) start angel investing 3) start coaching younger entrepreneurs how to change the world

This is what i want to do after i've started and exited my first startup

<comment><USER7> Same here. Also finding a way of showing students in the UK that they can create startups when they graduate rather than join a banking grad scheme in the city.

</comment></comment><comment><USER8> he didn't sell the company. he sued the company and they settled out of court. he made his money via legal action, not business or programming acumen. the sale was for pennies and was only done so that the VCs wouldn't look completely retarded for investing in the first place.

he didn't really have any choice but to retire. no investor will give him money and no programmer with any sense would work for him.

<comment><USER9> Greenspun had other companies before Ars Digita. He took ICAD/Concentra public and also co-founded ConSolve and Isosonics.

It may be true that no programmer with any sense would work for him - I don't know him personally. But given how cheaply you can start a company nowadays, he certainly doesn't need investors. And as I understand it, he's not entirely retired: doesn't he teach a course at MIT?

<comment><USER10> "It may be true that no programmer with any sense would work for him". Why? Did he do anything particular?

<comment><USER9> I don't know - "may be true" is just conceding the point to the grandparent, because I have no personal knowledge of Greenspun, and from his username, it appears that the grandparent worked at Ars Digita. I've heard that Greenspun's management-style was pretty abrasive and he could very egotistical, but this is all hearsay.

</comment></comment></comment></comment><comment><USER11> This website seems to cover what you asked..

<http://www.ryancool.com/>

</comment><comment><USER12> Well, one obvious solution would be to do something else, not to retire. Is retiring really what people aspire to, these days?</comment>


Machines That Learn to Code and Take Your Job - <AUTHOR> https://dev.to/ben/machines-that-learn-to-code-and-take-your-job <comment><USER2> [https://en.wikipedia.org/wiki/Full_employment_theorem](https://en.wikipedia.org/wiki/Full_employment_theorem)

Seems like there are mathematicians and computer scientists that might disagree with the premise of the article.</comment>


BitGrail got hacked and is insolvent - <AUTHOR> https://www.reddit.com/r/CryptoCurrency/comments/7wh2a1/bitgrail_got_hacked_and_is_insolvent/ <comment> Al-Khwarizmi I had been following Nano (previously Raiblocks) since it was at around $0.5 (now $10). I was convinced it was going to go up due to the promising tech compared to other cryptocurrencies. But I didn't buy due to exchange risk, as the only exchanges carrying it were Bitgrail and Mercatox, both small exchanges that didn't give me much trust.

I was a bit regretful when I saw how it skyrocketed in price, but now I know I made a reasonable choice... of course, perhaps I would have sold some time ago already and my money would be out of Bitgrail by now, multiplied by 10 or so. Or maybe not. But the risk was very real all along.

To me, exchange hacks and exchange risks are the biggest problem for crypto to be accessible to the mainstream. While we can't buy and store coins in a safe and trusted way, it won't be ready for the average (even reasonably tech- savvy) user.

<comment><USER2> You can store them in a safe.

<comment> Al-Khwarizmi Yes, if I had bought, I would probably have stored them in a local wallet. But anyway, they must be on the exchange at least for the necessary time to make trades, which is often more than one thinks as withdrawals tend to take time, etc. And if the hack/scam/etc. hits precisely on the day that you're trading or pending a withdrawal, you're out of luck.

Probably some Bitgrail users were minimizing the time their money was on the exchange, but they were unlucky enough to have it there at the wrong moment.

And anyway, this is not the kind of thing people should need to think about if we want crypto to become mainstream. If I place an order on my bank to buy some shares, I don't need to be thinking that I should go to the bank as soon as possible and request the original paper version of my shares (does that exist anymore?) to store in my safe because it could get stolen from the bank any day. The risk of that is so minimal no one but the most paranoid would worry about it. Having significant risks of that kind totally kills crypto (or at least all but the largest coins) as a mainstream option.

</comment></comment></comment><comment><USER3> BitGrail had bugs in their exchange code, which have been known for a while. Many people reported that they deposited, say, 1 ETH and it showed as 3 ETH on the BitGrail account. Or they withdrew some XRB, but then the same amount was still on BitGrail so they could withdraw it again.

Perhaps some hackers knew how to reproduce this bug and were able to exploit it, but there were obviously errors from BitGrail and they should take responsibility.

<comment><USER4> Not sure about this one, but it seems many of these exchanges (and blockchain solutions in general) were built by people with very little experience in building financial transaction systems. Almost like they jumped on the bandwagon although having little more experience than being a frontend dev. If you worked with traditional financial transaction systems, HSMs, regulatory bodies and their over-the-top audits, you will have more of a sense how to design solutions like this. Might not apply here but from what you say it seems likely.

<comment><USER5> I'm kind of surprised there's no open source exchange with much traction yet.

I think Buttercoin was the first attempt but they pivoted then failed. It looks like there's a few others but only a few small exchanges use them: [https://www.reddit.com/r/Bitcoin/comments/37ku14/open_source...](https://www.reddit.com/r/Bitcoin/comments/37ku14/open_source_exchanges_blinktrade_vs_wlox_vs/)

Something that provides the core features of an exchange with focus on excellent security and proof-of-solvency built-in would give small exchanges (like BitGrail) a competitive advantage.

Additional benefits would include having a standard API others could more easily write tools for, and opportunity to experiment with things like instant cross-exchange transfers using payment channel / Lightning Network.

That said, it's a pretty big undertaking. To do it well it would probably take a funded (or already successful) exchange or other company with related business model willing to do it.

</comment></comment></comment><comment><USER6> Right now all the signs are pointing to the exchange owner as the culprit.

Multiple suspicious things occurred prior to this announcement. For example, withdrawals were disabled for all unverified users and those who tried to verify saw that the verification queue was severely backlogged. You could terminate your account but only receive BTC regardless of what other currency(s) you had stored (many users are reporting their accounts were terminated but did not receive any BTC).

Some users reported that there was a bug that caused deposits to be duplicated. Ex: Deposit 1 ETH and the transaction would show up twice in your account therefore making your balance 2 ETH which then you could withdraw successfully.

Disclosure: I had XRB at BitGrail

</comment><comment><USER7> Bitgrail's announcement: [https://bitgrail.com/news](https://bitgrail.com/news)

Scroll down for an English translation.

</comment><comment><USER8> Etherum was really nice to the guys who made the DAO that was hacked? What determines when a cryptocurrency decides to cooperate to undo a hack? Does it come down to connections between those affected and the cryptocurrency management?

<comment><USER9> Trust that the ledger is actually immutable is what gives these tokens most of their value. I guess if the devs decide the loss of confidence in their product hurts less than the loss from the hack then it makes sense to go for it.

<comment><USER5> This is spot on.

Even Bitcoin has forked to roll back transactions, though not recently, and in the past only due to protocol vulnerabilities, never 3rd party software like the DAO or a hacked exchange.

I'd be wary of mature cryptocurrencies where this is feasible, especially if it's "fixing" something that doesn't affect the majority of users.</comment></comment></comment>


NASA's Kepler Spacecraft Finds First Alien Planet of New Mission - <AUTHOR> http://news.yahoo.com/nasas-kepler-spacecraft-finds-1st-alien-planet-mission-165844564.html

<comment><USER2> My heart actually skipped a beat when I read "Nasa's kepler spacecraft finds first alien...."

<comment><USER3> :)</comment></comment>


"Twitter Terrorists" - Big Tech Conf Co. Steals, Threatens, & Libels - <AUTHOR> http://aralbalkan.com/2022

<comment><AUTHOR> And the author hasn't updated the page to reference the latest post in this intriguing ongoing saga, "Aral Balkan's Twitter 'Cihad'":

<http://ruby.sys-con.com/node/1028923> and the followup,

<http://www.sys-con.com/node/1035252>

 _SYS-CON's CEO explained his views on that particular subject in his "Social Media Terrorists" blog, which is an appropriate blog title especially since this man's religious, ethnic, cultural, and national background fits into FBI's profile definition of the modern day terrorist."_

Keep in mind this company publishes popular magazines, supported by big corporations (Adobe, Microsoft, etc.), and runs huge conferences that many people attend:

<http://events.sys-con.com/></comment>


First image of a multi-planet system around a sun-like star - <AUTHOR> https://phys.org/news/2020-07-image-multi-planet-sun-like-star.html <comment><USER2> "The two gas giants orbit their host star at distances of 160 and about 320 times the Earth-sun distance. This places these planets much further away from their star than Jupiter or Saturn, also two gas giants, are from the sun; they lie at only five and 10 times the Earth-sun distance, respectively. The team also found the two exoplanets are much heavier than the ones in our solar system, the inner planet having 14 times Jupiter's mass and the outer one six times."

</comment><comment><USER2> Found a larger conversation on this here: [https://news.ycombinator.com/item?id=23917559](https://news.ycombinator.com/item?id=23917559)</comment>


Stop Saying You're Bad at Math - <AUTHOR> https://www.washingtonpost.com/news/answer-sheet/wp/2016/04/25/stop-telling-kids-youre-bad-at-math-you-are-spreading-math-anxiety-like-a-virus/ <comment><USER2> What's the best argument that can be made for teaching math comprehension beyond basic arithmetic the way governments do?

I understand the 'it teaches you to think about and approach complex problems' argument. But can't many non-math fields satisfy that same argument?</comment>


New API Commons Platform Allows Developers to Share APIs - <AUTHOR> http://techcrunch.com/2013/11/05/3scale-launches-api-commons-to-allow-developers-to-share-apis-under-creative-commons-licenses/

<comment><USER2> Hasn't this idea already been explored with registering media types? Isn't this what REST and all of the HTTP specs were meant to address? You use an existing hypermedia type or register a new one, then any client that can read those media types can read your API.

I really think one day down the road, someone will come out with a great "new" architecture and it will be what was outlined in REST.

As a side note, I went looking through many of these and they pointed to Swagger documents, which contained lots of URLs. This seemed to be a relevant article on the pitfalls of doing this along with some ideas on moving forward:

[http://amundsen.com/blog/archives/1147](http://amundsen.com/blog/archives/1147)

<comment><AUTHOR> Media types help in one dimension (data model) but they don't give you a complete definition of an API. Also - people aren't actively promoting and re- using them. The main aim here is to try bring the things which are clearly copyright free out into the open so they can be re-used and evolved. This doesn't happen in the REST API space at all right now.

<comment><USER2> I would say media types don't give you a full definition [1] because they really aren't meant to do so. They are meant to be used to express resources in a certain way that clients and servers can understand them.

Additionally, your resources should be described through link relations, which, along with media types, allow your API to be self describing and discoverable.

Take, for example, the Business API that is listed on the site [2] and picture Collection+JSON [3] being used to represent the business collection resource and the business item resource. If you used Collection+JSON, what would be left to describe? It would seem like you wouldn't need a Swagger file because your API would be describing itself.

Lastly, even though media types may not be actively promoted or used at this time, I think we should push toward promoting really good hypermedia types.

Edit: I wanted to also add a couple other interesting media types to check out, HAL [4] and Siren [5]. I'm sure there are other really good ones, too.

[1] By definition I'm taking it to mean fully describing an API.

[2] [https://github.com/ongithub/businesses/blob/gh- pages/busines...](https://github.com/ongithub/businesses/blob/gh- pages/businesses)

[3] [http://amundsen.com/media-types/collection/](http://amundsen.com/media- types/collection/)

[4] [http://stateless.co/hal_specification.html](http://stateless.co/hal_specification.html)

[5] [https://github.com/kevinswiber/siren](https://github.com/kevinswiber/siren)

</comment></comment></comment><comment><USER3> Most of those seem hopelessly simple (Just for the image bit, it only has one thumbnailUrl and no thumbnail size information).

I understand that this is a basis for further evolution but these APIs are gonna be hitting version 13 before they are usable in the real world and by that point they will probably be skewed towards use cases based on whoever updated them.

</comment><comment><USER4> In the Future of Programming, Bret Victor talks about how computers should be able to distinguish the API/language of one another using goal directed programming. Is anyone at work on that? It's nice but API documentation isn't usually the problem.

</comment><comment><AUTHOR> [http://www.apicommons.org](http://www.apicommons.org)</comment>


Min Chiu Li - <AUTHOR> https://en.wikipedia.org/wiki/Min_Chiu_Li <comment><USER2> It is fascinating that Li was fired for his groundbreaking work on chemotherapy which have now saved millions of lives. He is still not awarded any major prize!

<comment><USER3> It is not fascinating. It is sad, unfortunate, and unfair to Li and his hard work.

</comment></comment><comment><USER4> I find it interesting that the basis of methotrexate's success as a chemotherapy apparently was its ability to reduce a cancer tumor's uptake of folic acid (a vitamin!).

damn. vitamins can be dangerous.

<comment><USER5> Well, yes. I think one of the first things they tell you when you've been diagnosed with tumors is the danger of vitamins.

<comment><USER6> Wow, I hope the marginal benefit to most of the population (ie those who are not very vitamin deficient) taking them is not less than the harm caused by people with undiagnosed tumors taking them willy-nilly.

</comment></comment></comment><comment><USER7> What a coincidence! i was literally listening to "The Emperor of All Maladies" on Scribd yesterday and introduced Min's story to my friend during driving.

<comment><USER8> When I read that I was amazed that I had never heard about Yellapragada Subbarow. It seems like he should have won a nobel prize (at the very least!)

</comment></comment><comment><USER9> Thanks for the submit. I learned something today. Roy Hertz wasn't bad either.</comment>


Show HN: Free 12 Week Marketing Course by Noah Kagan - <AUTHOR> http://growthhackers.com/questions/show-gh-free-12-week-marketing-course-by-noah-kagan/

<comment><USER2> here's the real link [http://www.summerofmarketing.com/](http://www.summerofmarketing.com/)</comment>


NASA calls off attempts to fix Kepler space telescope - <AUTHOR> http://www.reuters.com/article/2013/08/15/us-space-kepler-idUSBRE97E16B20130815 <comment><USER2> The good news is that there's still a lot of juice left in the Kepler data set. Only about half the data has been analyzed, and a lot of good stuff will come out of the rest. Also, it takes 3 observations of a transit for planetary confirmation, but not all 3 observations need to be made by Kepler. With only 2 transits having been observed it'll be easy to extrapolate future potential transit dates. Ground based observatories can then do targeted observations of the most promising candidates and fill in that data, essentially moving a lot of observations from the "candidate" planet category into confirmed territory for a comparatively minimal effort.

</comment><comment><USER3> Whenever I see an article like this and something at nasa has broken, it seems like they always are soliciting a new project. It makes me wonder, why not just build the exact same thing again (with the broken parts fixed, of course)?

<comment><USER4> Building a new something that was designed, built, tested and launched quite a while ago is difficult because a lot of knowledge of the processes have been lost, along with tooling, supplies, etc.

However, I do wonder why they build 1 Kepler space telescope and not 2, or 3, and then store the already built ones until they are wanted.

<comment><USER5> kepler wasn't built that long ago, as these things go. and ball aerospace which designed and built it is already designing and building an almost identical spacecraft for the b612 foundation. so of all the spacecraft you might want to duplicate, kepler would be a really easy one at the moment.

<comment><USER6> Interesting, I'd never heard of B612. So they're sufficiently well-funded to commission a $500M Kepler-class probe?

<comment><USER5> last i'd heard they were still trying to get more silicon valley bigwigs funding it. ball was treating them as a sufficiently "real" customer that it was talking to subcontractors about the mission, but i hadn't heard about any big checks for hardware being cut.

</comment></comment></comment></comment></comment><comment><USER7> The Kepler analysis team has only gone through the first two years worth of data.

There are still two more years worth of exoplanets for us.

</comment><comment><USER8> Ok, so trolling around I've not found specs for reaction wheels. Lots of descriptions of what they are, how they work, etc but no specifics on building one. Given that this type of product is so critical to space operations (The ISS has replaced several, so has Hubble, its like the oil-filter of space or something) Seems like either a more durable item or some sort of cartridge system where you can have like 20 spares ready to go, eject one and slot in a new one or something.

<comment><USER9> I'm a former NASA design engineer. Reaction wheels are a real weak point in spacecraft design. They basically allow one to accurately point an observing spacecraft, but without using propellant.

If you use propellant, you eventually run out and the mission is over. With electric-motor reaction wheels (a minimum of three), you can keep them going with solar energy. So in principle, they're a big improvement over the alternatives.

The problem is that they're constantly in motion -- constantly. If you turn a spacecraft and bring it to a new stable position, that new position must be maintained by constant reaction wheel motion. So they're essentially running all the time, there's constant friction, and their parts and bearings eventually wear out.

> Seems like either a more durable item or some sort of cartridge system where > you can have like 20 spares ready to go, eject one and slot in a new one or > something.

You're overlooking something. To turn a spacecraft like Hubble or Kepler in a reasonable time, you must either have a massive reaction wheel, or you need to make it spin fast (it's all about momentum). Typical reaction wheels represent a compromise between mass and rotational speed. If you want to reduce frictional wear, you make them bigger, more massive, which increases the mission cost. If you need to reduce the size and mass of the spacecraft, you make the wheels spin faster, and they wear out sooner.

So solving the problem by adding more reaction wheels is a non-starter -- they're too physically large and massive to just add a lot of spares.

<comment><USER10> > a minimum of three

Correct me if I am wrong, but don't most systems use six? It is a whole lot easier to use three pairs of wheels. Pairs can be spun up from a dead stop and in the event of reduced power can be used to turn in either direction by braking action alone.

Or does "a reaction wheel" imply two counter-rotating flywheels by definition?

For an alternative, I've heard some good things about laser ablative thrusters. Still fairly young, but they are powered by electricity and have no moving parts. They do need reaction mass, but unlike traditional engines the mass is a solid block and can't boil off, corrode, leak, freeze or whatever problems affect liquid systems.

<comment><USER9> > Correct me if I am wrong, but don't most systems use six?

Kepler was equipped with four -- three in use, one spare. The idea is that you need one reaction wheel per dimension.

> It is a whole lot easier to use three pairs of wheels.

All that six wheels would provide is three spare wheels, one per dimension.

> Pairs can be spun up from a dead stop and in the event of reduced power can > be used to turn in either direction by braking action alone.

That's not how reaction wheels are normally used. Two counter-rotating wheels cancel each other out, producing zero net rotational force on the spacecraft.

> Or does "a reaction wheel" imply two counter-rotating flywheels by > definition?

No, just one. If you have two, and if they counter-rotate, they cancel each other out.

> For an alternative, I've heard some good things about laser ablative > thrusters. Still fairly young, but they are powered by electricity and have > no moving parts.

Not nearly enough momentum to rotate a large spacecraft.

<comment><USER5> > Kepler was equipped with four -- three in use, one spare. The idea is that > you need one reaction wheel per dimension.

are you sure? i thought it was four (in a tetrahedral arrangement), but they were all constantly in use, and one failure could be tolerated.

<comment><USER9> > are you sure? i thought it was four (in a tetrahedral arrangement), but they > were all constantly in use, and one failure could be tolerated.

Source: [http://kepler.nasa.gov/mission/faq/](http://kepler.nasa.gov/mission/faq/)

Quote: "Only 3 reaction wheels are needed to control the 3 degrees of freedom of rotation of spacecraft. But Kepler was provided with 4 reaction wheels, one extra for redundancy in case a wheel fails."

</comment></comment></comment></comment></comment></comment><comment><USER11> Bye Kepler. You were awesome. [http://kepler.nasa.gov/Mission/discoveries/](http://kepler.nasa.gov/Mission/discoveries/)

</comment><comment><USER12> In the future, will we be able to fix it if we can get a person up there?

<comment><USER13> It's wayyyyyyy too high in orbit to get up there, past the moon. Not even remotely worth it.

They are doing the same thing with the Webb.

<comment><USER12> Oh, wow, wikipedia says its actually in a heliocentric orbit. Yeah, not happening.

</comment></comment></comment><comment><USER14> A huge thank-you to all the teams involved with Kepler. It's a very fine experiment that's taught us a ton. Hit the lifetime goal too.

Great job!</comment>


I Cannot Stop Thinking About The New iPad (3) - <AUTHOR> http://mikecanex.wordpress.com/2012/03/20/i-cannot-stop-thinking-about-the-new-ipad-3/

<comment><USER2> I played with one today and didn't actually feel much of a difference. I was much, much more blown away by the iPhone 4 screen (it looked ABSURDLY better).

</comment><comment><USER3> Agreed. Samsung has really outdone itself.</comment>


Barak Obama Directs All Federal Agencies to Have an API - <AUTHOR> http://www.apievangelist.com/2012/06/01/barak-obama-directs-all-federal-agencies-to-have-an-api/index.php <comment><USER2> OT, but for god's sake -- he's the President of the United States. How many times can you misspell his name in one article?</comment>


How not to talk about an AI-powered future - <AUTHOR> https://ines.io/blog/wired-brain-ai-powered-future <comment><USER2> Whenever I read prominent figures talking about the dangers of AI, I feel like they are missing the mark.

I don't think the imminent dangers of AI are self-conscious machines rebelling and deciding to kill people, but a much more subtle and nuance problem.

Let's say that you go to a bank and ask for a loan. The bank has a procedure to decide if they give you the loan or not. If your request is rejected, they can (hopefully) explain why you didn't qualify.

Instead, the whole process gets offloaded to a learning AI that makes that decision for the bank. For the most part, we don't really understand why systems like neural networks make a decision. Now if the banks denies your loan, the best they can say why is 'huh, the computer said so'.

What if suspiciously the banks start rejecting applications from an specific minority? Has the AI determined that this particular minority is trustworthy? Does it even matter?

What when AI systems are introduced in legal procedures? What when an AI decides if someone will go to jail or not?

Maybe I'm out of the loop but I feel these are more pressing issues about the widespread use of AI that are not being talked about enough (definitely much less than the doomsday scenario).

<comment><USER3> Good! Bring this future! Humans should never ever ever be in charge of such things. On most domains where relevant statistical data is available, like your examples, even crude algorithms like linear regression will almost always beat human experts.

Humans are biased as hell. Studies show judges give much harsher sentences just before lunch, when they are hungry. Attractive defendants get half the sentences as unattractive ones. Not to mention all the classic race and gender ones, and random factors we can't even measure.

It is inexcusable to have humans in charge of any kind of decision process that a superior unbiased algorithm can do.

<comment><USER4> I think you completely misunderstood the parents concern, or chose to ignore it.

The question is - what happens if an algorithm develops a bias? A bias against a specific race/sex/occupation, whatever - what happens to the principle of free an equal society then?

Super simple example - you don't need AI to determine that men claim more frequently and more on car insurance than women. So....over the years, the rates for men have risen, until finally it was completely outlawed to take into account the sex of the applicant for car insurance quotes(at least here in the EU).

We need the human touch to iron out problems like this. An all knowing- omnipotent algorithm if going to discriminate based on statistics and that's something I don't think society wants.

<comment><USER5> > Super simple example - you don't need AI to determine that men claim more > frequently and more on car insurance than women. So....over the years, the > rates for men have risen, until finally it was completely outlawed to take > into account the sex of the applicant for car insurance quotes(at least here > in the EU).

I believe that law should be repealed, because it would lead to fewer people dying on the roads. So there is a case where not everyone agrees the human touch is actually a good thing.

<comment><USER4> >>I believe that law should be repealed, because it would lead to fewer people dying on the roads

Citation needed.

Counter argument - vast majority of males in prison for murder in US are black. Therefore, if we stop anti-discrimination policies in US, that will lead to saving more lives. I mean, statistics don't lie!

Or, maybe, just maybe - the statistics omit a lot of data that would allow us to narrow down what makes men claim more and why there's so many black prisoners in the US?

And that brings us back to the original problem - AI can just come to a conclusion = charge men more for insurance = less accidents! Or....put more black people in prisons = less murders! And the results might be exactly what it expects, so of course it will be declared as a huge success - but it's everything but.

<comment><USER5> Do you think it should be legal for insurance companies to charge higher premiums to smokers? If so, then you agree it's okay to simply go by the statistics in some contexts, so the existence of some other contexts in which it's not, isn't a counterargument.

</comment></comment></comment></comment></comment></comment><comment><USER6> Seeing the pictures of what people in 1900 imagined life would be like in 2000 alone was worth the click.

Direct link to the source article for those pictures: [https://www.washingtonpost.com/news/wonk/wp/2015/10/04/what-...](https://www.washingtonpost.com/news/wonk/wp/2015/10/04/what- people-in-1900-thought-the-year-2000-would-look-like/)

<comment><USER7> Apparently wings in the 1900s were the equivalent of today's blockchains.

<comment><USER8> I think these postcards were great. Until personal flying machines become widespread, there's progress to be made. Phones and blockchains are nice, but won't substitute.

<comment><USER9> We have personal flying machines now. But they're robots instead of human carriers.

<comment><USER10> We actually have personal helicopters but only the super rich can afford them. Landing space is limited, fuel is quite expensive, piloting is hard.

Now the trouble with those is mostly the space required to start and land these things. Think how skilled those firemen in the picture would have to be to operate even slow jetpacks or helicopters and not crash into one another as well as land reliably. Birds have an advantage of advanced evolved neutral circuitry to handle all this.

<comment><USER8> I'd say the main advantage of birds is small weight. If humans were as light as birds, personal flying machines would've become widespread long before computers. Would've been much safer too, because light creatures can endure falls from much greater height.

</comment></comment></comment></comment></comment></comment><comment><USER11> Tldr from the sidebar at the end (although it wasn't very long and it was worth reading):

 _We should stop describing these modern marvels as proto-humans and instead talk about them as a new generation of flexible and powerful machines. We should be careful about how we deploy and use AI, but not because we are summoning some mythical demon that may turn against us. Rather, we should resist our predisposition to attribute human traits to our creations and accept these remarkable inventions for what they really are—potent tools that promise a more prosperous and comfortable future._

<comment><USER12> That's ridiculous. The _entire point_ of AI safety is that we must _not_ attribute human traits to these creations, such as "social instinct" and "basic decency."

<comment><USER13> Is striving for preservation of human life in general over one's own not some form of "basic decency" or "social instinct"?

</comment></comment></comment><comment><USER9> A machine learning powered future is more likely in the near term. That's going to consist of systems which take in lots of information and optimize for something. Probably profits.

</comment><comment><USER14> I imagine these systems are going to be able to understand every motive of every person. If I am thinking this through correctly, at some point they are going to be able to precisely control the behavior of everybody. The systems will know what information to show you for a desired outcome. Who knows what that future is going to look like.

<comment><USER15> That's a sci-fi possibility, but it's more likely that buggy AIs will be the problem. They'll be rushed to market in hopes of getting that market-share and will make tons of errors and miscalculations. Most will be in ways that are hard to detect, but some will be obvious.

Rather than making a perfect AI that can control everyone, I think it's far more likely we'll develop a buggy one that accidentally kills us all.</comment></comment>


Ask HN: Do you listen to country music? - <AUTHOR>

Does it help? <comment><USER2> I love country music. More so than other genres I've listened to, country music has such a range. It can be upbeat and cheery, pump you up, change your mood, sooth your soul, provide empathy, be simple & complex...It speaks to me, no matter what mood I'm in or what's going on in my life. I'm sure others feel the same way about whatever music they listen to, but for me, it's country.

If you listen to it long enough, someone has sung about whatever exact, or almost exact, experience you have gone through. I like that.

</comment><comment><USER3> I like some country music, but don't listen to a lot of it.

I listen to stuff that might be mistaken for it, though! The Avett Brothers, Nickel Creek, Trampled by Turtles.

Folk music, but people who think badly of country music usually don't like banjos, either, and can't make the distinction in genre.

</comment><comment><USER4> Help what?

</comment><comment><USER5> No and Yes!

</comment><comment><USER6> Yes and No!

</comment><comment><USER7> Yes I do and it helps me to relax :)

</comment><comment><USER8> Sturgill Simpson and Chris Knight.</comment>


Ask HN: How do you successfully outsource coding? - <AUTHOR>

I'm looking at a few internal projects and there have been a number of articles/discussions that have touched on outsourcing recently -
e.g. http://news.ycombinator.com/item?id=1870960 and http://news.ycombinator.com/item?id=1880096 and a plethora of others I'm sure.
What have your experiences been using services like guru.com, rentacoder.com or elance.com (and what are your favorites)?  What do you find to be get the best results putting projects out to bid or finding trusted developers on these sites or others?  What mistakes did you make and what would you / did you do differently the next time? <comment><USER2> I recently outsourced graphic design and development for my start-up, and definitely made some mistakes... To be sure, these might be unusual for HN readers since my co-founder and I didn't have a tech background, and many of our problems might have been avoided with more technical knowledge on our part.

So I guess the first advice would be, make sure you have sufficient knowledge & information on your side to determine whether advice you're getting is correct.

Make sure it is clear from the beginning who is going to project-manage the process, and if your contractors say they'll do it, make sure to have regular check-ins with the PM. In our case, they said they didn't need us to step in as PMs, but we realized only very late that they weren't really managing their process on their end.

We had huge delays because of this, some egregiously occurring because the graphic designer never gave the developer the right mocks and we only found out during QA.

Finally, I totally agree with the comment above to be really clear about requirements. Do not believe anyone who tells you that they don't need things spec'ed out.

In my experience a clear spec is the only guarantee that things will get done properly and that there is real accountability in the process.

Hope this helps!

</comment><comment><USER3> The secret is in establishing long term business relationships with your contractors.

I've invested close to $10k on Elance over the course of about 50 projects. But that represents a fraction of my total outsourcing budget because the real work is getting done in one on one email discussions.

You can leverage the work & the money you put into Elance (and others alike) by making sure every developer you work with becomes someone whom you can trust long term. And someone whom you can eventually contact & commission outside of Elance, to speed up the process.

The key to making this happen is to reach out to them in your project descriptions. Ex- "the best candidate for this job will recognize the benefit of a long term business relationship in working with me." Posting a project is as much about selling yourself and the benefits of working with YOU as it is the project itself. If you want the best talent you have to be best kind of person to work with.

That said, other tips; \- pay promptly, be forthcoming with bonus, and don't nickel and dime \- as others have stressed: be articulate with the requirements and what you expect out of the final product. Ie- make it easy for your developers to work with you \- avoid large firms. Your looking for one man operations or small,talented teams

Goodluck!

</comment><comment><USER4> Be extremely clear about requirements - to the point of overdoing it. We've had some success with outsourcing but when it's failed, it's been due to us not giving specific enough requirements and "assuming" certain things are obvious.

Nothing is obvious.

<comment><USER5> Couldn't agree more. I have had successes and failures with outsourcing. Have tried India and Poland developers for a couple projects. I have had greater success with Polish developers as they seem to grasp the English language much better and are able to communicate easier.

With the failures, they always seem to occur when requirements are not outlined completely. Also, keeping an open line of communication at all times with the developers is essential. This will mean being available during their work hours and if possible negotiating with them to have someone available during yours. Never assume that the developer will get or understand what you are talking about or describing.

If you are looking to outsource, my advice is to talk to others you know who have outsourced and get their recommendations on individuals or companies. Don't just do a web search and go with the first, or even second, company that pops up. Research, ask for references, look at their portfolio, just like you were hiring someone to work for your company. Try to find developers who have extensive experience working with US based companies (assuming you are in the US).

Go with project based pricing over hourly.

<comment><USER2> Question on project-based pricing... Is it good to leave a final payment upon completion?

We didn't do that on my project and it was frustrating because there was no incentive at the end to get the final issues sorted out. We could tell that our contractors were burned out and ready to move on, but we needed our project completed as originally planned and it was hard to keep them motivated with no financial upside for them. Especially since, with all the delays, they had already spent more time on the project than they had budgeted for, so they were essentially losing money on the deal.

Yes, we could have agreed to put more money into this and started up a "new" project, but it didn't seem fair to us at that point...

Is it standard in the industry to leave a portion of the cost to be due only upon completion? Because I think that would have helped us, but we didn't know at the outset if it was within our bargaining power to try to get that...

<comment><USER4> We always leave some payment upon completion. If they are expecting payment, bug fixes and other issues won't fall totally off the radar for them.

It helps ensure incentive alignment.

And if the provider is adamant about not taking some portion of payment at completion, I'd wonder (and IMO, I'd walk away)</comment></comment></comment></comment>


Ask HN: Should we coordinate to switch to more productive languages? - <AUTHOR> It seems that some programming languages are simply better (i.e. overall safer, faster to read/write/compile/run, more expressive and efficient to develop in) than others. Overall worse languages often stick around though due to what often seems to essentially be community momentum--what could also be thought of as coordination failure.
Many individuals think "X lang clearly seems better, but Y is where the community momentum already is, so I am going with Y", and there isn't a clear way for developers and employers to commit to developing in language X instead of Y if "N quantity Y lang developers publicly commit to changing their next project that would otherwise be in Y lang to be in X lang."
While a public promise with public git repos may be enough, we may be able to even utilize smart contracts in the near future to help foster community-wide switches.
Also, while I'm not familiar enough with the languages to confidently say the dev community would be better if we could make the switch, I had: Python → Julia C → D C++ → D or Rust in mind, but whether or not you'd agree about these, I'm confident there are at least other switches worth making.
Would you pledge to switch to programming languages if enough of the industry agreed to do the same? If so, for which languages might you? Is this worth thinking about more? <comment><USER2> > Would you pledge to switch to programming languages if enough of the > industry agreed to do the same? If so, for which languages might you? Is > this worth thinking about more?

What research have you done on this matter other than this post? Is there a written record of you thinking about the trade offs in a longer format?

> Is this worth thinking about more?

No one can tell you what's worth thinking about. You'll have to decide that for yourself by doing the actual research and then presenting your results for discussion. Other than your questions I didn't see any actual research or summaries of research that would be useful for a discussion.

<comment><AUTHOR> I didn't realize this was Nature, my bad.

And of course I am the one who decides for myself if anything is worth thinking about more. I was simply trying to elicit the sort of information which would be relevant to this decision such as, "Here's a bit of evidence you might not be aware of that suggest this is more intractable than you may think. Also, considering the existentially pressing X and Y risks on the horizon, which better programmer productivity presumably wouldn't help, you may want to consider that your comparative advantage may be A or B."

<comment><USER2> Sounds like you already know what questions you want answers to but didn't actually put them in your prompt and made it much more open ended than necessary.

Personally I think language wars are silly. I enjoy learning new languages and the more of them there are the better so I will not be making any pledges that involve standardizing on a specific language or set of languages.

</comment></comment></comment><comment><USER3> If my company's software is built with 10 million lines of C++, and the software works, how would you convince the stakeholders that a rewrite is worthwhile?

Convincing people to switch because "it's better" is not very compelling if I have working code that is making money.

If you like another programming language, use it. I will continue using what works for my needs, especially when I already have working code.

<comment><AUTHOR> I am not really interested in having people switch who don't want to and are perfectly happy with their language. I am proposing the r&d of a way to coordinate people switching who would like to switch languages, but only under certain conditions, such as if their would be jobs in it and sufficient expected growth in attention to the language's development.

</comment></comment><comment><USER4> No. Use the language that fits best for the project/team. Why is Julia better than Python? These are entirely subjective questions.

<comment><AUTHOR> Many programming languages would fit a project\team better if they had more community support. It's often worth putting up with worse-designed languages due to the existing libraries and documentation.

Also, the whole 'subjective\objective' distinction is tiresome and doesn't really help here. If we held a RCT where half of people started learning and developing in Julia, and the other half in Python, and they both only had the standard library and documentation, and we measured productivity, code performance, dev satisfaction, etc. and pehaps even had the developers eventually switch, we'd likely see data supporting the idea that one of the languages is overall favored by developers more than the other.

<comment><USER5> I have a working situation where I need to work with Python and Julia. I'd like to say that there are great interoperability between these runtimes, so you can easily call a Python function from Julia and vice versa.

Clearly, if you find Julia more productive and think that's the future, then that's great! There is no reason to hold back given that you can call out to legacy Python code as needed.

The downside, obviously, is that you have two languages to work with, which is not ideal. Depending on the size of your project and how much appetite you want to migrate code in your longer term roadmap, you can make a good judgment how to proceed.

I would have to say the world needs to move forward no matter what. COBOL used to be the best language for business applications and it clearly went out of favor. The recent events with COVID-19 brought up a clear technical debt issue. What I' trying to say is, sooner or later, the code will need to be rewritten.

Google tends to rewrite their software every few years to keep it fresh. That's not a bad model to have for any technology-centric company.</comment></comment></comment>


Show HN: stacks to help with procrastination, depression, anxiety, OCD, etc. - <AUTHOR> https://trackmystack.com/users/baccheion
The notes tab tells more about each supplement/nootropic.
Previous show hn: https://news.ycombinator.com/item?id=12386378 <comment><USER2> You call lists of drugs and supplements "stacks", and then you post this to HackerNews?!?

<comment><AUTHOR> What's your point?

<comment><USER2> In what way does it make any sense at all to refer to a collection of drugs and supplements as a "stack"? You use the word stack as if it could only possibly apply to one particular type of usage, when that is manifestly not so.

Therefore you disrespect your audience in the extreme, and you expect them to spend their time on your website and figure out just what type of stack you're actually talking about.

If you want to refer to it as some sort of stack, then you need to apply appropriate modifier words to indicate what type of stack it is -- is it a web development stack, is it a continuous integration stack, or is it a drug/supplement stack? Or maybe there are even better modifier words that would more accurately describe the particular type of stack that you had in mind.

<comment><USER3> > You use the word stack as if it could only possibly apply to one particular > type of usage, when that is manifestly not so. Therefore you disrespect your > audience in the extreme

HN: where people can't convey opinions without using extreme hyperbole.

<comment><USER4> Help make HN a better place by engaging constructively, pointing out hyperbole calmly with substantive responses. Commenting with a gross generalization of the HN community as a whole (which you are choosing to participate in) does nothing to improve the discourse on HN.</comment></comment></comment></comment></comment>


L++ 0.2: Macros are supported via Racket's macro system define-syntax. - <AUTHOR> https://bitbucket.org/ktg/l/commits/c7472a9bc9e5c485d5779bd71b7a173c9be5d01f

<comment><AUTHOR> L++ website | [https://bitbucket.org/ktg/l](https://bitbucket.org/ktg/l)

Previous post (not by me) | [https://news.ycombinator.com/item?id=7711755](https://news.ycombinator.com/item?id=7711755)</comment>


The N900 [hands-on] from a Community Perspective - <AUTHOR> http://maemo.org/community/council/the_n900_from_a_community_perspective/

<comment><USER2> Wow, never heard of Maemo before. It's sounding a lot better than Android at the moment.

<comment><USER3> Android and Maemo are really headed in different directions. Maemo is (or at least has been) trying to keep as much of the existing linux tools and applications available as possible, while Android seems to be Google trying to rewrite the world(not that it's a bad thing, just different). The last Maemo device(Nokia N810) can run lots of applications you would not normally consider for a handheld device. I've seen everything from Emacs to FreeCiv to irb and the Closure REPL(although the N810 is rather shy of memory).

I think they real problem with these devices is that for the same price you could just buy a netbook and call it a day. The only place where I have benefited from the internet tablet form factor is while riding the T.

edit: more programs I use on a daily basis; mplayer and evince

<comment><USER4> _I think they real problem with these devices is that for the same price you could just buy a netbook and call it a day._

Except then you'd have to carry a netbook around, and you'd _still_ have to carry a phone. I want to carry as little as possible, but I still want to have a computer handy when I need one while out and about. My G1 filled this need just adequately, and it sounds like the N900 might be considerably better at it.

<comment><USER3> One of the downsides to carrying just a small device is screen size, reading PDFs on a tiny screen is tedious. You also have to deal with the limited keyboard, luckly you can remap some of the meta keys to include []{}<> and the all mighty pipe.

For everyone else, here is a picture of the N900 running xterm <http://www.flickr.com/photos/clankennedy/3868820466/>

<comment><USER5> The n800 is great for reading most pdf's. The resolution is more than sufficient, and it has zoom buttons just above the screen.

The only exception are the occasional pdf's which have a smaller than normal amount of whitespace on the sides. PDFs generated from scanned images were also unpleasant (due mainly to the weak processor/memory of the n800).

I'm really looking forward to the n900. I'll probably switch to T-Mobile to get it.

</comment></comment></comment></comment></comment><comment><USER6> Awesome, can't wait until it comes out. I love my N800, and I've been using it to manage lists for my GTD routine. It kind of sucks to also have to carry a phone though. It should be a great alternative to the iPhone.

</comment><comment><USER7> I guess my only question is: can I replace my cell phone with this? I'm not terribly voice-heavy on my phone (a 3G), but I don't want to have two devices. Can I leave skype running to receive calls in the background? Is there another/better way?

<comment><AUTHOR> Yes, you can replace your cell phone with this, especially if you're not a heavy user. Maemo multitasks apps as well as runs services in the background, just like any computer. As the article points out, Skype specifically is fully integrated: Cellural calls, Skype calls, Google Talk calls, SIP calls all use the same phone user interface.

</comment></comment><comment><USER8> I am almost literally drooling. I've already set aside the money for this device for when it comes out.

</comment><comment><USER9> I somehow miss the community in perspective.

<comment><AUTHOR> Just to clarify, the person reporting is a member of the Maemo Community Council. The council is elected to represent the community around Maemo, mainly towards Nokia. <http://wiki.maemo.org/Community_Council></comment></comment>


Reasons to Be Cheerful About Lotus Notes/Domino 10 for Developers - <AUTHOR> https://www.teamstudio.com/blog/lotus-notes-domino-roadmap-developers <comment><AUTHOR> Mostly sharing for nostalgia although the Node.js integration and move back to an external developer (HCL) are both interesting.</comment>


Why switching jobs is almost always a great idea - <AUTHOR> https://www.negotiatewith.us/blog/why-switching-jobs-is-almost-always-a-good-idea?aahq <comment><USER2> Significant discussion when you first submitted this three years ago:

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

But since then you've submitted it multiple times to no discussion at all:

[https://news.ycombinator.com/item?id=14701448](https://news.ycombinator.com/item?id=14701448) (6 days ago)

[https://news.ycombinator.com/item?id=14635723](https://news.ycombinator.com/item?id=14635723) (15 days ago)

[https://news.ycombinator.com/item?id=14586115](https://news.ycombinator.com/item?id=14586115) (21 days ago)

[https://news.ycombinator.com/item?id=14487049](https://news.ycombinator.com/item?id=14487049) (35 days ago)

[https://news.ycombinator.com/item?id=14434003](https://news.ycombinator.com/item?id=14434003) (43 days ago)

[https://news.ycombinator.com/item?id=14409248](https://news.ycombinator.com/item?id=14409248) (47 days ago)

So I'm interested to know - why are you submitting this repeatedly?</comment>


FTC Settles with Herbalife - <AUTHOR> http://www.bloomberg.com/view/articles/2016-07-15/herbalife-will-have-to-live-without-mansions-and-private-jets <comment><USER2> So, Herbalife IS a pyramid scheme according to the FTC's own definition, but they WON'T call it such, and will extract $200M from Herbalife and allow it to continue.

This is the worst possible result for anyone who is not the FTC or Herbalife.

<comment><USER3> The settlement included a bunch of changes to Herbalife's business practices in the US. This sounds like it will be good for potential victims in the US, but won't help potential victims outside the US.

</comment></comment><comment><USER4> So does this mean Bill Ackman has failed?

Referring to his short selling strategy: [https://news.ycombinator.com/item?id=11095715](https://news.ycombinator.com/item?id=11095715)</comment>


Ask HN: Can I be compensated if i introduced a VC to a startup ? - <AUTHOR> If I introduced an investor to a startup and that investor ended up part-funding a series round, am I entitled to have more shares/compensation as a result ? <comment><USER2> Let's say a VC investor invests $500,000 into a startup, I don't think they'd be keen to know that $50,000 of it gets passed straight to you and doesn't go toward building the product.

Having said that, if it's an arrangement worked out with the VC beforehand, then it could possibly work.

If we're talking about acquisition rather than investment, then that's an entirely different matter of course.

</comment><comment><USER3> Connecting a company looking to raise money with a person or company with money to invest is an entire industry. It often falls under terms like "private equity fundraiser" or "corporate finance", though corporate finance encompasses a lot more.

Typical rates of compensation for the middle man or company run from 1% to 8% -- it depends on the deal you strike with the company looking to raise money.

Of course, you need a contract laying out your cut. And... you need to be aware that you open yourself up to being sued down the road by the investor if his investment goes south and he loses money. This happens a lot -- especially when it's a private investor and not a company investing the money. For this you'd need Professional Indemnity insurance, and you'd need it for the next 10-20 years - the lifetime of the deal, basically.

</comment><comment><USER4> nah. do this a few times successfully though, and you could potentially become a VC scout. But on any single introduction or transaction, that's just being helpful, nothing more.

<comment><USER5> > that's just being helpful, nothing more.

To add, the introduction itself is a very small part of the process of closing funding.

Typically consultants/bankers who help with larger fundraising rounds and charge for it would provide much more services beyond a simple introduction/recommendation.

</comment></comment><comment><USER6> Not really. Unless you agreed on it before the introduction on paper. The VC agreeing with it would help it be less scammy.

</comment><comment><USER7> Can you be compensated? Absolutely. Are you entitled to it? Absolutely not.

</comment><comment><USER8> Nope. In most of the world you need some kind of contract verbal or written. Sorry.</comment>


Using VueJS Alongside Django - <AUTHOR> https://tkainrad.dev/posts/use-vuejs-with-django/ <comment><USER2> This is great, thanks for writing it!

I have recently stepped out of the seemingly never-ending spiral of using React/Vue for everything frontend, and also discovered Django along the way.

For building prototypes, Django is the fastest framework I've ever used. After building out prototypes in Django I've come to a realization that at most 10% of my websites need to be truly reactive to user interaction without page reload. Turns out when I dropped this requirement when building something, I can actually finish the projects I start. And also turns out for the end-user, they don't even notice page reloads for most sites.

<comment><USER3> I totally agree. Full page rendered app are way easier to code. It's like an immutable function - request in, transform, html out. I think as soon as you want to add some niceties with React you end up setting up a load of front end stuff. You suddenly need APIs, create-react-app, webpack, babel, build scripts, redux, routing etc. And you also end up losing out on some of the Django side, forms+validation, templating, views, urls. And often you end up having business spilling over to your front end.

I'm working on a project that lets you build your Django app like you normally would with templates and views but you get a React app and all the benefits of a single page app. You don't need to write any APIs or use redux etc. It will have a bunch of components built in and if you don't need any more then you don't even need to build the javascript yourself, you just include the already built file. At the moment I have a sort of Django Admin equivalent example working and I'm looking for some feedback. If you or anyone else has any ideas about it I would love to hear, feel free to PM me (email in profile).

<comment><USER4> Are you aware of pjax, turbolinks and (stepping up a bit from this really minimal baseline) intercooler.js?

Curious how you feel your project fits in at this end of the ecosystem.

<comment><USER5> Intercooler is fantastic and integrates well with Django.

</comment></comment></comment></comment><comment><USER6> I totally understand people's preference to use Django templates wherever possible, and only sprinkle in more frontend focused stuff when needed, but personally, I would rather just write the whole frontend in React or Vue.

This is probably partly due to the fact I find working with django rest framework serializers / views to be much nicer than django forms / views.

I think what puts most people off is the default requirement to go all-in and create an SPA with global state management and client-side managed routing, but this isn't actually necessary.

I have found incorporating Django with [https://inertiajs.com](https://inertiajs.com) to be a pretty solid alternative. I can write the whole frontend in React, and the backend in Django rest framework, but everything is still page based, so I don't require redux or any other kind of global state, just use the inertia utils to make page transitions.

NextJS is another alternative. To talk to a (django) API you need to go through getStaticProps and getServerSideProps which, depending on the location of your API server, can be a little slow, but you get pre-rendered HTML and page based routing so again no global state management required.

<comment><USER7> >I think what puts most people off is the default requirement to go all-in and create an SPA with global state management and client-side managed routing, but this isn't actually necessary.

There's also the benefit of being able to lean on Django patterns for sessions.

<comment><USER6> Since inertia runs in the same session context as your django app you can use django sessions as you would in a standard django app - in fact this is the goal of inertia. This even works with a django rest framework API

</comment></comment></comment><comment><USER8> I have a Django application which I wanted to connect to from a ReactJS front end.

However I did not want to lose all the business logic and work that had gone into the views, models, forms and fields along with all the validation and authentication logic etc.

So I wrote some React code that grabs Django's HTML forms and dynamically turns all the HTML fields into React components. To do updates I just submit ordinary form data from React. This means I just create ordinary Django application forms and views and it works from the React app.

There's pros and cons to this approach. The code that does the HTML form to React form logic is more complex than I would like. On the other hand it's all constrained to a fairly tight area of React. Then there is the huge benefit of being able to make zero modifications to the Django back end. On the con side, it does feel like a bit of a frankenstein application. But its a small price to pay for not having to convert entire Django apps into API's.

I actually have lots of mini React apps at the front end that are loaded onto ordinary Django HTML template.

<comment><USER9> I did that with the google web toolkit a decade ago. It was great for enriching functionality, but didn't work with the overarching GWT architecture (which expected to control the whole page as an SPA).

Is react happier being a component on page?

<comment><USER8> >> Is react happier being a component on page?

I asked Dan Abramov (a lead React developer) the same question and he said yes, indeed this is exactly what facebook do - they progressively added more and more small react components to their HTML pages.

In React you can also use "portals" to render to multiple HTML elements on an HTML page so you can do it both ways - one React app represented in multiple places in the DOM or you can just create many small React apps and plop them in multiple places on your page.

</comment></comment></comment><comment><USER10> I really love Django and Wagtail but I just can't stop writing Go(lang) code, it's just so addictive. It's a pity there aren't any WSGI servers written in Go that Would allow you to intermix Go and Python code seamlessly. Kind of like what Roadrunner does for php [0]

      [0] https://github.com/spiral/roadrunner

</comment><comment><USER11> Nice article. People sometimes dismiss Django but it's been around for a while and is certainly the fastest framework for building out new ideas that I've seen. It's my goto framework for prototyping.

I find too many teams are so focused on using the latest fancy frameworks that they spend way more effort to build something using "new stuff" that could have been done in half or a quarter of the time with something like Django. For most projects, simple that's built and works beats fancy that's still being built.

<comment><USER12> I saw a really good reddit comment about this topic recently (server side templating vs client side). Tl;dr: when things get really interactive/dynamic, the js framework simplifies things.

"Server side templating can work really well when the website is static. The problem is that as you add more and more dynamic elements, you either have to go to the server and re-render everything with every change (which can be slow), or you can make the changes on the client side with something like jQuery. But the latter option presents a challenge because you'll eventually find yourself duplicating functionality.

For example, imagine a to-do list website that you render on the server with a templating language. It fetches the user's to-do items from the database and then renders the list. Now let's say you want to let a user add a new item without re-rendering the entire page. You could use AJAX to tell the server to add the new item, but now you need to update your UI list accordingly. You could use jQuery to construct a new DOM element and append it, but now that list element exists in two different places: in your jQuery code and in your template on the server. If your website becomes very dynamic, this situation can get really unwieldy from a programming perspective.

Both Angular (from what I've read) and React (from personal experience) are highly suitable for creating single page apps, with the goal of creating a dynamic, fast, and maintainable website. There are other benefits, as well as downsides, to using Angular and React, but I hope this clears it up a little bit. Both of them make server side templating unnecessary by moving UI logic/rendering from your server to the client's browser. So a user who visits your React powered to-list website would get the React code as a JS bundle, it would make an AJAX call to your server to get just the data, and then it would render the UI based on the data." -/u/VertiGuo ([https://www.reddit.com/r/node/comments/6t22cr/back_end_templ...](https://www.reddit.com/r/node/comments/6t22cr/back_end_templating_engine_or_front_end_framework/dlhukkf/))

<comment><USER13> > You could use AJAX to tell the server to add the new item, but now you need > to update your UI list accordingly. You could use jQuery to construct a new > DOM element and append it, but now that list element exists in two different > places: in your jQuery code and in your template on the server.

Your server can just return html which is ready to be inserted into DOM. You don't need to duplicate the node view creation logic client side.

<comment><USER12> That can get pretty complicated for pages with a lot of dynamic elements. For example, if you submit a form and have to re-render the form with an error. All the hidden "ready to be inserted into the DOM" elements also need server side code to re-render things the same way. For pages with a lot of dynamic stuff, it might be better to just build it on the client side and use an API with server side validation on the server side.

<comment><USER13> > All the hidden "ready to be inserted into the DOM" elements also need server > side code to re-render things the same way.

There seems to be some confusion. With your list example, you still make an ajax call to create a new ToDo, the server returns html which is inserted into DOM.

You'll be making an ajax call anyway, except instead of just 200 reponse/json , you'll get html. This is server side rendered. There is no """hidden "ready to be inserted into the DOM" elements"""

Yes, forms are something which, depending on complexity, can be better served with SPA type solution.

If it's not complex, I'd still keep rendering server side and just add small bit of JS logic to update form header to add/remove to error list and just replace form input field with server response.

<comment><USER12> Yeah, the TODO list example probably isn't a good example for a complicated scenario when avoiding server side templating makes sense.

</comment></comment></comment></comment></comment></comment><comment><USER14> Vue and Django (with Rest Framework) are a great combo and I've used them together to build two reasonably sized apps recently.

I don't know if I'm doing it wrong but I still use Gulp to compile everything. I use Django for the routing and intermix a tiny bit of dynamic server-side data (like login user or breadcrumbs) in the Django templates before they go to Vue.

Doing it like this I skip all the component complexity (I do use mixins) and can build front end with simple tools I understand. Possibly I could avoid a little repetition by using components, but the increase in abstraction I don't think would be worth it.

This is fast to develop. I've seen less complex single page apps using React or whatever take what seems like a lot more effort. But like I say, maybe I'm not doing it right. It works really well though.

</comment><comment><USER15> Been using Django alongside VueJS as well. It's a very efficient way of building your web app.

That being said, mostly it's just a couple of pages that need VueJS such as e.g. a dashboard and such (depending on your app of course!).

If you use standard Django with Turbolinks it will give you the SPA "feel" that you require.

</comment><comment><USER16> This is a great read. I had considered using React with a Django side project a while back, but it just seemed like too much added complexity for the gain I would get in a small app. The approach in this article though looks great.

</comment><comment><USER17> This is similar to what I've done recently with a project of mine using Django + Elm ([https://github.com/ereadingtool/ereadingtool](https://github.com/ereadingtool/ereadingtool)).

I wrote an adapter of sorts, between Django and the frontend, which is a Django base template specifically for the pages loading compiled Elm/JavaScript, that turns Django view context data into a JavaScript data structure that gets fed into the Elm code. In this way, the frontend JavaScript is initialized and ready to go without more page fetches. If I need to pass some extra data to it, I can simply add it in to get_context_data().

I like the idea of re-using everything Django has to offer but also being able to pass a few parameters into Elm and have it handle the view side. Where I get into trouble is when Elm and Django code both have to agree on data formats and schemas, but this is more my fault for not strongly abstracting the API.

</comment><comment><USER18> One of the reasons I have ended up choosing Vue over React as my preferred front end framework is exactly that it can integrate at these different levels. If you want to write a full on SPA it will do that. But if you want to have a 99% traditional server rendered app, and you just want to sprinkle a component here or there, it does that in an extremely light weight manner.

But the most likely scenario? You have both: new apps being developed as SPAs and some older ones being maintained and the nice thing is it is very non- intrusive share Vue components between them by dropping a script tag into the legacy page.

So it's both legacy compatible, current-tech compatible, and my prediction is, better positioned for forward compatibilty with whatever comes next for the same reasons.

</comment><comment><USER19> > This post aims to show that you can start to use Vue with your Django > projects immediately without any sophisticated setup that will take hours to > complete. Therefore, we will use the simplest method to use Vue.js: > Including it via a <script> tag.

Nice. Yeah, sometimes it's easier to get started this way without investing a day in getting webpack working...

When the time comes and you need webpack, then this package has been known to help the integration between the frontend build system (webpack) and django's static file serving functions: [https://github.com/owais/django-webpack- loader](https://github.com/owais/django-webpack-loader)

<comment><USER20> I've tried setting up django-webpack-loader but it felt very heavy handed and I didn't like how it forces you to use some non-standard manifest plugin that was pretty buggy.

Instead I went with vanilla Webpack outputting files into Django `STATIC_ROOT`. That way Webpack is only concerned with producing the files and Django handles the whole file name hashing, compression etc in production.

I've found this to be much, much more straightforward. I'm planning to write a post about it.

<comment><USER19> Yes, please blog post this. I'm curious to see how you inject the right bundle hack name (js side) into the django template (Python side).

> non-standard manifest plugin

I hear you, and this feels weird to me too, but then again node-land needs to talk to Django-land somehow so writing a .json file doesn't seem all that bad way to do it ;)

<comment><USER20> It's up here: [https://pascalw.me/blog/2020/04/19/webpack- django.html](https://pascalw.me/blog/2020/04/19/webpack-django.html)

</comment></comment></comment></comment><comment><USER21> Vue and Django work very well together. However I'd recommend completely decoupling the frontend and backend source code - and avoid using django templates entirely. Instead expose REST endpoints using django rest framework

<comment><USER22> Why? Server side rendering is often fast and well suited for pages with mostly read-only content.

<comment><USER21> Yes, serverside rendering is generally more performant than a decoupled client/server-side approach. If server-side rendering is a requirement of the project I'd look into nuxt.js + vue

I was commenting more generally on the approach to building a web app with Django and including external js libraries in Django templates, which I've done in the past as project requirements have changed over time. After including external js libraries to Django templates, there is a lot less support in terms of resources and supporting libraries such as testing frameworks. If the client-side project is initialized with Vue, the project can benefit from the overwhelming amount of supporting resources.

</comment></comment></comment><comment><USER23> I wrote my Clash Royale streamer tracker ([http://playedwith.io](http://playedwith.io)) using this exact combination.

Backend: \- Django Rest Framework \- Django Background Tasks (great for running cron like jobs, and simpler than celery)

Frontend: \- Vue SPA

All of this runs on docker-compose, with nginx used to route traffic to either the backend API or frontend files that were built using Vue-Cli.

Very happy with this stack. It's not super advanced, but it is easy to get up and running and quick at prototyping.

</comment><comment><USER24> Slightly off topic, but I really like how this site uses the left and right whitespace on larger screens.

One of my minor frutstrations around having a large 4K monitor is that a lot of websites (especially blogs) force the width of the text to be very small and I end up with massive whitespace on the sides. Although this blog still has a small width for the main text, the sides are not wasted!

<comment><AUTHOR> Thank you! The site is created with Hugo, as described in this post: [https://tkainrad.dev/posts/using-hugo-gitlab-pages-and- cloud...](https://tkainrad.dev/posts/using-hugo-gitlab-pages-and-cloudflare- to-create-and-run-this-website/)

I used the Coder theme ([https://github.com/luizdepra/hugo- coder/](https://github.com/luizdepra/hugo-coder/)) but made quite a few changes over time. These changes include a slight increase in the main container width and the addition of information on the sides.

I really have a hard time reading long posts where I cannot see a TOC on the side, so this was a priority for me.

</comment></comment><comment><USER25> I've been using Django with Vue sprinkled in on [https://candid.work](https://candid.work) and it's been a pleasure. Using Vue for reactive stuff and then modifying form fields after the changes so Django can still do the updates has been a pretty great experience so far.

<comment><USER26> Off topic but did you use an off the shelf template for your actual application? The screenshots look very familiar for some reason.

<comment><USER27> It's [https://startbootstrap.com/themes/sb- admin-2/](https://startbootstrap.com/themes/sb-admin-2/) which is free.

</comment></comment></comment><comment><USER28> I feel the only way these two will play nicely is swapping Django for a DRF approach. Vanilla JS could be, and perhaps should be, used in place of Vue for small use cases. There's no need for the extra abstraction when AJAX could work.

<comment><USER14> Well you "could" spit out data from the views as JSON into <script> blocks in the Django templates and they would play nicely together.

But then you would be limited to various manipulations of the initial data so "could" is certainly not "should".

<comment><USER12> Can't you also pass data into components by using server side templating to fill in props on the component?

Like this: [https://stackoverflow.com/a/56461472](https://stackoverflow.com/a/56461472)

</comment></comment></comment><comment><USER29> Interesting article! Another approach is serving webpack bundles from Django views. This allows you to take advantage of the entire node ecosystem and build process (for better or worse) while still utilizing Django authentication, etc. Writing single file Vue components (with hot reloading) and bundling them is definitely more enjoyable than writing static files for Django. If performance is a concern, you can always optimize with webpack in this approach, whereas optimization may be harder in methods such as the one this article suggests

</comment><comment><USER30> I recently also coded my first Django/Vue app. Here's what I really liked: Have _all_ business logic on the server. The user clicks a button? Tie this to a function on the server that receives the client state from Vue and responds with the new state. This way, all business logic is in very simple Python functions that essentially operate on a JSON dictionary.

The above approach only needs very little generic wiring. The caveat is that it probably only works when there is little client data, which was the case for me.

</comment><comment><USER31> I've been building a web app with Django (+ DRF, Next.js and React) recently again for the first time in two years and it sure is a joy.

My biggest gripe with it is that it leaves the business logic side of things totally up to the developer. While many like it this way, I'd find a cookbook of sorts helpful with reference implementations on stuff like fat models or service layers. This is something Next.js has done very well with their examples hosted on Github.

</comment><comment><USER32> I am currently working on a personal project using Django and Django Rest Framework purely as the back-end. My front-end is a React app.

Because I just use django+drf for the api, I thought about using Flask + Flask REST.. However, after having worked with Django over 3 years, I found the learning curve quite steep.

Do you intend to use Vuex and/or Vue router at some point?

</comment><comment><USER33> Would be nice to see a semi complete project using VueJS with Django integrated as closely as in the article.

Something along the lines of: [https://github.com/gothinkster/realworld](https://github.com/gothinkster/realworld) which covers front-end and back-end separately

</comment><comment><USER34> if you use [https://www.transcrypt.org/](https://www.transcrypt.org/) you do not need node.js and with little work you can write Vue apps like this

class MyApp(VueBase):

        def __init__(self):
            self.el = "#app"
            self.msg = "Hello from vue class"

        def created(self):
            print('Created')

        def v_show(self, evt):
            print('show method', evt)

        def computed_title(self):
            return self.msg + " Computed"

app = MyApp() app.mount_to("#app")

#Vue methods declare with v_ #Computed and watch with computed_ and watch_

</comment><comment><USER35> alpine.js or intecooler.js will neglate the need for vue.js altogether. I have moved away from the SPA approach even though I have worked as frontend dev. html rendered on the server all the way with sprinkles of js.

</comment><comment><USER36> Ah yes, Vue in Jinja. What's better than embedding template in another one and both languages use the same interpolation delimiters.

</comment><comment><USER37> TL;DR: the idea is basically to write the Django data from the DB into a JS object and then use that to feed Vue components. I imagine they do this only for the stuff that uses Vue and not the whole page markup.

Vue is a great option to combine with server rendered markup (PHP, Python, etc) because it can read the templates directly from the DOM and doesn't need a build step like JSX does.

It's not the only option though. You could also use Preact + Htm (JSX in string templates) which doesn't need a build step either and is much smaller than Vue.

[https://github.com/developit/htm](https://github.com/developit/htm)

</comment><comment><USER38> Anyone has a similar "how-to" article on how to do this with Flask and Vue?</comment>


Ask HN: Purchased the new MacBook and work with Vim? What did you do? - <AUTHOR> I have the older version of the MacBook pro and can now switch to the new one at work.
I work with Vim, meaning I use the ESC key quite often.
Do you have the new MBpro? Work with Vim? What did you do? <comment><USER2> Remapped Caps Lock to Esc...

<comment><USER3> The contortion required to get your pinkie up to escape versus just pressing caps lock is pretty significant. Some people say that they get "vim pinkie" RSI as a result of making that awkward movement, the same as Emacs pinkie on Ctrl in the bottom left.

<comment><USER2> I just checked - I'm actually using my left ring finger instead of my pinkie for some reason.

</comment></comment></comment><comment><USER4> I ended up remapping `jj` to `ESC`. I use vim+tmux and so I remapped Caps Lock to CTRL.

<comment><AUTHOR> How does that work? I had no idea you can map a combination to a key.</comment></comment>


The Interlisp Programming Environment (1981) [pdf] - <AUTHOR> http://www.ics.uci.edu/~andre/ics228s2006/teitelmanmasinter.pdf <comment><AUTHOR> Interlisp was the so-called "west coast" Lisp that emphasized an interactive programming environment and in retrospect looks more like a hybrid between Smalltalk and Lisp than modern Lisp implementations. It was developed at PARC for a while. I don't know if there was cross-pollination between Interlisp and Smalltalk or if the similarity was a zeitgeist thing.

This article talks about the design values of the system and communicates the flavour of what a Smalltalkish Lisp would have been like.

As someone who's only read about this, I'd be interested in hearing from people who actually used it.

<comment><USER2> It's very much like an early version of Smalltalk: monochrome, with an early-80s style GUI. There's a popup main menu with a surprising number of options, plus several editors, debugging tools, and a Smalltalk-like 'Transcript' window (for output). The system is image-based, so the running image could be stopped and restarted, even from a different machine.

More intriguingly - and again, analogous to Smalltalk - Interlisp is more than just another Lisp dialect: it's a complete operating system running atop a Lisp VM, with Lisp as the system language, from top to bottom. Awesome!

By today's standards, it's clunky (as one would expect), but if development had continued, I suspect the comparison to Symbolics Genera would be the analog of comparing a GUI desktop environment to a console-based one. Considering the richness of modern environments (have you seen Pharo or Squeak?), that could've been a seriously cool Lisp development platform...

Incidentally, ParEdit is based on Interlisp's SEdit (in Taylor Campbell's words, 'a real structure editor, not a cheesy imitation like paredit').

<comment><USER3> > I suspect the comparison to Symbolics Genera would be the analog of > comparing a GUI desktop environment to a console-based one

Huh? The MIT-class Lisp Machines also had GUIs from the beginning. Clunky by modern standards, as you say, but definitely graphical.

Maybe I just don't get what analogy you're trying to draw.

<comment><USER2> Yes, you're right - I was mistaken (I was thinking of Slime/Emacs). Genera had a proper hierarchical window system - screenshots just don't do it justice!

</comment></comment></comment></comment><comment><USER4> I got a Xerox 1108 Lisp Machine running Interlisp-D in 1982 and enjoyed it greatly. It had knowledge of code like modern IDEs making code inspection and refactoring easier. Back then, it was like magic.

Now however, I prefer IntelliJ for Clojure and Java, and the similar IDE RubyMine for Ruby development. I think very good IDEs are a spiritual successor to the wonderful programming environment if my 1108.

</comment><comment><USER5> Nice article. I have a Xerox 6085 "Daybreak" workstation that runs Interlisp.

An emulator exists, that runs on various *nix systems. It used to be available for noncommercial use under here [http://www2.parc.com/isl/groups/nltt/medley/](http://www2.parc.com/isl/groups/nltt/medley/) but the links seem dead.

<comment><USER2> Email me if you want a copy... I also have it set up in a Debian image, ready- to-run.

<comment><USER6> Is it abandonware or is there still commercial interest in it?</comment></comment></comment>


DARPA's factory of the future looks like open source development - <AUTHOR> http://arstechnica.com/business/news/2011/12/darpas-factory-of-the-future-looks-like-open-source-development.ars <comment><USER2> This might work as a DARPA project, but it won't work for real, non-DARPA projects for a large number of reasons. A few that spring to mind:

        1. DoD spending is more political than military or technical. The US congress uses "defense spending" as a way to bribe voters, rather than as a way to defend the country.
        2. Can't be done in secret. Without secrecy, DoD spending would have to withstand some scrutiny, and it probably can't, due to (1) and some other factors.
        3. "Intellectual Property".  The US as a society is busy locking up all of the ideas it can, for some strange reason. Every smart patent troll in the country would start looking to see what it can sue for.</comment>


People think it's impossible to be both ethical and competent - <AUTHOR> https://qz.com/1786688/edelman-trust-barometer-2020-its-impossible-to-be-both-ethical-and-competent/ <comment><USER2> "In Edelman's index of public perception, business ranked the highest in competence"

So business has a competence of 14 and ethics of -2 and NGOs have a competence of -4 and ethics of 12.

Only NGOs are ethical.

Only Business is Competent (but not by much).

Only the public is smoking some powerful stuff.

on edit: added the (but not by much)</comment>


Show HN: Automatic cleanup in C using with-statements - <AUTHOR> https://github.com/taeber/cwith <comment><USER2> Or you could use attributes...

[https://www.reddit.com/r/embedded/comments/gt8vsc/using_raii...](https://www.reddit.com/r/embedded/comments/gt8vsc/using_raii_in_c_for_fun_and_profit/)

<comment><AUTHOR> Yes you can. I did mention GCC's cleanup attribute along with MSVC's try- finally construct. Another user was kind enough to even provide an example in their GitHub issue: [https://github.com/taeber/cwith/issues/1](https://github.com/taeber/cwith/issues/1).

</comment></comment><comment><USER3> Hey, it's pretty nice.

Reminds of the old adage - You never code in plain C, you need to first #define some macros and then you can proceed with metaprogramming

<comment><USER4> Unless you are doing embedded programming.

<comment><USER5> Especially when you are doing embedded programming.

You think those GPIO registers are going to encode themselves?</comment></comment></comment>