"Hello, (real) world" in PHP in 2017 - <AUTHOR> https://kukuruku.co/post/hello-real-world-in-php-in-2017/ <comment><USER2> I get that this article is satire, but I think the deepest (perhaps) unintentional insight presented by the author's veiled criticism is that the justification for using these tools is presented as "it's 2017" and not as a solution to any particular problem. The issue isn't the 2017 ecosystem, the issue is the 2017 programmer's deference to vanity instead of engineering. All these individual tools exist for a reason, and if your project is already functioning to specification without the use of these tools, _you shouldn 't be using them_; doing otherwise is the developer's fault, not the tool's or the ecosystem's.

<comment><USER3> On a similar note, I always find it ridiculous when I have to do things like

        apt-get install npm && npm install bower && bower install ...

Why can't we just use apt-get and Makefiles for everything?

Why can't npm be turned into ppa:nodejs and pip be turned into ppa:python?

<comment><USER4> > Why can't we just use apt-get and Makefiles for everything?

Because Makefiles are quite limiting.

> Why can't npm be turned into ppa:nodejs and pip be turned into ppa:python?

Because that would be OS specific.

<comment><USER5> Makefiles are limiting? They have their own macros, and support M4 as well (macros with recursion), not to mention the DSL is Turing complete.

Make runs on Windows, OS X, Linux and Android.

How is a Makefile quite limited?

<comment><USER6> I know at least three reasons why makefiles are not working well for common use cases. Many people seem unaware of these cases, even though they seem to come up quite often.

• make(1) has a hard time rebuilding target files when source files have changed. The problem is that users have to declare the dependencies of a target before the build, but due to file search paths, it can be that dependencies are only known after building a target. To know about all dependencies, make(1) would have to build any target at least twice.

• make(1) by default does not rebuild a target when its build rules change. While this seems really weird to me, it seems to be a consequence of having a single makefile. When a build rule is changed, the makefile changes. So should all targets depend on the makefile implicitly? One could argue that they should – but then each change in a makefile would rebuild all targets.

• make(1) can not handle non-existence dependencies. Imagine a file foo.h being searched for by a compiler in directories bar and baz (in that order). If the header file baz/foo.h is found, then bar/foo.h should be considered a non-existence dependency: If at any future point in time it exists, the target should be rebuilt.

These problems are all solved by DJB's redo approach, which I implemented in a few hundred lines of Bourne shell (/bin/sh): [http://news.dieweltistgarnichtso.net/bin/redo- sh.html](http://news.dieweltistgarnichtso.net/bin/redo-sh.html)

<comment><USER5> Those don't seem limitations of make itself, but rather the compiler and linker you use with it...

The compiler may know paths, the linker may know paths, the shell might, make might, or you can supply them.

I've seen and used nested Makefiles before.

These things aren't really make things. If I use tcc, Haskell or Go in my Makefile, then they mightn't apply.

If you can write it in Bash, you can integrate it into your Makefile.

<comment><USER6> I think that all of these are limitations of not only make(1), but all utilities that expect dependencies to be fully known before a target is built. What makes you think they are not?

How would you solve all three problems I listed using make(1)?

<comment><USER5> Why should make solve the dependency expectations of what it is building?

If I use pip as part of my buildchain, then it has a series of places it can lookup, or you can supply one. Same with npm, cargo, and even Go.

If instead, I use a tool that has dynamic lookup, then it will only look in those places after the event.

So, if I used make to send a command like:

        $(echo 'require "foo"' > bar.lua)

Then it can lookup those when the lua file is called, later in the process.

So how would this be a limitation of make itself? The limitation only exists in what you call with make... Which could be anything.

<comment><USER6> A makefile consists of rules. Each rule contains a dependency line which defines a target and an enumeration of prerequisites. This means that the dependencies have to be known before the target is built. By design, it is impossible for a single-pass make(1) invocation to derive dependencies for a C program, as dependencies are output by the compiler.

By contrast, redo builds the target first and then records what was used to build it. For example, when compiling a C file with "gcc -M", gcc will output dependency information. With redo, you normally record those dependencies after the target has been built. With make(1), that information has to end up in the makefile somehow, possibly leading to further builds.

<comment><USER5> I mentioned m4 before as a way of using more passes, and is how the Linux kernel approaches this, but looking deeper at make, I'm not even sure you need it.

From the manual, on implicit rules:

foo : foo.o bar.o cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)

Because you mention `foo.o' but do not give a rule for it, make will automatically look for an implicit rule that tells how to update it. This happens whether or not the file `foo.o' currently exists.

<comment><USER6> I do not understand. I know that make(1) has many implicit rules – but which of the problems I mentioned does this solve and how? Please be specific about your solution.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Maybe I am old fashioned and outdated. I don't know about anyone else, but it makes me pretty sad that the "modern" way as presented in this article is no longer simple and straightforward and has some severe dependency hell.

Not that I'm saying the structure of modern web applications isn't needed and that we haven't advanced. Just that the overhead and knowledge required to set up a modern web application is crazy.

I am working on a larger .NET web application in my day job... and it requires things like.. Typescript + typings files, Webpack/Gulp/Grunt/etc. and therefore Node.js and NPM, NuGet, .NET Framework, onion architecture, front- end framework (Angular, or React, or..), Entity Framework, multiple databases, web services/web API, ASP.NET MVC.. I mean, it's just crazy if you step back and think about it.

Sometimes I long for the simpler "bad old days"? Oh well, back to my enterprise single page application framework-laden monster.

DISCLAIMER: I know we're better off today in many ways, and maybe I'm just getting older and the cognitive load is higher.

<comment><USER8> It's usually not advisable, but I genuinely think classical CGI is beautiful mechanism for dynamically generated pages. It's a natural extension of Unix scripting: shebang'd scripts in any language, environment variables, stdout. Job's a good'un.

<comment><USER9> What is good for developers is bad for the industry. How else would they justify creating frameworks in different languages if all people are doing anyway is writing text to (F)CGI stdout? It is much better for the companies/groups involved to make people believe that there is something wrong with this and that they should really be using a "proper" framework.

<comment><USER10> Who do you think is making money off open source frameworks?

<comment><USER11> Consultants that wrote those frameworks in first place and offer their services for help, or go to conferences giving talks about them.

<comment><USER12> Yep, in many cases the frameworks arise from patterns someone solved while working for BigCo, then decided that the pattern they used was cool enough to share with and be useful for others. Open source is hugely thankless and tons of work, but it can be very rewarding in ways you can't buy, including meeting with interesting / awesome people.

</comment></comment></comment></comment></comment></comment><comment><USER13> Everyone's trying to take this literally as the "right way to display plaintext" in modern PHP. In that sense, it is absolutely absurd.

But if the idea of a "hello world" is to learn the basic boilerplate that you'll need before you start implementing real features, unfortunately for us web developers, this quite accurately represents the minimum before we can even start implementing business logic. With the _baseline expectation_ for a lot of modern SPA-type applications including caching scripts, client-side routing, server-side rendering, working offline, supporting IE9 to iOS to Firefox and all the quirks in between, etc it really is getting to this point.

I wish like nothing else that most of this could come out of the box so "hello world" really was a one-liner, but that just doesn't seem to be the reality that 2017 webapps live in.

<comment><USER14> Then again take a step back and look at what's being achieved. You are delivering, nearly instantly, a sophisticated and responsive fat client application to the user without any installation process. This fat client is running in a nearly universal and quite safe sandbox that is provided by several vendors across different os's, form factors, and architectures. With a good amount of backwards compatibility. Backed by a backend that's almost infinitely scalable. And developers are constantly feeding new features into this system without bringing it down or interrupting anything.

From that perspective, you would expect the tooling and stack to be complex. We really are doing way way more than we were in the "old days." "Write once run everywhere" has arrived and we're doing it, it's just not as simple as it sounds.

<comment><USER15> And to just pile on with this comment, "run everywhere" means much more than it ever did.

This isn't just the big 3 desktop OS's, but laptops, tablets, phones, TV's, game consoles, car navigation units, hell my goddamn watch can run websites now! X86, ARM, SPARC, PPC, it doesn't matter.

And on most of those platforms, you have more than one choice of browser.

It's a level of cross-platform that really only simple C programs can even begin to reach. And it's not exactly simple to setup that environment from scratch either.

<comment><USER16> Except it is simple:

        <html>
            <head>
                <title>Hello World</title>
            </head>
            <body>
                Hello World
            </body>
        </html>

It's responsive, works on every HTML-compatible platform and is even backwards compatible to a degree that none of the other aforementioned solutions even comes close.

We make it more complicated for ourselves because we _choose_ to make it more complicated. I'm not against modern frameworks but quite often I see people justifying them rather than using them when they become a requirement.

Worse yet, I'm often disappointed by the number of web developers I've worked along side recently that haven't understood how data is serialised in HTTP response and request headers (so they inappropriately use GET and POST methods), don't know even the basic few HTTP status codes, don't understand browser caching, etc and I end up having to handhold them through the basics while they're advocating complex frontend frameworks because "it does the logic for you" (or similar arguments).

