On GraphQL-to-SQL - <AUTHOR> https://productionreadygraphql.com/blog/2020-05-21-graphql-to-sql/ <comment><USER2> I'm surprised that there's no mention about the interplay of authorization and data fetching in the post.

This is one of the things that seems to be a little bit nuanced (surprisingly?) because it's not just about creating the right query to fetch data optimally, but it is also about making sure that it's handling data with the right authorization context of the current end-user.

This becomes especially tedious when you're fetching objects and lists of objects and the "resolvers" to fetch those objects need to mix in authorization rules in each resolver.

Hasura[1] tackles this by providing a model level authorization layer (similar to Postgres RLS, but at the Hasura/application layer) which makes GraphQL to SQL feasible even for apps. It's not just about a translation layer. Postgraphile does this using Postgres RLS.

Those are the key benefits that make Hasura useful for data-fetching in practice. Over the last few years we've been working with users with billions of records per table, especially in enterprise environments. And it's great to see how smooth things have been.

Especially as the number of tables and models explode, having a declarative system to specify authorization at a model level and then get a guarantee that an effective SQL query will get created is a nice thing to have. It allows our users to deal with higher level concepts, model data, setup authorization, make queries, look at query plans (which now show full SQL queries), add indexes, test, add to an allow-list, done.

[1] - [https://hasura.io](https://hasura.io)

(I'm from Hasura)

<comment><USER3> What I didn't find out while trialing Hasura is if it's possible to declare your GraphQL API using code rather than the Hasura web GUI. I eventually gave up on it because I figured I couldn't store the configuration I was making as code in a git repo.

Your comment makes me think I was maybe wrong about that? Could you confirm and/or link to some docs about this aspect?

<comment><USER2> Everything in Hasura is configured declaratively. The web GUI is essentially just updating that configuration. There are a few options:

1\. You use the GUI and then export/import the metadata

2\. You can use the GUI and as you do, the GUI will keep incrementally updating the metadata configuration file and even create database migrations for you in your folder on your machine, kind of like an IDE

3\. You can stop using the UI altogether, and just write the configuration by hand

Docs: [https://hasura.io/docs/1.0/graphql/manual/migrations/index.h...](https://hasura.io/docs/1.0/graphql/manual/migrations/index.html)

Also, feel free to ask around on our discord if you need help: [https://discord.gg/hasura](https://discord.gg/hasura)

<comment><USER4> This approach means one's own deployments of Hasura can't be immutable?

<comment><USER2> There's a docker image that can take a configuration file as input.

[https://hasura.io/docs/1.0/graphql/manual/migrations/advance...](https://hasura.io/docs/1.0/graphql/manual/migrations/advanced/auto- apply-migrations.html)

You can choose to bring in that configuration via a Kubernetes configmaps type thing, or by baking a new image for a release (like you would have done with your source code say).

<comment><USER4> Yep, that's what I've been doing for my experiments with Hasura so far :) It just feels a little "off-piste".

</comment></comment></comment></comment></comment></comment><comment><USER5> Shameless Plug here:

I have developed a Python library that does essentially this GraphQL-to-SQL pattern, leveraging the power of SQLAlchemy and some metaprogramming to create the 4 CRUD methods for each table automatically, all with filters, orderby, pagination and subrelationships/queries. And if you use SQLAlchemy's automap, you don't even have to have the database schema ready.

I needed this when a client with a huge Microsoft SQL Server database (2k tables+) asked me to quickly export it 'to the web' with the least friction possible. I researched Hasura and it was available only for PGSQL, so I created my own, and by using SQLAlchemy I can connect with any database supported. I am using pyODBC with Microsoft's drivers on Linux and I can easily connect to the database and export it.

I am gonna provide example code soon'ish on the library's repo. But basically, it goes:

# Instantiate the library, pass in your db url and your SQLAlchemy database schema (declarative_base() or automap_base())

# GraphQL objects, schema and actual crud functions leveraging the passed connection_string get dynamically generated.

# Instantiate a GrapQLView, and pass it to your Flask App()

# That's it!

[https://github.com/flipbit03/sqlalchemy-graphql- schemagen](https://github.com/flipbit03/sqlalchemy-graphql-schemagen)

</comment><comment><USER6> Quick plug: we've made good progress on solving this very problem for the SQLAlchemy ORM in Python. Our approach is a bit like Join-Monster but more flexible because:

      - we introspect your SQLAlchemy models and generate Dataloader-based resolvers that emit small independent SQL queries. This way this optimization composes naturally with other GraphQL types in your schema.
      - we are thin wrapper on top of Graphene, the main GraphQL Python library. It makes it very easy to extend your type if needed. We also added ways to rename and modify the type of a column / field.
      - for the SQL query generation we currently lean on SQLAlchemy to do the heavy lifting. It can emit efficient in IN() JOIN queries for us.

So far, it's been working quite nicely for us. We were able to generate decently performant schemas with very boilerplate on top of our existing SQLAlchemy models. And each time we've run into a case that the library did not optimize well for us, we were able to easily override its behavior by writing our SQLAlchemy queries.

There is still room for performance improvements but I'm confident we'll get there eventually (though I expect the optimizations to only work for DBs that support LATERAL JOINs). My main focus at the moment is to come up with an API that it possible to create performant types that aggregate multiple tables.

Links \- [https://github.com/graphql-python/graphene- sqlalchemy](https://github.com/graphql-python/graphene-sqlalchemy) \- [https://github.com/graphql-python/graphene- sqlalchemy/pull/2...](https://github.com/graphql-python/graphene- sqlalchemy/pull/253)

EDIT: formatting

<comment><USER7> I'm working on a project that depends on Graphene and Django (not my choice). Any ideas off hand about doing the same thing there? IIRC Django can also use SQLAlchemy but it didn't used to be very nice back in the day.

<comment><USER8> > IIRC Django can also use SQLAlchemy

It's _possible_ to use sqlalchemy with django, but you're basically on your own (don't expect to be able to use django-admin and other pluggable apps etc.)

> it didn't used to be very nice back in the day

Having used both django and sqlalchemy ORMs very heavily, I've got to say that django does what it does _extremely_ well and intuitively. For what the vast majority of webapps need to do, the "obvious" way of constructing the query causes django to do more or less the right thing. sqlalchemy on the other hand I love for other reasons, but am frequently annoyed at how much faffing is required to do the simple things in a concise way.

<comment><USER9> One thing you can do is use SQL alchemy, by duplicating code so you will have Django code to handle things you want to do in Django.... typically anything that touches the admin or model forms, but use SQL Alchemy for everything else.

<comment><USER8> Yyyyeah, but you _do_ end up duplicating potentially quite a lot of code, especially if you're following the (IMHO nice) "fat models" approach.

I think a few people have thrown around the idea of creating a frontend to sqlalchemy to allow it to understand django model definitions and QuerySet semantics but I don't think anything's come of it.

</comment></comment></comment></comment></comment><comment><USER10> One thing that is bugging me is that, while the article mentions DataLoader, it kind of just breezes over it without explaining the reasons why DataLoader isn't a good long-term solution.

> Besides the popular Dataloader approach, another very common way of tackling > this problem is by taking a GraphQL query, and coming up with the exact SQL > needed to resolve it

But why? Why not just use DataLoader? Is there something intrinsically wrong with it that makes it a bad solution? I want to know! My understanding was the DataLoader was extremely performant and worked for 90% of all situations where a join is needed to get values for a GraphQL query.

> Data fetching remains something to improve

Certainly this might be the case, but the article didn't address the most popular form of data fetching and explain why a graphql-to-sql compiler would be a better solution.

<comment><USER11> We've been using data loader a lot and it's working ok. We were very careful to dump all sql queries our app was making per request to ensure we were not making more queries than necessary.

One thing I will say as we do make a lot of "IN" queries as a result. You fetch a bunch of rows with a data loader and then you want to fetch a bunch of rows from some other table based on those first results so you end up with an IN query where you might have had crafted a JOIN if you were writing it by hand.

<comment><USER12> But does the query plan perform a join? The text of your query matters less than the plan it generates.

<comment><USER11> No, it can't because it's actually making two separate queries. For example, let's say we're fetching classified ads with the users that posted them. First your GraphQL resolvers would fetch the ads (and you won't know that the users are being asked for). Then for each ad, you'd tell your data loader to fetch the user associated with that add. That will ultimately result in a single SQL query with an IN like `SELECT * FROM users WHERE id IN (?)` where you'd pass in all the user IDs you gathered from the results of the ads query.

However, another commenter pointed out above that some implementations allow peeking into the GraphQL query. That way if you know you're going to need the user anyway, you can already perform the join proactively when you fetch the ads.

In a few cases we've done this because we always want the joined results so we just do the join regardless of the query we get.

<comment><USER12> Erm, are you telling me there is no way to pipeline the ads query to be inline within the IN clause? Because that'd generate a join, generally.

I still don't understand why this abstraction is useful, if not harmful.

<comment><USER11> I think there is a way to do it, that was the peeking I referred to. But it's not how it works out of the box.

I think the abstraction is somewhat useful if your GraphQL queries vary tremendously (one device asks for the user along with the ads, another device doesn't). Expand this out to a bunch of different data types and you'd find yourself writing a lot of variations of the queries. GraphQL with Data loader allows you to write these things exactly once albeit with potentially suboptimal queries.

All of that being said, we're finding that our queries vary very little and are somewhat questioning the value of data loaders and of GraphQL altogether in our case.

</comment></comment></comment></comment></comment></comment><comment><USER13> Hasura is amazing, glad to see it featured here. The author never got around to any specific downsides (only a general complaint for some reason), does anyone have examples of where it struggles? I use it daily and have never run into a limitation.

<comment><USER14> One example is interacting with complexity introduced by outgrowing a single database instance.

This scaling could work a variety of ways. Records might be horizontally sharded across a bunch of database instances. Caching is layered above the database to protect against hot database queries, etc. The generation logic now needs to understand how to partition a single GraphQL query across the shards and caching layers.

It's definitely not impossible, and in some circumstances it may be easy. But it couples your GraphQL implementation very tightly to your current database system in a way that may make it difficult to rearchitect your database system at the next order of magnitude scaling problem - "We really need to redo how we think sharding and caching, and our GraphQL's direct interaction with the data layer is going to make this a challenge." Maybe it's easier if the company is new and is GraphQL-only. An older company that has a mix of a few data access technologies might wish the GraphQL left the data layer concerns to the data layer.

<comment><USER2> We think about this at Hasura deeply!

I know it's counter intuitive, but we think of this as an opportunity to solve those problems at the Hasura layer. Sharding and caching are hard but also not impossible to make declarative if you know enough about how the data is modelled, how data ownership works (authorization) and how the cache is managed (caching hot queries, caching complex queries but infrequent, invalidated on time or data).

I'm not trying to say the problem isn't hard, I'm trying to ask what it would take to solve the problem. :) We're also actively working on solving them. Imagine if those challenges got solved for a sufficient number of use cases!

Incidentally, databases are getting better at preventing users outgrowing them too while preserving the SQL API as much as possible, or providing a transform. Citus / YugaByte / Planetscale / Cockroach / Spanner to name a few.

<comment><USER15> I worked with a team on this problem once before. It is something definitely solvable, it does take some engineering time though. Also, that team I worked with missed something pretty important - you'll never solve this problem completely when data becomes too big to dynamically join (or even cache) across heterogeneous systems - but it is something I think you could maybe solve differently using event queues and materialized views for specific complex cases.

Have you guys thought about looking at some other tools that might be symbiotic? Hasura's interface would be an incredible companion to something like Dremio (also open source), since it is a fully-SQL engine across a number of heterogeneous systems, with probably the most advanced caching I have ever seen in a system like it (Apache Arrow in-memory and columnar storage). If you can make your query interface adapted to tools like Dremio, you shouldn't have any problem exploiting caching in those kinds of platforms - might be even more efficient than building into Hasura for some use cases.

Edit: I think there is a newer type of interface architecture forming here, and I think GraphQL represents one of the pieces of the puzzle, would be really interested to see more detail on Hasura's take on that.

</comment></comment></comment></comment><comment><USER16> This is probably too early to share, but I've been flushing out a Node/TS ORM that integrates dataloader from day 1:

[https://github.com/stephenh/joist-ts](https://github.com/stephenh/joist-ts)

Disclaimer, it's being used in low-volume production by us, but that is about it, so ymmv. The "docs" is the sample app used for integration tests/etc.

I mention it b/c I agree with the article that GraphQL is super-easy to N+1, but the Hasuras/Postgraphiles are a fairly different application architecture than "I'd like some ActiveRecord-style domain objects".

Prisma is also promising, but AFAIU more of "a really great query layer" than "how you'd write your domain objects", which is what I wanted to focus on.

I was originally a node/JS skeptic, but it is uncanny how well the JS "limitation"/architecture of an event-loop + async/await basically provides Haxl-style batching "for free" to the application programmer.

<comment><USER17> Good luck with this, I really hope it works out. We've been using TypeORM with Postgres for maybe a year now and we keep finding little things that are really surprising, it's hurting our faith in it.

<comment><USER18> MikroORM is a nice alternative to TypeORM that is newer on the market. I tried out an experiment with TypeORM and basic relations and things didn't work the way I'd expect at all. Looked in the issue tracker and saw many open unresolved issues.

Went looking around a bit more and found MikroORM. The developer is fantastic, fixes issues and overall it is a better designed tool that just works the way you'd expect.

Edit: I just noticed that stephen is the op, an old friend. It is worth looking into Joist as well. =)

</comment></comment></comment><comment><USER19> Looking for some informed opinions here. I've been building web applications for over 15-16 years. Graphql was introduced a few years ago and I'll admit, I have a default anti-Facebook derived tech opinion. I'm biased against anything that comes out of Facebook. The one exception to that is React. I've learned to use it extensively and while I'm not a huge fan, it does get the job done well enough.

When looking into Graphql, and having toyed with it a little, it's never made sense to me. Always has come across as an extra layer of obfuscation and complexity when dealing with the data access later. You have to write backing sql/db queries anyway to support the Graphql layer. More efficient use of time to just write good db queries.

Is there something I'm missing here or is the world finally catching up to reality?

<comment><USER2> When you say GraphQL hasn't made sense to you, do you mean as a api consumer / frontend developer or do you mean as someone who has to build The graphql api?

The benefits for api consumers and frontend developers are quite clear. Easier ergonomics to explore the API and ability to collocate data fetching alongside UI components to automatically have a graphql api client optimise the data fetching required to load a screen/page itself itself.

The benefits of building a graphql api/service do seem harder to evaluate.

</comment></comment><comment><USER20> One thing that may help people who are generally like 'huh?' when it comes to GraphQL:

You can use GraphQL with SQL. This is about that.

However, you can also use GraphQL with NoSQL. AWS Amplify uses GraphQL with DynamoDB, and that's a pretty common stack in the AWSiverse.

You can't use SQL with NoSQL, obviously.

So, if you're looking to learn more about GraphQL, just realize the lessons here aren't universally applicable, though GraphQL-to-SQL is probably the best implementation, imo.

<comment><USER21> > You can use GraphQL with SQL.

What do you mean by that?

</comment></comment><comment><USER22> Lots of good points there. I'm one of the authors of the GraphQL compiler Python package, and wrote up some of my thoughts here: [https://twitter.com/PredragGruevski/status/12639165969401937...](https://twitter.com/PredragGruevski/status/1263916596940193792?s=20)

</comment><comment><USER23> Maybe not the best place to mention this, but there's something I don't like about links on this blog: there's no way to see if I already visited the link or not. It would easy I think to just change the color of the underline on a visited link.

<comment><USER24> Good call, I'll fix that.

<comment><USER23> Thank you!

</comment></comment></comment><comment><USER25> in case you are on .net stack on your project I'd recommend take a look NReco.GraphQL. It's very easy to use, need just set up schema in json file and db connection string. Schema may be generated by script if you have lots of db tables. You may find a couple nice topics on ITNext (on medium platform - [https://itnext.io/graphql-api-for-sql-database-in-net- af2fe3...](https://itnext.io/graphql-api-for-sql-database-in-net-af2fe322fe28) ) regarding this component.

</comment><comment><USER26> Thanks, I have been thinking about this lately too.</comment>


The Chinese Challenge - T-A https://claremontreviewofbooks.com/the-chinese-challenge/ <comment><AUTHOR> Good article. I think inequality has a way of rectifying itself over time, especially in a global economy. When someone is willing to work for much less, and comes to have similar skills as people in other countries, in time there is likely to be a change that makes it worthwhile to hire that person.

Yet famine and poverty are much less today, so the productivity per person is much higher, and that is better for everyone. Unfortunately, competition can still have losers, but now, more than before, the losers are not as likely to experience extreme poverty and starvation.</comment>


Awesome Procedural Terrain Generation - <AUTHOR> http://www.shamusyoung.com/twentysidedtale/?p=141

<comment><USER2> Check out 'Elevated' - winner of the 4k PC demo category at Breakpoint 2009. It's a fly-through of a realistic looking procedurally generated terrain model with music and some fancy post processing effects all squeezed into a <4096 bytes executable. Even my moderately high-end PC can't run it (I suspect because it shoves an overwhelmingly huge triangle mesh at the GPU) but there's a video here:

<http://www.youtube.com/watch?v=_YWMGuh15nE>

<comment><USER3> oh RGBA, I was expecting someone would post elevated in a thread like this. Here is a homepage from IQ from RGBA <http://iquilezles.org/www/> \- lots of useful stuff here. He is working, I believe, on Infinity engine (not bioware one) which will, hopefully, yield a game like EVE/Elite one day. Here is a devlog: [http://www.infinity- universe.com/Infinity/index.php?option=c...](http://www.infinity- universe.com/Infinity/index.php?option=com_content&task=blogcategory&id=0&Itemid=47)

<comment><USER2> IQ posts some comments about the implementation of Elevated in this thread on gamedev.net also:

[http://www.gamedev.net/community/forums/topic.asp?topic_id=5...](http://www.gamedev.net/community/forums/topic.asp?topic_id=531608)

<comment><USER2> Also also: the readme that comes with the download is missing the '.tech' section available here: <http://pouet.net/nfo.php?which=52938>

<comment><USER3> excellent find, thanks!

</comment></comment></comment></comment></comment><comment><USER4> I thought the title meant the Reddit team was working on procedural terrain generation. There's usually no need to cite where a submission was found.

</comment><comment><USER5> The article is mostly about _rendering_ terrain, not generating it, and it also has nothing to do with reddit.

However, the rendered results do look relatively nice, and the article (even as awfully paginated as it is) gives a pretty good idea on how to get there from zero.

</comment><comment><USER6> With all due respect, _this_ is not awesome. Nowhere near it.

But this - <http://www.planetside.co.uk/terragen> \- is.

<comment><USER7> The awesomeness lies in the explanations and reasons, not the intrinsic tech.

This guy is currently doing a series on procedural generation of a city terrain, and it's the same deal. It's not going to win awards for "teh aw3som3st cty evar!", it's that you don't often see someone do something like this while posting reasons, dead-end experiments, and other such commentary.

It's less awesome to look at, but radically superior as an article to read and learn from.

</comment></comment><comment><USER8> The articles are more about building a 3D engine than generating terrain, but still a good read.</comment>


Ask HN: How to advertise your python package? - <AUTHOR> I happily and full of pride put my first package on pypi but now I wonder on how to make people aware of it, in oder to see if others can make any use of it, and to get feedback on the project.
How do you advertise your packages?
thx, Manuel <comment><USER2> Write about it and let search engines do their thing.

There's pretty much no success in advertising a package/library - not many people randomly browse for packages and even if they stumble upon yours they'd probably forget about it the next day before they find an use-case for it. Even paid ads wouldn't work.

People who actually have a problem to solve however will search for it, hopefully find your article and if you it's a good fit they will use it.

</comment><comment><USER3> post in on /r/python and write a small comment about why created it etc.. Its generally a welcoming subreddit.

</comment><comment><USER4> Would the package support tutorial articles? (ie - How to {{do important thing}} with {{package}}).

<comment><AUTHOR> Well i guess I could write a kind of tutorial showing its application. So your suggestion would be to write such a short tutorial, in form of a blog post? On sites like medium.com?

<comment><USER4> The short answer is yes.

The long answer is that if I were in your shoes, I'd market it just like I'd market a product. I don't think it makes much sense to put money into marketing a library that you built, so let's assume that you have zero budget.

Your goal is to get more users. Since you're looking for more users, you want to make sure that developers have success when they implement it, so good documentation and tutorials are a must anyways. So, I'd piggyback and turn the tutorial into an acquisition tool because hell, if you're doing it anyways, why not try to get some users out of it?

If I were you, I'd spend some time thinking about what kinds of terms people would google if they had a problem like your library solves. You can use Google Trends for help. And then write a tutorial about how to solve that problem with your tool. As you write it, your goal should be to capture people who google how to solve your problem and show them a solution so eloquent that they install your tool to implement it. Discoverability is a problem, hence the need to think carefully about how people would search for solutions to your problem.

After you write the tutorial, it would be a good idea to post it on sites like this one. Depending on what kind of tool it is, what sort of problem it solves, and how usable it is, it might even be a good candidate for a show HN. And then, depending on how much work you want to put into this, you can keep using that tutorial to drive more users to your tool. For example, if people ask about the problem on Stack Overflow, if you disclose that you wrote the tool, there wouldn't be anything wrong with contributing answers that use your tool.

Where to publish it is more complicated. If you're purely looking for users and don't care about money or time, it would be the absolute best to buy a domain and build a site around the package. That's overkill most of the time.

If you want to brand yourself, I'd publish the tutorials and documentation on your own website.

As for Medium, you could absolutely use it, though you do end up giving away lots of the branding and search benefits you'd get from publishing it on a property you control. In exchange, it's incredibly easy.

</comment></comment></comment><comment><USER5> You get it out there any way you can, for example when you post somewhere, at the very minimum, include a link!!!

<comment><AUTHOR> Well I guess its not that easy. Many sites are not happy about this kind of advertisement. I posted the same question contained a link to the package on stackoverflow, but the question was deleted and now my rating is so low that i got blocked for several days ...

</comment></comment><comment><USER6> Can you post a link, please?

<comment><AUTHOR> [https://pypi.org/project/configfy/](https://pypi.org/project/configfy/)</comment></comment>


How I Get My Logos Designed - For some reason very controversial... - <AUTHOR> http://www.startupbros.com/how-to-get-the-perfect-logo-designed/

<comment><USER2> How does he get to use those logos before he paid for them? Sounds like multiple copyright violations per contest to me. I understanding that the artist may not be in a position to legally contest anything, but it's clearly unethical.

This is what's in 99Designs faq:

"On 99designs, designers agree to upload only original artwork, so each designer owns the rights to their design submissions.

This is true until the contest holder chooses one of the designs as the contest's winner. Then, and only then, can the designer agree to transfer his or her rights to that particular design to the contest holder."

<comment><AUTHOR> Hey there, thanks for commenting.

In the article I mention that I ask the designers for permission to test their logos before moving forward. I let them know that they're in my top 5 choices and tell them exactly what I'm going to do. Since they're the copyright holder, I want to say this makes it alright, but I can see where 99Designs doesn't like it...

</comment></comment><comment><USER3> I wish I was able to downvote this into oblivion.

<comment><AUTHOR> Yea, that was the response on /r/Entrepreneur as well :-\

</comment></comment><comment><USER4> Machiavellian but Pure AB testing.

</comment><comment><USER5> The reason is called "ethics".

<comment><AUTHOR> Why is it unethical?</comment></comment>


Ask HN: what language will build a Form Mail app fastest?  - <AUTHOR>

ASK HN: I am a newbie in software. I am trying to find and use the easiest language to develop the simplest task, FormMail: ask site visitor to fill up a form and mail the site owner the form contents. Which language will do FormMail most effectively? Bonus: client validation for form fields. <comment><USER2> You can also use Wufoo, Jotform or Google Docs.

</comment><comment><USER3> It isn't a language per se, but Wufoo[1] (and others like it[2][3]) can do this as a hosted service.

[1] - <http://wufoo.com/> [2] - <http://icebrrg.com/> [3] - <http://www.jotform.com/>

</comment><comment><USER4> > I am a newbie

PHP

> client validation for form fields

JavaScript</comment>


The forbidden railway: Vienna – Pyongyang (2008) - <AUTHOR> http://vienna-pyongyang.blogspot.com <comment><USER2> Looks like the correct URL is [http://vienna- pyongyang.blogspot.de](http://vienna-pyongyang.blogspot.de) (there's an 'e' missing from the end of the submitted URL).

</comment><comment><USER3> Wrong URL, try submitting again.</comment>


Programming language readability: Python vs Haskell - <AUTHOR> http://williamedwardscoder.tumblr.com/post/18319031919/programming-language-readability

<comment><USER2> While I think it's possible to compare language readability I don't think you can simply place them side by side and expect most programmers to fairly compare them. Python is much more "C-like" and as a result I'm able to read it a little better. I don't think that makes it inherently more readable, it just means that I don't know how to read Haskell at all. It's like if you put some English dialect next to German and asked me about the readability of both... I can't speak or read German at all so I really have no idea. If you can speak both Haskell and Python than by all means compare the readability of the two and I would be interested to hear your opinion but I want to make sure we're not judging Haskell because we haven't taken the time to learn it and it happens to be more divergent than whatever language we happen to already know.

<comment><AUTHOR> I've added a bit to the blog about _why_ I think Python is more readable.

I lament that more languages aren't trying to be readable. To my mind, it ought to be goal number 0.

</comment></comment><comment><USER3> I'm not familiar with the author and his expertise, but he might benefit from this: <http://blog.ezyang.com/2011/11/how-to-read-haskell/>

And maybe also this: <http://www.haskell.org/haskellwiki/How_to_read_Haskell>

I consider myself a newb in Haskell (and functional programming in general), and didn't see anything too mystifying in the code, other than it takes a declarative approach (well, Control.Arrow.first is maybe the only 'exotic' thing, but it otherwise looks rather straightforward).

</comment><comment><USER4> Everything I know about Haskell leads me to believe its purpose is to be a research bed for functional programming concepts. Correctness is first; speed is a nice thing that happened later. And readability is even less important. This is like comparing granite to glass regarding translucence.

And, actually, if you do it right you can end up with readable, imperative Haskell.

<comment><AUTHOR> Haskell is often put forward as a _learning_ language. I have myself worked through "how to program" books for people with no prior programming experience that used haskell, in the same way that lisp (scheme) is used in sicp.

</comment></comment><comment><USER5> > Why is Python more readable? [...] Second is the use of short words instead > of symbols. Perhaps the Haskell is trying a little to hard to feel like > algebra? [...] Python goes further than most to use short concise words; > COBOL used long words

To make words even shorter than in Python without resorting to Haskell-like symbols, try ChinesePython (<http://www.chinesepython.org/english/english.html>). Here's some examples from their site:

寫 ..(print) 刪除 ..(del) 定義/函數 (def) 忽略 (pass) 中斷 (break) 下一個 (continue) 傳回 (return) 示警 (raise) 載入 ... 名 ... (import ... as ...) 從 ... 載入 ... 共用 (global) 執行 (exec) 斷言 (assert) 如 .. 不然 .. 否則 .. (if .. elif .. else ..) 只要 .. 否則 .. (while .. else ..) 取 .. 自 .. 然後 .. (for .. in .. else ..) 試 .. 失敗 .. 否則 .. 然後 .. (try .. except .. else .. finally .. ) 概念/類別 (class) 來自/不來自 (in / not in) 是/不是 (is / is not) 或 or 且 and 不是 not

</comment><comment><AUTHOR> Anyone who missed it: the link in there to TDD Sudoku is well worth a visit: <http://devgrind.com/2007/04/25/how-to-not-solve-a-sudoku/></comment>


ThreadX - <AUTHOR> https://en.wikipedia.org/wiki/ThreadX <comment><USER2> see also yesterday's article on Raspberry Pi, where it is mentioned that ThreadX runs on the Broadcom GPU.

[https://news.ycombinator.com/item?id=19061656](https://news.ycombinator.com/item?id=19061656)</comment>


Chatbots at the End of the World - <AUTHOR> https://thebaffler.com/latest/chatbots-at-the-end-of-the-world-connolly <comment><AUTHOR> "These days, flashy Silicon Valley technology developments often seem completely at odds with what is going on in the world. A rocket launch in the middle of a pandemic and nationwide uprising against police brutality might be the most recent example, but there is a version of this dissonance happening all the time."</comment>


Swarm.js: real-time object sync library - <AUTHOR> http://deutsch.ppyr.us/test/grid.html

<comment><USER2> It's interesting, why there are all time restarts?

<comment><AUTHOR> Updates propagate by dynamic spanning trees. Servers restart to stress-test that feature; trees need to be rebuilt on every server join/departure.

<comment><USER2> It is looked like unstable behavior. Or that something broken.

<comment><AUTHOR> Yes, thanks, we had to clarify that. Essentially, that is a simulated breakage.

</comment></comment></comment></comment><comment><USER2> Is there a way to maintain conversation? At least we all know a behaviour pattern of chase / movement repetition :)

<comment><AUTHOR> That's a minimal demo. But implementing a chat is rather easy: history is a "set" (like mice list in the demo) and a message is an "object" (like a pointer in the demo).

<comment><USER2> I meant a conversation that consists of symbols movement only.</comment></comment></comment>


Google to pay $1B in France to settle fiscal fraud probe - <AUTHOR> https://www.reuters.com/article/us-france-tech-google-tax/google-agrees-to-550-million-fine-in-france-to-settle-fiscal-fraud-probe-idUSKCN1VX1SM <comment><USER2> Maybe I don't know much But every time I see that Google gets fined (even if $1B) it feels to me like a a Ferrari got parking ticket

<comment><USER3> A Ferrari parking ticket probably wouldn't get anywhere near 1% of its owner's annual income though?

<comment><USER4> But it can get towed. Like a person would if caught with fiscal fraud.

<comment><USER3> So then it's not similar to a Ferrari getting a parking ticket, right?

</comment></comment></comment></comment><comment><USER5> I watched a TV show called Billions and it is illuminating as to how these big companies and people easily avoid touched by the law. They pay pennies on the dollar aka fine and move along with 0 actual damage.

Look at what happened to Panama papers or Bermuda Papers or even what Snowden had said.

"Little people pay taxes" was a line I read in Panama Papers book, one which I'll never forget

<comment><USER6> You know that's not a documentary right.

<comment><USER7> You know fiction can be illuminating toward several realities, and be the most effective idea-communication tool, plus gets around legal issues quite easily, right? The parent didn't say more than that, that it was illuminating, on a personal level.

</comment></comment></comment><comment> m-p-3 I wish fiscal fraud was more hardhly punished. In a democratic nation, it's basically stealing money from all of us, and not putting a share of resources that supports programs that benefit citizens of all income levels.

<comment><USER8> It's also anti-competitive behaviour which in the end makes the fine an acceptable cost for the virtual monopoly.

<comment><USER9> How is it anti-competitive?

<comment><USER10> Two companies(nvidea, AMT) make similar products and hold a roughly 50:50 market share. both are doing well, both are selling units.

nvidea grows greedy and hires shady accountants to commit tax fraud, enabling nvidea to keep more after-tax money.

next year, nvidea has more money to dump into R&D -- they build a better product, and charge more for it. market responds, nvidea grows richer, ATM suffers losses.

nvidea keeps stealing money. has more for R&D, and more for marketing. nvidea buying sponsored reviews. keep building reliable products. more money for support staff.

ATM operating with a smaller budget every year. still improving, but not growing.

nvidea has even more money for R&D. more money for aggressive marketing. more money for sponsoring studios. "our art was built with nvidea products, and is best enjoyed using nvidea products".

the practice of stealing money to further growth to eclipse the competition by any means is hella old.

</comment></comment></comment></comment><comment><USER11> To me, it's a good deal for Google. I'd prefer to see them sued and condemned in a court rather than seeing this kind of "pay to settle" agreement. It feels so American.

</comment><comment><USER12> So forgive me, because I'm a very ignorant person:

 _Why don 't we just jail executives responsible if they consistently fail to abide by the law?_

<comment><USER6> To nitpick: jail is where you hold people pending trial. Prison is where you send people as punishment.

That aside:

(1) We do jail executives, all the time.

(2) The reason maybe you think we don't jail _enough_ executives is because it's hard to prove they did anything wrong. The criminal standard for proof is very high: beyond a reasonable doubt. When it comes to "blue collar" crimes, that's pretty easy to meet. You wouldn't believe the amount of evidence that exists in a typical drug crime! The defendant tried to sell drugs to an undercover cop; they found more drugs and an illegal firearm in the car; they searched his phones and got extensive evidence of drug transactions. (That is also why so many such crimes result in guilty pleas.)

But here the government didn't win a case. It settled. You settle because there is risk you won't win at trial. If you have to get accounting experts on the stand to argue about whether the thing that happened is illegal or not, good luck proving that beyond a reasonable doubt. (I don't know what the standard is in France I don't expect it's much different.) Additionally, this is a tax case. It's a "you put this number under section 3.3(b) instead of 3.3(c)." To secure a criminal conviction in a tax case, you need to prove beyond a reasonable doubt that the defendant's interpretation of the law was not different from the government's but that no reasonable person would have interpreted it the way the defendant did. Tax positions are carefully vetted and at a large organization like Google you'll never take a tax position that isn't at least plausible.

Stepping back, the problem is that you're taking the government's position at face value. At least in the US, the government prosecutes many cases that are, at best, based on aggressive or creative interpretations of the law. Of course the government says "Google defrauded the tax office." Of course they have to say that. But dig into some high-profile white collar prosecutions. In the US they're generally a matter of public record. They often are far from clear cut.

<comment><USER13> To nitpick your nitpick: that's only the case in America - everywhere else, Jail and Prison are synonyms

<comment><USER14> To go one level deeper, elsewhere it's gaol.

<comment><USER15> I don't think that's true. Even for .uk, Google returns 55.5 million hits for "jail" and only 600 thousand for "gaol". For .au it's similar, and .nz is a little more even, but still "jail" wins by a lot.

From [https://www.spectator.co.uk/2014/04/why-did-we-ever-spell- ja...](https://www.spectator.co.uk/2014/04/why-did-we-ever-spell-jail-gaol/), "The Guardian long persisted with gaol too but changed to jail in the 1980s, like the other English papers."

<comment><USER14> Undoubtedly common usage, especially in the pop media, has regrettably shifted towards the North American trends, as with so many words.

In Australia there's a move away from prison/jail/gaol and towards 'corrective/correctional/detention facility / centre' presumably to make the places sound more aligned with their political or social intent.

However each of the Australian state's active legislation still refers to them as gaols.

</comment></comment></comment></comment></comment></comment><comment><USER16> Good. But governments need to move on to addressing the far greater billions in potential taxes that big corporations _legally_ avoid through complicated tax loopholes.

Granted, this is going to require significant changes politically in many countries, but among the general public across the spectrum, the hope that the wealth held by large corporations will trickle down to them through market mechanisms has long since worn quite thin.

</comment><comment><USER17> "The combined tax payment is less than the 1.6 billion euros the finance ministry had been seeking from Google"

</comment><comment><USER18> Does any one know why the url says 550 million ?

[https://www.reuters.com/article/us-france-tech-google- tax/go...](https://www.reuters.com/article/us-france-tech-google-tax/google- agrees-to-550-million-fine-in-france-to-settle-fiscal-fraud-probe- idUSKCN1VX1SM)

<comment><USER19> "The settlement comprises a fine of 500 million euros and additional taxes of 465 million euros". Probably it referred to the fine in USD

<comment><USER18> Ahh, thanks ! ;)

</comment></comment></comment><comment><USER20> That's about 15 euros per person in France.

<comment> rbrtdrmpc- and the 0.0003960339% of the GDP

so what :)

<comment><USER21> You're off by two orders of magnitude.

</comment></comment></comment><comment><USER22> Is this a shadow trade war in response to America's dominance in tech? I keep seeing absolutely massive fines of American tech companies in Europe, fines marked up to account for Google's global revenues. Do they make their homegrown companies pay such outrageous fines? $1B is a staggering amount of money, probably all of Google's profits from France for years to come.

To be clear I think France has every right to do this and Google can decide to close up shop there if they want, nobody is forcing Google to operate in an unfriendly environment.

<comment><USER23> Maybe it is a response to a more global situation. Please look into corruption charges and fines of US Justice on European companies such as Alcatel, Société Générale, Alstom and you'll that these fines are quite a good instrument to weaken strategic European competitors (and the opposite is true as well) and even take them over. Example: [https://www.economist.com/business/2019/01/17/how-the- americ...](https://www.economist.com/business/2019/01/17/how-the-american- takeover-of-a-french-national-champion-became-intertwined-in-a-corruption- investigation)

<comment><USER22> Very interesting, looks the fines are tit for tat from a game theoretic perspective. It seems the headlines are dominated by fines of American enterprises but that doesn't paint a full picture.

</comment></comment></comment><comment><USER4> It seems the Chickenshit club[0] has expanded to Europe.

[0] [https://www.amazon.com/Chickenshit-Club-Department- Prosecute...](https://www.amazon.com/Chickenshit-Club-Department-Prosecute- Executives/dp/1501121367)

</comment><comment><USER24> Well this is good news that the probe finished rather early and the fine amount will go into the state coffers. It also sets a very good precedent so this seems to me lile an absolute win.

</comment><comment><USER25> I know Google makes a lot of money but a billion here and 5 there--and the forced behavior change--might make a dent in their pocketbook.

</comment><comment><USER26> Business as usual</comment>


Show HN: On Device AI to help get into "the zone" - <AUTHOR> https://zen.veda.ai/?hn=1 <comment><AUTHOR> Hello HN, Lot of students are learning remotely(& alone), as we know it's hard to stay focused. AI that takes a picture periodically, analyse if they are looking away or at their phone and gently nudge to continue learning.

Everything happens on device and nothing is sent anywhere

Please try it and share your feedback/suggestions</comment>


People call "Node.js handles 10k connections" a magic. Erlang easily does 1MM - <AUTHOR> http://weblog.bocoup.com/node-stress-test-analysis/?cringe=true Moral of the story first: developers, please take a look at Erlang.
I cringed when I read the story. Someone calls Node.js a magic when it handles 10k connections. Erlang handles 1MM connections without sweating.
Why? Because around two years ago I have created an Erlang server which does broadcasts of ~500bytes message to up to 1MM of concurrent users with a end-to-end delivery delay of at most 1.5 seconds, using ONE physical server and ONE application server (i.e. just one Erlang VM instance)!
Proof: https://www.erlang-factory.com/conference/Krakow2011/speakers/GlebPeregud
TL;DR. Node.js is not magic. It's not as scalable nor as robust compared to Erlang. <comment><AUTHOR> Moral of the story first: developers, please take a look at Erlang.

I cringed when I read the story. Someone calls Node.js a magic when it handles 10k connections. Erlang handles 1MM connections without sweating.

Why? Because around two years ago I have created an Erlang server which does broadcasts of ~500bytes message to up to 1MM of concurrent users with a end- to-end delivery delay of at most 1.5 seconds, using ONE physical server and ONE application server (i.e. just one Erlang VM instance)!

Proof: [https://www.erlang- factory.com/conference/Krakow2011/speaker...](https://www.erlang- factory.com/conference/Krakow2011/speakers/GlebPeregud)

TL;DR. Node.js is not magic. It's not as scalable nor as robust compared to Erlang.

<comment><USER2> I completely agree with you. The problem as I see it is that basically the whole dev world knows javascript to some degree, heck even if they don't its a pretty basic language and similiar to most others you know. Erlang, however, is its own thing, completely different in terms that most imperative lang/oop devs are used to, and means you can't just install erlang and go, which is largely the case with node.js

<comment><AUTHOR> Yes, good point. But I cringe when people say that "10k connections is a magic"! There are three things which make Node.js popular: \- ease of starting (especially with things like Meteor) \- one language for server-side and client-side \- npm

But in terms of scalability, robustness and network performance it is inferior</comment></comment></comment>


The iPhone is the New Cigarette - <AUTHOR> http://bluvox.com/2009/08/the-iphone-is-the-new-cigarette/

<comment> brown9-2 You could replace any mention of "iPhone" in this list with "Blackberry" or even "smartphone".

 _1\. The Blackberry changes your brain chemistry. For better and for worse it makes you feel good and want more (mechanism of action be damned).

2\. The Blackberry gives you an excuse to step outside and fiddle with something when you feel like not working for fifteen minutes.

3\. The Blackberry gives you something to do in boring interstitial situations, like waiting in line at the store, or waiting for the bathroom, or waiting in line for the bathroom at the store.

4\. The Blackberry gives you something to do with your hands in awkward situations.

5\. In really awkward situations the Blackberry gives you a way to check out entirely (granted, that's a slightly different type of cigarette).

6\. When you're using your Blackberry in public, some people will think you look sophisticated. Others will think you're annoying._

This article seems like an annoying attempt to get some attention / linkbait.

<comment><USER2> Replace the word Blackberry/iPhone with the word penis, I think it's just as accurate.

<comment><USER3> Do you often play with yourself while waiting in line at the store or having an awkward situation?

</comment></comment></comment><comment><USER4> Insofar as everyone I know wishes they could quit using one (due to the well publicized problems), but very few can do it?

If only there was some patch, software or otherwise.

<comment><USER5> >> "due to the well publicized problems"

Err. Which well publicized problems?

<comment><USER4> I'm not sure if you're kidding, so I'll bite:

\- Frequently dropped calls \- 3G connection problems \- Delayed SMS and voicemails (sometimes by days) \- App store problems \- Short battery life

Some of these are AT&T's fault, no doubt. But I've had AT&T for the better part of a decade, and I've never had so many "network" problems as when I bought an iPhone. When your phone has dropped an important phone call with the CEO of a public company three times in 5 minutes in Central Park in New York City, it makes you want to break the piece of junk into a million pieces.

But the promise of the phone, and the experience when it does work, is really quite good. It's just not a piece of equipment you can rely on. I struggle with the thought of getting rid of it quite often, yet just can't seem to pull the trigger.

<comment><USER5> All of those apart from app store/battery are AT&T. None of those are issues in the UK with O2 as the carrier.

Battery life sucks if you leave 3G on, the app store is meh.

</comment></comment></comment></comment><comment><USER6> You also see cigarettes used as props in movies. Will the iphone take its place?

I'm trying to replace that classic image of two lovers in a bed smoking, with two people twiddling with their iphones.

<comment><AUTHOR> I can send you a picture ;-)

</comment></comment><comment><USER7> Hey, I can do all of these things with my Android G1, too. And even better as it's got a real keyboard.

</comment><comment><USER8> Humans are pattern matching machines. We can always find some mapping from one thing to another thing. Not all such mappings are relevant or useful.

</comment><comment><USER9> I wondered why I would see people outside the office here talking on their iPhones.

Took me a bit to realize they had AT&T and there was no signal in the building and barely any outside the building.

One reason why I stick with sprint is it works everywhere I go in this area.

</comment><comment><USER10> Howard Rheingold used the phrase "lightweight digital refreshment" in 2001.

<comment><AUTHOR> Thanks for the reference. I should have known that!

</comment></comment><comment><USER11> Great points, though the iPhone doesn't kill people like second hand smoke does.

<comment><USER12> I suppose you could make an argument about iPhoning while driving...

But time is still turning. It could be that multi-touch screens cause deadly "finger cancer".

<comment><USER13> Or you could make an argument about the debatable efficacy of secondhand smoke. (I have heard people claiming that secondhand smoke is not as bad as people make it out to be. I do not have sources for this, nor am I particularly arguing it.)

Also, what about all the E&M radiation? If you want to go out on a limb, it's a little less tenuous than finger-cancer...

<comment><USER14> Now you're just making Max Planck cry.</comment></comment></comment></comment>


Ask HN: How quickly do web dev skills become obsolete? - <AUTHOR> Recently I started re-learning C++ (after having quite some exposure to C++98) and was shocked to discover what is essentially a different language (C++14).<p>If we consider the field of web development, or development with web technologies (for example Electron apps), how long does a person need to be "out of the game" to become uncompetitive? <comment><USER2> Good engineers are good engineers, regardless of how "rusty" they may be with particular technologies. I'd take skilled developers with a breadth of experience in unrelated tech over someone who's only worked with the exact set of technologies I'm aiming to use.

In other words, if I'm building an Electron app I'd prefer a solid engineer who has never written a line of Typescript to someone who only knows Electron.

<comment><AUTHOR> Thank you!

I agree with you on this.

The reason why I am interested in this, is that in my opinion engineers must always be open to learn new things and new tech. So, I was wondering, if it is possible to make the argument "If you stop learning or at least following the industry for X months, you are out of the game."

<comment><USER2> If you stop learning for a few months, do you somehow lose the ability to start learning again in the future? That seems...unlikely.

<comment><AUTHOR> I agree with you completely!

I'm just gathering objective opinions to to able to argue that continous learning is an important skill for engineers _to begin with_. As in, you can't just finish Uni knowing intermediary programming in Java (for example) and be content with it.

</comment></comment></comment></comment><comment><USER3> There are two sides to this coin. You can be good as in, you know fundamentals very well and can make connections with familiar concepts, or good as in, readily employable because your skill sets check the right boxes of keywords and names for a recruiter or HR person.

The former doesn't necessarily guarantee the latter. I'm gonna answer with the path less traveled in this thread with regards to your question. When you mention competitiveness, do you actually mean in terms of the job market? If so, unfortunately most people that are your first eyes to your resume when you hit that submit button are not as technically inclined as a programmer. Which is why it's often better to directly reach out to a team lead of the programmer department. Fundamental concepts don't work with 3rd party recruiters either, as most of them are not very language agnostic when it comes to matching you with job opportunities. The exception is with the largest of companies. They'll value fundamental skills more highly because they can absorb the risk of hiring someone to ramp them up with their work environment. Most medium to smaller companies can't afford much ramp up time. From my experience they want you to hit the ground running (seems to be a popular phrase with them) in whatever web framework they use.

So for your benefit, you will look more appealing to hire by applying to larger companies. Smaller companies tend to interview more in concrete framework trivia while the large ones tend to test you on algorithms and other language agnostic concepts.

<comment><AUTHOR> Thank you for this insight!

I mean competitive in a broader sense. I.e. do your tech skills make your business more competitive?

Electron is an interesting example. If you are smart, you can use it to deploy your application to desktop, as well as the web. Meaning you don't have to have 4 separate teams for Windows, Mac, Linux, Web. Being productive with Electron is therefore a competitive skill in my opinion.

I often have to argue with older engineers. There are a lot of prejudice against current technologies, like for example Node: "JavaScript is a dumb language", "it's not real programming", etc. I am exagerating, of course, but the attitudes are still there. So I am trying to build a compelling case for learning and developing.

</comment></comment><comment><USER4> I partially disagree with what has been said here. Fundamental engineering skills are things you learn at school. Theory over reality, by default, we're all good engineers with a CS degree right? In my opinion you have to implement that theory in real life in order to complete your courses, which is when stacks come into the picture.

Learning a new stack is extremely important for an engineer because it exposes you to a lot of new problems. Things you've never heard of, unless you already got your hands dirty. I'm talking about reading poor API documentations doing reverse engineering work, understanding how to implement a concept and the large gaps between paper and code, how to pick up the right tools for your needs which will save you time and money moving forward, how to integrate, etc. Integration is about %70 of our work today. If you haven't used at least 2 different stacks in your life, you ain't know ____about integration problems.

So, yes, engineering is a lot more than a set of concepts. I would value someone who jumped into a bunch of different stacks rather than a google-like engineer who doesn't even know how to right HTML (which is a real joke between ex-googlers, we say we didn't even know how to write an HTML page when we left google).

</comment><comment><USER5> Depends on how concrete they are.

I'm a front-end developer.

I learned the CSS box model and how to write HTML once and use this knowledge for over 10 years now. CSS got a few new selectors since then, but the core stayed the same. Just this month I had to learn Flexbox for React-Native purposes, which felt like learning a whole new CSS, but other than that not much changed.

2011 I learned JavaScript in depth, with all the books, Pro JavaScript Techniques, JavaScript: The Good Parts, etc. Till ES2015 I didn't have to learn much new and all of that is still valid knowledge, I just don't use some of it anymore, because better ES2015 alternatives.

Some people say, there are new frameworks every month and I can't argue much with that. On the other hand, no one forces you to use a new framework every now and then. I used ExtJS, Ember and React in production. I could have learned on of them and used them till now. They're all still maintained and updated. Went away from ExtJS to Ember, because Ember is free and ExtJS rather expensive. Ember didn't have as much out-of-the box as ExtJS, but the stuff made with Ember felt "more web" to me. Also some of the concepts were easier than in ExtJS. Then I switched from Ember to React, because it had even less concepts that were also easier than Ember. Also React seemed to be much more than a simple "web framework" because of things like React-Native or ReactXP.

I almost scored a ExtJS project this year and the lead dev said, I could use most of my ExtJS4 skills, I acquired 2011, in the current version of ExtJS.

So...

Is Web development changing fast? Probably.

Is it changing fundamentally? Probably not.

</comment><comment><USER6> There are fundamental engineering skills that don't change very quickly, and then there's technology stacks. Having a good set of skills in the former category is critical to being a good engineer.

As far as technology stacks go:

* Some domains change faster than others. E.g. front end web dev has rapid change, with new JavaScript frameworks coming out every 6 months. Back end web dev is much more stable.

* Even when change happens, it mostly affects _new_ projects. For example, while C++14 may be fundamentally different, most C++ projects were started years ago. Project I worked on back in 2004-2005 was started in 2000 and is still going strong. So while it's modernized somewhat as the language and compilers and libraries changed, I'm sure it's not at bleeding edge in terms of features.

Thus there are many many places you can work that aren't using the newest/trendiest technology.

Practical advice that results from this:

1\. Focusing on fundamental skills that transcend particular technology is more useful than specific technical skills in the long run. (E.g. learning big picture thinking: [https://codewithoutrules.com/2016/08/25/the-01x-programmer/](https://codewithoutrules.com/2016/08/25/the-01x-programmer/)).

2\. It's good to change projects or companies every once in a while, existing projects are always on older technologies and you get out of touch with latest tech.

3\. It's good to keep an eye out on new technologies so you know they exist and can use them when necessary. Doesn't require being an expert or even learning how to use them, just being aware they exist and what they're good for. Since many new technologies are gone after a year this also means you don't overinvest in something - you only pick it up if it's actually useful for the job at hand. (More at [https://codewithoutrules.com/2016/10/07/growing-your- toolbox...](https://codewithoutrules.com/2016/10/07/growing-your-toolbox/)).

</comment><comment><USER7> As a marketer and more front-end, I occasionally spot when a website is done by someone that has been out of the game >5 years. I see this via design style and toolset used. Several clients with 'new' websites I've been preparing to promote, when asked about the dev given quality concerns it has been clear they are returning to development from a significant break. This has happened on a handful of occasions and its always been greater than 5 years out of the game. That said there could have been plenty that have returned after a gap and I dont notice.

<comment><USER6> On the one hand, old design can seem clunky. On the other hand, newest design isn't always the best design.

E.g. low contrast and flat UIs are both fashionable and terrible.

</comment></comment><comment><USER8> I would say if an web developer does not follow updates for 3 months he/she is a bit outdated, in 6 months out of web development and you try to make an comeback you will find it very difficult to catch up. 1year or more out there are entirly new stacks, new libraries, new versions, new ways of building things etc.

It not necessary to keep writing stuff following trends you just have to follow updates, newsletters, articles, so you dont struggle when you reenter the market.

<comment><USER9> Sorry, this is really bad advice IMO.

"1year or more out there are entirly new stacks, new libraries, new versions, new ways of building things etc."

You think there are any dev teams which change their entire stack every year? As for new libraries, thats what documentation is for, nobody gets hired because they have a the newest & hottest libraries APIs memorized.

Being a good developer has very little to do with knowing all of the trendiest new tools. A sound understanding of software engineering practices and methodologies is far more important.

<comment><USER10> In addition to having a sound understanding of software engineering practices, a good developer will be able to learn new tools, languages, and libraries.

Being adaptable is a must. There's no reason to place a lot of value on a person who has already learned a particular library when you know they will eventually have to learn something else. Value the engineer underneath the layer of buzzwords.

<comment><AUTHOR> You are right. I think fundamental knowledge is important in this case, where it allows you to cut throught the fluff of buzzwords and see what the actual content is.</comment></comment></comment></comment>


Will.i.am's startup raises $117M, enters enterprise market - mark-ruwt http://www.reuters.com/article/us-iam-enterprise/will-i-ams-startup-raises-117-million-enters-enterprise-market-idUSKBN1D62V4 <comment><AUTHOR> I'm surprised to see so much trivializing of the product and flaming of the entrepreneur.

Investors don't just give away $117M "because he's famous", and I seriously doubt their enterprise customers care that he's a singer. More likely he and the team have been making steady progress for years and are delivering real value. Kudos to them.

<comment><USER2> > Investors don't just give away $117M "because he's famous"

Investors gave Theranos several >$600M in funding. Today we know about the lack of due diligence. It was all about investing with that young female wunderkind because everyone else did. So that's no argument.

Regarding the founder: Looking at that cringe worthy Apple TV shark tank copy and how he forced one founder to list him as co-Founder I am pretty sure Will.I.Am just sits around talking BS and others doing the work for him.

Last but no least: Yes, $117M is actually a pretty damn lot for a company that does chatbots. This type of NLP isn't even resource heavy (like shitloads of GPUs heavy) so there is no need to put so much money into that. That said, of course the Germans are clients. They are always late to the party and most of the time get ripped off.

<comment><USER3> _female_

I used to feel similarly -- that being a girl sometimes gives you special privileges -- but then I concluded it's probably not true, and voicing those feelings is an old tradition, best left in the past. How would you feel if you got a job somewhere and all your coworkers suspected you didn't deserve it? Same thing.

It gets tricky when there's a grain of truth to the feeling, since it's confusing trying to figure out whether you're censoring your own thoughts to the exclusion of reality just to conform to social norms, or whether you're actually being regressive. But FWIW all evidence thus far in my own life seems to point to "being a girl may have mattered once, but if anything it tends to work against them rather than in their favor." E.g. you have to worry about shit like an investor coming onto you: if you say no, what will happen? Or if I dress a certain way, will it affect how I'm treated at work? We take it for granted that we don't even have to think about any of that, ever, but those are real concerns.

This is a sensitive topic, so we should try to keep the conversation neutral and substantive. But I did want to open the door for talking about some of this.

(Traditionally, the two options are to ignore the "female" putdown, or ask you to stop. Any time anyone even tries to ask "Why do you feel that way?" the conversation immediately devolves into a catastrophe. I'm trying to see if there's a productive third option, which is to frame the conversation in a certain way where people are inclined to learn and relate experiences, rather than to be combative or dig in their heels. I'm going out on a limb here, so please don't make me regret doing this.)

The truth is probably closer to "she was a rich kid with connections that we could only dream of."

This has been on my mind, so I may as well talk: When we see things like female-only conferences or events, it's really tempting to feel jealous, and to feel like girls do get special treatment. Or even if it's not really special treatment, it's still "special" because no one goes out of their way to try and recruit you to some event just because you happen to be a dude.

I think this is a symptom of feeling isolated in general. Church attendance is declining, and -- setting aside the question of religion -- church was the primary social activity for a long time. It was a weekly thing, and you'd feel special and included. When you're not religious, you lack this facet of your life, and it manifests itself even though we'd really like to believe otherwise.

You can go out and attend React meetups or whatever, but it's different than (a) you're expected to attend, because (b) you're [a girl, religious, a harvard grad, etc]. When you have nothing like that in your own life, it's extremely tempting to feel like the world is against you and you've had to work for every single thing you've ever had, so this special treatment is unfair.

But here's a concrete example. A female webdev friend of mine works at a startup, and they made it to YC's interview stage last week. She was employee #1. The moment they received that email, the founder started treating her differently. She and I were both mystified about why. Why would the prospect of transitioning to YC's pipeline possibly matter? She was an effective employee, and built their whole stack. Her work was identical to any male.

Then we had a very uncomfortable realization: one of the founders joked that if they got into YC, they'd all have to bunk together like it was college. You tend to live in the same apartment at first.

She asked me "do you think if I was a boy, I'd be invited to the boys club?" and it was heartbreaking to realize that it was very possible that this employee #1 may have had to worry about not being invited along to California _solely_ because she was a girl. We still don't know. (They didn't get accepted, so it was a moot concern.)

This is an extremely complicated topic, but I wanted to share some of that in case it's a positive thing.

<comment><USER4> I think you're reading too much into the word "female" \-- although I do agree that its use in this context is kind of weird (why not say _girl_ , or _woman_?).

I think you're reading to much into it because it's pretty well-known that in startup circles being a woman is, generally speaking, a net _negative_. So an argument that she got funded because she's a woman goes against matter-of-fact realities in Silicon Valley.

<comment><USER5> With respect, and not to belabor a silly topic, but 'female' is an adjective, and is the only correct choice between those three options in the original sentence. Although I would tend to agree that as collective nouns are concerned, 'women/men' is almost always correct when describing adult humans when one wants to specify a particular sex or gender. (Girls/boys/kids rustles my jimmies when used to describe adults).

'female wunderkind,' in an irrational, razzle-dazzle bullshit train like theranos was probably emphasized to create an aura of exoticism and magic (e.g. 'wonder woman'), not because of the sociocultural situation of women in tech broadly speaking. The symbolic significance of gender changes depending on where/how one invokes it.

<comment><USER3> _' female wunderkind,' in an irrational, razzle-dazzle bullshit train like theranos was probably emphasized to create an aura of exoticism and magic (e.g. 'wonder woman'), not because of the sociocultural situation of women in tech broadly speaking._

I didn't even consider this. You're probably right.

Well, in that context, it was obviously absurd for me to start talking about any of this. Sorry about that. But HN is optimized for good conversation, so hopefully it will turn out interesting (if unexpected).

Looks like this thread got knocked off the front page anyway, so it doesn't really matter now. Drat; I was hoping to get people's thoughts on this.

</comment></comment></comment></comment></comment></comment><comment><USER6> Here's a video of the product if you're as curious as I was. Siri/Alexa for enterprise users -- [https://iamplus.com/enterprise/](https://iamplus.com/enterprise/)

Seems like a smart market entry point. Enterprise employee virtual assistants are probably a wide open market today because Apple, Google, Amazon, Microsoft, and Samsung focus on consumer AIs. Easy to envision a startup getting solid, near-term customer traction with a keyword-driven voice product.

<comment><USER7> Not going to knock it, but I don't really get it. How different can an enterprise version of this be? Probably a lot more to the plan here than this video.

Out of all the different voice things out there (Siri, Alexa, Google, Cortana, whatever), I've only ever done 3 commands really:

> Hey Google! What's the weather?

> Hey Google! Play ____ music on Spotify.

> Hey Google! What sound does a cow make?

Does anyone have stats on how the general population are using these things? So far, just for me personally, I can't really find a way to be more productive with any of this tech.

Conspiracy nut in me first reaction is, "Ok, a new way to spy on companies".

<comment><USER8> I use Siri to add things to OmniFocus multiple times a day, "Hey Siri, remind me to ...", a lot of people seem to use it for a lot of things[1]: [https://www.reddit.com/r/apple/comments/549ytw/how_many_of_y...](https://www.reddit.com/r/apple/comments/549ytw/how_many_of_you_actually_use_siri_and_for_what/)

[1] Well, a lot of people who use reddit and are interested enough in apple to be on an apple subreddit.

<comment><USER9> My most common pattern is "Siri, remind me to ____ when I get home". The geolocation-"awareness" really hits my soft spot.

</comment></comment></comment></comment><comment><USER10> > I.am+'s first enterprise customer is Deutsche Telekom AG (DTEGn.DE), the > German telecommunications giant and parent company of T-Mobile. Since July, > the company has been using Omega to power an AI customer support chatbot and > it plans to add a voice phone system soon, i.am+ said.

Wow. I had no idea ChatBots needed $117 MILLION in funding to ship.

A quick search of GitHub shows several 100s of chatbots, even 1 with just 200 lines of code. [https://www.google.com/search?q=site%3Agithub.com+chatbot](https://www.google.com/search?q=site%3Agithub.com+chatbot)

This has Juicero written all over it.

<comment><USER11> I have no clue what I.AM.PLUS is; this is a general comment:

Sure, creating a dead simple chatbot is easy! But you can't compare a bare- minimum open-source dumb chatbot with a enterprise AI company that happens to take the form of a chatbot.

<comment><USER12> Enterprise is a funny word here. It just seems like any other voice assistant except it connects to your inventory control system rather than your Nest at home. It seems like mostly marketing to me, I doubt the technology is particularly unique.

<comment><USER11> That's pretty much just what Enterprise is, though... a consumer product, sold at a much higher price, and including things companies need like support and customization.

</comment></comment></comment></comment><comment><USER13> [https://youtu.be/xGakbjwILKs](https://youtu.be/xGakbjwILKs) who would give this guy $117 million?!

<comment><USER14> this is crazy funny, I can't tell if its sarcastic parody or a genuine homage of some kind. That somehow boosts the funniness in the straight face dimension a lot however.

</comment></comment><comment><USER15> Here's a demo of it: [https://www.youtube.com/watch?v=kPKO36KJYxg](https://www.youtube.com/watch?v=kPKO36KJYxg)

<comment><USER16> Anyone have any experience with it? How accurate is the video?

For example, second use case - in the car, she queries the software the amount of some_specific_product in some_specific_warehouse, and the tool answers near instantly. Is that a currently functional scenario? Is this because the client has an API set up with `counts` already calculated for these queries, or is a part of the tool intelligently crafting these queries to answer these kinds of voice questions?

<comment><USER17> No insight into Omega, but natural language interfaces to spreadsheets/databases exist.

Google Sheets has an implementation if you click the explore button in the bottom right hand corner.

I made a dummy spreadsheet with columns name & warehouse, then typed in "how many units of rose gold are there in la" and it got the query right. It even got "how many rose gold units are in los angeles" correct despite the spreadsheet never saying los angeles. But it's pretty easy to trip it up; if you make an item called "rose gold" and "rose gold ring" and ask it for rose gold, it assumes you want the exact match. If you ask it for items in la or sf, it will only give you a count for the first condition. If you ask it about California, it will get confused.

Still pretty impressive for a two column spreadsheet though IMO.

</comment></comment></comment><comment><USER18> Will.i.am's failures and eccentricity (for example [https://www.youtube.com/watch?v=Prv5q84-Ebg](https://www.youtube.com/watch?v=Prv5q84-Ebg)) are far more well known than his successes. I'm surprised he was able to raise so much money.

<comment><USER19> Pretty sure his Beats success is more well-known than any of his failures.

<comment><USER20> Beats was Dr Dre, not will.i.am.

<comment><USER21> he was involved - [http://www.billboard.com/biz/articles/news/digital-and- mobil...](http://www.billboard.com/biz/articles/news/digital-and- mobile/6106526/beats-by-william-co-founding-and-cashing-in-with-jimmy)

</comment></comment></comment></comment><comment><USER22> there is something unexpectedly deeply depressing about knowing will.I.am is a top executive in your field

<comment><USER23> If you want depression I can give you a better one: Kim Kardashian's game made more than 200 million on revenue.

</comment></comment><comment><USER24> I guess that's what you get for being buddy-buddy with Benioff...

There's a joke in there somewhere about how most telco customer service is indistinguishable from AI chatbots.

</comment><comment><USER25> > _will.i.am has raised $117 million [...] as it announced its entry into the > corporate computing market with a voice assistant for customer service._

Voice assisted AI startup from a pop star receives $100mm financing? Guys if this isn't bubbly then I don't know what is!

If you're an IC, I hope you can take a little off the table while the gettin' is good.

</comment><comment><USER26> Celebrity worship is harmless when it consumes leisure time and disposable income. This is not going to end well.

</comment><comment><USER27> billy, you have to stop, you are wasting money.</comment>


GoDaddy Boycott Fizzles; Twice As Many Domains Transfer In As Out - <AUTHOR> http://www.techdirt.com/articles/20111230/01453717233/godaddy-boycott-fizzles-twice-as-many-domains-transfer-as-out.shtml <comment><USER2> The metrics being used in the article do not have any basis in reality. The number of domains associated with a name server are not representative of the number of domains transferred. Godaddy could have transferred 100% of the domains they have associated with their parking name servers to domaincontrol.com nameservers and it would have looked like hundreds of thousands of domains transferred in by this metric. Any domains that didn't use godaddy's nameservers to begin with are also not represented in this abuse of data.

<comment><USER3> Not to mention, there's no reference to older, pre-SOPA data anyway.</comment></comment>


Why is JavaScript the only client-side language available? - <AUTHOR> https://www.quora.com/Why-is-JavaScript-the-only-client-side-language-available?share=1 <comment><USER2> The most rated answer by Dan Shappir took me down to memory lane. Worth reading, a very good history lesson.</comment>


The Morris Worm at 30 - <AUTHOR> https://www.bcs.org/content-hub/the-morris-worm-at-30/ <comment><USER2> It may seem quaint now, but it cost many of us a great deal of time back then and was a huge PITA.

My favorite vulnerability is not often mentioned: The sendmail config file used to have a completely byzantine syntax. Consequently, there was a default wizard password that would grant total strangers access, with the understanding that these would be whitehat wizards breaking in to fix your braindamaged mail configuration.

The reason for the "whitehat" assumption was really that no one had seen any other color of hat (because why would you break in and do something malicious wtf haven't you got anything better to do?)

Simpler times.

<comment><USER3> It fills my heart with nostalgia when I remember how decades ago experts said "It's dangerous to open .exes someone sent you by mail. Images and data files are fine, they don't run and can't infect your computer".

Simpler times indeed.

</comment></comment><comment><USER4> This talks a good bit about how some of the default passwords the Morris Worm checked for in 1988 are on the list of commonly used passwords in 2018. Which is kind of sad but understandable and somewhat excusable because, we'll, humans.

But it overlooks what I think is actually a way sadder and bigger issue: The Morris Worm utilized a buffer overflow in fingerd as one of its propagation mechanisms.

Here we are 30 years later and still dealing with code execution vulnerabilities because of various memory mismanagement issues. [face palm]

<comment><USER5> Buffer overflows will be an issue as long as code is written in languages that allow memory mismanagement. C, C++ and even Fortran are still here and aren't going away any time soon so this isn't going to change anytime in the near future.

<comment><USER6> The reason these languages are still popular is because they're still the fastest and consume less memory.

A better question is why doesn't x86_64 have hardware bounds checking by now? We can already fault at the page boundary, it seems like a minor improvement to have an instruction for malloc/sbrk to create new dynamically sized pages that fault the same way.

Doing so would also be backwards compatible with all the existing software that relies on malloc.

<comment><USER7> "Huge/Large/Super pages" ([https://wiki.debian.org/Hugepages](https://wiki.debian.org/Hugepages)) exist because the typical 4kB pages have too much overhead in programs that allocate lots of memory.

So, sizing pages down to malloc-sized blocks will impact performance, even ignoring the fact that, to have true bounds checking, pointers will have to carry size information, making them larger (64-bit pointers have quite a few unused bits on typical systems, so it may be possible to hide that somewhat.

Also, if you truly want to do bounds-checking, you will have to create a 'page' for every element of every array (either up front or on demand), and, if such elements have structure, for each part of the structure.

<comment><USER6> Huge pages mainly exist to alleviate TLB pressure and page fault latency. But that performance penalty is tiny compared to the alternative of in-program bounds checking that we currently use.

Similarly, pointers don't necessarily need to be changed and your array problem isn't valid. Cachelines could be marked with canaries that fault on read/write, similar to how the NX bit currently works.

The NX bit is actually a good example of a hardware security-performance trade off that nearly everyone agrees on. Now 20 years later, we can afford to mark several more bits at some cache offset for a hardware bounds field.

</comment></comment></comment></comment></comment><comment><USER8> The Morris Worm had a literary inspiration in the form of John Brunner's 1975 "The Shockwave Rider", one of the earliest depictions of computer hacking [0]. A great book that still stands the test of time.

[0] [https://en.wikipedia.org/wiki/The_Shockwave_Rider](https://en.wikipedia.org/wiki/The_Shockwave_Rider)

<comment><USER9> > A great book that still stands the test of time.

Agree. I think one of the reasons is that Brunner doesn't actually precisely describe the technology except in terms like 'the home phone service was tied into the net'. This makes it very easy to superimpose our modern perceptions onto a book that is now 45 years old. It's almost less jarring than the mid-80s cyberpunk classics such as Neuromancer with its no-mobile-phones and line-printers-in-space-stations.

<comment><USER10> Too bad we didn't get the techno-socialism modeled after Allende's Chile that was at the end of the book.

</comment></comment></comment><comment><USER11> Thing I love (puckishly, I admit) pointing out: Paul Graham features in Hafner and Markoffs telling of the RTM worm story in _Cyberpunk_ (as I recall, he's a go-between for RTM and the reporters).

<comment><USER12> Also of note: Cliff Stoll deals with the worm in his excellent _The Cuckoo's Egg_ book, including discussions with Robert Morris Sr (RTM's father), who was chief scientist at the NSA at the time.

<comment><USER13> Cliff Stoll now sells beautiful handmade Klein bottles out of his Berkeley home (by appointment) and is a lovely guy to visit. These are, for my money, the finest non-orientable manifolds available in the Bay Area today.

[https://www.kleinbottle.com](https://www.kleinbottle.com)

<comment><USER11> Did you ever buy one?

<comment><USER13> Yeah, I got a small starter bottle. The biggest one I recall seeing was this beast, but I don't know whether it is still for sale: [https://www.kleinbottle.com/meter_tall_klein_bottle.html](https://www.kleinbottle.com/meter_tall_klein_bottle.html)

<comment><USER11> Neat!

I saw him give a talk once; he's an extraordinarily good speaker.

</comment></comment></comment></comment></comment></comment><comment><USER14> I feel so old. Thirty years? I was working in my office (actual _office with a door_, not a cube) at Prime Computer when people began wandering the halls, asking, "What happened to the Internet?"

Mostly, for me, it meant I couldn't access alt.music.katebush.

<comment><USER15> I was immediately cut off from alt.religion.kibology

</comment></comment><comment><USER16> Somehow I was reading about this the other day and what I didn't realize at the time is that Robert Tappan Morris is one of YC's co-founders :-)

<comment><USER17> PG was quite funny talking about it [https://www.youtube.com/watch?v=4WO5kJChg3w&feature=youtu.be...](https://www.youtube.com/watch?v=4WO5kJChg3w&feature=youtu.be&t=785)

</comment></comment><comment><USER18> There should be two market indices.

One should include those few companies that are serious about zero-day vulnerabilities and IT security in general. For example, they should be active with bug bounties.

The other one should include stock of rest of market, with proportion of sectors close to first.

I wonder, which would do better?

</comment><comment><USER19> _> What of the Morris Worm's other entry method, based on weak passwords?_

Oh, but we all know that this is totally fixed by 5-factor authentication. You just type in your password, click on an emailed link, type a pin from your mandatory cellphone app, undergo an ECG and then send in a urine sample. And then you're logged in. It's super easy, and if you're not using it, it's your own damn fault. Even when the website you're using doesn't support it. Just get over it and stop using websites not owned by Google already.

<comment> mr-ron How did an article about works turn into a rant about Google?

2 factor authentication is probably the best way to mitigate against automated attacks like this worm. Its unrealistic for root os access, but if more people required an email or text to verify a login, there would be a lot less hacks in the world

</comment></comment><comment><USER20> [https://github.com/arialdomartini/morris- worm](https://github.com/arialdomartini/morris-worm)

<comment><USER21> I think this is the decompilation that you used to be able to mail-order from the back of 2600 Magazine in the early 90s.

There were small pieces of RTM's original code in the famed "Cornell Report", which showed that at least this code is not RTM's original code.

Are other decompilations floating around? Did RTM's original code ever get leaked?

</comment></comment><comment><USER22> There is always a local angle (H. Caen). Robert Morris Sr was a cryptographer, chief scientist of the NSA, and father of Robert Tappen Morris, Jr. Robert Tappen Morris Jr. was the creator of the Morris Worm. He is a friend of Paul Graham and is a partner in Y-Combinator.

</comment><comment><USER23> The security differences between then and now is so complex that it's just mind-boggling.

</comment><comment><USER24> One fact that's seldom reported is that RTM's father, Robert H. Morris Sr, started working for the NSA in 1986, two years before RTM unleashed the worm. Food for thought maybe?

<comment><USER25> Not seldom reported at all. Was actually considered a major career embarrassment for RHMS.

Just a coincidence.</comment></comment>


Weekend Project Opportunity: Online Persona Management Service - <AUTHOR> https://www.fbo.gov/index?s=opportunity&mode=form&id=d88e9d660336be91552fe8c1a51bacb2&tab=core&_cview=1

<comment><USER2> The problem with creating this and selling it is not the creation of the technology, but being legally allowed to sell it and to providing the documentation which meets obscure requirements.

</comment><comment><USER3> Wait, isn't the news here that the military is seeking a propaganda tool for organized astroturfing?

</comment><comment><USER4> I'm not sure how to read these, but it reads like this one is expired and done, no?

<comment><USER5> also unsure exactly what it suggests but seems like yes, it's expired.

in any case, some relevance is that hbgary was actually in the middle of, or planning to create this software, while working with the fbi. wether or not it's related to this, there are clear implications of the government using this type of tactic as a tool.</comment></comment>


Ask HN: Web 2.0 Expo - worth it? - <AUTHOR>

Info about September's Web 2.0 Expo in New York can be found here: http://en.oreilly.com/webexny2008/public/content/home<p>I'm impressed by the list of speakers and the topics they'll be discussing, but the price seems steep. For those of you who have been to these expos in the past, what was your impression? Was it money well spent? <comment><USER2> I went to the one here in SF earlier this year. My company paid the badge fee. Honestly, the sessions were way too short. No speaker had time to go into depth about anything and they were always rushed. Little time to answer questions. If you can go for free then do it. Don't pay out your own money though.</comment>


An Obituary for Suto - <AUTHOR> https://medium.com/@ngardideh/an-obituary-for-suto-a-product-71684691e2b7 <comment><USER2> Thanks for sharing this.

From product perspective I don't understand why would I prefer textual representation of the bot to Amazon's imagery? One selling point could be human like AI to better understand what to look for, but this is really hard.</comment>


Maria Geller – The ClojureScript Compiler – A Look Behind the Curtains - <AUTHOR> https://www.youtube.com/watch?v=Elg17s_nwDg <comment><USER2> This is a great intro to the subject. In particular, if you've ever run into something you think could be improved in the compiler, Maria shows that you need not be intimidated by the prospect of diving into its code.</comment>


Tekton: Kubernetes-native open source framework for CI/CD building blocks - <AUTHOR> https://cloud.google.com/tekton/ <comment><AUTHOR> GitHub repo - [https://github.com/tektoncd](https://github.com/tektoncd)

Documentation - [https://github.com/tektoncd/pipeline#-tekton- pipelines](https://github.com/tektoncd/pipeline#-tekton-pipelines)

</comment><comment><USER2> Is there a relationship with the "Build" component of Knative here? ... It seems they were working on a very similar abstraction of CI/CD... This seems like a more general abstraction of the same problem</comment>


Best way to handle unwanted telemarketers? - <AUTHOR> For the past few weeks I've received at least 3 calls daily from the same telemarketing company. This company is trying to exchange $100 gift cards for $2.95 shipping/handling. I've asked multiple times to be placed on the Do Not Call list. When I mentioned this to the representative today, I was informed in a very arrogant tone, "Oh sir, we are a very large company with phone numbers from every state. That isn't going to work." The company refuses to disclose its name.<p>Any clever suggestions to report and/or combat this issue? I've filed multiple FCC complaints, but I'm not confident this will lead to a resolution. <comment><USER2> I just don't answer the phone anymore unless it's from my contacts.

<comment><AUTHOR> Sure, that makes sense, but this will undoubtedly result in less savvy folks (i.e. the elderly) being scammed. I suppose I was really looking for a way to escalate the complaint.

<comment><USER3> Maybe you can teach the "less savvy folks" you know that they shouldn't answer calls from numbers they don't recognize (and also teach them not to give personal information to anyone who calls them). Then the knowledge will spread and there will eventually be fewer victims of these scams.

I think that's more productive than chasing after the scammers. Many of them operate from outside the U.S., so it would be difficult for the FCC to go after them anyway. The best way to fight them is to deprive them of victims.

</comment></comment></comment><comment><USER4> Ask for more details. They enter in autopilot mode and will speak for a minute or two. Meanwhile, you just put your phone in the upside down in the table, and ignore all the speech.

It will not help you, but it will slightly minimize the damage to the society.</comment>