Ask HN: Creating a query builder for end users - <AUTHOR> Our product is starting to get lots of requests for custom reports from our customers. I've taken some steps to really stream line the creation of the reports and exporting reports to PDF / XLS format. This has really helped and most reports can be created fairly quickly with a very full feature set.
The other day I began thinking about giving users the power to create their own filters essentially creating their own queries through a  UI. This isn't so bad because our framework, CakePHP, stores all the relations to the data and its easy to build on top of this.
The tricky part is striking a balance between usability and power. A concern of mine is that this sort of thing might be too complex to our non-techie customer base. Have you done something like this before? Do you have any great examples? How did you handle (or why did you not handle) complex things like: OR, AND, NOT IN, IN, <, >, BETWEEN etc... Specifically I'm interested in your thoughts on building an intuitive and beautiful UI. <comment><USER2> I faced the same basic concept a number of years ago, and we had to make it work for barely computer literate police.

Basically, we used a single piece of software's single feature as our reference, for describing it to others and for how to handle the experience.

iTunes Smart Playlists. ([https://www.evernote.com/shard/s136/sh/7f5f39a1-6c85-4853-aa...](https://www.evernote.com/shard/s136/sh/7f5f39a1-6c85-4853-aa86-970931ea73f3/6c8638c37d303d492f263d396ae27b3e))

I have yet to see a better interface (than iTunes) for building what are essentially custom queries.

<comment><USER3> I think that this can be improved by removing the All and Any operators and instead letting segmentations be nested. So for example:

      All
        a = b
        Any
          All
            c = d
            d = f
          c = e

would be

      a = b
        c = d
          d = f
        c = e

I think that it is more intuitive to segment the set as you go.

</comment></comment><comment><USER4> I built QueryTree ([http://querytreeapp.com](http://querytreeapp.com)) as a response to this sort of problem. It's a domain specific visual programming language designed for working with tabular data. So people who want to build a custom query on a database can do it just by dragging and dropping the right "tool" onto the "worksheet".

It's a desktop app rather than web, although it is actually built using HTML, canvas and JavaScript.

It can do _almost_ anything SQL can. It can't do "IN" queries yet but I have a plan do that in a way that's consistent with the general drag and drop approach of the app. It doesn't explicitly handle BETWEEN queries but they are easily achieved by using two filter tools one after the other.

I think there are two types of complexity to be dealt with when enabling users to build reports/queries. One is the complexity of the concepts involved, the other is the complexity of communicating what you want to happen to the computer. I built QueryTree because of a belief that many people understood they the concept of a filter or a join, but just didn't like text based programming languages. I replaced the SQL syntax but left everything else in place. If I didn't think my target users were up to understanding the conceptual complexity I would have restricted it a bit more and would probably have ended up with something like IFTTT.com but for data. Mostly, people seem to "get" QueryTree though, especially when they're using it on data that they're familiar with.

<comment><USER5> Looks nice! What technologies are you using for cross-platform support in your app?

<comment><USER4> After evaluating all the desktop html frameworks I could find, I settled on "node-webkit".

</comment></comment></comment><comment><USER6> I've done this when building the reporting side of a survey product.

The vast majority of your users won't use the complex filters.

Ask your customers what kinds of reports they want to build, usually it will be a series of AND requirements.

You can look at email filter builders for inspiration.

Usually it is something like building a series of :

Field (drop down) operator (drop down) value (text)

The tricky part in the ui is combining these (and/or) and if you really want to get fancy, supporting parena to change the precedence of the operators. A AND (b or c).

You must not convert this to SQL on the client side. You must validate the fields submitted are in your approved list on the backend (indexes/security).

<comment><USER7> 'You must not convert this to SQL on the client side. You must validate the fields submitted are in your approved list on the backend (indexes/security).'

Interesting point. Can't you get around this by only exposing certain tables/fields in the UI based on the users permissions?

<comment><USER8> You shouldn't trust it just because of your UI. With developer tools, regardless of your UI, it would be trivially easy for a malicious user to send any arbitrary SQL query. This would allow them to retrieve sensitive data or modify/delete records from your production database. You really should only build this query server-side, and, as the OP is using PHP, I should also add the caveat that they should use PDO.

</comment></comment></comment><comment><USER9> This is interesting because I'm building the exact same thing, which also has the be plugged into a Cake app.

For choosing the tables to query, my idea is to present a grid. Each cell has the table name and tables available through relations. When a table is selected, the cells either remain "on" or are disabled based on relations available. These will typically change depending on tables selected. Relations are discovered as defined, say hasOne, hasMany, etc. this is step one.

Step 2 involves selecting the fields to include in reports. These are typically prefixed with the model name and with underscores replaced with spaces. So User.first_name becomes "User's first name", User's country name or Country name, which I haven't worked out fully yet. I suppose some intuitive way to combine these into virtual fields would be nice.

The hairy bit is selecting conditions. I get requests to hard code queries such as finding the number of product ordered by users who have taken an online course or an in-person course so I have to be flexible. This part is tough to express in a UI simply, because X AND (Y OR Z) isn't the same as (X AND Y) OR Z. However, having some way of grouping conditions and requiring that such groups also have a binary operator by dragging and selecting seems the way to go, a la selecting icons on a desktop.

All of this can be saved as a "virtual table" for reuse. Output is typically a CSV for marketing purposes but my intention is to have this so I can plug in a PDF renderer with nice charts and what not, like Google Analytics.

Though something tells me building all this may be overkill if I can find a package that handles analytics and custom-defined events, along with the ability to upload backdated data!

</comment><comment><USER10> > The tricky part is striking a balance between usability and power.

Yeap, this is indeed the big issue. One thing that helps is to tune the UI for your _specific domain_ so that it has just enough power to be usable in that domain, but no more. We had to build a query tool for retailers in my last gig, and tuning the UI just for retail helped a lot.

For example, make it easy to specify a BETWEEN operation in your UI if that tends to be used often, provide commonly-used domain queries as templates so your customers can learn by looking at and modifying these templates, etc.

For inspiration, you may also want to look at other products that have query building as core feature. Two that stand out to me in terms of usability are mixpanel and chart.io: [https://mixpanel.com/segmentation/](https://mixpanel.com/segmentation/) (see "Goodbye SQL" section) [http://chartio.com/product/tour](http://chartio.com/product/tour) (see "Drag and Drop Chart Creation")

</comment><comment><USER11> I was working on such system for performance measurements. Basic assumption was that user would never see any mention of tables, joins, column names nor any other SQL concept.

1.Table selection - there is predefined set of joined tables we call views. Views have descriptive names e.g. 'Temperature measurements', no underlying tables are shown.

2.Column selection - user selects columns from views using descriptive names , not actual column names . UI clearly indicates columns that land in 'group by' section by calling them dimensions. There is predefined aggregation strategy for all columns that are not dimensions - e.g. average for temperatures or sum for number of measurements. In some cases more that one aggregate is available e.g. average or maximum temperature. User just selects maximum or average temperature not aggregation operator.

3\. Filters: user can select simple filters on columns: =<> and string matching for text. All filters are ANDed

4.Sorting: user can select columns to sort on.

5.Display: results are displayed as tables or charts. More that one section may be placed on single report.

The real system has tons of additional features but basic design as design as described above has worked great for years.

</comment><comment><USER12> I have worked on an app that gave the exact functionality to the users. The users could create queries using the query builder, and also schedule when the queries could be run.

The challenges of course was training the users to use the operators correctly and in a way that made logical sense. It did take a while for the end users to learn to build queries.

On the UI front, most of the fields and tables could be chosen by double- clicking or drag and drop. Certain operators could not be used with fields based on their types. We also provided a AST like tree to help users understand the operators.

On the optimization front, letting users build their own queries could also lead to very costly queries. We had to profile the user created queries regularly and fine tune our query generator to handle such uses. We ended up creating a lot of materialized views in Oracle to handle specific frequent uses of joins in the table.

The users who were using this tool were top level finance and accounting folks, who wanted to produce reports for the CFO has he dreamt up different data points to work on!

</comment><comment><USER13> We've been doing exactly this for our antispam app, we started off with a working custom filters web app (Angularjs) which you can see at [http://126.96.36.199:8080/](http://22.214.171.124:8080/) using text or regular expressions (the regexp has a bug in it). This also shows the query in plain english as you build the query. Original design credits for the test app to [https://github.com/kindohm/knockout-query- builder/](https://github.com/kindohm/knockout-query-builder/)

This is the design we've come up with so far, which incorporates grouping of queries. We've tried to make it readable, but we also display the query in a sentence as you build it. [http://cdn.firetrust.com/images/misc/customfilter.jpg](http://cdn.firetrust.com/images/misc/customfilter.jpg)

</comment><comment><USER14> Take a look at EasyQuery.JS: [http://devtools.korzh.com/easyquery/javascript/](http://devtools.korzh.com/easyquery/javascript/)

Live demo: [http://demo.easyquerybuilder.com/asp-net- mvc/](http://demo.easyquerybuilder.com/asp-net-mvc/)

</comment><comment><USER15> My advice regarding the usability vs power issue is to have multiple stages. You'd have a DSL/query language that you parse, is secure, etc. And then you'd have a UI over the top of that which automatically creates the right queries.

The win here is that you then have an easy interface for 90% of users but the remainder with more bizarre or complex requirements can still get to where they want to go by either writing a query themselves in an "advanced" field of some sort, or you could even do it for them for $$$. Embedded JavaScript is an option here.

I would contrast this with something I would not advise, having a visual interface go straight to a database query behind the scenes.. because then you're basically limited to what you exposed in the UI.

</comment><comment><USER16> You could start with an intermediate stage, with say a query-builder wizard that walks them through the process.

1\. What type of report would you like to create? (define the domain)

2\. What are you looking for? (define the topic)

3\. What limits are there? (define the data boundaries)

4\. How do you want it displayed? (report output format like excel, pdf, etc).

See how a select group of customers like it and get feedback on it ... some might immediately say "yes we want something more powerful" or what you have will be just fine. From there you can decide if you want to pursue exposing the query-builder more openly than a guided wizard, and if you want to charge extra for it.

</comment><comment><USER17> Mac Finder's query builder is, in my opinion, the friendliest you can get. [http://i.stack.imgur.com/YdUSq.png](http://i.stack.imgur.com/YdUSq.png)

</comment><comment><USER18> I've done this before in dojo framework + dgrid. Our system is based off of a dynamic metamodel where users define classes (e.g. Task) and attributes under those classes (e.g. State, owner, project reference) from a set of predefined types (e.g. Enum, user, reference). The defined metamodel ends up as a class hierarchy and is presented as a tree for the query builder. After defining a class, you can then instantiate that class and set attribute values on it.

For building queries, you drag classes and attributes from the metamodel tree into either the filter tree or the report fields section. The filter tree is a tree of AND's and OR's constructed as you drag attributes into it. Selecting an item in the filter tree then brings up a value editor based on the attribute type that allows you to filter your query based on values that make sense for that type. So if you define your tasks state as enum(unassigned, assigned, started, completed) you get a combo box with those values and options to select in, not in, null, etc.

The report fields section is a list of attributes you want to see in the result set. Basically just a select on that attributes value for the query system. Imagine a todo list created instantly by filtering on tasks with owner == current user and state not in completed, but also wanting to see and sort on the priority, and not showing the owner since you know it's you. The report fields area allows setting of sort order, and ascending or descending.

As you drag attributes into the filter or fields sections, a results pane underneath automatically gets new columns added (for fields added of removed) or new results based on a modified filter tree. After saving a query, users can then register for updates of items that match the query. If any data is changed that affects query results, the updated item or removal is pushed via websocket and that item is updated or removed from the results grid. With this, users never have to refresh the query since all the data is live.

Screenshots are slightly edited and a little out of date, but you get the idea.

Query builder: [http://i.imgur.com/AV071JV.png](http://i.imgur.com/AV071JV.png)

Dashboard (powered by query/report building): [http://i.imgur.com/BvBW7L3.png](http://i.imgur.com/BvBW7L3.png)

</comment><comment><USER19> there are a lot of query builders out there, i'm pretty sure you dont need to write one. Doctrine has one :

[http://phpcr.github.io/](http://phpcr.github.io/)

which deals with pure PHP objects.it follows a java standard,you can write SQL like queries with it.

[https://github.com/phpcr/phpcr- docs/blob/master/tutorial/Tut...](https://github.com/phpcr/phpcr- docs/blob/master/tutorial/Tutorial.md)

</comment><comment><USER5> This blog post demonstrates grouping values under the associated filter expression:

[http://kindohm.com/posts/2013/09/25/knockout-query- builder/](http://kindohm.com/posts/2013/09/25/knockout-query-builder/)

There are also number of projects implementing JavaScript query builders that can be found from there, including Red, YUI, jQuery and Ext Grid query builders.

</comment><comment><USER20> I've done this when I was working on the Playstation Network so business users could define storefront categories that contain products based on their own custom logic. We didn't get a lot of requests to change the feature and it was stupid simple. I wouldn't get too fancy unless your users get really excited about it and ask for it to do more.

</comment><comment><USER21> MagentoCommerce (also PHP) has a query builder, maybe you could have a look for inspiration? [http://www.magentocommerce.com/wiki/_media/welcome_to_the_ma...](http://www.magentocommerce.com/wiki/_media/welcome_to_the_magento_user_s_guide/catalog_price_rule_conditions_combination.jpg?cache=cache)

<comment><USER22> Having spent over a year working with Magento's community edition, it seems to me that, for a developer unfamiliar with it, the reaction it's likeliest to inspire would be panicked flight.

</comment></comment><comment><USER23> You might look at how Wufoo's rule system works. Designed for not-very- technical users and it is pretty powerful.

</comment><comment><USER24> Check out HTSQL, should be able to act as your API.

</comment><comment><USER25> I spent ten years of my career building and then altering something like this and would be happy to talk with you about it.

<comment><USER26> I'm actually looking to work on something similar for an intranet tool.

</comment></comment><comment><USER27> Take a look at Pebble Reports. It is exactly what you are describing. Although it is a Windows app, not web.

</comment><comment> bra-ket SQL is pretty good</comment>


DARPA helicopter can feel for the ground below to ensure a safe landing - <AUTHOR> http://www.alphr.com/technology/1001524/darpa-is-building-the-helicopter-of-the-future <comment><USER2> Wow. In hindsight, this idea seems so obvious and incredibly useful. I can't believe we haven't seen anything like this before.

I would imagine that the ability to land on a hillside would be incredibly useful for military operations and rescue.

<comment><USER3> > Wow. In hindsight, this idea seems so obvious and incredibly useful. I can't > believe we haven't seen anything like this before.

Because the track record for "cool ways to land and take off" simply aren't that great. Eg, see the track record of the Osprey.

[https://en.wikipedia.org/wiki/Bell_Boeing_V-22_Osprey#Contro...](https://en.wikipedia.org/wiki/Bell_Boeing_V-22_Osprey#Controversy)

Another simple point is that current rigid landing skids provide a simple surface to land with. With "legs" you know have the problem of "landing gear" which can malfunction, rigid landing skids can hardly malfunction .... oh crap 1 leg is stuck in the "out" position -- how should I land now sir? :)

> I would imagine that the ability to land on a hillside would be incredibly > useful for military operations and rescue.

Perhaps, but rarely are hill sides flat, nor void of tall obstacles such as trees. Typically in hot LZ it's in your best interest to not land. By which I mean being airborne is 1 problem, having landed -- you now have 2 problems (your static and now need to take-off). This is also true typically in rescue attempts.

<comment><USER4> My understanding is that the Osprey's early issues were mechanical and training issues and not issues with the concept (propshaft issues, pilots not trained properly, poorly engineering wiring harnesses, etc) . Those things were fixed and now the Osprey is used quite a bit. I even saw one fly over my home the last time Obama visited.

Most of the current and next gen fighters have some level of V/STOL built-in as well. I think we're pretty far from what you're describing, which was maybe 15-20 years ago. Lets remember that the design team for the Osprey started in the early 80s and the original prototypes are from the 70s. The Bell XV-15 prototype first flew in '77 and then the larger version as part of this proposal flew in '83\. Aircraft engineer has gone a long way since. We're able to do much more today.

</comment></comment></comment><comment><USER5> This looks like a very promising research avenue, and I don't mean to deprecate it in any way. But this part of the article seemed a bit too pollyannish: "Currently the system hasn't been tested on a full-scale helicopter, used instead on a rather large remote- control hobby vehicle. But as the technology fundamentally works in the same way, there's no reason to believe this won't make its way onto full-sized helicopters in the future."

It's not self evident to me that, at the scales necessary for use in human- piloted helicopters, the robotic legs would be light enough to avoid causing thrust-to-weight ratio problems. But as always, I'm rooting for DARPA to make it work!

</comment><comment><USER6> Wouldn't it be problematic to takeoff from an uneven surface? It seems like it would generate more lift from the side with higher ground and end up taking off diagonally, perhaps crashing in the process. Is there a way to compensate for that?

<comment><USER7> Yes, cyclic control alters the lift distribution within the rotor disk: [https://en.wikipedia.org/wiki/Helicopter_flight_controls#Cyc...](https://en.wikipedia.org/wiki/Helicopter_flight_controls#Cyclic). The pilot would apply force to the cyclic to negate any non-uniform ground effect force.

</comment></comment><comment><USER8> This, now obvious with hindsight, is the perfect application for other DARPA developed technologies such as the "robotic feeling hand" recently on HN. Limiting applications to anthropomorphized form factors is, of course, extremely limiting.

[http://www.theguardian.com/technology/2015/sep/14/robotic- ha...](http://www.theguardian.com/technology/2015/sep/14/robotic-hand-wired- directly-into-brain-feel-again-darpa)

</comment><comment><USER9> I've seen videos of large helicopters carrying people hovering with their open tail end pressed against a hill and the front a few feet in the air, keeping the whole thing level while dropping people off on the hill, which this could have done better (less chance for error, less fuel?).

I'm surprised no other helicopters have had something like 4 linear actuators that a pilot can control to get this same effect with a bit less of the automation.

</comment><comment><USER10> How do helicopters handle in high winds? I'd assume most rescue situations, such as rough seas and high-altitude, mountainous areas would also be very windy. I'm curious how the helicopter would hand landing on a 20 degree incline if the wind were to suddenly blow it a different direction before touchdown.

</comment><comment><USER11> In hindsight, it would be hilarious (and perhaps even useful?) if the helicopter started running on its feet after landing!

Joking aside, given that the legs operate individually, I wonder what happens in case of a failure in one of them, or when one of them gets damaged during landing.

</comment><comment><USER12> In addition to the use in a regular landing, I see this being a huge benefit in a hard landing. The helicopters I have been in all had seats that collapse to absorb energy in a hard landing, and these legs could do the same thing with a relatively long travel.

<comment><USER13> Rather than taking the brunt of the landing with expensive/delicate leg armatures, maybe just swing them back and rely on airbags, e.g.: [https://www.youtube.com/watch?v=3ewGOXK7tKY&t=0m16s](https://www.youtube.com/watch?v=3ewGOXK7tKY&t=0m16s)

</comment></comment><comment><USER14> I'm immediately reminded of the landing gear on the ornithopters from Dune. Hopefully hunter-seekers are a little further off...

</comment><comment><USER15> SpaceX!</comment>


Ask HN: Is running on AWS a business liability for your SaaS? - <AUTHOR> Walmart and Macy's reportedly tell their suppliers to move off AWS. Is this something you encountered as a SaaS business? What did you do? <comment><USER2> At a certain size, using just one provider of _any_ service is a liability and similarly internal services should also have regional fault tolerance. But none of that matters until you have that size a business to protect, or if your primary value is such availability (eg. archiving).

</comment><comment><USER3> I've heard of it a couple times now -- use GCP or something else.</comment>


Show HN: Pub/Sub with PostgreSQL under 40 lines of Python code - <AUTHOR> https://gist.github.com/kissgyorgy/beccba1291de962702ea9c237a900c79 <comment><USER2> It can be used as a more durable message queue too by following the recommendations in [https://www.youtube.com/watch?v=B81nQLg4RuU](https://www.youtube.com/watch?v=B81nQLg4RuU)

</comment><comment><USER3> Nice. Reminds me of a time I was learning Rust. Did a small test to get Node.JS and Rust to "communicate" via Postgres[0]

I am curious if this is an approach folks actually use in production, though.

[0]: [https://gist.github.com/zikani03/e4fa4f150940dbdb03a6761fd0c...](https://gist.github.com/zikani03/e4fa4f150940dbdb03a6761fd0c41995)

</comment><comment><USER4> Interesting! I wonder if you could use this in a Django project with Channels, and stream database changes over websocket to the client. I think I've found a project for this weekend!

I must admit my DB knowledge is lacking. What is the purpose of setting the isolation level to autocommit?

<comment><AUTHOR>
        > I wonder if you could use this in a Django project with Channels, and stream database changes over websocket to the client.I wonder if you could use this in a Django project with Channels, and stream database changes over websocket to the client.

That's exactly what I'm doing with this! :) But you don't even need channels for that! The point is to simplify the stack.

        > What is the purpose of setting the isolation level to autocommit?

Notifications are only sent after a transaction has been committed, see: [https://www.postgresql.org/docs/12/sql- listen.html](https://www.postgresql.org/docs/12/sql-listen.html)

Here is an example in the psycopg2 documentation: [https://www.psycopg.org/docs/advanced.html#asynchronous- noti...](https://www.psycopg.org/docs/advanced.html#asynchronous- notifications)</comment></comment>


Human Rights Record of United States in 2011 - <AUTHOR> http://www.chinadaily.com.cn/cndy/2012-05/26/content_15392452.htm

<comment><USER2> Even though this is hardly HN material, there's some kind of hackerish mindset about reacting to accusations by doing an in-depth "pot, kettle, black" report about the accuser, so I upvoted this.

For those of us who keep track of US news, it's pretty obvious that the human rights situation there is "variable", to say the least. You rarely hear about people being wrongly killed by the police in Europe, whereas in the US it appears to be relatively frequent. As for freedom... let's not go there. The easily manipulated US government is probably the single most important political force for evil in the fight to protect our rights online.

Anyway, so, totally off-topic, but a smart approach from China...

<comment><USER3> With all due respect, this is a tall order of false equivalence. The US's track record on human rights, income inequality, etc., is far from spotless. It's borderline infuriating at times. But even to place it in the same ballpark as the PRC's is silly.

Consider that, in the US, people were able to protest and stop SOPA and PIPA from coming to pass. In China, the government controls the entire internet. It's actually debatable that we could be having a similar conversation about the government, on a site like this one, were we in China right now. The U.S. detains certain people without warrant or trial in its misguided "war on terror." But the PRC can detain any of its citizens, at any time, for any reason, and often does.

It's interesting to consider the hypocrisies and inconsistencies of our own government and society. I'm all for it. But we shouldn't lose sight of reality.

<comment><USER4> With all due respect, you are blinded by the kool aid my dear.

In the US the government controls the entire internet, as well as every information every company holds, including facebook, twitter, google and apple - as well as Intel and Microsoft.

The PRC and the US both have "legitimate" ways to detain any citizen or non- citizen at any time, for any reason, and often do.

I would like to insist that there is NO difference on that specific point since the patriot act.

SOPA and PIPA aren't govt related, they're big content's attempt at having it's own control channel over the internet.

By the way, you forget the positive aspects of China, like those emphasized in the article: In a communist country, there's real security.

My grandparents were in USSR in the 70's, and many like them said they had absolutely NO FEAR AT ALL letting their kids play outside.

That's right dream on. You'll never get that in the US, unless you have your own security.

<comment><USER5> Really simple way to answer your false declarations:

Then how come Hacker News exists and I can say what I want here?

Try that in China some time =)

<comment><USER4> You can talk and it makes no difference, I doubt that is as relevant as knowing your children are safe.

<comment><USER5> I grew up in an area in Maryland with nearly zero crime (and it was a modestly poor area). I went to one of the best public schools in Maryland, and again, it was in what is considered poor Appalachia. So I'm not sure what you're talking about. The only crime where I live now, is driving under the influence. There's 1 murder per year per 100,000 people in the entire county.

You obviously have extremely little first hand experience with America. Look up the crime stats for Boise, Idaho some time on city data. America is an extraordinarily diverse nation, the most diverse nation in world history to be exact, and it has every sort of living style and environment you could want to choose from.

Don't like the crime in Chicago, move to a safer city at your leisure. Seattle is beautiful, and so is Austin TX. Don't like Florida? Move to Virginia. Don't like Vermont, move to NYCity. Don't like NYC? Move to San Francisco. Don't like urban, America is massive and extremely low population density, so move rural. And on and on.

<comment><USER5> Drucken & Morg:

You'll note that in no way have I said China doesn't have exactly the same, safe rural areas, or even safe urban areas.

What I said is: America does have those things. My response was to point out that the notion of America being nothing but a giant crime wave or an extraordinarily dangerous place is pure myth. The reality is: America has just about everything, pick what kind of life you want accordingly, and pursue it.

And Morg: the points about Europe would be interesting, except most of Europe allows exceptionally little immigration. So how can outsiders even consider benefiting even if it were the safest place on earth crime wise?

Look up the immigration rates for: Denmark, Finland, Sweden, Germany, Switzerland, Belgium, Norway, etc. I'm sure you already know this however. Then look up America's extreme immigration over the past 100 years. How do you think 20% of our population got to be hispanic? We have a long history of allowing a relatively high amount of immigration (particularly compared to the rest of the world). It's how we become the world's melting pot.

It's not easy to get into America, but it's radically easier than becoming a citizen of most European nations just based on the extremely limited numbers they allow in.

<comment><USER4> That would be because we don't just allow them in> when they get in they get social protection, not just the right to pay taxes.

Racism imho is one of the minor issues though, I'm far more concerned by the police state aspects of the US than the cultural details (such as everyone is fat woohooo).

<comment><USER5> That's a snarky comment, but you're dodging: what I'm talking about is legal immigration. America has a much higher rate of legal immigration than pretty much all of Europe. Canada is one of the few first world nations with a higher immigration rate. When you legally immigrate to America, you're treated as a citizen. We've had a lot of illegal immigration over the last 20 years as well, but the odds strongly favor that those illegal immigrants will be naturalized into citizenship over time, it's very likely the Democrats will achieve that outcome.

And if you want to talk about shadow immigration, or people that fall through the cracks, Europe has plenty of that. You must know that. Take a look at the African immigration in France and Spain over the last 20 years, and then look at how many are under the radar. Europe also gets a massive amount of abuse from immigrants that leech off the social systems and never work and contribute properly, which is helping to make the looming EU bankruptcy even worse, which is amping up the rapidly rising xenophobia currently going on Europe, such that the Nazi Party is rising in Greece, and the extreme right is gaining in many nations.

The whoohoo on your fat comment certainly betrays to the flippant nature of it. 26% to 27% of people in the UK are obese, in America it's about 33%. Australia and New Zealand is around 24% to 25%. Chile is 25%. Ireland is 23% to 24%. Canada is 25% obese as well. Mexico is about the same as America on obesity. Clearly the problem is greatest in America, but it's hardly alone in the obesity problem.

If you've ever read the book, The China Study, you obviously understand why these countries have such obesity and higher cancer rates that, for example, China has traditionally avoided. However, now China is gradually switching to a killer western diet, particularly among the affluent, and they're seeing skyrocketing obesity and heart disease rates.

You're concerned about the police state aspects of America? So am I, I live here, and it's very disturbing. China is a police state almost by definition, but that doesn't seem to concern you at all. And the police state is rising all over the place, take a look at some of the police state actions and laws being passed in Britain where you practically can't step out your front door without showing up on a cctv.

<comment><USER4> It IS going to burn when you open your eyes.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> I suspect we can generate pros and cons for anywhere you might choose to live ... and within the U.S., there's a huge variation in things like violent crime and gun violence from city to city (or in the rural areas).

I'm in the U.S. and I can tell you that I don't like the direction our government is heading. And after typing that, I'm not expecting the police to show up (though I am expecting the comment to appear on HN).

I'm happy to hear that the Chinese are so happy (and safe, etc) living in China ... everyone should get a chance at happiness.

</comment><comment><USER7> Just to be clear, this is a report published by the government of China.

I don't have the time to read the whole article, but here's a few thoughts:

Regarding _On life, property and personal security_ , this section is about violent crime in the U.S. Indubitably, violent crime is particularly bad in some parts of the U.S., but is this part of the 'human rights record' of the federal government? In essence, the Chinese government here is implying that the fact that the U.S. government doesn't outlaw gun ownership results in violent crime.

Throughout most of the text, it just strikes me that the notion of what constitutes "human rights" is unclear. Some people believe that human rights are about the recognition of individual liberty and freedom from government intrusion. Others believe that human rights are about achieving equality and freedom from want. The Chinese government is certainly sympathetic to the latter definition, at least in this report. While this is a point of view favoured by many, in the U.S. the former view of human rights is still strong.

Finally, some of the points made by the Chinese are simply symbolic. For example, they criticise the U.S. for not ratifying the "Convention on the Elimination of all Forms of Discrimination against Women (CEDAW)". That is true, but the U.S.'s laws and enforcement are considered better than China with respect to CEDAW.

</comment><comment><USER8> I sort of like this finger pointing and "Yeah? Well you're no better..." approach to international diplomacy. You never know, it might end up in a round of ethical one-upmanship that goes beyond mere words. Not that I'm holding my breath.

</comment><comment><USER5> Right now the most important difference is that in the US you still have democratically elected representation and a substantial freedom of speech component. So long as you have that, you have the potential to change the system peacefully through argumentation / debate / voting etc.

Is Obama a terrible President? A great President? Debate it endlessly, but he was elected by a massive wave of popular support in a democratic fashion, beating an opponent (Clinton) that vastly outmatched him in theory.

Doesn't mean the US isn't still going to continue driving right off the cliff, but with those pieces in place, it'll be nobody's fault but our own if we don't take the opportunity and remaining critical freedoms to reverse course and fix the system peacefully.

<comment><USER4> Man is it going to burn when you open your eyes ...

<comment><USER5> Nope. I'm completely right in what I said, and I was very careful to be specific about it.

My eyes are in no way closed, and what you said is not a valid retort, it's proof that you have nothing to say.

<comment><USER4> "you have the potential to change the system peacefully through argumentation / debate / voting etc."

Sure, by voting for one of two parties that have existed for centuries and been sponsored by the same 1% for as long.

You have the potential to watch your fellow americans brainwashed a bit more everyday into accepting their function as modern slaves with less and less benefits and more and more stress.

<comment><USER5> The American people can wipe out the parties at their leisure, they have chosen not to. Throughout American history, our parties have changed numerous times, some disappear, some rise, some evolve, and that isn't going to stop.

Americans get to choose. If they choose to be brainwashed as you call it, then that's their volition. If America collapses, it will be the responsibility of the people that they didn't use their voice while they had it.

The Chinese do not get to choose anything. Every time they try - and they have tried - they get violently put down by their own government. In China, nothing like the Occupy movement would ever be tolerated at all, those people would not be allowed to squat on park property and protest, they would not be allowed to march, they would not be allowed to do even a fraction of what they got away with here in the states, and it sure as hell wouldn't all be filmed and put on YouTube for everybody to see.

The various movements of the 1960s and 1970s would have been completely impossible in China. Try holding a rally for free unionization rights in China some time, see how that goes.

Try openly and expressively declaring your religious beliefs. See how much they love that.

<comment><USER4> Yet you wouldn't dare to visit some parts of the ghettos your biggest cities are famous for.

The various movements of the 60s and 70s are completely impossible in the western world now, the brainwashing is far too advanced for that.

Unionization doesn't make sense in communism. It amounts to revolution. Try a revolution in the US and call me back when you've completed your twentieth mandatory cavity search for security purposes.

I don't think you saw much of Gitmo on Youtube, even less today - luckily with the patriot act, anyone who pisses off the govt will get his own personal gitmo experience.

At least China doesn't pretend they respect the human rights - I think that's what the article was about, and fundamentally right.

<comment><USER9> It seems interesting to me how you (as in you both) continue to argue different points in increasing force. That's not how a dialogue works.

Argue based on issues. Clearly address each issue your 'opponent' raised. Substantiate it with facts. Link to reliable sources if possible. Point out weak points in your own argument and why you think your general point still stands. Don't commit logical fallacies (see <http://yourlogicalfallacyis.com/> ).

Both of you raise valid points. Engaging in a discussion would probably make us all better off in the end. Currently I can only read "your country is stupider than mine!" _.

_ Interpret the possessive 'your' as you will.

<comment><USER5> The problem with that is: I haven't said China is a shitty place or a wasteland. I happen to like China, and I happen to love America and live there. It's absolutely in no way about saying China is worse or better, it's about pointing out the ignorance in claiming China is a vastly superior place to live.

I'm willing to be objective about America and China's faults. The problem with the person I'm arguing with, is that that person is not willing to be objective about China's faults, and is more than willing to be biased about America's faults.

In my observation, most first world countries have the same societal problems that America does (or some modest variation), the big difference is whether they're publicized heavily or not. For example, America gets accused of being a highly racist nation: well, how racist is Japan? How about African racism? How about antisemitism in France? How about the Muslim ghettos in France? How about the extreme xenophobia in many nice European nations? Nobody likes to talk about that, and Americans are mostly ignorant of it, but it's all over the BBC's news reports regularly.</comment></comment></comment></comment></comment></comment></comment></comment>


Booting a 486 from floppy with the most up-to-date stable Linux kernel - <AUTHOR> https://www.insentricity.com/a.cl/283 <comment><USER3> Does anyone else miss having this level of motivation? And that's not an isolation effect on me, I gave up on trying fun things like this for a long long time now.

<comment><USER4> Dealing with garbage tech is what brings me down. Completely broken, unusable garbage software is everywhere, backed by egos, emotions, power plays, and entrenchment. That's the part I don't want to deal with. The only thing worse than having to deal with a bunch of idiots is having to deal with a bunch of things made by them. It pisses me off how broken everything is and how few people seem to take issue with it.

Everything is like this. Sturgeon's law is everywhere.

Once I can somehow push those things out of my life, I'm good.

<comment><USER5> This is why I save my vacation days up and take a big chunk once or twice a year, instead of frittering away fridays and mondays to have little "long weekends" throughout the year, as I did in the past.

I discovered that, after 4 or 5 days of staycation, I've handled most of the crap that was hanging over my head. I've caught up on laundry, done whatever administrative stuff I had been procrastinating about, and I can finally start to relax. Which is to say, pursue leisure activities without feeling like there's something else I should be doing.

Being able to unplug from the day-job allows me to disconnect from a lot of that garbage tech and its frustration factors, and dedicate long periods of concentration to in-depth tasks that might not yield immediate payback. When I only have a few hours in the evening to put towards a task, I tend towards things with short-term payback, so I don't feel like I wasted the evening. That keeps me from really hacking on stuff in my spare time.

<comment> blaser-waffle I'm super into the 3-day weekends, but I also agree with the extra long vacation-staycation thing, where you can just "be" for a while. Like 4 days of nothin & puttering around, followed by 2 days of cleaning & finally attending to {X,Y,Z}.

</comment></comment></comment></comment><comment><USER6> The virtue of reusing an old system is somewhat eroded by the fact that its noise and power consumption exceed that of a more powerful Pi 3 B+, which can be had for $50-60 with case and power supply (circa 2020).

I see little advantage in keeping the old hardware around anymore. I think I still have some old ISA cables downstairs in a box - high time to acknowledge to myself that I will NEVER use those again.

<comment><USER7> The Pi is also notoriously Broadcom-proprietary[1], whereas an x86 PC has been a de-facto standard for decades; everything is well-known or has been reverse- engineered already, especially with a 486-era system.

It's somewhat similar to the reason people (like me) restore and drive old cars, also despite the "noise and power consumption" (and some happen to like the former ;-) --- they're relatively simple and well-understood.

Likewise, there is also a very active retrocomputing community, although a lot of it goes back much older than 486 or even PC --- the C64, ZX, and the like continue to have plenty of _new_ software written for them.

[1] and if you ask for a datasheet or any more details about it on their "excellent community" (to quote some), you basically get told politely to f'off: [https://www.raspberrypi.org/forums/viewtopic.php?t=163420](https://www.raspberrypi.org/forums/viewtopic.php?t=163420)

<comment><USER8> Hmm. This [https://s-matyukevich.github.io/raspberry-pi- os/](https://s-matyukevich.github.io/raspberry-pi-os/) made it seem like it's about as open as an x86 PC. The only thing I see that's proprietary is the very initial bootloader that apparently runs on the GPU. But then x86 motherboards come with proprietary BIOSes as well.

<comment><USER9> We are talking about hardware specifications.

</comment></comment></comment></comment><comment><USER10> If you want to boot Debian on there you can actually build a complete Debian system from the package archives using either Debootstrap or Multistrap. Debootstrap is useful for building a Debian system inside of another Debian system, while Multistrap is useful for building a root filesystem to copy to another computer. If you can boot an initramfs then you can boot the root filesystem using pivot-root.

The Linux kernel can execute a shell script as PID1 from the initramfs, meaning that you can just execute the minimal commands needed to mount the main root filesystem and then use pivot-root to change from the linuxrc script in your initramfs to the main init process supplied in your main root filesystem.

You might have to get really creative with compression and static linking as the linker/loader clocks in at a few-hundred kilobytes, plus the gcc support library and the glibc for another few megabytes. Alternatively you could find a way to make the system calls directly and bypass the libc. Busybox will also fit on that disk and it ships with a mount command too, so you could get up and running with that pretty easily.

<comment><USER11> Recent versions of Debian require a 686.

[https://www.debian.org/releases/stable/i386/ch02s01.en.html#...](https://www.debian.org/releases/stable/i386/ch02s01.en.html#idm272)

<comment><USER12> also, this video features a 486 cpu because linux dropped 386 support a while ago.

[https://www.zdnet.com/article/good-bye-386-linux-to-drop- sup...](https://www.zdnet.com/article/good-bye-386-linux-to-drop-support- for-i386-chips-with-next-major-release/)

<comment><USER13> Anyone know what in particular the 486SX had that the 386 didn't to make keeping only the former alive practical? Unfortunately the kernel mailing list link in the zdnet article appears to be rotted away.

<comment><USER14> I believe 386 did not have certain "atomic" instructions like CMPXCHG or XADD. So in order to support 386, the kernel had to have special versions of all locking primitives just for 386.

</comment></comment></comment></comment></comment><comment><USER15> The author twice mentioned looking for a suitably tiny initrd / initramfs.

FYI: You don't need an initrd / initramfs. Just link the drivers required for mounting the rootfs from IDE statically into the kernel image and you're done.

Initrd used to be a kludge to work around bootloaders not supporting multiboot. And then we normalized that deviation in the form of initramfs.

</comment><comment><USER16> back in 2002, I built a floppy that had a linux kernel (2.4.18-rc4) with multiple ethernet drivers (back then tulip was taking over the 100mbps ethernet world, so pretty sure that was included, as well as the 3c509 driver), X (vesa driver), busybox (or proto/fork busybox), rdesktop to build a a thin client on a floppy. I even had a version that was able to squeeze in vncviewer by using the over 1.44MB modes of writing floppy disks.

the project's point was to showcase stripping shared libraries of unused symbols to get the per binary density of statically linking across one's entire set of binaries. (useful for saving space on embedded systems) i wouldnt claim that it was unique (I believe Debian did something similar), but was a fun project.

</comment><comment><USER17> Modern days Linux kernel requires a bootloader, as seen in the video. In the old days, you could dd the kernel to the floppy disk and use rdev to point to the root partition to start after loading the kernel.

<comment><USER18> A couple of days ago, I went looking for when this code was removed. It was removed in 2003: [https://lwn.net/Articles/21512/](https://lwn.net/Articles/21512/)

<comment><USER19> Nice link!

The code is so tiny they could have kept it... But, oh well, progress.

I like the message:

      -  .ascii "Loading"
      +bugger_off_msg:
      + .ascii "Direct booting from floppy is no longer supported.\r\n"
      + .ascii "Please use a boot loader program instead.\r\n"
      + .ascii "\n"
      + .ascii "Remove disk and press any key to reboot . . .\r\n"
      + .byte 0

<comment><USER18> > The code is so tiny they could have kept it...

Not for long; the EFI headers later used the same space, which even required severely shortening that "no longer supported" message (the first two lines of the message were replaced by just "Use a boot loader.\r\n")

</comment></comment></comment></comment><comment><USER20> There was a Nethack floopy for 3.4.3 (still played a lot by tons of people) which was booted up from a tiny Linux floppy. Amazing. It may work under a 486. Search for "nehabodi".

[http://nehabodi.sourceforge.net/](http://nehabodi.sourceforge.net/)

</comment><comment><USER21> Wish I had this flexibility with other kinds of hardware, like a phone. Having to throw out a much newer and completely functional hardware 2 years after being released, because there is almost nothing you can do with it is not good.

(And for those who want to instruct me about PC being a defined architecture, where there no such thing with smartphones, etc, etc, etc, I know all this, but the point is still valid.)

<comment><USER22> Have you looked at postmarketos? [https://postmarketos.org](https://postmarketos.org)

Lots of fun to be had, if only to play with a battery-backed raspberrypi-like headless server in the worst, less-supported cases.

</comment></comment><comment><USER12> back when i was 13, didn't have a computer i could mess with and internet at home, i remember unsuccessfully trying to boot coyote linux on an internet café computer from a floppy disk.

"floppydistro"s where a thing back in the day. the challenge was to fit a whole linux system along with some utilities in one or two floppy disks.

usually the first floppy disk was for core os + base utilities and the second floppy disk was for additional software.

oh the memories.

<comment><USER23> QNX used to distribute a floppy containing the entire OS and a web browser, for x86. [http://toastytech.com/guis/qnxdemo.html](http://toastytech.com/guis/qnxdemo.html)

</comment></comment><comment><USER24> Posts like this showcase how malleable Linux really is without getting overly complicated to follow.

Really a nice quick read.

<comment><USER25> But not nearly as malleable as it could be. Hopefully, true 80386 support can be reintroduced to the kernel in a way that keeps it properly self-contained and easy to support. There are also a few kernel-tinification approaches floating around that could make the kernel smaller and easy to fit in a floppy-using scenario.

<comment><USER18> > Hopefully, true 80386 support can be reintroduced to the kernel in a way > that keeps it properly self-contained and easy to support.

The merge which removed the 80386 support ([https://git.kernel.org/torvalds/c/743aa456c1834f76982af44e8b...](https://git.kernel.org/torvalds/c/743aa456c1834f76982af44e8b71d1a0b2a82e21)) stated as the reason "[...] complexity has plagued us with extra work whenever we wanted to change SMP primitives, for years."

That is, it was not easy to keep it self-contained. Every new SMP primitive has to be implemented and maintained for all the architectures supported by the kernel, and the original 80386 ISA was too limited. Not to mention that the 80386 didn't honor the write-protect bit in the page tables while in the kernel ([https://git.kernel.org/torvalds/c/a5c2a893dbd4956a72fb261e87...](https://git.kernel.org/torvalds/c/a5c2a893dbd4956a72fb261e8790d19f67b52c99)), with consequences all over the kernel ([https://git.kernel.org/torvalds/c/96d4f267e40f9509e8a66e2b39...](https://git.kernel.org/torvalds/c/96d4f267e40f9509e8a66e2b39e8b95655617693)).

<comment><USER25> Were 80386 SMP systems really all that common to begin with? Perhaps 80386 support should just focus on the uniprocessor case, at least as a start.

</comment></comment></comment></comment><comment><USER26> went to youtube to find a better video of the sound of the floppy drive, as the one in the posted video is very quiet. instead, came across this: [https://www.youtube.com/watch?v=c52JQHVVqFM](https://www.youtube.com/watch?v=c52JQHVVqFM)

<comment><USER27> Have you ever heard of the floppotron? [https://www.youtube.com/c/PawełZadrożniak/featured](https://www.youtube.com/c/PawełZadrożniak/featured)

</comment></comment><comment><USER23> I wonder how well it works. If you take an x86_64 system and make a memory control group with only 32MB of memory (and kmem tracking is enabled, which is true by default) the container will OOM right away. I've been operating under the belief that Linux now requires 64MB at a minimum, but perhaps a 32-bit uniprocessor build can get by with less.

<comment><USER12> > the container will OOM right away

that doesn't really makes sense in linux-parlance. you should try and see which is the process that is actually triggering the OOM.

if you're able to do that then you can try and swap that with another binary.

you could try and build an hello world that does while(1) sleep(30); build that with static linking and boot the container with that -- it will probably work.

also, i should look for that page, but i remember reading a page about trimming away anything possible from an hello world binary and ending up with something as small as like ~60 bytes.

<comment><USER12> here it is!

[https://www.muppetlabs.com/~breadbox/software/tiny/teensy.ht...](https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html)

i was off by a bit. the binary is 45 bytes and prints the number "42" (plus a newline).

<comment><USER28> It does not print anything. It returns with exit code 42.

</comment></comment></comment></comment><comment><USER29> I had no idea the Linux kernel still supported the 486. I thought you had to have a Pentium class or better.

<comment><USER30> Kernel support for 386 was dropped recently, but 486 and above are fine. I think many distros have probably dropped 486 support, though; someone upthread mentions that Debian is 686 and above only now.

<comment><USER29> That's probably where I got the idea. Debian is usually one of the last distros to make a move like that too since they're conservative.

</comment></comment></comment><comment><USER31> Oh the floppy drive sound. I kind of miss it. Kind of, what I don't miss (besides capacity) is how those floppies were fragile, and this yyyy - <USER2> ---- yyyy - yyyy sound when it was trying to re-read the sector, which was most of the times sound of defeat.

</comment><comment><USER22> > Normally I would bypass a floppy install entirely and just boot an older > computer via PXE and then install over the network. I thought I could put > iPXE on a floppy and stick in an ISA NIC but iPXE just hangs without any > error messages right after it's loaded from floppy.

How about the plop boot manager? It has helped me a lot back in the days. Or any other pxe implementation.

Or veven installing everything on that drive from another computer, which is likely the easiest way.

I recently came across IDE/SD card adapters. Perfect for that kind of project, as it is much easier, cheaper and energy efficient to find, swap and use SD cards nowadays. My use-case is an Xbox console for nxdk dev work, but I haven't tried yet.

</comment><comment><USER32> Now that it boots, time to bring up a Kubernetes and deploy a Spark cluster

</comment><comment><USER33> A long time ago I remember installing gentoo on a 486 33Mhz (Tandy I think). I initially compiled everything on a much faster Athlon XP. I do remember compiling an updated kernel on the 486 and that it took 3 days, but it did finish :D

I remember the hard drive was too big to boot from directly, there was some bootloader that could run from the floppy disk then finish booting from the hard drive.

It also had this horrible sound card/cd-rom combo controller that I never was able to make work in linux

<comment><USER34> Haha I've done that also.. Except my 486 was a GEODE like a low-power-sbc of it's day and I compiled Gentoo on that !! Tooks days !!! :) Good Times.

</comment></comment><comment><USER35> Almost 20 years ago i have internet, but didn't buy router. And found floppyfw: [https://www.zelow.no/floppyfw/](https://www.zelow.no/floppyfw/)

Absolutely brilliant distribution that works perfect. And fit on one floppy - kernel and userspace.

<comment><USER36> See also: tomsrtbt ([http://www.toms.net/rb/](http://www.toms.net/rb/)) and trinux ([http://trinux.sourceforge.net/legacy/](http://trinux.sourceforge.net/legacy/)) , among others.

</comment></comment><comment><USER37> most up to date kernel, but Aboriginal Linux was end-of-lined in 2017

[http://landley.net/aboriginal/](http://landley.net/aboriginal/)

</comment><comment><USER38> Clicked on the video to see AMERICAN MEGATRENDS INC. and wasn't disappointed, ya freakin patriot!

</comment><comment><USER39> Will sing-a-long contest return this year? That's a neat idea.

</comment><comment><USER40> What's a floppy? /s</comment>


How Do IPhone Users Find New Apps? - <AUTHOR> http://www.readwriteweb.com/archives/how_do_iphone_users_find_new_apps.php# <comment><USER2> Just throwing in one of my favorite places to hear/read about new apps: <http://www.creativeapplications.net/>

<comment><USER3> Thank you for sharing that site. Inspiring and eye opening

</comment></comment><comment><USER4> The best way for getting more visibility for apps on the App Store would be to build a social networking aspect into it. The one thing that is sorely lacking in the App Store is the viral nature of facebook. When one of my friens uses an application on facebook, I get a notification saying so. That is how I find most facebook apps I use. Apple could do a similar thing with the App Store, whereby every iPhone user has a profile page or something and a newsfeed. The newsfeed is populated by information from the contacts on the user's iPhone. This way apps would get a lot more visibility.

</comment><comment><USER5> They were questioning only 190 participants, which doesn't seem very representative.

<comment><USER6> 190 participants, properly selected, can actually give extremely trustworthy results to a fair confidence interval. Sample size isn't everything...

<comment><USER7> Would you consider 190 participants that participated by clicking on an ad to be properly selected?

<comment><USER8> Depends how well the ad was targeted and how well quotas were set and screened for. There's a few good ways to attract survey respondents through ads, and a whole lot of bad ways.

</comment></comment></comment></comment><comment><USER9> If you're looking for a specific kind of app I use yappler.com, lot easier than iTunes</comment>


As home-schooling moves to mainstream, stigma fades  - <AUTHOR> http://today.msnbc.msn.com/id/39342787/ns/today-parenting/

<comment><USER2> The article says correctly that the number of homeschoolers is somewhat difficult to estimate. But Brian Ray and his colleagues have a known propensity to produce overestimates of the number of homeschoolers, so I doubt the figures cited to him in the article. My family of four children (one now an adult and living on campus at university) have always been homeschooled, but I know a lot of families that start homeschooling at about third grade age, and cease formally homeschooling by high school age. That age pattern is backed up by the statistics from the few states that gather homeschooling statistics stratified by age. See

<http://learninfreedom.org/homeschool_growth.html>

for some old numbers ("growing rapidly" isn't a correct statement anymore) and discussion of the data reliability issues.

The submitted article is correct that stigma attached to homeschooling has diminished considerably over the years.

</comment><comment><USER3> Anyone have a home-schooling related startup? I have always thought this was a decent-sized market that probably has some seriously under-served customers.</comment>


Unmanned F-16s Declared IOC - <AUTHOR> http://www.c4isrnet.com/articles/unmanned-f-16s-declared-ioc <comment><USER2> "Initial operating capability or Initial operational capability (IOC) is the state achieved when a capability is available in its minimum usefully deployable form. The term is often used in government or military procurement."

Military MVP?

[1] [https://en.m.wikipedia.org/wiki/Initial_operating_capability](https://en.m.wikipedia.org/wiki/Initial_operating_capability)

<comment><USER3> IOC = Initial Operating Capability FOC = Full Operating Capability

Most contracts have tranches of payment released with each phase: concept, IOC, FOC. IOC has also come to mean, "This works, but we aren't sure enough we got all the bugs." So... I suppose it's more like a military Beta.

<comment><USER4> just went through the ACQ training this week, IOC means the plane has passed operational testing (IOT&E). Meaning there should be very few, if any, bugs left. The Full Rate Production (FRP) decision milestone was already passed and the contract should already be awarded for production - within the lifecycle of the product we are now in the Operations and Support phase, meaning fielding.

FOC just means all unit lots are fielded.

<comment><USER3> The transition from IOC to FOC is outlined as part of the DoD acquisition contract, but under statute it means, "We've got at least one unit with associated services being run by the customer at at least one location."

That's not a very high bar.

Today, the deployment of a weapons system involves a lot of integration with the existing information technology stack, for "network centric warfare" or whatever the new buzzword is for "using high speed data links for over-the- horizon kills."

In addition to the systems integration, you're usually debugging the human processes such as training and maintenance throughout.

That's where the bugs shake out in the transition from IOC->FOC.

</comment></comment></comment></comment><comment><USER5> This is nothing new. The USAF has had unmanned F-4 phantoms for decades that are used for target practice and live fire weapons testing. The F-4 fleet is being replaced with surplus F-16s.

<comment><USER6> You are right for sure. But they have never had a 4th gen (fly by wire / designed to be aerodynamically unstable;) fighter with this capability.

In my (potentially uninformed) opinion, It is definitely a big milestone because it opens the door to 5th gen fighters becoming UCAVs - almost like making the GPS guided JDAM weapon out of a 1960s dumb bomb by "bolting on" the JDAM module as a cheap aftermarket kit.

<comment><USER7> That's one of the current proposals for the A-10, since there are plenty of people in the armed forces that want to keep it for CAS, the air force doesn't like it as much since it's not "sexy" but the marines, infantry, and armor troops that are saved by CAS love the old ugly thing.

<comment><USER8> Likely A-10 replacement, imho.

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

Strait-winged, turbofan, six wing hardpoints and an internal bay, extended loiter time, only $20mil+$3k/hour operating costs ... this thing has serious potential.

<comment><USER7> Might as well go with an F-35 then, it can carry more stuff.

The A-10 can't be replaced by effectively a trainer with a light ground attack option.

The A-10 is a flying tank, it's main gun is very useful for CAS and it can carry a lot of armaments and more importantly take a lot of punishment.

The A-10 is simply not sexy, the air force doesn't want it, it might not even want to provide CAS roles in general.

The USAF offered the US army to take the A-10 fleet in house the Army doesn't want it since logistically it can't really support fixed wing aircraft at this point, maybe the marines would take it in.

The A-10 isn't expensive, it's probably the most cost efficient aircraft the US has produced since WW2, it's simply not a sexy Gen 5 FBW doodad.

<comment><USER9> _Might as well go with an F-35 then, it can carry more stuff._

But is too expensive to ever risk danger-close. Whereas A-10's have had mortars fired _over_ them in certain circumstances...

<comment><USER7> The USAF is going to have plenty of F-35's to spare, and it it can carry standoff munitions for CAS, not unlike light attack aircraft which you aren't going to be placing into direct line also.

The A-10 was designed to take a beating, it has redundancies on top of redundancies, and armored cabin and fuel tanks, you can blow half of it's tail and it will still land (tho an F-15 has landed with 1 wing ;)).

Light attack/trainers are OK but they aren't in the same league.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Sort of puts our defense spending and progress in perspective when the USAF takes a $21M 4th gen fighter - when most of the world's air forces _still have 4th gen fighters in development_ , mind you - and basically uses it like the cheap clay target shooting skeet you can buy at Walmart.

<comment><USER5> As I understand it most of these airframes aren't fit to fly with a crew anymore because they've aged out. Airframes that don't get into this program get scrapped.

<comment><USER10> Indeed, the F16 was originally designed for about 8 000 hours of service time. And most airframes appear to have lasted about 20 years.

Once your aircraft gets to the point it will start to fail, why not use it as a few as a target?

<comment><USER6> They are still pushing the airframe through 12k hours.

<comment><USER11> And already tested through 15k+ hours I think.

</comment></comment></comment></comment></comment><comment><USER12> Note that QF-16's, not F-16's, are the unmanned/drone version of the F-16.

[https://en.wikipedia.org/wiki/General_Dynamics_F-16_Fighting...](https://en.wikipedia.org/wiki/General_Dynamics_F-16_Fighting_Falcon_variants#QF-16)

[https://en.wikipedia.org/wiki/General_Dynamics_F-16_Fighting...](https://en.wikipedia.org/wiki/General_Dynamics_F-16_Fighting_Falcon#/media/File:QF-16.JPG)

PS- I'd be worried about these being controlled by an AI or hacked. MQ-9's are small and go 300 MPH, so, while they're deadly, I wasn't worried about them as much. F-16's can go 1,350 MPH and can be "well-armed".

USAF just bought 30 more QF-16's bring the fleet to 106. Then "Air Force leaders are expected to buy a total of 120 QF-16 target drones through 2019. Optionally Air Force leaders are considering buying a total of 210 QF-16 through 2022. The fleet should last until 2025."

[http://www.militaryaerospace.com/articles/2016/03/qf-16-targ...](http://www.militaryaerospace.com/articles/2016/03/qf-16-target- drones.html)

<comment><USER13> These are target drones, and unlikely to be armed with anything or operated near high-value infrastructure susceptible to the relatively minor impact damage of which a QF-16 might be capable.

<comment><USER12> F-16's can carry nukes.

And why would you have a small very expensive fleet of fast moving drones that can carry bombs? Targets/training only? Wouldn't that be wasteful? Wouldn't those be expensive to just send in for recon or shooting down a plane or even a bombing run that they could use other manned aircraft for? What would they be best suited for?

"...the Pentagon is also modifying Turkey's current fleet of F-16s to carry the bomb.":

[http://www.f-16.net/forum/viewtopic.php?t=22037](http://www.f-16.net/forum/viewtopic.php?t=22037)

I'm not against the USAF trying to improve its defense.

But, if a remote-controlled nuclear-armed jet were controlled by an AI, or by a terrorist, that would be a big problem.

I understand that it's expensive to find and train good pilots, and it takes a long time. They are a limited resource. So, I can see why you'd want to replace them with drones- you save a lot of money, could expand the fleet more quickly and with less expense, eventually.

But, that expense is a safeguard. It keeps really bad things from being able to happen. We shouldn't be making _anything_ nuclear-capable more easily remotely-controllable. And if the US does it, others will. Even if the US were to be completely safe about it, other states might not be.

<comment><USER14> from the article "The decision by ACC certifies 15 QF-16s ready and available for target operations, according to an ACC release."

As throwanem said these are target drone which we have been doing with the F-4 and other planes for a long time. They have gone beyond their service hours for the airframes.

Nobody loads nukes on a target drone. Nobody uses target drones near civilians.

<comment><USER12> "Next up, live fire testing moves to Holloman Air Force Base, N.M. The military will ultimately use QF-16s for weapons testing and other aerial training."

[http://www.boeing.com/features/2013/09/bds- qf16-09-23-13.pag...](http://www.boeing.com/features/2013/09/bds- qf16-09-23-13.page)

<comment><USER14> When you shot at a drone its called "weapons testing".

<comment><USER12> You are correct. It seems like they don't plan to use them intentionally to carry nukes. They could perhaps be fitted with one and possibly wire it into the self-destruct mechanism, but that would take a lot of work, I'd think.

They do carry a bomb, though- it's not meant for combat, but could be abused for such to make the entire plane a bomb carrying device, if it were taken over:

"Granted it is removable, but they also carry, as it was described to me, a 2000 lb class (or maybe more reasonably it was 500#, but the 2k figure seems to stick out in my memory for some reason) HE warhead in the spine for range control/destruction purposes if anything goes awry. Long story short, it would take a lot more money and a lot more testing to ever make them combat capable."

[http://www.f-16.net/forum/viewtopic.php?f=2&t=27741](http://www.f-16.net/forum/viewtopic.php?f=2&t=27741)

<comment><USER14> Look, the Air Force has plenty of real combat drones with actual remote weapon controls. This is simply a target drone program to follow up of QF-4 program since we are running out of old F-4s. No sane actor would do anything you suggest since there are purpose built drones that have actually been used to do weapons release. We have enough existing ability to drop weapons that the new Navy drone will actually be used for refueling missions to keep the hours off the F-18 airframes.

<comment><USER13> It's also worth considering that, if Skynet decides she wants a squadron of B61-armed F-16s to play with, there are easier ways to get one. Like, oh, _lying to people_.

Why do people get so hung up on the idea that a superhuman AI can't gain access to weapons if there are no weapons equipped for direct remote control? Why expect a superhuman AI to have difficulty suborning humans through deceit? I mean, don't get me wrong - I tend to think that whole avenue of existential threat analysis owes much more to science fiction and the seductive nature of apocalypticism than to anything in reality. But if those are your priors, this seems a very odd oversight.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> I kind of understand why they want to develop the capability, but also am dubious of its value for a plane designed around a human pilot.

So, if the plane is going to do anything useful, it needs to get to its target intact and ready, and to be honest that's more about logistics and geography than human or not pilots. Maybe it can stay on-station longer but that sounds more like a duty roster benefit than a tactical advantage

The real benefit of pilotless craft I assume will come from designing it to do things that would kill a human inside it - presumably speed, manoeuvres etc. But then that means rebuilding a whole aircraft with new wings and weapons that can withstand such strain. And is that actually a win?

So, I am not sure where inammgoing with this except it feels that a lot of military spend is not tied to political aims or military benefit. Air craft carriers sit in that weird zone for me too (the UK is without one right now and I am dubious it's worth getting another)

<comment><USER13> The use of manned target drones is somewhat frowned upon in the military aviation community.

</comment></comment><comment><USER16> OT but F-16s look great even after all these years. Did it have a principle airframe designer?

<comment><USER11> Harry Hillaker. He was part of the 'fighter mafia'. It's fascinating history.

<comment><USER16> Thanks! Will look him up.

</comment></comment></comment><comment><USER17> It doesn't say how they are flown, is it remote pilots or some kind of AI? The latter would seem a scary concept at this point. Imagine it being hackable...

<comment><USER14> [http://www.boeing.com/defense/support/qf-16/index.page](http://www.boeing.com/defense/support/qf-16/index.page)

[http://www.boeing.com/features/2013/09/bds- qf16-09-23-13.pag...](http://www.boeing.com/features/2013/09/bds- qf16-09-23-13.page)

</comment></comment><comment><USER18> Are we expecting an alien invasion? (and by alien, I mean little green men)</comment>


Programming is a language, not a science - <AUTHOR> http://tyleryork.tumblr.com/post/12521263401/programming-needs-to-be-taught-as-a-language-not-a

<comment> d-lectable Cool post. Interesting you bring this up, because I've had a colleague who went to MIT, and took HTML for her required English requirement!</comment>


I drew a bunch of dots to explain why social media is broken - <AUTHOR> https://blog.this.cm/i-drew-a-bunch-of-dots-to-explain-why-social-media-is-broken-97725e2f0cc4 <comment><USER2> Or: "Here is an advertisement for This.cm. It (we) only lets you share one article a day."</comment>