This isn't a dig at all web developers by any means. I'm talking about a minority here. But it's a trend I've observed growing and I do think there is a correlation between the rise in popularity of bloated abstractions and the number of inexperienced developers using them as a crutch for their lack of understanding about the core principles of the web. The problem is the moment something misbehaves they're completely incapable of effectively problem solving it. And in the era of everything being a web browser, we have more low end devices than ever that we need to support - which often gets neglected when you have developers constantly opting for their shiny new toys resulting in cumulative page sizes of megabytes just to display "Hello World!".

So going back to my original point; yes I do think it can be simple to set up the kind of cross platform support you describe. I think it's often us who choose to make it complicated for ourselves. Often far more complicated than it ever needs to be.

<comment><USER12> +1 on developers not knowing how HTTP works. I'd add to that with server-side devs (the ones writing the APIs that the single-page apps talk to) not knowing how CGI works. You can literally learn both in an afternoon if you have reasonable networking and OS-level knowledge that I'd expect anyone with a CS major to have down cold. Sadly, well, you know.

In my experience, devs knowing how it really works are the small minority. Most of them seem to know "I put /foo in my Rails router, run `rails s`, hit 127.0.0.1:3000/foo in my browser, and it does the good stuff", which is consequently enough to get by in many development positions at many places.

<comment><USER16> CGI isn't really something I'd expect many people to be using these days though. These days language web frameworks fire off their own web server and the few exception usually bypass CGI (eg PHP has a mod_php C++ API that hooks directly into Apache bypassing CGI).

Sure you can still run Perl, Python or even Go via CGI on Apache, or PHP using FastCGI on nginx, but the difference in performance between even FastCGI and a language-native web server isn't negligible. So there isn't really much reason to recommend people using CGI barring niche use cases where, hopefully, the sysadmin / devops as purposely chosen CGI acknowledging it's pitfalls (not just in terms of performance but also security) and thus understanding how it works.

This is one of the few areas where I think the additional complexity in modern frameworks is a real benefit.

</comment></comment></comment></comment></comment></comment><comment><USER17> 99% of _real-world_ apps out there could be implemented with a BAAS and some simple JS MVC framework (good ol' BackboneJS in my flavor, if not jQuery fancy). I am not talking about building million-user-base facebooks and twitters, I am taking about a fuckzillion apps with a dozen at best concurrent users that will thrive in Firebase's free tier, a damnzillion worpress sites that never-fucking-ever get updated and would do just fine with good ol' static html, forever spared from bitcoin ramsomware.

Simply put: we forgot how to be engineers (the right solution for the problem). We are all Zuckergified into the fucking hype. Aren't we? We forgot that it is WE the experts that should tell clients how to solve their damn problems not just echo some buzz words so we get the damn contracts.

This post is NOT satire. It is the very state of current affairs.

<comment><USER12> FWIW the Wordpress situation and specifically my personal site getting hacked even though I was a sysadmin working in hosting at the time are why I love static site generators. Moveable Type was always amazing and scaled with traffic literally 100x as well as Wordpress out of the box (Varnish and W3 Total Cache can help if you ever need it, but again "out of the box"), so I'm happy to see that things like Jekyll and Hugo are trendy. The fundamental idea behind SSGs just makes so much sense to me; optimize it for viewing (in terms of computational power spent on serving traffic), which it'll be doing many more times than it will be created. Why generate a page on each visit when that page will be exactly the same until the post gets updated? I understand that many WP sites are much much much more than blogs (like shopping carts, ooh god why), but that's a different conversation entirely.

Wordpress (and any dynamic CMS) is like having a library full of whiteboards with the contents of the books written on them, with about the same potential for vandalism.

</comment></comment><comment><USER18> We've gone full circle.

Truly look at the PHP code in this article, the JS dependency hell here and in the recent JS article.

Look at the code. At the environment. At the libraries.

Who isn't reminded of what Java looked like years ago?

We've come full circle.

        </comment><comment></comment><comment></comment><comment></comment><comment>

Now, if one asks why this is, the answer is pretty simple – enterprise products.

To build software of a certain scale, certain technology, patterns, etc are required. These are what we see here again – ORMs, complex dependency systems, complicated frameworks, etc.

One might wonder why people even write PHP and JS nowadays, if Java is still faster, JS and PHP are now equally complicated, and Java ported all of the advantages of the others.

And, in fact, the Play Framework (which supports Java and Scala) is growing.

At the same time, Google's go is copying the same mistakes Java did in the beginning, with almost all new methods in the standard library taking interface{} – the equivalent of void* or Object, and a simplistic typesystem.

        </comment><comment></comment><comment></comment><comment></comment><comment>

Why do we, as a profession, create new tools for a new purpose, then force them to adapt to another purpose, until they've become identical to the tools we tried to replace?

<comment><USER19> Why is the "enterprise" the culprit? The things you describe have more to do with generational churn, abusing the web as a desktop replacement, and developer's desires to always use the latest stuff as a stepping stone for the next gig, or maybe to convince themselves they're avantgarde when in reality it's mostly boring stuff.

<comment><USER18> Because, once you start working with complex systems, you'll require complex frameworks.

That influences the way the entire language goes.

</comment></comment></comment><comment><USER20> Ahahaha I legitimately cannot tell if this is a sarcastic blog post. To me it just sounds like such a joke. It's quite confusing.

I hope it's a joke...

<comment><USER7> I think this is a realistic reflection on the state of this area in our industry. It is both sarcastic/a joke and not a joke at all.

<comment><USER21> Poe's law in full action. If for some reason this is _not_ a joke, it's a pretty lousy tutorial, as for every single arbitrary framework/tool decision here, there's not a single rationale here but "because it's 2017". I'd absolutely prefer 1995's Hello World if it's just about saying "Hello World".

<comment><USER22> I don't think it's a joke, but I also don't think "tutorial" is the right word either. It seems more like an illustrative commentary on the state of the webdev industry.

<comment><USER23> I think the word you're looking for is "satire".

<comment><USER22> That has extra connotations of parody that I was trying to avoid.

</comment></comment></comment></comment></comment></comment><comment><USER24> This is a bit like

      $ echo 'Hello World!'

which if, you think about it, requires a kernel, multitasking, driver independence on various level, many drivers, memory management, possible resource accounting, binary api, dynamic linker, interpreter, etc, etc, etc.

All (or at least most) of this seems overkill if you just want to print out 'hello world'. But it makes total sense if you want to do a little more complex stuff.

<comment><USER25> I think that's kind of the point, though, that OSes and shells have gotten to the point where all that complexity is hidden behind an easy installation. With modern web frameworks, all the "guts" are still fully exposed, warts and all.

It kind of reminds me of the state of Linux in the mid-late 90s, where you'd have "install fests" with a roomful of 25 people and it took a whole day to get Linux installed on your machine (and your sound still didn't work, that took another afternoon).

</comment></comment><comment><USER4> While reading i was thinking "..but that all makes sense for any project that's larger than a few hundred lines.." and thought the author was just ignorant and needlessly cynical.

But at the end of the article, he makes a good point:

 _Disputes like "Why do I need PHP if there's Java?" have become more frequent nowadays. I don't know who's in the right, Holly Wars are tricky. But each dispute has an argument in favor of PHP — it's easy for beginners. To my mind, this argument isn't valid anymore, which is exactly what I was trying to say in this article._

The notion of PHP as a beginner-friendly language has in my opinion been a harmful one for a while now. There are still people writing old school PHP apps, and there is the (mildly displeasing) wordpress ecosystem. But for anything serious, Symfony is invaluable. And the gap between old school PHP to modern PHP is almost the same as the one between old school PHP and Java/Spring/Hibernate, which is kind of what Symfony/Doctrine is cloning anyway. Plus if you do Java, you don't get the stigma of being in the same category as a professional wordpress template tweaker.

<comment><USER26> I like to argue that you can start off using PHP as a scripting language with a single index.php file, then maybe learn to use some of the simple frameworks like Slim (though even that has become more complicated recently), then move from that to Symfony or the like. This is a point the original author misses. If you introduce beginners in PHP to Symfony and SPAs from the start obviously they're going to have a bad time.

<comment><USER4> I'm not convinced that this approach flattens the learning curve significantly. The concepts are different, and when you're at the end of that journey and look back, you'll find that you spent a large amount of time unlearning things. That is if you ever get there. It's easy getting stuck on local maxima when avoiding steep learning curves.

In other words, old school PHP and modern PHP are two vastly different beasts with few commonalities.

There is no way past learning the basics (OOP, patterns, proper architecture), by deferring that in favour of an easier start you're only lengthening the journey.

</comment></comment></comment><comment><USER27> Call me old fashioned but I prefer my code naked, plain php and postgres, nothing else, not even JS. So for me, echo 'Hello world' is good enough.

<comment><USER28> Users overwhelmingly prefer some amount of client-side interaction, so how do you do that without JavaScript?

<comment><USER29> css :hover with hrefs to fast-loading pages can give the illusion of interactivity without any javascript (or even server processing, if the whole site is statically-generated).

<comment><USER30> Most people don´t know how to build this because their X MB JS framework just slows everything down.

</comment></comment></comment></comment><comment><USER31> Coincidentally I recently began a new project involving a user-facing PHP app, and even though I have enough ES6 + webpack + react blablabla experience (and some angular, but I didn't particularly enjoy it), I decided to just go with good old synchronous requests. It makes things easier and, in this case, development time is key.

</comment><comment><USER32> So many people not getting the joke here. This article is a send-off of the idea that PHP is "just easy" anymore, but frankly, misses its shot.

Of course it's complex when you introduce complexity. So is _anything_ by _definition_. If you don't want to do complex things, you're fine. But if you want to have a database, have a framework abstract away the truly dangerous and boring shit, use a modern, type-safe version of Javascript, write CSS in something approaching a maintainable fashion, and deliver a responsive, reactive site, you'll have to do something like this, _regardless of language._

Also, the author neglected to set up database migrations, to say nothing of a Dockerfile.

<comment><USER33> All true. But OP was never trying to argue that PHP is more complex than other language, but instead claimed that once you get to the point of requiring complexity, PHP doesn't get to have the "it's braindead simple" advantage anymore. To quote:

\--- Disputes like "Why do I need PHP if there's Java?" have become more frequent nowadays. I don't know who's in the right, Holly Wars are tricky. But each dispute has an argument in favor of PHP — it's easy for beginners. To my mind, this argument isn't valid anymore, which is exactly what I was trying to say in this article. A novice programmer will have to learn lots of new things, as well as write tons of configs: frameworks (very similar to java frameworks), databases, linux, shminux, JavaScript with all its baggage, http- protocol, various tooling and many more. Even if it's not SPA.

</comment></comment><comment><USER34> Hello world! in PHP is simply:

Hello world!

People forget PHP is still a template language for the web.

</comment><comment><USER35> > But each dispute has an argument in favor of PHP — it's easy for beginners. > To my mind, this argument isn't valid anymore, which is exactly what I was > trying to say in this article.

It's still is easier AND cheaper to deploy a Hello World in PHP than a Hello World in any other language. You can get a cheap Apache/PHP hosting for $2/month, use SFTP a get a working app in minutes. The default PHP distribution comes with a lot of extensions.

The problem is that PHP doesn't help a beginner graduate from a basic webpage to a secure and robust application without having to download a complex framework and meddle with configuration files. IMHO by the time you are tempted to use Symfony you might switch to Java or ASP.net directly.

If PHP was really beginner oriented, it would actually do everything it could to use the most secure defaults for every feature, like templating, or sessions.

Microsoft attempted to do that with WebPages, which is kinda what PHP should have been if it was really intended for beginners. WebPages mostly use secure defaults. While it doesn't prevent spaghetti code it makes having to rely on a complex framework unnecessary.

<comment><USER36> a C1 or VC1S at scaleway is 3.6€ per month. This gives you total control to install anything (nodejs, ...)

<comment><USER12> ...and now you're a sysadmin, with a whole new world of exciting career opportunities. And if you can also write bash scripts and spell Jenkins, welcome to devops!

The point is that if you're 13 years old, somewhat crafty, and just want to make a website that puts text on dank memes using ImageMagick to impress your friends, PHP and $3/month hosting with a friendly alligator that you can show to your mom to get her to put her CC in without thinking you'll get hauled off by a black helicopter...will get you to done quickly without having to read a foot of O'Reilly books, 20 DigitalOcean tutorials, 57 Wikipedia pages, and 118 StackOverflow answers.

Spaghetti PHP on shared hosting written by copy/pasting comments from the PHP docs and SO is a fantastic gateway drug for teens who end up being great developers. I love it.

</comment></comment></comment><comment><USER37> Just write "Hello, world!" in a file without the quotation marks, and nothing else. Save, then run. Will print what you asked it to.

Default in PHP is to output the bare text. Unless you wrap it in special markup '<?php'. That's an unique feature in the top languages.

</comment><comment><USER38> When I first read that I saw the nice girl with the red T-Shirt and thought, wow, the simplest way of writing Hello World in PHP is literally

        Hello World

(no <?php and so on).

Of course this would be broken HTML but first it displays, and second you could configure the web server to send

        Content-Type: text/plain

without charset parameter because YAGNI.

</comment><comment><USER39> 'old' vs 'modern':

I run a search engine. It is big enough that it needs drives, caches, firewalls, VMs etc.

The front end is php. No classes, no phpadmin, etc. Just pure vanilla php.

Sometimes I tail /var access logs. People try all kinds of urls routinely fishing for weaknesses.

It's 2017. It is slow to code and keep the attack surface that minimal.

0 intrusions so far.

</comment><comment><USER40> A bit like the other submission on learning JS in 2016. I find that I am getting dragged down by complexity. Even simple tic tac toe game that I was planning to write in vanilla js took me via jQuery, npm, Firebase etc. Sure its production ready but I just wanted to write something for fun. Wasn't really fun.

<comment><USER41> We can't have fun anymore. Web dev is serious business.

No one even _writes_ javascript anymore, they _compile_ it from Haskell or whatever. That's how serious it is.

</comment></comment><comment><USER42> This seems like a decent primer for someone who already has their heads wrapped around application development, but absolutely horrid for someone who wants to pick up a web language for the first time and create that first simple output.

That first simple output IMO is critical for retention and engaging the language knowing exactly what you're going to get by looking at dirt simple code like echo hello world; at least it was for me as PHP was one of my very first languages

The intent is well meaning in this "real world" hello world, but I feel like taking the espoused mentality in the opening paragraph, one is throwing construction tools at a toddler who asked for a box of legos for christmas.

Curious what others think

<comment><USER43> You do realise this article wasn't written as a beginner's tutorial but as a sarcastic view of modern web dev?

<comment><USER44> And where is the VM, the docker images, the swarm in the cloud to make HA and the right https configuration ?

<comment><USER45> I hope that VM is behind Elastic Beanstalk

</comment></comment></comment></comment><comment><USER46> I am going to leave this here...

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

If you enjoy overengineered code, check:

\- Fizzbuzz Enterprise Edition: [https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition)

\- Fizzbuzz in Tensorflow: [https://github.com/joelgrus/fizz-buzz- tensorflow/blob/master...](https://github.com/joelgrus/fizz-buzz- tensorflow/blob/master/fizz_buzz.py)

</comment><comment><USER47> I don't mind this article as long as it's classified as satire.

<comment><USER48> Is it though? The author described my company's tech stack. And I thought I had it bad in today's ops landscape.

</comment></comment><comment><USER49> "You can't build a decent modern application without frameworks."

Bullshit, especially on the PHP / backend side. It's 2017, we should know how to avoid over engineering simple things.

</comment><comment><USER50> Then, come peer code review/pull request by a senior/lead person, will be declined with the comment <? echo "Hello, overengineered world." ?>

</comment><comment><USER51> Using React, TypeScript, and Webpack in this context is ridiculous. Use tools that solve the problem at hand, not just because someone else is doing it...

<comment><USER3> But we're now using "Agile development", so I guess we have to use those things.

</comment></comment><comment><USER45> Nailed it.

I love PHP and it's still my main language, but the reason so many projects never get completed is because of this. Really I should just accept that for an MVP, Laravel and a static front end with some old school jQuery where required is fine.

<comment><USER52> Sorry but if you love PHP and use as your main language, why you don't complete any sideproject ? I don't understand your statement.

<comment><USER53> Side projects are natural places for programmers to get lost in this kind of bike-shedding/yak-shaving/etc., since they're not under the same kind of "this needs to ship on Tuesday or I lose my job" pressure that work projects are.

<comment><USER54> And in fairness, one of the better reasons to do a side project is to get up to speed on some fashionable technology so you can get a better job; that may well be of more value to you than the nominal deliverable, in which case it could make sense to prioritise it.

</comment></comment></comment></comment><comment><USER55> I enjoy that the concept of Hello World engulfs a full-stack deployment. Every one of these dependencies has a Hello World and the fact that people might not be aware of them is a real problem.

</comment><comment><USER56> The only thing missing from projects I've seen up close is that the value would be selected from the database using a stored procedure.

<comment><USER52> Or GraphSQL!

</comment></comment><comment><USER52> Sometimes I miss the old good days with PHP mixed in HTML.

Maybe wasn't the best solution but it worked...and was fast too.

<comment><USER57> Having had to find and fix a bug in a very long page like that recently I can definitively say I don't. Horrible.

Granted the person who wrote it obviously didn't care but that setup was awful for anything of any size.

<comment><USER52> You can write bad code(not modular) with every language...

If you use some include() in php, you can avoid long php/html pages...

What I really miss is that was very fast "GET SHIT DONE" with PHP.

<comment><USER41> >If you use some include() in php, you can avoid long php/html pages...

In my experience, you just get long PHP pages including other long PHP pages, globals defined in one and used in others, included files that contain nothing but HTML, and other madness.

You can certainly GET SHIT DONE in PHP with a bit more coherence. Composer, with its autoloader and a router (probably nikic/fastroute) won't get in your way, your code will be more organized, modular, and lightweight, dependencies can be managed, etc.

</comment></comment></comment></comment><comment><USER58> > Summary: Disputes like "Why do I need PHP if there's Java?" have become more > frequent nowadays. I don't know who's in the right, Holly Wars are tricky.

Who is this Holly and why are we starting a war over her?

All this talk about "Enterprise over engineering", is all this needed, tool- overload-hell, etc... and I just can't stop thinking about Holly and how to stop the war over her...

</comment><comment><USER59> What about internationalisation ? You have to add i18n.

</comment><comment><USER60> well, it is our job as programmers is to waste ... err ... utilize all that hardware power/bandwidth that Moore law has been showering us with...

</comment><comment><USER61> Once you've spent all this time setting up a NodeJS stack.... why use PHP at all? Ie. just use Node for the API/Server, you're already setup, and the stack would be 100% one language.

<comment><USER12> Except e.g. React and Express are so different and work on such vastly different domains that them being in technically a similar VM is more or less inconsequential. They're two entirely different disciplines and have different build pipelines, deploy pipelines, etc. I don't see much benefit in having them in the same language. One thing does DOM state while the other does ~play in traffic with libuv. Like hey it's nice that this OS kernel is implemented in C, good thing I am also writing my GUI in C.

Idk, maybe it's a boon for some, but I've tried it and don't really see the big appeal...except for Meteor, because if I'm writing both my UI and API in the same ______* language, why in the __ __would I need to write my models in both places and maintain them separately. But meteor has problems too, I just always thought it was neat way of doing something that would only be possible ( "easily") when using the same lang on both sides.

</comment></comment><comment><USER62> What is the point in writing blog posts like this?

<comment><USER4> The author makes it clear at the end of the article. The claim that PHP is "beginner friendly" is bogus now because any serious development in PHP is full blown enterprisey software engineering.

</comment></comment><comment><USER63> Right. Let's just delete everything and go back to a world where even more websites are packed full of vulnerabilities, written in spaghetti PHP!

<comment><USER64> I expect adding yet more lines of code will reduce vulnerabilities.</comment></comment>


1 Line CSS Grid Framework - <AUTHOR> http://www.vcarrer.com/2009/06/1-line-css-grid-framework.html

<comment><USER2> this is quite simple, but shouldn't the padding be built into the parent div, and not on the internal content?</comment>


X-37b space plane's microwave power beam experiment - <AUTHOR> https://www.thedrive.com/the-war-zone/33339/x-37b-space-planes-microwave-power-beam-experiment-is-a-way-bigger-deal-than-it-seems <comment><USER2> A couple years ago I read a book[1] on space solar power. It was written before SpaceX really got going, and estimated a cost of 15 cents/kWh for a gigawatt-size solar power satellite in GEO.

Old designs from the 1970s were monolithic beasts, and would be horribly expensive even if launch were free. The new designs use a large number of small identical components (of seven or eight types), which self-assemble in orbit. That way you can mass-produce them.

I plugged SpaceX Starship launch costs into the book's estimate and got a total system cost of 5 cents/kWh, which is pretty good for steady clean power that doesn't need storage.

[1] _The Case for Space Solar Power_ by John Mankins

<comment><USER3> For space-based solar to be efficient, ie for it to be better than just installing normal solar panels, the beamed energy would have to be at least as powerful as sunlight (1000watts per square meter). That is a very very high bar to overcome. Compared to the simplicity of solar+batteries, I don't see a future for beaming solar energy down from space. Maybe once every square meter of roof space has been dedicated to solar panels, once every city is essentially blanketed in panels, then it may be time to turn to space for more energy.

One might say that space-based solar would operate 24/7 and so is better than normal solar panels. That's isn't reality. Low-orbit satellites spend half their day in darkness too. To hit a receiver on the night side of earth a satellite would have to be at a very high orbit, reducing beam efficiency and increasing launch costs.

<comment><USER4> _For space-based solar to be efficient, ie for it to be better than just installing normal solar panels, the beamed energy would have to be at least as powerful as sunlight_

1) False. You just have to find contexts where installing solar panels is undesirable or impractical. A forward military camp in the hills of Afghanistan?

2) It's quite easy to exceed the energy density of solar panels with a microwave rectenna to receive power. In fact, a lot of the old designs were dedicated to _reducing_ the power density for safety reasons.

 _One might say that space-based solar would operate 24 /7 and so is better than normal solar panels. That's isn't reality. Low-orbit satellites spend half their day in darkness too._

Zero cloud cover. Zero dust buildup. In terms of access to solar flux, there are a lot of advantages to being in orbit. Also, there's a "simple" way to get around the tyranny of the rocket equation and get stuff to geosynchronous orbit cheaply: mine the moon, manufacture the silicon solar panels there, and use lunar electromagnetic mass drivers to deliver bulk cargo to geosynchronous orbit. So I would agree with a lot of what you're saying about impracticality with that caveat: "short of having lunar industrial infrastructure."

But, given a major power that has the above, how is this so different from having fusion power?

EDIT: But if you carry forward this thinking a few steps, you get to...Oh NO!

So let's say that we don't get fusion power, but we do get to the point where lunar industrial infrastructure looks within reach. In that case, control over lunar resources will mean control over the most plentiful, clean, and convenient form of energy. Basically, more than half of the motivation behind major power wars in the last century and a half, has been control over resources, particularly energy. Having energy resources gives one military power which gives control over energy resources.

This dynamic would seem to set up the next major power conflict past the Taiwan issue. Space could well wind up being the Caucasus Mountains/Persian Gulf of the early to mid 21st century. A major power conflict over energy resources which fundamentally involves the power densities implied by space travel just seems like BAD NEWS.

Even worse. We first get the start of the above conflict. Then only afterwards does rapid wartime R&D finally yields military grade fusion power. Yup, we're living in our really nifty, really interesting Sci-fi future. "May you live in interesting times."

<comment><USER5> No nation could build this lunar mass driver alone. Maybe same thing for a Dyson swarm. So, all those are international projects, if not completely planetary projects. This reduces a lot risks of armed conflicts.

<comment><USER2> According to the National Space Society:

> It is now believed that a lunar mass driver several kilometers long, > designed conservatively with present technology, should be able to deliver > 600,000 tons a year to L-5, or more easily to L-2, at a cost of about $1 per > pound, assuming only ten years of operation.

[https://space.nss.org/l5-news-mass-driver- update/](https://space.nss.org/l5-news-mass-driver-update/)

If SpaceX succeeds in dropping launch costs below $50/kg with Starship, this doesn't seem like it'd be all that expensive.

<comment><USER5> In this case, doing it internationally is just an option that I hope will be taken...

By the way most huge companies are already international in some sense, geographically or by employing many nationalities and origins. This also helps avoiding conflicts.

</comment></comment></comment></comment></comment></comment><comment><USER6> What would it take to power an airliner?

Wireless power transmission would be ideal for a lot of applications, transportation (electric cars, planes, maybe trains, UAVs, boats) chief among them.

You could shave a lot of weight out of an electric plane by reducing its battery capacity to an emergency supply. This would also greatly reduce the carbon impact of flight transportation, while making a case for bootstraping a beamed power constellation and ecosystem.

I guess that's something Nikola Tesla first envisioned :)

Unfortunately, from what I know, microwaves are not really harmless, unless diffused over a large area, and you then need a large collector. An airliner could do, if big enough. I don't know either if a beam can be steered fast enough, and what would the economics behind be.

<comment><USER7> [http://large.stanford.edu/courses/2013/ph240/eller1/](http://large.stanford.edu/courses/2013/ph240/eller1/): _"The power required to keep a Boeing 737-300 flying at a constant altitude and speed is 7.2 × 10⁶ watts."_

So, ballpark 7 MegaWatts, more during ascent, and add a bit if passengers want to watch movies, eat hot meals, drink soft drinks, etc.

On the plus side, if the airplane doesn't have to carry fuel, carrying capacity could go up (with some redesign to make the plane strong enough to land fully loaded), so that 737 might be equivalent to a 747.

That 737-300 has about 125m² of wing area, and, guessing, about the same are for the body, so that would be 7MW/250m² = 28kW/m². The sun delivers about 1,400W/m², so that's 20 times what the suns delivers on a cloudless day.

Now, most of the time, the ground station (or solar space array) beaming the energy wouldn't be directly below/above the plane, so the required power/m² could go up a lot ⇒ I would make sure that any windows in the plane wouldn't let the microwaves through.

Doable? Possibly, but on ground level, I guess it would be wise to use a lot more area for sending that amount of power up, to prevent killing birds.

<comment><USER6> Thanks for the figures. I'd guess that most of that power is used to combat drag, which can be lowered by going slower. The rest is probably used to combat gravity, especially during ascent, which should be improved by lowering the amount of fuel.

A small battery, and/or a ground station at the airport could provide a bit of extra power during ascent, and the battery recharged during flight. I guess the extra power shouldn't amount to a lot more than 10kW...

Depending on the wavelength, it should be fairly easy to have the plane act as a Faraday cage to shield its passengers. I guess the geometry could be slightly tweaked as well to make a larger surface area, possibly using trailing metallic wires to improve the energy collection area at a minimal cost (I get that cylindrical wires are the worst aerodynamic shape, but it should be less of a problem behind the wing).

If the wavelength is low enough, a coarse mesh could collect power quite efficiently, but you'd have to worry a lot more about radio interference.

<comment><USER8> Drag and lift are related. Wings work by literally displacing lots of air towards the ground.

If you go slower, you need bigger wings (also no one really wants longer, slower flights in cramped airplane cabins).

<comment><USER9> Unless it's cargo. Cheaper than "normal air" / faster than sea shipping is a reasonable niche.

<comment><USER8> I don't know if it's a big enough niche. There are quite a lot of costs to air cargo aside from marginal fuel efficiency and somehow developing novel cargo- specific aircraft has to translate into both increased profits for Boeing/Airbus and decreased costs to shippers. Keeping in mind that these slower craft would be unsuitable for some of the most profitable uses of air freight today. I'm not sure it makes sense.

<comment><USER6> I guess that's part of the reason we still see propeller planes around (often with the military).

Answering to a cousin comment, buses and trains can't compete when you need to cross water :)

<comment><USER8> Well, there are boats. Passenger sailing as a means of travel is not especially popular these days.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> THIS was the missing tech to start launching iteratively what will become a Dyson's sphere.

The step zero could also be using Earth's deserts.

And then step one is using a space shell of satellites. Because the available surface at a large distance of Earth is huge, even considering the constraints of not creating too much shadow for life's photosynthesis.

Further in the future could be step two, some flotilla at Lagrange points or even directly in a solar orbital between Earth and Mars (so that this will never create any shadows to us).

<comment><USER10> I mean, this could happen: we deploy a microwave energy station above the Sahara, and build that space tower ...

<comment><USER5> In my idea, the energy production would be the solar-panel-satellites. Or the deserts if we are only at step 0. But for drones and other energy-receiving devices, imho the ground grid and batteries are still the best option, as the wireless powerlinks towards the ground should be reserved to where it cannot be avoided. Any smaller powerlinks from-space-towards-space would be fine though.

<comment><USER10> solar panels in space -> microwave transmission to glass kiln -> glass towers that reach up into the sky ..

<comment><USER5> Wow nice, I didn't get your idea first, haha ^^

</comment></comment></comment></comment></comment><comment><USER11> My first reaction to this was Sim City 2000's Microwave Power Plant (and the occasional miss of the microwave beam):

[https://simcity.fandom.com/wiki/Microwave_(disaster)](https://simcity.fandom.com/wiki/Microwave_\(disaster\))

<comment><USER12> In SimCity 3000, the Microwave Power Plant is also first available in the year 2020. Coincidence? I think not :)

</comment></comment><comment><USER13> It sounds like a test for a future space weapon. Something that, anyone correct me if I'm wrong, it's banned right now. They sell it as a new energy source and that way they circumvent the ban.

<comment><USER14> You are wrong. The Outer Space Treaty bans nuclear weapons in space, but e.g. mass drivers shooting tungsten slugs which would have nuclear-like effects aren't banned, nor is anything else.

Even if a treaty did ban these weapons it wouldn't be "illegal" for a major power in any meaningful sense. These mutual arms restriction treaties are only followed by the major power as long as they see a mutual interest in doing so.

<comment><USER15> > These mutual arms restriction treaties are only followed by the major power > as long as they see a mutual interest in doing so.

Sorry, but this really rubs me the wrong way. The whole reason we have these kind of treaties is to protect nations which don't have the power to defend their interests should a conflict arise.

Saying that it is normal for a nation to just ignore a treaty they have ratified IMHO instills a very wrong mindset. If a nation ignores a treaty, the reaction should not be "Oh, that was to be expected".

<comment><USER16> > If a nation ignores a treaty, the reaction should not be "Oh, that was to be > expected".

A nation can withdraw from a treaty instead of ignoring it. The US just withdrew from the INF treaty. In retaliation, Russia withdrew too (they were the only signatories).

In 1936 Japan withdrew from the Washington Naval Treaty and built the formidable battleship Yamato (armed with 18 inch guns, by far the largest in WW2). What was the world supposed to do? The US imposed various sanctions on Japan. At some point the sanctions became so hard that they amounted to an economic death sentence. WW2 was not averted.

The unpleasant truth is that international treaties are not worth a whole lot. For the simple reason that there's no international equivalent of law enforcement.

<comment><USER15> > A nation can withdraw from a treaty instead of ignoring it

Yes, as far as I can see both the INF and the Outer Space Treaty explicitly include the possibility for a withdrawal (with prior notice).

At least this publicly signals the intent of a nation to do something which would violate the treaty instead of just silently ignoring it.

</comment></comment></comment></comment></comment><comment><USER17> Wasn't Tesla consumed with beamed power? I seem to remember that was what Wardenclyffe was about.

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

I remember reading a Repairman Jack novel about it. I think it was Conspiracies.

<comment><USER18> AFAIK (which isnt far) he was always talking about using ground wave transmission, too; which no one else had any idea how that was supposed to work, then til now.

<comment><USER19> > no one else

What makes you think he did?

</comment></comment></comment><comment><USER20> The practicality rests on two open questions, I guess:

1\. How much power could a satellite generate, realistically? 2\. How many targets could it serve simultaneously?

I imagine there is a huge difference between being able to support a single, ultra lightweight drone and, say, hundreds of reapers.

<comment><USER21> 1) Sun output minus conversion loses. Also you likely want nore than one, eq. a Dyson Swarm.

<comment><USER22> "Sun output" at reasonable Earth orbits for this application is maximum ~1368 W/m2, and that only when the the panels are perpendicular to the direction of the rays.

What is considered a "reasonable" orbit depends on our ability to collimate the microwave beam's rays, which is not an easy task

</comment></comment></comment><comment><USER23> A global network of satellites beaming power to insect-sized drones near the ground? Splendid.

<comment><USER24> Remember simcity's microwave power station? Microwaves beamed down from space :)

<comment><USER25> "it's all fun and games until somebody lose an eye"

in city telecom microwave antennas on top of buildings already kill thousands of bird every day.

maintenance checklist start with "clean the dead birds from base of antenna"

<comment><USER23> I don't believe the frequencies used for terrestrial communications cause injury, but rather birds are generally killed by physical impact with towers. Much like windmills.

Please show a source if I'm mistaken.

<comment><USER26> The problem is that directly in front of a microwave antenna, power output is on the KW order of magnitude. This is like standing in front of a microwave oven with the door open - in a few seconds you will have severe burns.

</comment></comment></comment></comment></comment><comment><USER4> Carrying one's power supply onboard a rocket in space and even on an airplane is a huge weight penalty. What if high energy density beams could power a substantial VASIMR thruster? That would make for awesome LEO to GEO orbital tugs. It would also be a good basis for a drone "space fighter" that could reduce the rocket equation penalty through ultra high ISP.

Reliable high density power beaming could enable fully automated cargo drone aircraft. These would have fundamental advantages in operations costs due to weight savings, the simplicity of electric motors, and reduced personnel costs.

If we could generate large amounts of power in space and use sufficiently large transmitters (re: diffraction limits) to beam it to VASIMR thruster spacecraft, we could substantially reduce transit times to Mars, as one example. Alternatively, we could also greatly increase mass fractions of cargo delivery to Mars.

</comment><comment><USER27> 24/7 availability was mentioned several times.

Does this mean it's possible to have a satellite in geostationary orbit that is never eclipsed by the Earth? Or does it mean you have more than one satellite serving a power receiver?

<comment><USER21> GEO satellites are pretty much always in the sun, minus couple hours per year when they hit the (very snall at this altitude) Earth shadow.

<comment><USER22> GEO orbit is too high for this application, since it would require an insanely collimated microwave beam (or insanely directional). The power loss is proportional to r^2. Google "spherical spreading loss"

<comment><USER2> That actually is doable. GEO is generally considered the best orbit for a solar power sat. The receiver has to be several kilometers across, but that's _good_ because you don't actually want to fry any birds flying through.

There have even been proposals to put transmitters on the Moon, but that's stretching things.

<comment><USER22> Sure, but I thought the consideration here was about UAVs and the such :)

</comment></comment></comment></comment></comment><comment><USER28> >In addition, it could allow satellites to provide reliable power anywhere on the planet or even to spacecraft or other satellites in orbit.

Aka laser ASAT platform. Seems like one of those read between the lines Space Force press releases. References to laser beam UAV kills, original research by Revolutionary Munitions Directorate etc. All the remote power through atmosphere interference sounds pretty fanciful TBH, whereas crippling adversary satellites using beam energy instead of kinetic impactors (=space debris) seems like the most parsimonious application.

<comment><USER29> It would be in line with the tradition of using "ballistic missile defence" as a pretext for developing ASAT capability.

I would question if there really is such a strong push for even more US ASAT tools in the USSF, though given the current administration I guess the "kill 'em all" mentality has a good wind in their sails.

<comment><USER28> My understanding is there's a much greater emphasis on counter-space capabilities now that US military is shifting towards peer to peer confrontations (China). ASAT... especially a concurrent global network is going to be pretty key to nullifying the Chinese missile gap in SCS by disrupting the killchain - Chinese satellites - in a manner that doesn't endanger US space assets. Also this was a month ago:

[https://www.space.com/russia-anti-satellite-missile- test-202...](https://www.space.com/russia-anti-satellite-missile- test-2020.html)

Beyond just needing the capability, media releases like this seems to be oblique posturing as well.

Edit: apparently posting to fast? Reply to below:

>ASAT warfare is hugely advantageous to them

Most threat models anticipate disrupting space assets in peer to peer conflicts to mitigate technological edge. All the old ASAT tests have been missiles that create debris (or potential debris in deliberate near misses), Recipe for kessler syndrome if executed at scale. So moving to beam ASAT that can disrupt / destroy sensors precisely without adversely risking the space commons might not be a terrible development in terms of space arms race.

Also if memory serves some of the new Chinese satellite used to track SCS shipping (US aircraft carriers) are in a high orbit that can't be hit by current ASAT at all. So this might be developing new capabilities. It certainly makes sense to hit other objects in space vacuum at speed of light than to power drones through clouds.

<comment><USER29> > So moving to beam ASAT that can disrupt / destroy sensors precisely without > adversely risking the space commons might not be a terrible development in > terms of space arms race.

Um, lowering barriers for using weapons is obviously a bad thing: it means they are more likely to be used, and cause a response by the adversary. So unless you mean that this beam-tech should be freely shared all you're doing is increasing the risk to the commons.

But my larger point is this: the incredibly costs of space weapons only make sense if you think your adversary doesn't have any counter-move, this is what I meant by my supposition that USSP thinks space warfare is advantageous.

To illustrate: remote detection can be counteracted by masking and decoys, both of with are much more mundane than ASAT capabilities but will work pretty good for a fraction of the cost and without any risk at all to the commons.

</comment></comment></comment></comment><comment><USER30> Anyone know what impact this will have on anything that gets in the way of these high-energy microwaves? I'm thinking birds or manned aircraft?

<comment><USER31> According to Wikipedia the power density of various proposal to beam energy from space should be harmless for human.

[https://en.m.wikipedia.org/wiki/Space- based_solar_power](https://en.m.wikipedia.org/wiki/Space-based_solar_power)

<comment><USER32> At those intensities, microwaves seem significantly less useful than optical PV.

<comment><USER21> Well, they work at night if your solar power satellite is high enough (eq. GEO).

<comment><USER32> The same applies if the beaming is done with an optical laser instead of a microwave.

<comment><USER31> Optical laser is rather inefficient at converting electricity into optical energy. Surely there are some low-powered diodes where one can get over 50%, but for powerful lasers efficiency like 1% is a good number. Consumer microwave ovens on the other hand has efficiency like 65%.

</comment></comment></comment></comment></comment></comment><comment><USER33> Can the effect of capturing and sending more enegry to Earth from space (than Sun does now) be compared to global warming effects from currently burning fossils?

<comment><USER34> You can position the solar panels to shade the earth which wouldn't change the total impinging power.

</comment></comment><comment><USER35> I was surprised to learn the rectenna was invented as recently as the 1960s: [https://en.m.wikipedia.org/wiki/Rectenna](https://en.m.wikipedia.org/wiki/Rectenna)

And in 2015, the optical rectenna: [https://www.me.gatech.edu/featured_colarectenna](https://www.me.gatech.edu/featured_colarectenna)

</comment><comment><USER36> If one assumes that the beam feeding the drone is not a cylinder, but more of a cone with a Gaussian profile, then technology could get built which detects the source and the target of the beam. So no matter how much you stealth the drone, you'd have to deal with that new problem.

</comment><comment><USER37> The power must be enormous at the source. It would degrade considerably from the source, inverse square law.

<comment><USER38> The inverse square law only applies to a point source radiating uniformly in all directions.

Laser and microwave beams, while they do suffer from losses over distance, aren't anywhere near that bad.

<comment><USER39> The inverse square law still applies to directional transmitters and optical transmitters. It's just that their transmit gain is much much higher.

</comment></comment></comment><comment><USER40> I wonder how they don't fall afoul of Tesla's patents?

[https://www.damninteresting.com/teslas-tower-of- power/](https://www.damninteresting.com/teslas-tower-of-power/)

<comment><USER41> Possibly something to do with his having been dead for nearly 80 years?

<comment><USER40> Somebody owns those patents...

<comment><USER42> Patents are only valid for 15 years or so.

<comment><USER43> That's the idea. I have no clue what's going on with big companies sitting on stacks of tens of thousands of patents and litigating people for violating patents unrelated to what the company produces.

</comment></comment></comment></comment></comment><comment><USER43> Takeoff and ascension use the most power. What happens when it's foggy and cloudy? Do you have to wait it out? Planes cannot afford the weight of large batteries.

</comment><comment><USER44> _"If we had a way to keep those drones and UAVs flying indefinitely, that would have really far-reaching implications. With power beaming, we have a path toward being able to do that."_

Why go through all this trouble when there's this?

[https://www.amprius.com/amprius-silicon-nanowire-lithium- ion...](https://www.amprius.com/amprius-silicon-nanowire-lithium-ion- batteries-power-airbus-zephyr-s-haps-solar-aircraft/)

While 25 days is the record, I'm sure this thing can remain aloft for at least a week at a time.

To me the solution from the article appears expensive and suspiciously deathray-ish.

<comment><USER45> Because it's a superlight UAV without any instrument package or ordnance load.

<comment><USER44> I see no indication that anything heavier could be powered via the method described in the article.

<comment><USER45> The beam is on the order of kilowatts.

Noone is going to deploy satellite network just to power some semi-gliders.

<comment><USER44> But how efficiently can the drones receive such a beam?

I checked and the Zephyr S has a 5kg payload - not much, but enough for instrumentation. And they're making an even bigger one.

</comment></comment></comment></comment></comment><comment><USER46> So what's actually new here? Why can't we test this same system on earth?

Is it a laser or a focused microwave beam? Will it hurt if a bird or airplane flies through the beam?

<comment> tren-hard They did test it on Earth, there's a bunch of examples in the article, but you are limited to line of sight on Earth.

</comment></comment><comment><USER47> This would also have a great application for commercial flights. It would be also a bit easier if energy would be sent only above clouds.

</comment><comment><USER48> anyone know what the conversion and transmission power loss is?

</comment><comment><USER49> Seems great technology. Hope they also address any impact on ecosystem.

</comment><comment><USER50> Lol, we are going to spend billions to _possibly_ send down the power of a few litres of fuel to a drone a day?

Maybe targeted at someones head it might pay for itself, but still pretty sci- fi _if_ it was possible.

Just send from a blimp.

Or send the power up to the satellite to power them, it's good as free from the ground, if this stuff is possible.

[edit] I would have ruled out this being a ruse to confuse people from the military's side, since it's so crazy no one would believe solar panels in space transmitting energy to earth was possible. But maybe not it seems..... I assume IRL it's for communications, or jamming, shooting a missile out of the air?

<comment><USER51> > Just send from a blimp.

Drone Mothership</comment></comment>


Linux touchpad: preliminary project funding, survey results - <AUTHOR> https://bill.harding.blog/2020/05/17/linux-touchpad-preliminary-project-funding-survey-results/ <comment><USER2> Perhaps the only thing other than a certain leviathan that I loathe in Linux, is the touchpad. I have butchered laptops as a result of touchpad induced madness. I've tried synclient and other tweaks to no sufferable avail. My present laptop has the touchpad removed by pliers. I used the term "madness" sincerely. I think the present situation might be eligible for a place in the wiki for Unethical Human Experimentation. Of course, Linux is not entirely to blame; the physical quality has declined immensely for most touch/clickpads.

Perhaps someday I'll experience playing go without a mouse and risk of hypertension.

I'm typically not one to use the term - but godspeed, in this case!

<comment><USER3> > My present laptop has the touchpad removed by pliers.

Under which circumstances is disabling it on a software level insufficient?

<comment><USER2> An emotional one.

<comment><USER4> I like your honest answer.

I can't stand laptop touchpads on any OS (except Apple trackpads, which I admit are usable, but I don't own a macbook so this point is moot). I can't stand most laptop _keyboards_ either. I use an external keyboard and mouse in every laptop, making them effectively "portable computers".

</comment></comment></comment></comment><comment><USER5> I can hardly tell the difference between my razer stealth linux touchpad and my workprovided macbook.

Even based on the feedback, it seems that most people are okay with their touchpad experience and are more interested in advanced features like multitouch.

Having this said, for myself this is a tough sell. I'm concerned that I would donate and I won't be able to tell the difference between this and some placebo drivers.

<comment><USER6> _I can hardly tell the difference between my razer stealth linux touchpad and my workprovided macbook._

How much of the surface of the Linux touchpad is clickable? I.e. how much of it depresses when you press on it, vs. the MacBook?

I've never seen a non-Apple touchpad that didn't have a big dead zone in the back (closest to the display) 1/4 to 1/3 of the surface.

<comment><USER7> That's a physical limitation because the touchpad hinges from the back. No new touchpad driver is going to fix that.

<comment><USER8> And the Apple touchpad doesn't hinge at all! The "click" reaction you get when you press it is simulated by a set of force sensors and an actuator that vibrates the trackpad to simulate a click.

<comment><USER9> Apple trackpads used to hinge 10 years ago.

<comment><USER10> Actually, they used to sell a trackpad that did that until last year!

<comment><USER11> iPad pro still does.

<comment><USER12> The trackpad on the Magic Keyboard doesn't have a hinge at the back, there's a single button under the center and a lever that runs under the sides which actuates the button and makes the physical click movement: [https://www.ifixit.com/News/41291/dang-the-ipad-pro-magic- ke...](https://www.ifixit.com/News/41291/dang-the-ipad-pro-magic-keyboard- looks-cool-in-x-rays)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> This is still the most frustrating thing about Linux for me. I have two Thinkpads, a T460 running Windows from my employer, and a T560 running Ubuntu as my personal. Their touchpad hardware is, of course, identical. The experiences couldn't be more different.

When I first got the machine, I spent weeks fighting with the driver, trying to figure out how a single number can represent four lines on two dimensions to define a region where palm-touch should be ignored. I still haven't gotten pointer precision where I'd like it; I simply know that getting within ten pixels is the best I can hope for without infuriatingly slow rocking and coaxing my finger around. It's disappointing to say the least.

Honestly what I'd like most, is a WINE-like shim to simply let me run the Windows driver in some sort of sandbox and take its mouse-events to the Linux input system. Synaptics has clearly done the work to make the thing behave the way I'd like, and it would be the coolest thing if identical settings were equivalent and portable between machines.

<comment><USER14> Am I the only one who finds the Synaptics trackpads on many laptops are simply a nightmare in itself regardless of the operating system due to the physical design? Not all Synaptics trackpads are created equal, on some machines, the surface friction just doesn't feel correct, making the pointer acceleration difficult to control. _I know I was probably using it wrong and I should 've spent an hour tweaking the parameters in the Synaptics Windows Driver, but I don't really know what's the best for me._ Even worse, some Synaptics trackpads have cheap plastic that worn out after a year or so, creating an uneven friction, making the navigation a difficult experience. I know I could replace it, but making the touchpad as a consumable item is not a good design. Also, on many ultralight machines, the available space is simply too small to have an adequate space for plamrest.

Finally, as a matter of personal preference, I found clicking the button on the touchpad is never a good experience - the pad is clickable, but only on its edge, or you could touch-click, but you need to constantly lifting your finger. The touch gestures are confusing as well, to this day I never figured out any of the gesture I could use. The device driver really should come with an animated tutorial. The only feature I found was scrolling at the edge or double-finger scrolling, but it's only useful if you want to scroll a few lines, rolling the entire page is a tiresome experience (unlike the middle- button scrolling on a TrackPoint).

As a result, I only use the TrackPoint on Thinkpad laptops. Although the TrackPoint is not completely free from the pointer acceleration issue in general on Linux (although I never found it to be an issue for me), the overall usability is much better because it doesn't have the physical design issues.

<comment><USER15> The trackpad on Macs is one of the major reasons I stick with Mac laptops.

<comment><USER16> Same, despite the overheating issue with my model, and the copious amount of OS issues with the more recent releases, I've yet to find a laptop that comes close to Apple's track pad.

To a point where sometimes I prefer the track pad over a mouse.

<comment><USER17> You've probably already heard about this, but there has been a large discussion about how charging from the traditional left side of 15" (and I believe 16") MBPs results in heat and fan issues. A lot of people have had improved results just by switching power to the right.

<comment><USER18> That is just ridiculous.

<comment><USER19> Not more than the previous keyboards which can't handle a spec of dust under the keys.

</comment></comment></comment></comment></comment></comment></comment><comment> phoe-krk > _There 's currently a gaping chasm between the 35 sponsors who have > supported the project on GitHub so far (thank you!!!) and the 309 poll > respondents who indicated they would donate to this cause._

<comment><USER20> I answered the poll, and said I would pay $50 for this, but never received any follow up (and I think I provided my email, I usually do in polls if they give the option).

Now I just realized that there is a github sponsor link, but it's recurring. I don't want recurring. I want to send $50 once.

<comment><USER21> You can sign up, pay once, then cancel.

<comment><USER22> Why should the onus be on me to make sure I don't pay more money than I want? I can't stand this 'just subscribe then cancel' mentality. I would like the option for a one time payment for things without having to fuck around starting and cancelling subscriptions. It's just ridiculous.

<comment><USER23> > Why should the onus be on me to make sure I don't pay more money than I > want?

follow the money. :)

</comment></comment></comment></comment></comment><comment><USER24> Off topic but did anyone else notice that this entire blog post is actually hosted on a site called amplenote? With uMatrix enabled, the wordpress blog just shows an empty post with a broken iframe. Is this a common architecture? What's the purpose?

<comment><USER25> On my system the iframe is really small but the content is in there. I've seen a bunch of sites doing this recently and it's quite annoying.

<comment><USER24> Just to be clear my settings deliberately block iframes by default until I allow them. I just thought it was odd that the whole Wordpress blog is literally window dressing.

</comment></comment></comment><comment><USER26> I've used a mac occasionally and there are really only two features I miss from the trackpad level: \- Add a finger to click. This is very useful to be able to click without stopping dragging your finger. \- The acceleration curve for pointing feels more natural. This was surprising to me because I use Linux primarily but I feel like I hit targets slightly more on MacOS.

With libinput I have found that multi-touch gestures work really well we are just missing application support. It seems that this project doesn't aim to work on applications at all so for me it seems like they are barking up the wrong tree. For example I would love to have Firefox wired up to linux three- finger swipe gestures for forward/back (and I bind down -> Scroll To Top and up -> Close tab).

</comment><comment><USER27> I guess it helps not to get used to "better experiences" just judging by the comments here. I bought a laptop and and have dual boot but use linux primarily. Every time I'd have to use Windows, it would be a serious frustrating pain in the ass. A lot of these things I am 999% convinced are just based on familiarity than actual ergonomics.

<comment><USER28> Well, the Mac trackpad is an absolute joy to use..

The quality of trackpads outside of Macs used to annoy me to no end, but my 2018 zenbook with libinput isn't that bad. It's like 80% of the way there for a quarter of the price.

</comment></comment><comment><USER29> Looks like the number of contributors have doubled since this post hit the frontpage.

That's great, this is one of the few things left that held back Linux desktop, and it wasn't even that bad with some tweaking but it shouldn't need tweaking. Gnome has made drastic improvements in recent years as well.

Now if only companies would fund proper open source graphics drivers then there would be no reason for developers to not use Linux. Otherwise you need to buy a laptop with Linux in mind and you'll be fine.

<comment><USER30> Re GPU: Running a desktop with a shiny new AMD 5700-xt, and it has been pretty excellent. Only nit to pick is that I had to add a small bit of configuration to enable FreeSync support with my monitor.

Performance in various Steam games (native as well as emulated via Proton) has not been a disappointment.

That said, previously had an NVidia card that worked okay with Ubuntu, but required enabling some proprietary drivers. It worked fine, but was an extra hoop to jump, and using proprietary drivers sticks in my craw.

If I did anything on my desktop that relied on CUDA, I suspect I'd be stuck with using the proprietary NVidia drivers.

</comment></comment><comment><USER31> I'm faintly curious, how does the MacOS "Touchpad Experience" referenced in question #1 differ from the Windows one? (Or any other OS?)

(Background to my ignorance: While I do (very) occasionaly use MacOS, I usually default to the terminal as it's more familiar... and probably spend most (60-70%) of my time connected to linux or unix-like systems via cli/ssh... from a Windows system.)

Are we talking touch gestures or something? Or multi-finger things? Are they really that massively different? Surely a touchpad is a touchpad? (Not counting those awful things without proper buttons).

<comment><USER32> You'd think "surely a touchpad is a touchpad", but the reality for most heavy users is that Apple really does have an experience substantially better than most in this area.

Large tracking surface. No dead zones, which can't be touched or tapped. Fantastic palm rejection. Gestures that work reliably, and never over or under-detect fingers.

Its not really to say that the Apple trackpads are better at their best than the other vendors, as much as it is that the other vendors often behave in unpredictable ways. I used to have a Thinkpad which worked every bit as well as my current Macbook trackpad when it worked right, but which would frequently fail to recognize a finger during a scrolling gesture, couldn't be clicked on the portion closest to the keyboard, and occasionally the palm rejection just wouldn't work. The minor annoyances over time add up to a much more frustrating experience.

<comment><USER33> I've noticed that two-finger scrolling, which should be one of the easiest things to get right, is wrong on basically anything that's not MacOS. Windows and Linux arbitrarily insist on 3-line scrolling in a lot of apps. Even when pixel scrolling is technically available, it works poorly. It appears small movements are ignored, and then once you've hit some sort of distance threshold the scroll "jumps" to register the whole movement. There's weird delays where you need to "un-touch" the pad before you can transition from moving the cursor to scrolling. The scroll gets "dropped" after a while even though I still have two fingers on the pad.

I've seen all this across many laptops running Linux and Windows, including Macs, which leads me to believe that that the issue software.

<comment><USER34> Actually on Windows, 3 line scrolling is a configurable default in the control panel. On X/Linux, on the other hand, is where it's hard-coded to 1 line and there is no way to change it to 3 without having undesired side effects (such as scroll events being fired 3 times).

<comment><USER13> But no matter what you set it to, an inch of scroll motion on the trackpad results in a different number of screen-inches of window movement, between different apps.

In Ubuntu right now: Firefox seems pretty intuitive, one trackpad-height worth of finger movement results in roughly one screen-height worth of window movement. That's great.

But LibreOffice Calc, for the same amount of finger movement in the upward direction, scrolls about 3 screenfulls up. And bizarrely, for the same amount of finger movement in the downward direction, scrolls about half a screen.

Discord desktop app (which I assume is Electron like everything else), scrolls about 1.5 screens per touchpad-worth of finger movement. That's acceptably close to Firefox and not disorienting.

Gedit scrolls about 2 screens per touchpad.

Arduino IDE scrolls about 2 screens per touchpad.

How on earth can these be different? And how do you even start to fix that?

<comment><USER35> They all use different UI toolkits, some are gtk, some are java UIs, some are electron-based apps. So that's why - it's a higher level problem that is unfortunately inherent to desktop fragmentation which is hard to avoid on linux.

</comment></comment></comment></comment></comment></comment><comment><USER36> I've been using Ubuntu since 2009, two HP laptops and zero problems with the touchpad. I used the first one with Windows for two years and the touchpad behaved better with Ubuntu than with Windows. I think the improvement was two finger scrolling instead of sliding on the right edge. I used only Ubuntu on the second laptop so I can't do any comparison but I never felt anything wrong with the touchpad. HP nc8430 and ZBook 15 first gen.

</comment><comment><USER37> After using a Steam Controller for a couple of years, I would love to use its trackball-emulation feature with my laptop touchpad. Would anyone else like to see this feature experimented with?

</comment><comment><USER38> I'm a little unclear on how close to the funding goal this is. As far as I can tell, the goal is $10k total, but the current funding level shown is per month. Does it just mean that work can't begin until the accrued balance reaches $10k?

Also, is there a way to make a one-time donation rather than an ongoing monthly pledge?

</comment><comment><USER39> I just hope that libinput matches the xorg synaptics driver before it is deprecated. On every major OS release, I try the live cd to check if the touchpad with libinput is on par with synaptics, but it isn't there yet.

<comment><USER40> libinput has been far ahead of xorg synaptics since forever.

</comment></comment><comment><USER41> As a touchpad-ignorant person (I have not used Macbook touchpad, so I don't know what I'm missing) Linux touchpad support had always seemed fine to me until distros started using libinput by default.

Last time I tried libinput, I couldn't disable acceleration on touchpads. "Flat" acceleration profile still had acceleration.

<comment><USER42> If you're happy with the current state on linux...don't ever use a macbook trackpad. It'll ruin you.

</comment></comment><comment><USER43> Interestingly, I seem to have had the opposite experience of many people in this thread. On windows, the touchpad driver uses this annoying tray application, defaults to "tap = click" (does anybody seriously like this behavior on trackpads with physical buttons?), and also includes some easy to trigger gestures I often hit causing my windows to do something stupid. On linux the drivers have always "just worked", felt like similar mouse movement/scrolling to windows, and didn't come with tap to click or gestures I never used.

</comment><comment><USER44> Color me stunned that people are so dissatisfied with their touchpads in Linux. 0-3 lines of options in my config have made me perfectly content with every touchpad I've ever used in Linux.

<comment><USER45> Care to share? Would be really appreciated

<comment><USER44> I am away from my laptop for the time being, unfortunately. But it's generally a bit of pointer acceleration and enabling two finger scrolling, if I have to configure anything at all.

</comment></comment></comment><comment><USER46> My god. I hope Ubuntu is not going to jump on this quickly. My current setup with Synaptics and just two manual tweaks is perfect for me.

The way MacBook touchpads work always irked me, always felt off. But maybe it's necessary for MacBooks with their enormous tachpad surfaces.

</comment><comment><USER47> The donation link seems fairly buried under the comments, but here it is again: [https://github.com/sponsors/gitclear](https://github.com/sponsors/gitclear)

</comment><comment><USER48> So am I the only one that really _hate_ multitouch.

The really thing I want is * left click on the left side of the touchpad * right click on the right side of the touchpad * right and bottom area to scroll (with ONE DAMN FINGER)

<comment> seph-reed Of course not. But as much as you hate it, I love it, and it turns out most of the work needed to have things our own way is shared.

As a person who just wants the MacOs experience, I'll gladly support the fact that you should be able to make it work the way you want too.

</comment></comment><comment><AUTHOR> This project is now up to 75 supporters and $800 monthly sponsor estimate, which should be a good enough starting point to start talking to devs. Thanks a bunch, HN!

</comment><comment><USER49> As one of the people that said I'd donate to this cause and setup my first GitHub sponsorship for this project, I'm very excited!

</comment><comment><USER50> Honestly, I hate the Apple touchpad experience. I love Linux touchpad experience, except for when there are multiple drivers available and depending on which one is being used, my settings change.

Oh, and, 'tap to click' should be default.

<comment><USER51> >I hate the Apple touchpad experience

You're definitely in the minority on that.

> Oh, and, 'tap to click' should be default.

Okay, now you're just trolling.

<comment><USER50> I really do like tap-to-click. I may be in the minority. After checking the numbers again, I'm definitely in the minority on HN. But, no, I'm not trolling. Tap-to-click is sooooooo nice. I can use all touch pads the same whether or not they can be clicked all over. I don't have to click (which makes a sound). I know that sound may not annoy everybody, but i was once recording audio, and every file started with a 'click' sound ... until i enabled tap-to-click. And i have never looked back.

The one thing i love about Apple touch pads is 'natural scrolling'. What a beauty.

</comment></comment></comment><comment><USER52> Will Linux fix their mouse support as part of this project?

<comment><USER53> Came here to say the same thing. Every Linux distro release the mouse finds a new way to break -- different acceleration profile, impossibly slow followed by impossibly fast, etc. -- and I have to update my _fix_mouse.sh_ autorun script to scan for whatever the new _xinput_ parameter names are.

It's unfortunately distressingly common in software, but especially Linux GUIs, to fix one thing by breaking three others instead of identifying a better framework to fix the root cause. The Linux kernel does seem to be good at that last part, but not the desktop projects.

<comment><USER54> Never had an issue before. What distro and window manager are you using? I'm running Arch with Sway and no issues whatsoever with the mouse.

<comment><USER53> Kububtu with a Logitech G500s set to ~2000dpi and a 250Hz or 500Hz report rate. I had similar issues with other DEs and login managers in the past.

I keep meaning to try KDE Neon or switch back to Mint or something, but I have very little desire to mess with my OS these days.

</comment></comment></comment></comment><comment><USER55> Q3 bars go 2 1 3 4 5.

</comment><comment><USER56> No multitouch!?

<comment><USER57> Yeah, didn't get that. Multitouch is definitely there. Not all gestures though.

<comment><USER58> It very much depends on what hardware you have currently.</comment></comment></comment>


Bulk Email Extractor - <AUTHOR> https://emailextractor.belkins.app/ <comment><AUTHOR> Sift through your LinkedIn connections to find high-value contact data</comment>


Disqus' newly enforced free ads are breaking HTTPS everywhere - <AUTHOR> https://twitter.com/nickjanetakis/status/940610279775391746 <comment><AUTHOR> For reference, if you are using an ad-blocker like uBlock origin you won't see your site as being insecure because the ad is blocked. You'll have to disable it.

I would give you an example URL where it happens but I don't want this post to come off as self promotion. If you really care to look, my blog is listed in my profile.

<comment><USER2> I went to your blog: [https://nickjanetakis.com/blog/docker-swarm-vs- kubernetes-wh...](https://nickjanetakis.com/blog/docker-swarm-vs-kubernetes- which-one-should-you-learn), with Chrome 63 and Firefox 57, but no adds are shown to me :-/ I'm on Linux. What can I do to see the ads? I haven't installed AdBlock or sth like that.

(If you've been thinking about switching to an open-source alternative without ads or tracking, have a look at EffectiveDiscussions, demo: [https://www.kajmagnus.blog/new-embedded- comments](https://www.kajmagnus.blog/new-embedded-comments). (I'm developing it.) There's hosting too: [https://www.effectivediscussions.org/blog- comments](https://www.effectivediscussions.org/blog-comments). Also in the following topic about Disqus getting acquired, there's a list of alternatives: [https://news.ycombinator.com/item?id=15851385](https://news.ycombinator.com/item?id=15851385). )

<comment><AUTHOR> Since then I upgraded my account to the basic plan which disables ads. There's a nearly hidden pricing option that allows you to enable it for free on sites that get less than 50,000 daily page views and are non-commercial.

A disqus engineer recommended I do that on Twitter.

Thanks for all of the links. I will check them out. Good luck with your comment service.

<comment><USER2> Interesting, good to know (for those who use Disqus). Up to 50 000 views is a lot I think.</comment></comment></comment></comment>