Pokémon Go Fest attendees to get refunds as technical issues break the event - <AUTHOR> https://techcrunch.com/2017/07/22/pokemon-go-fest-attendees-to-get-refunds-as-technical-issues-break-the-event <comment><USER2> As a long term Ingress player i am not surprised by this _at all_. Niantics management has proven itself again and again and again as being completely incompetent at everything they do. (They even to manage to ban their own official event photographer after he had GPS problems while traveling to Paris).

I used to be angry at them for ruining Ingress (one of the best games ever made) but nowadays I am just amazed at the level of sheer incompetence.

They managed to learn _nothing_ from 4 years of Ingress and I think now it's time that the whole upper management is fired so that the company can start fresh.

<comment><USER3> I realize this statement probably won't go over well here, but Niantic's behavior strikes me as the kind of thing that happens when a company is entirely run by software engineers who refuse to accept relevant advice from anyone who isn't a software engineer.

There are people who understand event planning, there are people who understand how to build F2P mobile games, and I get the impression that exactly zero of these people were consulted, or, if they were, their advice was immediately ignored.

<comment><USER4> Anyone who's played Pokemon Go or Ingress can refute this; their UI design is abysmal at the very best, the game suffers a million bugs and patches introduce at least as many as they fix, etc. A company ran by Software Engineers would have hired competent UI developers and QE engineers and would have demoed the hell out of the event before putting it into production...

No, I'd argue Niantic may originally have been engineering driven, but once Ruthless cut them from Alphabet, they went straight for the greed play, developed with an IP that would sell billions with next to no effort, and are now tightening the screws on the player-base with Pay-to-Win gym tickets and events requiring as many Lures and Incenses as you can buy to continue extracting income.

<comment><USER3> > A company ran by Software Engineers would have hired competent UI developers > and QE engineers and would have demoed the hell out of the event before > putting it into production

UI developers? Testing? You have apparently worked with very different software engineers than I have! Most I've worked with have followed the "if users don't understand the UI it's their fault" UI design philosophy, and all testing is handled in production because no one wants to put emphasis on testing when they could be working on the next feature.

</comment></comment></comment></comment><comment><USER5> Just as glad I didn't get a ticket ($20? sure. Scalper prices? Heck no) and waste the time. This whole thing is going to turn into a real fiasco for some time due to the number of people who bought resold passes (so the original seller sold it and now gets their original $20 back), people who traveled (I know many got hotels, not sure how many flew in), and questions of how they're going to get that in-game currency to people (reportedly some are still in line to get in, while others are waiting in a not-quite-as-long line just to get out).

Each person attending has a uniquely-numbered wristband pass, and apparently on entry they're getting an envelope with a patch and a unique-to-them QR code which needs to be scanned after spinning a special "Pokestop" and effectively checks you into the event. Since the game is crashing basically at startup for most folks, that makes it a bit of a challenge just to get in. Still, I suspect the in-game credit is going to be based on people who checked in with that code since the ordering process didn't involve providing a game login.

Also, I've seen some folks questioning why they didn't have WiFi set up, but I'm pretty sure that the way WiFi works would make that almost impossible anyway (2.4 would be a bad joke no matter what, 5GHz might be possible over most/all available channels, APs that can handle hundreds or thousands of simultaneous connections are rare and probably require major advance planning, AP broadcast power would probably have to be quite low to allow large numbers of APs in a physically small area, etc.).

<comment><USER6> People in a stadium aren't going to be quite as focused on their phones, but lots of people in a tight space isn't an unusual occurrence for networks.

<comment><USER5> ~15k people in a small section of Grant Park all trying to play a somewhat data-intensive online game that requires constant communication with servers is a VERY different activity stream than people in a stadium. Might be closer to think of those people in a stadium all trying to stream video of the event.

<comment><USER7> Is the game that data-intensive? What data is there to send/receive that you're comparing it with streaming video?

<comment><USER8> The game uses google's protobuf protocol which makes communication more efficient and the game updates (I can only tell from <= 0.35 analysis) all 10-30 seconds like loading pokemon spawns and map entities of the current map area.

The most expensive data in 0.35 was:

\- Pokemon models (They were dynamically loaded but cached then)

\- Pokestop images (Server sends image url and client searches for a chached version)

\- Syncing the player state with the client (Inventory, rewards, egg states..)

\- Updating the map (Future pokemon spawns, pokestops/gyms in view..)

If a player is idle and doesn't move, just keeps farming a single pokestop and battles sometimes, then it should be relatively low cost since the game doesn't use a realtime communication (It's actually HTTPS based _lol_ ).

<comment><USER9> The pokemon models are loaded over the network? Whatever for? Seems like a big waste of precious data

<comment><USER10> So you can add/update them without doing an .ipa/.apk update ? Seems really convenient, and a one time deal if it's cached.

<comment><USER8> Last year I developed a server emulator for the game - On the server's first run, it cloned all models from the official servers to a local folder. The download urls and the models itself were encrypted, also their urls got disabled after ~24 hours. Other informations like how big a model gets displayed inside the game world was declared inside a GAME_MASTER file. When connecting to the custom server, the client asks for the GAME_MASTER file and the models as needed. It was pretty fun to edit these and send the players custom models like a GIANT snorlax or a red pikachu. I'm not 100% sure, but I think the GAME_MASTER file even contained a "model signature" to trigger a forced model update, so it's possible to overwrite already cached models. In the first weeks Niantic broke the model of Starmie (it turned full black) and I'm pretty sure they fixed it without a full game update. You can checkout the emulator project here: [https://github.com/maierfelix/POGOserver](https://github.com/maierfelix/POGOserver)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> >When Niantic's John Hanke took the stage, he was greeted by an audience a few thousand deep, many of them chanting "FIX YOUR GAME" or "WE CAN'T PLAY!"

Can you imagine how stressful this would be? It's one thing to get disappointing feedback data on bugs, UX, etc. Standing in front of thousands of angry people screaming at you to fix your software this instant? Yikes!!

<comment><USER12> I remember Google Cloud was doing a ton of press about how Niantic was using their platform for Pokemon Go. I wonder if that will backfire for them now.

<comment><USER13> These are completely unrelated, no? One is about scaling the servers and stuff behind the scenes, this thing is about cellular data networks failing and dying.

</comment></comment></comment><comment><USER14> Even at big music festivals, mobile networks are usually totally overloaded just by the sheer amount of people logged in at the same time, without even doing anything. Even recieving an SMS can take minutes. I don't assume they would do an event like this without letting providers know in advance to upgrade capacity, but it seems like this.

<comment><USER15> I've always wondered why cellular is affected by this, anyone have a link?

<comment><USER16> There's a limited amount of "space" in the air, ie not everyone can be transmitting at the same time. This is fixed using a few different techniques depending on the cell network but for GSM something called TDMA (Time division multiple access) is used. This basically gives your phone a certain amount of time to broadcast on before it should leave the airwaves for someone else to transmit on. Too many people in one location means not enough time for everyone to transmit.

<comment><USER17> That's not really quite accurate on modern networks. Most of them use CDMA which allows many devices to transmit/receive at the same time, assuming that they can modulate their power with respect to distance from the tower/etc(which is a requirement for the "xor" to cancel out).

That said there's still a bunch of other stuff you have to sort out if you want to support that many devices in a small space.

<comment><USER16> > Most of them use CDMA

Really? I thought CDMA was something only Verizon used for their network. I tried looking into it a bit prior to writing the original answer but I couldn't find anything other than a mention on the TDMA Wiki [1] which has a [citation needed]. Do 3G/4G networks across the world use CDMA as well? Because I know that in Sweden carriers are buying up large chunks of frequency bands to be able to increase 4G coverage, that shouldn't be needed with CDMA, right?

[1]: [https://en.wikipedia.org/wiki/Time- division_multiple_access](https://en.wikipedia.org/wiki/Time- division_multiple_access)

</comment></comment></comment></comment></comment><comment><USER18> Anyone who has ever tried to send a photo at Soldier Field during any large event could have predicted the crippling of the network that happened here. Maybe I missed it in the article, but did the event organizers not set up an ad-hoc network for this?

<comment><USER19> This is a situation where a mesh network topology (like Firechat) would be necessary.

<comment><USER20> Mesh is unfortunate for these situations; the limiting factor at these scales isn't infrastructure size, but EM spectrum. The accepted solution is mandating players go onto WiFi, where you can get them to much lower emitted power by deploying enough APs, close enough to any player location, that no clients need to shout to get their traffic heard.

</comment></comment></comment><comment><USER21> Are there any Niantic employees active here on HN? As an engineer, I would be very interested in hearing some first hand accounts of some of the technical problems Niantic's engineers have had to deal with, not necessarily just for the Go Fest, but for the game in general. To the extent that they're allowed to talk about it, it would be very interesting to get an AMA style take on some of the challenges.

<comment><USER22> As the lead engineer on an up coming game of a similar scale, YES! This would be so awesome!

</comment></comment><comment><USER23> Niantec just posted an update[0]. These are the steps they will be taking:

 _All registered attendees will soon receive an email with instructions on how to receive a full refund for the cost of their ticket. These instructions will be sent to the email addresses associated with your Pokémon GO account.

All registered attendees will receive $100 in PokéCoins in their Pokémon GO account.

Special Pokémon, Eggs, and check-in PokéStops appearing during Pokémon GO Fest have had their range increased to a two mile radius surrounding Grant Park through Monday morning, July 24. These Pokémon and Eggs will only be visible to Pokémon GO Fest attendees who validated the QR code they received when they entered Pokémon GO Fest. Attendees who were unable to validate their QR code during the event can do so through the special PokéStops through Monday morning.

All registered attendees will have the Legendary Pokémon, Lugia, added to their account._

[0][http://pokemongolive.com/en/post/pokemongofestupdate](http://pokemongolive.com/en/post/pokemongofestupdate)

<comment><USER24> > All registered attendees will have the Legendary Pokémon, Lugia, added to > their account.

Lugia? That's some damage control right there.

<comment><USER25> Beg for forgiveness and give out free stuff, that generally makes people much happier :)

</comment></comment></comment><comment><USER26> I guess that's no suprise? Downtime with every single event som far, so why should this one be anything different?

WiFi is a thing and should he able to handle it just fine. Heck, they could even block anything but PGO and get away with low bandwidth too.

When voulenteers can manage to get WiFi working for thousands of nerds at indoor LANs... Let's just say that Niantic should be able to avoid this with a little bit of planning.

This is the company running one of the most unstable and buggy games I have ever played, so I would expect no less. At least the game is very fun for a lot of people... When it works.

<comment><USER27> Don't large lans use.. LAN ? (Ethernet). I could be wrong, but as many desktops still don't have wifi and you know where people are and it's so much more stable large scale.. it would make sense

<comment><USER26> Ofc ethernet is used, but WiFi is often used for phones and additional devices like game consoles as it's mostly 1 port/person. The gathering and Dreamhack are two good examples of events with WiFi scaling to many thousands of connected devices without much problems. More or less every AP provider has solutions for this.

</comment></comment></comment><comment><USER28> This game has been so much of a trainwreck, I don't see why Game Freaks licensed Niantic to use their IP.

<comment><USER29> Niantic seems to have expertise in Mobile Gaming from ingress. Which other company has?

If your comment is based on this event, it seems unfair: Who else has successfully done an event with similar bandwidth requirements before? Also, my understanding is that the cellular network is the problem, but you might correct me if I'm wrong.

Besides, Blizzard had spectacular problems in the past with WOW launch events, simply because no one had ever done something of that /scale/ before.

<comment><USER30> It sounds like they planned an event for 20k people without telling mobile networks they are doing it. For festivals mobile networks usually deploy extra capacity to handle larger than usual number of people. It sounds like this could be handled by large number of local WiFi spots as well.

<comment><USER7> How do you just "deploy extra capacity"? Do they install new antennas just for an event?

<comment><USER31> Deployment of cell sites at events like stadiums for sporting events and outdoor music festivals is pretty common for years and years. Unless you're a hermit you almost have certainly seen a COW at one point or another. Cf Wikipedia mobile cell sites, especially COW.

<comment><USER7> I've seen them around alright, just not realized how common or easy-to-set-up they might be for an event like this, or how they work from an inter-provider standpoint. Do they not cost a whole ton for the organization setting up the event, and wouldn't every provider (T-Mobile, AT&T, etc.) be required to set one up? It seems like such a massive headache and cost for something like a Pokemon-catching crowd that might not even generate much revenue(?) that I'm confused how everyone is saying "just deploy extra capacity". Like do providers just follow crowded events for free and put antennas wherever people are as if it's no big deal?

</comment></comment></comment></comment></comment></comment><comment><USER32> The event looked interesting and the game is a great concept. Sorry to hear about this fail as well.

</comment><comment><USER33> The weather in Chicago since 5pm till early this morning has been filled with storms. Storms were also threatening this afternoon, but surprisingly they didn't come. I had to cancel a beach meetup that I was looking forward do over this.

</comment><comment><USER34> Could they have used a mesh network to help load balance connections to WiFi APs?

</comment><comment><USER35> The silver lining is that all these people would would only interact with each other virtually then had a perfect opportunity to talk to each other face-to- face, fwiw.

</comment><comment><USER36> What surprised me in this article is that people still gather to play Pokemon Go.

I personally never got into the game, while my cousin was totally into it, but where I live (which is a medium city for Europe), the fad has totally passed in less than 6 months after launch.</comment>


Emulator basics: a stack and register machine - <AUTHOR> http://notes.eatonphil.com/emulator-basics-a-stack-and-register-machine.html <comment><USER2> > If you know why our macOS users use _main I'd love to know.

You'll find this on Linux, too. You'll notice the compiler (on POSIX systems?) prefixes your symbol names with _ since The Dawn Of Time.

<comment><USER3> The leading underscore on MacOS is part of the Mach-O standard [1]. This was inherited from a.out which really wasn't much of a standard _per se_ but rather just a collection of a.out implementations [2]. Mach-O (1987) predated ELF (1993) and the later ELF abandoned the underscore as unnecessary.

[1] [http://math- atlas.sourceforge.net/devel/assembly/MachORuntim...](http://math- atlas.sourceforge.net/devel/assembly/MachORuntime.pdf)

[2] [https://www.nasm.us/doc/nasmdoc9.html](https://www.nasm.us/doc/nasmdoc9.html)</comment></comment>


Apple iOS 13.1 Personal automation via Shortcuts - <AUTHOR> https://support.apple.com/guide/shortcuts/intro-to-personal-automation-apd690170742/ios <comment><USER2> So exciting. When Shortcuts was first announced I was thrilled since I could think of hundreds of flows that would be amazing for my daily life to simplify things. But quickly realized there were many limitations such as it couldn't be run automatically at a set time, and nearly every flow I wanted it was missing a few actions to make them fully possible. As such I used a couple but overall didn't use it at all.

With this update, Personal Automations for me at least opens up many possibilities by removing so many limitations. Such as now when connecting to CarPlay you can automatically trigger workflows like opening Waze in background for alerts, getting directions to your next even that has a location, asking if I have kids in the car, if I say yes, play kid friendly podcast station, if not play my other station, and so on.

There are still so much unmet potential. Core apps like Apple Podcast have so few actions compared to third party options, which is very odd. And then other third party apps that would so love to have certain actions offer none at all.

So hopefully with the Personal Automation people will use it more, and with that use, Apple will offer more actions for their core apps causing more people to use it and then eventually more third party apps to offer actions, and then hopefully Apple offering a dedicated app store section for them for true mass appeal. Of and of course having it available on macOS (replacing Automator) would be wonderful since writing more complicated scripts is much easier on the Mac.

<comment><USER3> I think personal automation is what will finally make Shortcuts useful. Like you, I've got a ton of flows that could benefit, but without triggers a lot of the shortcuts were just saving me a few button presses. To me, that's just not worth cluttering the Shortcuts UI and having one more thing to maintain.

As you point out, there's unmet potential. So many times I go to create a shortcut, "surely they have an action for $FOO, it would be one of the first things _I 'd_ implement", and...no. But it's getting there. Maybe not this year, but I hold hope that Apple will keep at it and in the next year or two this feature will start to open up.

</comment></comment><comment><USER4> I've been looking forward to this feature, but I must say I'm pretty disappointed that most of the personal automations still require a manual approval before they will execute. For example, I can schedule a particular shortcut to always run at a specific time. When that time comes, however, my phone will display a notification which I must physically tap to execute the automation. If I miss the notification, nothing will happen. The same is true for "When I Arrive..." and "When I Leave..." triggers. Which means, often, I'll get a notification in the car, while I'm driving, which I must tap to execute the automation.

I can see why Apple would want to step cautiously with consumer-based automation, but I was really expecting that all of these new automation triggers would fire without needing any manual approval, or at least that there would be a way to configure them to do so.

I have read that you can use a HomePod, Apple TV, or always-plugged-in iPad as a home hub, and my understanding is the triggers offered here will run in a fully automated fashion. I hope to explore that at some point.

Still, I'm very happy to see the progress in Shortcuts, and I expect it will only get better.

<comment><USER5> I've heard quite a few times now that some of the reasons these automations aren't completely automatic is to avoid them being abused by people with bad intentions.

Say for example someone setting one up on someone else's phone (without their knowledge) to run every X minutes and using it to track someone's location, without them ever knowing about it.

I'm not entirely sure that's the real reason behind these notifications, but it does seem plausible.

<comment><USER6> I would be perfectly happy to receive a popup that an automation had just run. Also, Apple has been pushing for self-adjusting notification preferences. Imagine a popup like:

"The shortcut 'Foo' wants to run. Do you want to allow it?

\- Never

\- Not this time

\- Run once

\- Always"

Put an icon next to each shortcut showing whether it's always (or never) allowed, and it seems like the problem would be largely solved without asking much from the end user.

<comment><USER7> The malicious person would then click "Always Allow" while they are setting up the shortcut. It might be better if it worked like the location/bluetooth prompt, where some time later, it would prompt you if you still wanted that action to occur.

<comment><USER8> Make the allow and always allow options require Face ID, Touch ID, or passcode…

<comment><USER7> You don't need them to authenticate again, as the phone would be already unlocked.

What you want to do is periodically (at a random time each time) ask the user if they still want it to do the privacy sensitive action still. This way, it vastly increases the chances of detection if the action was added by a third party.

</comment></comment></comment></comment></comment></comment><comment><USER9> I'd been trying to figure out why they required a user interaction for some of these. 5 out of 6 of these can be explained by debouncing.

• "Wi-Fi" and "Bluetooth" connection triggers are extremely susceptible to bouncing on and off with variable radio conditions

• "Arrive", "Leave", and "Before I Leave" are all susceptible to bouncing in and out; they combine a fuzzy location of variable precision with a point and radius

By requiring a user interaction, it makes sure that bouncing never causes the shortcut to trigger more often than desired. Apple certainly tries to debounce the event automatically, but that comes with other side effects: the trigger can be delayed significantly and unpredictably.

(As for why "Time of Day" requires a user interaction, I have yet to hear a satisfying explanation. I want my Cron!)

<comment><USER10> I'm using IFTTT for similar functionality on my Android phone and I've never had a problem with a task bouncing in and out of a specific location. In fact, the location selection process only allows you to zoom in so far on the map to prevent you from getting to specific with your geofence.

Obviously you're not going to be able to write a GPS specific enough to detect which room you're in, but that's expected.

<comment><USER11> Considering the lack of accuracy in GPS, I can envision problems.

Sometimes GPS thinks I'm in my neighbor's front yard across the street, or in my neighbor's backyard behind me, even if I'm in my bedroom.

If I stop at my neighbor's house on the way home, it could trigger an action in my house, for example.

<comment><USER12> Is there proximity detection besides connected SSIDs and NFC? I guess blue tooth devices could work. I'm not sure the range on them. I like how when I get in my car, my music automatically starts playing (bluetooth) seems like cheao unique bluetooth devices for determining where exactly you are at could be useful. One for the kitchen, bedroom, etc.

</comment></comment></comment></comment><comment><USER13> The iPhone Xs was my first ever iPhone. Before that I had been an Android power user for 8 years. I installed my own custom ROMs, xposed framework, rooted, etc.

Although I'm firmly in the iPhone camp for privacy and other reasons now, I miss the automation provided by Tasker and the Android OS.

I used to have many useful location + time based profiles. For instance, I had a profile for if I was at home and it was between 9pm and 7am, Do not disturb mode would be turned on (which still allowed 'emergency' calls) and i would switch to a dimmer screen brightness profile. If I was at work, my media volume would be put to 0, phone would change to vibrate, etc.

The point is, many repetitive tasks were easily automated on Android and it required ZERO interaction from my end. No shortcut button press or anything. Smart phones should make our lives easier.

<comment><USER3> Sooooo...a quick skim of the article indicates that personal automations can now do what you're missing. My question is, are you complaining about something that this article specifically addresses, saying "yea! About time!", or...? Because your "point is" is specifically addressed by TFA.

<comment><USER14> It's a valid complaint. I haven't used android in 5 years and I still miss tasker. It's the kind of basic, important tool that any personal device should have. It isn't difficult to implement well. There really isn't a good excuse that it took so long and it is nice to finally have. Every "reason" why it took so long is simply someone imposing their personal opinions onto a wide range of users.

<comment><USER15> Imposing their opinion on a wide range of developers is also a key differentiator for Shortcuts vs Tasker.

Take a look at how many apps support Tasker vs Shortcuts:

[https://docs.google.com/spreadsheets/d/19q_jvRRM4htT6-9QTX6m...](https://docs.google.com/spreadsheets/d/19q_jvRRM4htT6-9QTX6mXSjvCBwY7d6PsVcweoubQJs/edit#gid=0) [https://airtable.com/shrNcsx3n8uUajpsW/tblv8ai4KM1YZ4LgH/viw...](https://airtable.com/shrNcsx3n8uUajpsW/tblv8ai4KM1YZ4LgH/viwWKTrvv9iQoPCCa?blocks=hide)

Now consider how much older Tasker is than Shortcuts.

Imposing a universal standard across your platform is a very effective model.

</comment></comment></comment></comment><comment><USER16> Shortcuts is an amazing, truly underrated app. Almost anything your phone can do, Shortcuts can do. Extremely powerful.

For fun, I created the Martin Luther Insulter shortcut[0]. Say, "Hey Siri, have Martin Luther insult me", and it fetches the list of insulting quotes from Martin Luther's books via GitHub, then reads the insult back to you in a dark, slow raspy voice.

[0]: [https://shareshortcuts.com/shortcuts/725-martin-luther- insul...](https://shareshortcuts.com/shortcuts/725-martin-luther-insult.html)

<comment><USER17> Can't thank you enough for this.

</comment></comment><comment><USER18> Kind of neat that the way these are shared is a PNG file with appended data. The PNG file is the icon for the Shortcut :)

Example: [https://cvws.icloud- content.com/B/AZc9tIA45EozUwn3Zs0zZEJSUY...](https://cvws.icloud- content.com/B/AZc9tIA45EozUwn3Zs0zZEJSUYDF/${f}?o=AkPv3CP_VY0w1Zu2JecEaam7o2Gs-5y0Kdb1rIVF5X_WEKbBWbfgD0n7seUdfmAr3g&v=1&x=3&a=CAog2q0-Z0L-xGftYglvATFw5hzCRPeoDRUu6MrKDqYIOzwSFxCv2pP21i0Yr7fv99YtIgEAUgRSUYDF&e=1569525062&k=_&fl=&r=d2d8928c-0fe9-4f9e-b92e-ea9e1a57ceba-1&ckc=com.apple.shortcuts&ckz=_defaultZone&p=33&s=g0pGb50ZInQRJr5qHah0tp_LZeQ)

<comment><USER19> The icon does not contain any of the shortcut data

<comment><USER18> I know. I mentioned that it's a PNG with appended data. Are you saying the appended data is not the Shortcut information? I think it is.

</comment></comment></comment><comment><USER20> Has anyone found any of these useful?

I'm racking my brain for something that would benefit me, but nothing comes to mind... but I feel like I'm just lacking creativity here.

<comment><USER21> Checkout Federico Viticci at MacStories - he's been using Shortcuts and Workflow before it to automate his entire iPad based life. Some of the stuff he gets it to do is amazing.

<comment><USER22> Any links? Googling seems to just give me a list of random shortcuts rather than any discussion on how he uses them

<comment> leo-tada [https://www.macstories.net/shortcuts/](https://www.macstories.net/shortcuts/)

and another collections [https://shareshortcuts.com/](https://shareshortcuts.com/) [https://shortcutsgallery.com/](https://shortcutsgallery.com/) [https://routinehub.co/](https://routinehub.co/) [https://sharecuts.app/](https://sharecuts.app/)

</comment></comment></comment></comment><comment><USER23> I don't know if shortcuts included ssh key support before this update, but I just noticed that it does now! ed25519 appears to be the default key type.

Now I can run Terraform automatically when I get home to provision some tea! /s

<comment><USER24> [https://ndmckinley.github.io/terraform-provider- dominos/](https://ndmckinley.github.io/terraform-provider-dominos/)

</comment></comment><comment><USER25> I started small. I have an automation that launches at 8 pm that does three things:

* Sets dark mode * Sets reduce white point * Runs a shortcut I made asking me a few questions

The questions are:

1\. Will you get ready for bed? Sleep affects your next day. (I have to click yes/no) 2\. Will you go brush your teeth after this? (The first step. I have to click yes/no) 3\. It gives me a list of things I may want to do to wind down: a walk (based on steps), tidying, reading a book 4\. Then it prompts me to look at a small diary/todo I made in the morning and comment on it. And then look at my screen time stats.

I find this helpful. And since I always want to reduce white point, this means I will automatically want to click the notification to run it.

I hopefully eventually they will have AND and OR conditions in automations. Eg if between 8:30 and 11:30 AND I open instagram, open my todo list.

<comment><USER26> You know that Do Not disturb and Nightshft can both be scheduled to come on at 8pm without automations? (Not that I'm knocking you, if you just wanted to tinker).

<comment><USER25> Yeah. Set white point can't be scheduled. I put in night mode because why not run both the light reducing features at once?

Plus it's an incentive to run the shortcut. I want darkness, and run the questions as a side effect.

</comment></comment></comment><comment><USER27> > The following automations cannot be run automatically: > Arrive > Before I > Leave > Bluetooth > Leave > Time of Day > Wi-Fi

Well that's disappointing. It isn't automation if you have to have a human involved.

<comment><USER28> I agree with what you "mean to mean", but surely by that definition a human being carrying a cellphone into a designated "Arrival" zone rules out that as being automation too?

<comment><USER27> But that's not what was being automated. The only part being automated what the part that happens AFTER arrival in the designated arrival area. And apparently, that's not being automated (well, partially).

We could go all the way up that chain till we get to the point that anything at all is not automated. But that seems ridiculous.

</comment></comment></comment><comment><USER29> I tried to have it launch spotify when Airpods were connected, but found only Apple music supported. I've always wondered, is the lack of Spotify support in Siri, Shortcuts, due to Spotify or due to Apple blocking them?

<comment><USER30> I just got Airpods. I had to sign up for Apple Music yesterday because offline support (when the watch isn't in bluetooth range of the phone) wasn't available with Spotify.

Not sure if this is simply a feature Spotify decided not to implement, or if they can't implement it due to Apple Watch restrictions.

I have similar questions with the Hulu Apple TV app. Results for content in Hulu aren't always included in Apple TV wide search, while content from other apps is.

Apple has done a lot of good things, but they went a little over the top with creating such a strict walled garden. (Another example is their blocking of 3rd party billing system - that's a clear example of Apple hurting the user experience to boost their profits)

<comment><USER31> The new version of WatchOS makes audio streaming to the watch a public API.

[https://developer.apple.com/videos/play/wwdc2019/716/](https://developer.apple.com/videos/play/wwdc2019/716/)

Spotify can implement the feature any time they like.

Similarly, Hulu has long been able to provide the search metadata needed to integrate into Apple's universal search system, if they choose to do so.

[https://developer.apple.com/videos/play/tech- talks/508/](https://developer.apple.com/videos/play/tech-talks/508/)

<comment><USER30> Perhaps one reason they don't choose to do so is that some subscribers have different levels of access depending on the subscription tier. At least that's my guess.

</comment></comment></comment></comment><comment><USER32> Oh wow! Can this finally solve the "play the first song in Music App when CarPlay is connected" issue?

<comment><USER26> Yes!

I wrote an automation yesterday that simply says

When Connected to Carplay Media > Pause.

So far, it seems to do the trick. Doesn't require manual intervention.

<comment><USER33> I wonder if this works with older non-carplay car audio systems. Definitely going to try it out!

</comment></comment></comment><comment><USER34> So far my cleverest idea:

      when beorg is opened, pull this repo in working copy.

maybe also:

      when carplay connects, stop playing music.

</comment><comment><USER35> I was _hoping_ Personal Automation would solve a long-time goal of mine: waking up to a carefully curated playlist rather than a ringtone. But it looks like this still won't work, because it requires human interaction to kick off the 'automation'. That's a shame, since this is something that every radio alarm handles.

<comment><USER36> automation on alarm snooze => apple music playlist

</comment></comment><comment><USER37> Is it possible to write these in regular code? I am not a big fan of these visual tools. Seems they are quite clunky compared to code.

<comment><USER38> With an app like Scriptable, you can indeed! This one lets you write JavaScript code, and they added the feature to pass in parameters with iOS 13.1!

[https://scriptable.app](https://scriptable.app)

<comment><USER39> Pythonista 3 (currently on TestFlight) is another option. I like the custom keyboard shortcuts that it adds. It can also trigger shortcuts, I reckon.

<comment><USER37> This is interesting. I thought iOS is pretty locked down.

</comment></comment></comment></comment><comment><USER40> I tried to build an automation that would send a message to my wife with my expected time of arrival as soon as I leave work.

Unfortunately, the transit skill can only tell you the travel duration, but doesn't take into account departure times.

It will tell me that I need 20 minutes by train, but it's impossible to tell at what time the train will depart.

</comment><comment><USER41> Absolutely love this. Realized it is scriptable. Managed to create notes from templates in Bear Writer and in iA Writer, also started logging my caffeine consumption (a predefined shortcut), log my expenses by appending to a csv file and many more things. This is like Automator for iOS. Opens totally new perspectives and use-cases for iOS devices.

I am having so many ideas for scripting my iPhone. Totally sold.

Been using automation tools on my Mac for quite some time. Tools like Keyboard Maestro, Alfred App, shell scripts, Python scripts, snippet expander like aText or Dash App. Now we get a tiny bit of this on iOS. Right direction.

</comment><comment><USER2> Another issue. When setting time of day you can choose says, but unlike Apple Calendar or any third party calendar app like Fantastical, you can't set custom. Such as Repeat Monday and Wednesday every 2 weeks, etc. Everytime I get excited to use Shortcuts I see seemingly small but major issues that prevent from creating the desired workflow, so end up giving up. Since when it was owned by Workflow had hopes little things like that would get resolved quickly, with Apple, assume if its not part of the first release most likely won't be fixed until next year as a 'feature'.

</comment><comment><USER42> how does one automate the resetting of Adversting Identifier every 2 mins?

<comment><USER43> I don't think you need to. Just enable Limit Ad Tracking: [https://support.apple.com/en-us/HT205223](https://support.apple.com/en- us/HT205223)

</comment></comment><comment><USER44> Does this finally end the nonsense that is Dropbox being unable to stay open and finish uploading photos? I.e. could I set it to open the Dropbox app every ten minutes during the night?

<comment><USER45> Nope

</comment></comment><comment><USER46> I'm missing the "Disconnect" action for Wifi and Bluetooth. I'd like to be able to increase text size automatically when getting in the car (based on bluetooth connecting to the car) for improved visibility, but to undo it when I exit the car. Unfortunately that doesn't seem to be possible (yet).

</comment><comment><USER47> I was hoping that I can finally change night shift intensity based on time of day. Unfortunately night shift isn't configurable by Shortcut yet.

<comment><USER48> You can change the whitepoint. Not the same, though, but something.

[https://www.iphonetricks.org/the-ios-reduce-white-point- feat...](https://www.iphonetricks.org/the-ios-reduce-white-point-feature-dims- your-iphone-screen-below-brightness-minimum/)

</comment></comment><comment><USER49> Cool! I'm on 12.4.1 and for a while now enjoying my simple accessibility shortcut > color filters to enable triple-click side button to toggle greyscale vs normal color mode. Less battery usage, helps keep the device less unnecessarily stimulating, doesn't interfere w/ sleep, and sometimes good for random conversation ("how'd you do that?"). :)

<comment><USER44> > unnecessarily stimulating

Willie, remove all the colored chalk from the classrooms!

<comment><USER49> I'm sure you were just trying to be funny, so I forgive your snark. But your analogy is inept. I'll try riffing on it to explain why:

By default, our "smartphones" are attention-capturing entertainment devices. Disabling notifications is one step towards regaining control and putting apps in their place -- which is to say, tools I will leverage with intention, on my schedule. Disabling colors is another step in that same direction. It's not removing chalk from the classroom, it's temporarily closing the window to mute the ice-cream truck during exams. The whole point of the triple-tap shortcut is to make it trivial to toggle modes, so I am the only one who gets to decide whether I'm in the library or the arcade.

</comment></comment></comment><comment><USER50> Still no way to turn off my coffee machine half an hour after I turn it on. Seems like such an obvious and useful thing to do, and yet nobody has this feature. This, to me, suggests that nobody is seriously using home automation.

</comment><comment><USER51> I love that I have a shortcut set up to play my podcast and navigate to home when I leave my office... and that it still prompts me to start it, so I can _not_ do that when I'm actually driving to lunch with coworkers.

</comment><comment><USER52> Congrats, they invented Activator[0]!

[0] [https://cydia-app.com/activator/](https://cydia-app.com/activator/)

<comment><USER19> Ryan was a fantastic mentor to me and a lot of people in the jailbreak community. His work set a high bar for what tweaks could be, and Activator in particular spawned a small ecosystem of quick actions. I'm honored by the comparison :)

(context: I work on Shortcuts)

<comment><USER52> That's awesome to hear! Sorry if my comment came off as snarky. I was pretty involved in the jailbreak scene back in my iPod Touch days (years and years ago), and I'm really happy to see some of the functionality I loved then coming to life now (in a much more polished way :))

<comment><USER19> Yeah, for sure! It didn't come off as too snarky to me. The jailbreak scene is what made me the engineer I am today for sure :)

</comment></comment></comment></comment><comment><USER53> Will this finally allow me to switch WiFi and Bluetooth off (instead of just disconnect for 24h) from the control centre?

<comment><USER54> From the control center? No. But you can do it from the shortcuts widget when you swipe left from the homescreen

WiFi - [https://www.icloud.com/shortcuts/a92a26177fae4bafb9c8a7b369e...](https://www.icloud.com/shortcuts/a92a26177fae4bafb9c8a7b369e54aa4)

Bluetooth - [https://www.icloud.com/shortcuts/7b367448c4a04b1483af4af004a...](https://www.icloud.com/shortcuts/7b367448c4a04b1483af4af004aa8ce8)

<comment><USER53> Oh. This is fantastic. Thank you so much!

For anyone else having issues allowing untrusted shortcuts. The toggle in the settings only appears after running any shortcut for the first time. This is an iOS bug apparently.

</comment></comment></comment><comment><USER55> Too bad the settings option are just accessibility options.

I just want a shortcut that turns off and on vibration when in silent mode.

</comment><comment><USER56> When I updated to iOS 13, Shortcuts no longer listed actions for third-party apps. Has anyone else run into this?

</comment><comment><USER57> Great release; looking forward to the future of this feature.

My one complaint with shortcuts is that the apps have to expose an interface of "actions" which so far is very limited for tons of apps. I want to create a shortcut to the "user & passwords" store under "Settings", but I can't because it isn't exposed as an action.

</comment><comment><USER58> Idea: Create shortcut to track your car parked location when you disconnect from car play

<comment><USER59> This already happens pretty well with Apple Maps. (I think Google Maps does something similar too.) You just have to check the map for your parked car's location.

</comment></comment><comment><USER60> I hope they add email, message and call-based triggers.

Which can also be used as a cheap RPC mechanism.

</comment><comment><USER61> +1 request for automator on iOS?</comment>


Training for the Cannabis Industry - <AUTHOR> http://www.oaksterdamuniversity.com/

<comment><USER2> This is interesting as an indicator of the new legal pot industry to come. Lots of new job titles may very well merit lots of new degrees, at least for the kind of person that would consider majoring in pot (heretofore only an unofficial major).

<comment><USER3> Oaksterdam isn't new -- it's been around longer than the current wave of legalization. Welcome to California.

</comment></comment><comment><USER4> I think it's actually kinda cool to see this. I'm not sure how fond I am of the whole Cannabis College thing, but it's good to see how legalization efforts have spurred industry and created opportunities.

</comment><comment><USER5> The questionable benefits of a cannabis degree aside, that is one of the most hideous websites I've ever come across.

<comment> vezzy-fnord Not that much worse than most other websites devoted to educational institutions, quite frankly.

<comment><USER5> I'm in the process of applying to graduate programs right now actually, and I find most universities (at least in Canada) have websites that are visually pleasing but are abysmal from a UX perspective.

This one _looks_ ugly, too, which in my experience is rare for post-secondary education.

</comment></comment></comment><comment><USER6> Why is this on hacker news?

<comment><USER7> This is a potentially huge new industry, and I believe Washington's law makes them particularly friendly to small entrepreneurs as long as you can get a license.

Only reason I'm not starting a business is because I don't really trust the federal government to keep their hands out of it.

</comment></comment><comment><USER8> This place is up the street from me. Got raided last year by the Federal Gov.

</comment><comment><USER9> Sounds like a quick way to cash in.

<comment><USER10> It was founded in 2007 [1].

[1]: [http://en.wikipedia.org/wiki/Oaksterdam_University](http://en.wikipedia.org/wiki/Oaksterdam_University)</comment></comment>


Cities Want 'Digital Twins' to Manage Traffic - <AUTHOR> https://www.citylab.com/transportation/2019/07/digital-twin-mobility-data-standard-city-real-time-traffic/593914/ <comment><USER2> "Digital twin" is a bizarre term for this. They're talking about modeling traffic flow based on real-time traffic data.

<comment><USER3> Realtime modeling that includes realtime data is starting to be called digital twinning in various industries. E.g. each car off a line has its specific torques of each bolt traveling along with it as a digital twin.

Power plants with sensors on all the equipment trying to predict preventive maintenance is being called digital twinning too.

<comment><USER4> Is this only applied to 'real time' modelling or is 'near real time' also included?

Curious because I used to write software for IIOT predictive analysis (3 years ago?) and I never heard the term 'digital twin.' Curious if it applies to NRT or if this is a different beast.

<comment><USER5> Digital Twin is essentially a buzzword like Cloud. It can mean whatever you want it to, I'm afraid

<comment><USER6> I think I've figured out the IBM-style buzzwords like "mobile productivity cloud", and I'm making good progress on all the ones in SJC airport ads, but the one that's still got me is "digital transformation". Shows up all the time in my promoted tweets.

Didn't everyone digitally transform in like the 90s?

</comment></comment></comment></comment></comment><comment><USER7> The CEO of Ford Motor Company, Jim Hackett, has claimed this: for autonomous vehicles to work resiliently at scale they require

1\. vehicle-centered sensors

2\. a way for vehicles to share their sensors with nearby vehicles,

3\. detailed models of the cities in which they operate, and

4\. wireless networks capable of transporting all this data to where it's needed.

He calls all this the "mobility operating system."

In the interview I heard (I wish I could remember where, sorry) Mr. Hackett said he believes the defensible intellectual property for autonomous cars will be those detailed city models.

So, I am delighted to hear that municipalities are getting ahead of this issue with respect to city models.

<comment><USER8> Isn't an issue with no. 2 that bad actors could spoof or inject bad data and cause problems for cars reading this data in good faith. You can discard one abnormal data point but not if it's coordinated.

<comment><USER9> Do you worry about some random asshole kid hurling a re-bar in to rush hour traffic? REing automotive tech, setting up transmitters, and spoofing traffic data to throw a virtual re-bar in to rush hour traffic could become a pandemic unless we figure out a way to fight such attacks.

<comment><USER10> The difference between these two scenarios is that the asshole kid throwing rebar is easily detectable and to do it has to be at the location of the crime.

The asshole spoofing traffic data, depending on how the transmitters are set up could potentially do it from a long distance away, and may actually be hard to detect.

</comment></comment></comment></comment><comment><USER11> One of the interesting things that was proved in Cybernetics is that, in order to operate efficiently, a self-governing system must have a model of itself.

A digital twin is a digital "voodoo doll", as Asa Raskin (Jef's son) talks about in "Humane: A New Agenda for Tech" (44 min. watch) posted on April 23, 2019 [https://humanetech.com/newagenda/](https://humanetech.com/newagenda/)

A self-aware city is an efficient, healthy, safe city.

<comment> compiler-guy > A self-aware city is an efficient, healthy, safe city.

I don't see how efficient, healthy, and safe follow from self-aware.

Self awareness _may_ enable such things, but it is easy to see how they could also enable a dystopia.

<comment><USER12> Just don't think differently than the city managers and you'll be fine.

/s

<comment><USER13> If you have no bad thoughts to hide, you have nothing to fear!

</comment></comment></comment></comment><comment><USER14> (Still) looking for a link to the PDF of it, but I'm reminded of David's Gelernter's "Mirror World" concept from the 1990s ([https://en.wikipedia.org/wiki/Mirror_world](https://en.wikipedia.org/wiki/Mirror_world)), encountered it in one of my classes.

This is the second time something on HN actively reminded me of it funnily enough [https://news.ycombinator.com/item?id=19532236](https://news.ycombinator.com/item?id=19532236)

<comment><USER15> Google result #1 for query:

David's Gelernter's "Mirror World" filetype:pdf

[http://s3.amazonaws.com/arena- attachments/2745202/074de53e96...](http://s3.amazonaws.com/arena- attachments/2745202/074de53e9672f70dd29b9e9ea934e045.pdf)

</comment></comment><comment><USER16> What if the future resides in active transport + mass transit (and not cars)...

</comment><comment><USER17> Should each vehicle be autonomous and make its own decision based on the data that it can capture around (light/sound i.e. radio waves) and possibly open trusted data (maps, traffic, weather, etc.) rather than being dumb and follow a control center that can fail, be abused or get hacked ? I guess one who control the traffic data source, could influence the vehicle's decisions. Vehicles could talk to each other and propagate traffic information, but again vehicles have to trust each other. It comes down to a trust issue.

<comment><USER18> Should the car protect the driver or the other people around it?

If you have a hypothetical situation where the car is driving lawfully and a family jumps into the road. Assume the car has only two options. Does the computer hit the family or swerve into the telephone pole? Even if the computer believes turning will kill the driver.

2 cars talk to each other and realize one will need to turn to avoid an accident. Assume only 1 driver will survive. Which car does what? What if both computers turn and there are bystanders on both sides?

<comment><USER19> Yeah, these points are constantly brought up with self driving car tech and are honestly extremely boring. The cars will just slam on the brakes as the most effective way to avoid an accident. No software is going to look at the number of passengers or the value of passengers and decide which car needs to be sacrificed for the greater good.

Self-driving cars don't need to be programmed to be the ultimate moral arbiters of life. They just need to be safer than human drivers. What would optimal human drivers do in the instance that a family jumps out into the middle of the road? Probably just slam on the brakes. Not send their car head first into a semi trailer moving in the opposite direction.

<comment><USER20> Exactly. We already advise people that swerving is significantly more dangerous than just slamming on the brakes and maintaining some semblance of car control. That advice still applies when a computer is doing the driving. Longitudinal grip is a lot more reliable in various conditions than lateral grip, so that's what you go with.

</comment></comment></comment></comment><comment><USER21> Here in the UK we have 'smart motorways' that show lanes as closed and over a few miles, guide traffic into a queues but people still don't obey then completely and end up contributing to the messy traffic.

</comment><comment><USER22> How anyone thinks that cities are competent enough to do any of the fantastical scenarios described in the article is beyond me. This is going to be a huge waste of taxpayer dollars and we're going to end up with an expensive boondoggle that makes things worse than if they has just left things along and let the marketplace sort things out. Once such systems are baked into place, it's going to be hard to undo the damage they cause.</comment>


Sir Roger Scruton: 1944-2020 - <AUTHOR> https://blogs.spectator.co.uk/2020/01/roger-scruton-1944-2020/ <comment><USER2> A conservative voice, and one I didn't know well, but from what I've seen, respected. Rare these days.

His BBC series "Why Beauty Matters" is well worth viewing, and would make an appropriate remembrance:

[https://www.invidio.us/playlist?list=PLSkXu6NsLxmPlYpw6AVEO_...](https://www.invidio.us/playlist?list=PLSkXu6NsLxmPlYpw6AVEO_SHiRAwK4kuL)</comment>


In Mod We Trust - <AUTHOR> https://slatestarcodex.com/2019/02/27/in-mod-we-trust/ <comment><USER2> I had this idea recently, which is probably naive as I have never run a forum. Recently I read (on yc of course) that the amygdala's purpose is to switch off the empathy functions of the brain in cases where fighting maybe needed for survival. It could be that online text discussions because of their instant responses to responses tends to short circuit this aspect of our architecture. Knee jerk responses seem natural to this unnatural medium we use in forums. I know I am guilty of this behavior as a lot of others are.

What I propose is a delay while editable approach which gives us a natural cool down period. I have regretted posting things too hastily and by the time I realized I screwed up I have to try to put out fires. the delay could be an arbitrary period according to some administrative setting.

Also would be nice if we can suggest to others to revise with predefined tags such as 'personal attack' or 'blanket statement'. Perhaps by some measure the revision is forced.

The goal is to reduce how much work a dedicated moderator has to do and help shield some of the worst parts of it. It could be that a combination of self moderation with community moderation will improve signal quality and help reduce trama, threats, and accusiations.</comment>


Why your first Rust FizzBuzz implementation may not work - <AUTHOR> http://chrismorgan.info/blog/rust-fizzbuzz.html <comment><USER2> Putting the String issue aside, I just wanted to show the beauty of pattern matching.

        for i in range(1i, 101) {
            match (i % 3, i % 5) {
                (0, 0) => println!("Fizzbuzz"),
                (0, _) => println!("Fizz"),
                (_, 0) => println!("Buzz"),
                _ => println!("{}", i),
            }
        }

\-- edited: removed `.to_string()`, thanks chrismorgan

<comment><USER3> Weird to see this mix of a very imperative for-range iterative loop with a very functional pattern match, which makes it look similar to an SML or OCaml solution to FizzBuzz. I guess this is the definition of multi-paradigm right here.

Will Rust's type checker warn you of a non-exhaustive pattern match?

<comment><USER2> Here's the same approach in F# without the different types of String; therefore, easier to get more functional.

        let fizzbuzz num =
           match num % 3, num % 5 with
              | 0,0 -> "FizzBuzz"
              | 0,_ -> "Fizz"
              | _,0 -> "Buzz"
              | _,_ -> num.ToString()

        [1..100]
          |> List.map fizzbuzz
          |> List.iter (fun (s:string) -> printfn "%s" s)

<comment><USER4> Haskell -

      fizzbuzz x = case (x `mod` 3, x `mod` 5) of
          (0, 0) -> "FizzBuzz"
          (0, _) -> "Fizz"
          (_, 0) -> "Buzz"
           _     -> show i

      mapM_ (putStrLn . fizzbuzz) [1..100]

<comment><USER5> Pattern matching is one of the ways to get "two-mod" code where the modulus operator is used two times. For example, string concatenation and assignment operators do the same in this Python code:

        for i in range(1, 101):
            x = ""
            if i % 3 == 0:
                x += "Fizz"
            if i % 5 == 0:
                x += "Buzz"
            if x == "":
                x += str(i)
            print(x)

If anybody is randomly curious it can be fun to solve FizzBuzz in Haskell the same way that this Python code does it, but (to be more idiomatically Haskell) storing the FizzBuzz success in a Maybe (or some other variable). If you define the appropriate `~>`, and higher-precedence `|~`, and higher-precedence `|~~>`, you can write the above function as:

        fizzbuzz x =
            mod x 3 == 0    ~> "Fizz"
            |~ mod x 5 == 0 ~> "Buzz"
            |~~> show x

It's interesting because it's sort of a "follow-through guards" situation; the (|~) operator can at least be turned into a type signature of (Monoid m) => Maybe m -> Maybe m -> Maybe m.

</comment></comment></comment></comment></comment><comment><USER6> For what it's worth, String in Rust is similar to StringBuffer in other languages. You can append to a String; you can't append to a slice, which always represents a fixed view.

A slice has storage that is borrowed from somewhere else, but it itself does not have its own storage.

When you type `"foo"`, you are creating "static" storage (in the binary) and the slice is borrowed from that fixed-position location in memory.

Mostly, your functions produce Strings and consume slices.

<comment><USER7> But shouldn't they (String and slice) have some common super type to make this all easy to _use_?

<comment><USER8> I don't think a common ancestor is how you want to do this. Instead, I'd encapsulate the common behavior in a trait (a.k.a. an interface, in other languages), and then write functions that accept any parameters that implement that trait. In Rust, you can do this even on "built-in" types like strings. For an example, see the `print_me` function below, which operates on both string types using a trait that I've defined myself.

      trait WhatIsThis {
          fn what_is_this(self);
      }

      impl WhatIsThis for String {
          fn what_is_this(self) {
              println!("'{:s}' is a string!", self);
          }
      }

      impl WhatIsThis for &'static str {
          fn what_is_this(self) {
              println!("'{:s}' is a string slice!", self);
          }
      }

      fn print_me<T>(me: T) where T: WhatIsThis {
          me.what_is_this();
      }

      fn main() {
          print_me("Blah blah blah");
          print_me("Yada yada yada".to_string());
      }

<comment><USER6> And I expect virtually all of the methods on slice to be available on String before long. I think it's a bug that this isn't the case today.

It's already possible to have a function take "either a String or slice" generically:

        def print_me<T>(me: T) where T: Str {
            println!("I am '{:s}'", me.as_slice());
        }

The overall ergonomics of this (or at least, the well-documented idioms) will certainly improve in the coming months.

</comment></comment></comment></comment><comment><USER9> That was informative... and it reinforced my perception of Rust as something to look into if I ever have to do something that absolutely necessitates the use of something low level like C++/Assembly. But for everything else that I can get away with (and that is a lot so far) I'll stick with Go because it's so much faster and shorter to write.

<comment><USER10> If something absolutely necessitates using C++, why not use C++? (I'm genuinely asking.)

<comment><USER9> Because writing and compiling code/projects in it is very painful. Header files, custom makefiles, etc.

<comment><USER11> Pardon me, but 'custom makefiles' have absolutely nothing to do with C++. There are IDEs with C++ support.

Also, while working with headerless languages may be easier, calling working with headers 'very painful' is hyperbole.

<comment><USER12> Irregardless of IDEs, I'd still need to learn how to use cmake and other systems to build and use libraries. It's a large pain compared to `pip install ...`.

<comment><USER11> _...need to learn how to use cmake and other systems to build and use libraries._

On OSes for which this is true you'd be forced to compile python yourself as well, because it's also just a dependency (of pip, for one!) written in a compiled language.

Edit: My point is: usually it's as easy as 'yum install', but on the rare occasion you will need to compile, I admit. However, that could happen with pip too; don't tell me its repos are always completely up to date. And in those cases it won't be quite as simple as 'pip install'.

</comment></comment></comment></comment></comment></comment><comment><USER13> Here's what the final example from the blog would look like, if you were to directly translate it into C++: [http://coliru.stacked- crooked.com/a/265c6ec6fb6751a9](http://coliru.stacked- crooked.com/a/265c6ec6fb6751a9)

Now, of course, no one would program that way, but I think it does help visualize what really happens.

The obvious cost from delaying the printing is that you have to branch a second time, later in the code, to consume the value. I wonder how feasible it would be to introduce some kind of compiler transform that could invert the control flow, essentially pasting the surrounding code into the inner branches, to make this abstraction cost-free.

</comment><comment><USER14> "may not _compile_ " would be a better title than "may not work". To a programmer familiar with compiled languages, "may not work" implies that the code will compile but produce the wrong result/a crash/undefined behavior. Rust aims to catch mistakes at compile time, so the headline is quite sensational under this interpretation.

</comment><comment><USER15> > There is a trade‐off here for them; as a general rule, such languages have > immutable strings

This is a bit disingenuous. I understand what he's aiming at, and he also mentions StringBuilder later on, but saying that a GC necessatites immutable strings is simply not true.

As a counterexample: PHP has mutable strings and uses copy-on-write in situations where it "feels" that conflicts could occur. (Granted PHPs rules on how it handles its variables is a bit arbitrary and magical, and PHP didn't have a GC till version 5.3 .. but the argument still stands.)

<comment><AUTHOR> Yes, I know I was being rather fuzzy there. I was intending to give a general impression of where the differences lie.

</comment></comment><comment><USER16>
        for i in range(1, 101):
            print('FizzBuzz' if i % 15 == 0 else 'Buzz' if i % 5 == 0 else 'Fizz' if i % 3 == 0 else i)

python doesn't have expressions? oh dear me.

<comment><USER17> The OP's characterization is reasonably accurate _in my experience_. I've run into several Python programmers who didn't actually know about Python's special "if expression" syntax.

Moreover, the code you've presented here certainly isn't idiomatic, which counts for something.

<comment><USER16> sure, but when you're implicitly comparing code segments (by placing them next to each other), you should at least make the effort to make them more the same, instead of pointing out that one language is missing a feature used in the other language, especially when this claim is false.

the formatting can of course be improved:

        for i in range(1, 101):
            print('FizzBuzz' if i % 15 == 0 else
                  'Buzz' if i % 5 == 0 else
                  'Fizz' if i % 3 == 0 else
                  i)

there's also a suspicious "return" at the end of the second code segment which mysteriously appeared some time after the first one; looks like the author was trying a little too hard to differentiate python and rust.

<comment><USER17> I disagree. I think code comparisons should be done using _idiomatic_ code. I personally would not consider chaining `if` expressions like you've done here idiomatic Python.

<comment><USER16> and yet people write:

        let result = if i % 15 == 0 {
            "FizzBuzz"
        } else if i % 5 == 0 {
            "Buzz"
        } else if i % 3 == 0 {
            "Fizz"
        } else {
            i
        };

in rust? either this is good, readable code or this is poorly written, unintelligible code. you cannot make the argument that sometimes it is readable and sometimes not based on the presence of braces.

<comment><USER18> The comparison is not "readable", it is "idiomatic". (I'm not saying either is unreadable, just pointing out that you're attacking the wrong thing.)

</comment></comment></comment></comment></comment></comment><comment><USER19> Scala guy here. This kind of thing is useful - I'm happy to pay the costs of garbage collection so I don't need it for ownership, but for separating out async operations from sync operations, or database-transactional operations from non-database operations, it's great to be able to represent that difference in the type system (and without a huge syntactic overhead). But then if you want to abstract over types like MaybeOwned, you need higher- kinded types to be able to work with them effectively. Has Rust got any further towards implementing those?

<comment><USER20> Unfortunately I don't think higher-kinded types are planned for Rust 1.0. See the rfc: [https://github.com/rust- lang/rfcs/issues/324](https://github.com/rust-lang/rfcs/issues/324) and this HN thread: [https://news.ycombinator.com/item?id=7997926](https://news.ycombinator.com/item?id=7997926)

<comment><USER21> They plan an aggressive release schedule, though:

[http://blog.rust- lang.org/2014/09/15/Rust-1.0.html#release-p...](http://blog.rust- lang.org/2014/09/15/Rust-1.0.html#release-process)

So they could come in one of the post 1.0 releases and that could possibly be soon.

</comment></comment></comment><comment> michel-slm While FizzBuzz is a low-pass filter in most languages, with Rust it makes for a fascinating window into the language design!

<comment><USER22> ... and therefore a viable interview question :)

</comment></comment><comment><USER23> I've always liked this c++ implementation of FizzBuzz, its not the most clear or logical but its short;

        const char* outs[] = { "%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n" };
        for (int i = 1; i < 101; i++)
            printf(outs[((((i%5)==0)<<1)+((i%3)==0))], i);

<comment><USER24> Is that allowed by the standard? (Passing a parameter to `printf` but not referencing it, in the non-"%d\n" case?)

<comment><USER25> C11 §22.214.171.124

      If the format is exhausted while arguments remain, the excess
      arguments are evaluated (as always) but are otherwise ignored.

but that's just a consequence of stdarg, which does not require all supplied arguments to be consumed.

</comment></comment></comment><comment><USER26> The meandering run-on garden path sentences make this post very hard to follow at times.

<comment><AUTHOR> Yeah, I'm afraid I do have a bit of a tendency to letting that happen.

</comment></comment><comment><USER27> In the contrived Python example, FizzBuzzItem is only called if the result is a number (not in any of the modulo 0 cases) - is that intended? I can see that it works, but it's breaking the analogy for me with the Rust code.

<comment><AUTHOR> Whoa, that was indeed a mistake. Sorry about that. Fixed.

<comment><USER27> Thanks, also is the "try it" link on rust playpen linking to the wrong code?

<comment><AUTHOR> No, that's the code that is supposed to be there. It's indicating that there is nothing that you can put as the lifetime there.

</comment></comment></comment></comment><comment><USER28> You know Rust team, it almost might be worth specializing this exact error message about mismatched string lifetimes to include a URL to this post, if not mismatched lifetimes in general.

You _know_ it's going to be a FAQ....

<comment><USER29> We have unique diagnostic codes for each error, and I have plans (and an in- progress PR) that points to a web page with a much longer "this is what this error looks like, here are some strategies with how to fix it" in the works.

</comment></comment><comment><USER30> The feature list in rust really does have my eye. The biggest one in particular was _type inference_.

The _reason_ type inference was such a big one was because if you use it right, annoying situations like "Two types of strings? What is this?" go the hell away. You have three types, static built in and binary strings, and a third that only makes the gaurentee that the datatype can do all the things a string aught to be able to do, and from there the compiler works out the practical implementations.

This article has done a great job in killing my enthusiasm for the language.

I guess it's implementation of type inference only goes as far as golangs, in that const keyword.

Maybe I was being a bit naive in what I was expecting, hell maybe what I'm expecting isn't reasonably possible. bleh.

<comment><USER18> Rust has type inference similar to Haskell: type information can flow "backwards". It is very different to Go and C++ where types of locals are 'inferred' from their initialiser, and nothing else.

E.g.

      fn main() {
          let mut v;

          if true {
              v = vec![];
              v.push("foo");
          }
      }

is a valid Rust program: the compiler can infer that `v` must have type `Vec<&str>` based on how it is used. I don't think it's possible to syntactically write a Go program at all similar to this (a variable has to be either initialised or have a type), and the C++ equivalent (using `auto v;`) is rejected, as `auto` variables need an initialiser.

<comment><USER31> Doesn't type inference stop at function boundaries, though? I'll grant you that idiomatic Haskell uses type annotations for function signatures (unlike idiomatic OCaml), but it is optional (which is convenient in a REPL).

<comment><USER29> Yes, it does, but that's a deliberate design decision, not a flaw. We decided enforcing this idiom was a good idea.

<comment><USER31> I think it was related to the quality of error messages as well.

<comment><USER29> Right. When you infer signatures, a change in one place can cause an error somewhere else, and so the error message is very misleading.

</comment></comment></comment></comment></comment></comment><comment><USER32> What's up with the "alternative" form of Python? What about braces, semicolons, and an explicit main() function makes that version worth showing?

<comment><USER33> Well, "from __future__ import braces" is a joke, so applying the transitive property of jokes, I assume this alternative version is a joke as well.

<comment><AUTHOR> Indeed it is. And people should certainly try executing `from __future__ import braces` if they're not familiar with what it is.

As for the main function and `if __name__ == '__main__': main()`, that part _is_ actually generally recommended.</comment></comment></comment>


Smart Headlights Inch Closer to American Roads - <AUTHOR> https://www.nytimes.com/2018/11/21/business/headlights-adb-high-beams.html <comment><USER2> Now I know who's to blame for assholes driving with their high beams on in the city and blinding pedestrians.</comment>


Fuze for Nintendo Switch: An easy-to-learn text-based programming language - <AUTHOR> https://www.fuze.co.uk/nintendo-switch.html <comment><USER3> What's great about this is that my daughter and I could use the living room tv to make a game- Even if the game is simple, it'll be a lot more compelling to a kid if they can design it themselves and then play it on a giant tv- Looking forward to trying this!

<comment><USER4> I think it's fantastic that it brings us right back to one of the things that made the first home computers so compelling: the ability to see what you just did on your TV.

<comment><USER5> Eh, what. You can connect any modern device to a tv through hdmi and hdmi convertor. Pc:s, phones, pads...

<comment><USER4> I think maybe I'm explaining it wrong. I'm sorry. What I mean to say is that there was a certain wonder and a strange form of legitimacy that writing software on a "real" computer that kids got when they were able to type something into the same device that ran their favourite games/software from "real" developers and see it show up on the screen just like the big boys. There was a sense of "Wow, anything is possible now that I can develop real software!"

The legitimacy of the company that produced Mario, etc. will rub off onto a new generation of kids and make them feel like they are really playing with the big boys.

I don't know how to explain this right. I know that I myself still get this feeling when I see something I wrote running on an actual Atari Jaguar because I was such a fan of that console when I was a kid. It's like, "wow, I'm actually a real developer! I made it!"

I start thinking about all the things I can do and all of the possibilities that are more than just firing pixels on a screen.

It's a form of technological empowerment, and it's something that makes a huge difference in a kid's life. I know it did for me when I first discovered BASIC on the Commodore.

<comment><USER6> You're completely right there's a positive emotional response to this - <USER2> like the click when you pressed the cartridge, the same reason Nintendo brought the _click_ sound to the Switch controls - the sound means "it's fun time!".

This is about telling stories with your kids - it's a canvas in your living room for everyone to see, give ideas and encourage - all packed in a box you have positive emotions towards.

It's not "any device" that can connect to the TV - it's your Switch, and you can make games on it now!

Fuze can make programming fun :)

<comment><USER5> My kids would rather play minecraft than code. They can create stuff in it too. Instant gratification trumps intellectual development 9/10 times if given free choice. I know some people have the capability to motivate kids in anything but the only way I know of to redirect mine from games is pulling the plug.

Yes, I've tried many ways to get them interested on how the stuff they enjoy actually works, but they prefer to use digital stuff just for entertainment.

<comment><USER6> The problem is how it's being frame - playing minecraft is intellectual development in a way.

But I get the instant gratification part - which this language, if was well built, should have small milestones do display progress.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> This makes me so excited. I grew up just after the BASIC era and my first computer was a 486 running MS-DOS (without a BASIC interpreter), so my introduction to programming came quite late. I had endless fun tinkering around in a commercial product called DIV Games Studio [1]. It included a very simple language with everything from parallel game loops to video modes, in an IDE with a debugger, sprite editor etc. You could even compile your games to DOS executables for distribution. Apparently people are still keeping the project alive and are making games with it: [http://div- arena.co.uk/games/](http://div-arena.co.uk/games/)

[1] [https://es.wikipedia.org/wiki/DIV_Games_Studio](https://es.wikipedia.org/wiki/DIV_Games_Studio)

<comment><USER8> MS-DOS shipped with QBASIC.

[https://en.wikipedia.org/wiki/QBasic#History](https://en.wikipedia.org/wiki/QBasic#History)

<comment><USER9> Or GW-BASIC, for people and computers of a certain age.

</comment></comment></comment><comment><USER10> It's worth noting that FUZE BASIC is a commercial fork of Gordon Henderson's RTB: [https://projects.drogon.net/rtb/](https://projects.drogon.net/rtb/)

If you want to hack on the code, there's a mirror for the original RTB source here: [https://github.com/scruss/rtb](https://github.com/scruss/rtb)

It diverged from FUZE back in 2013, though, so it will be quite different but may be fun for anyone who's more interested in the guts of the interpreter than the language itself.

</comment><comment><USER11> Is anyone else greatly annoyed by the FUZE/Python comparison block on the homepage (fuze.co.uk, ~halfway down the page) that compares the Fuze loop and Python?

They write the "print" statement like it's damn Java. A simple `print(outstring)` would have been sufficient, instead of two lines of Java- esque sys.stdout.write nonsense.

Not to mention something like `colored` and `colorama` or `click` would solve the colored text thing. Though I'll admit having globals like INK and PAPER makes things a bit more intuitive for kids.

But the fact that they go out of their way to make the Python example more intimidating is a little... annoying.

<comment><USER12> Including the shebang and encoding at the top, using stdout for some reason, handling all the color formatting in one dense string...

This smacks of the writers trying to intentionally make their comparison language look obtuse. A pattern I've seen elsewhere and am never a fan of.

<comment><USER10> This is absolutely what they're doing. It condenses quite easily even to:

        import random
        import time

        while True:
            col = random.randint(30, 48)
            print("\x1b[{}m{}\x1b[0m".format(col, "Hello World"))
            time.sleep(1)

Which is still pretty obtuse, but the "random colours" task seems hand-picked to penalize Python.

It neglects to mention that Fuze has virtually no utility beyond an educational curio, too, versus Python which is used for many, many things.

<comment><USER13> And yet, the example correctly points out that Python, while a suitable choice, is not the ideal choice when it comes to programming for kids. Classroom time is precious, and kids need to be able to get right into the meat of things. Things that are easy for us to grok, like imports and functions vs methods, are tough for raw beginners. And _no_ kid should be forced to contend with ANSI escape sequences!

More appropriate would be to compare with some Python programming kit that had similar graphic environment abstractions:

      fontsize(4)
      while True:
         ink = rndcolor()
         paper = rndcolor()
         text("Hello, world!")
         sleep(1)

But even then, unless you wrap Python with something that handles imports/globals/etc for you (a la Processing), doing this in Python is still going to take a bunch of extra gunk.

<comment><USER10> One could argue that Fuze - a commercial programming language - _is_ a bunch of extra gunk versus the free, open source and widely available alternative of almost any other language.

But you're right, a fairer comparison would be against a Python learning environment that sweeps some of the cruft and gotchas under the rug, and complexity is _very_ tough for beginners.

Speaking from experience running and helping in workshops, I found a lot of Python learners would name their code "somemodule.py" after the module they're learning about, and this would subsequently break "import somemodule". So there's a lot of merit in "safer" environments.

</comment></comment></comment></comment></comment><comment><USER14> This looks awesome and I can't wait to give it a whirl with my kids.

I am, however, a little concerned about one of Dijkstra's "unpleasant truths"[0]:

> It is practically impossible to teach good programming to students that have > had a prior exposure to BASIC: as potential programmers they are mentally > mutilated beyond hope of regeneration.

I'm not qualified to interpret Dijkstra, so how serious of a warning or truth is this? Is he just generally polemical?

[0] [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html)

<comment><USER15> First, we teach people variables, loops and conditions. Then we teach them procedures. Then we are horrified that newly minted "programmers" write code that is a giant mess of nested loops and conditionals, split across arbitrarily created procedures that manage bloated and fully mutable program state.

Mental models are important. Life would be better for everyone if people started learning programming with LISP, Smalltalk, or at least C#'s LINQ in LINQPad.

<comment><USER16> Could you recommend a remedy for someone who's spent a great chunk of their programming experience in misdirection?

I have only recently realised that my terrible misunderstanding of programming is slowing me a lot.

<comment><USER17> Depends on your background, if you are .Net maybe F#, Java maybe Kotlin, PHP (and I say this as someone who writes PHP as a day job) maybe any other language in existence.

Functional programming is a completely different conceptual model and even if you don't use it day to day it teaches you some important principles.

<comment><USER16> I have been badly taught Java at university (not sure if the course sucked, or I did, but I am a blunder) and have just found myself drawn into the JS world. I really enjoy the concepts of OO, but I feel like my knowledge is very shallow.

Is it good if I rebuild my foundation on JS? I feel like JS is a bit, uh, messy.

<comment><USER18> Do yourself a favor (if you want to be a web developer):

Understand JavaScript deeply.

Write your applications in TypeScript.

</comment></comment></comment></comment></comment></comment><comment><USER19> Does anyone have any experience with developing home-brew or indie games on the Switch here? I've considered getting one, but I'm limited by the rule "never buy a system for which I can't develop my own software" .. to what extent is this true of the Switch?

I'd love to put my Lua-based programming IDE on the Switch, which turns out is a bit similar to this Fuze project .. but I'm un-certain just how much of the Switch is locked down and how much is available. Do I have to register to get full features as a developer, or something?

<comment><USER20> I haven't checked in on it recently, but last I did inquire, they were being very selective with developers that they approved for development on the platform. I think they decided to go with a highly selective quality over quantity approach unlike what they did on the Wii U which was pretty easy for just about anyone to get a development kit for.

<comment><USER21> The original Wii was very selective when I looked into what it took when it first came out. Do you know whether the Wii U was fairly open _initially_ , or just towards the end? I'm wondering if they just always start off being selective to ensure the quality is there initially, and open up more later?

That would make sense, as I think there's plenty of cases where a device hasn't been selective enough with the marketplace initially, and the deluge of crap makes people think the market isn't worth using. It's much easier to shovel crap out the door immediately than it is to deliver a polished product, so early markets can be quite bad.

<comment><USER20> It was probably 1/2 way through the lifespan of the Wii U that our team was approved to develop for the platform. Not sure how restrictive they were before that.

Everything I've heard is that Nintendo is really trying to keep the quality bar high on the Switch e-shop though, which I can definitely appreciate. Sucks for really small shops that don't have the ability to jump through all the hoops and get approved, but its nice as a player to know the games probably aren't going to just be gimmicks. That said, the initial release of NBA Playgrounds on Switch was pretty abysmal... Fortunately they've been working to clean it up. I guess Nintendo probably just didn't want to be left out on their initial release and felt like an arcadey basketball game would be a perfect fit for the Switch demographic.

</comment></comment></comment></comment><comment><USER22> If this is anywhere near as powerful as PICO-8, we could start seeing ports of those games over to this. In fact, I'd probably port (and finish) my PICO-8 game if it's powerful enough.

</comment><comment><USER23> One quick note, they did not get the google analytics right on their download page. You can see the JS tracking code under their black head banner at [https://www.fuze.co.uk/download-fuze.html](https://www.fuze.co.uk/download- fuze.html).

</comment><comment><USER24> I so, so wish something like Fuze was available for ioS. I'm an old-school ZX- Spectrum tinkerer and I still miss Basic. I can't help thinking it would still be unsurpassed as a simple (text-based) way of teaching coding to kids.

<comment><USER25> There are so many things like Fuze for iOS. I've tested a number of them on my kids over the years, and I'd suggest:

Codea is great. Lua, not basic. Great asset management for games. Pythonista is pretty good. Python, not basic. Swift Playgrounds is pretty great. Swift, not basic. You can do pretty much anything, including 3D and AR.

<comment><USER24> You know what Lua, Python and Swift have in common? None of them are as immediately accessible as Basic.

Visual programming languages like Scratch et al have risen for a reason.

<comment><USER25> Swift in a playground is as immediately accessible as basic.

My 5th grade son has been out of school sick this week, and he wanted to "learn to code" while he was out. Monday he started with scratch on RPi. He quickly hit the wall there; dragging blocks around was tedious and (from my perspective) the event model isn't obvious enough or rich enough to what he wanted (a simple space shooter).

He asked if he could try something where he could type his code. I decided to let him try swift playgrounds. As of this morning he's worked through the chapters on commands, composition, functions, for loops, and conditionals. He's completely baffled by the logic chapter -- he was in tears trying to understand the concept of NOT, and so I asked him to take a break from it. (I don't get it... he understand booleans fine, but the idea of negating the boolean is clearly throwing him.) He skipped ! and did fine with && so shrug. Fifth graders aren't going to get everything.

I have quibbles with the content progression in the Swift Playground lessons but overall it's working as intended. It's pretty buggy though -- sometimes the animated character is clearly on the wrong squares due to an apple bug and that really hurts learning comprehension.

The real carrot for him, though, is that he's learning the language that iOS apps are made in. That's really motivating him.

With his older siblings I helped them learn Codea and while Lua is great for learning, they got hung up on the concept of per-frame update functions, which is not a Lua thing but a Codea thing. I think an OOP model is a better metaphor for learners. They had fun in Codea but none of it stuck with them.

My six year old daughter is also working (slowly) through swift playgrounds. She asked me for help and when I did she berated me for not using camel case. God help me when she learns about tabs versus spaces.

Anyway: screw BASIC.

</comment></comment></comment></comment><comment><USER26> If Nintendo's policies haven't changed since SmileBASIC on 3DS/WiiU, the Fuze IDE will be the only way to modify your code. Editing on PC or even emailing it to yourself is right out.

<comment><USER27> At least they say USB keyboards are supported. SmileBASIC on the 3DS is great until you realize you have to use the stylus for all input. I think I'd rather go back to TI basic on a calculator at that point.

</comment></comment><comment><USER28> There's Labview, Scratch, and now I think, Luna. Are visual programming languages really now so common that we need to specify "text-based" for new computer programming languages?

<comment><USER29> It makes sense in this context because Switch is a game console with touch screen and game pad (joy cons) as default input modes. Both of those types of input are not really typing-friendly, so one may expect that the language will accommodate for that and be fully or partially visual.

<comment><USER30> In the article they say it supports standard usb keyboards.

</comment></comment></comment><comment><USER31> Is this an official Switch release sanctioned by Nintendo or do you need to jailbreak the Switch to run this?

<comment><USER32> From the press release PDF: "And just in case you run out, you can create your own or even purchase additional game packs directly from the Nintendo e-shop."

It also says it retails at 30 USD. I think it's a legit app for the Switch.

</comment></comment><comment><USER33> Just to make sure I'm not missing anything, this is not yet available, right?

<comment><USER34> nope, sounds VERY early honestly

</comment></comment><comment><USER35> Hello Bluetooth Keyboard support! Cannot wait to try this.

</comment><comment><USER36> There's no reason i can see yet that this won't pair well with the Labo (since the Labo uses the joy-con's standard IO to work)

and THAT sounds fun

</comment><comment><USER37> Looks a lot like BBC Basic.

</comment><comment><USER38> >If you are a budding creative digital artist and are willing to provide game style graphics, free of any royalty, for use in the release version then in return, you will be credited within the application and receive a free full version of the software for both Nintendo Switch and Windows, along with a selection of merchandising items we may have available at the time. To get in touch please use the contact page here

How about, you know, paying the artist?

<comment><USER39> It's just an offer and you see, those words 'budding' imply amateur work which might not be worth much. It gets me sore to see innocent things picked to pieces. I agree on BS internships that use people. But this doesn't appear malicious.

<comment><USER38> You may be right. Wouldn't it be better to run it as a competition or something in that case?

Anyway, it doesn't inspire confidence - developing a game and getting it published (especially on a physical Switch cartridge) is much more expensive than hiring an artist. How do they expect to succeed? Why aren't they crowdfunding?

<comment><USER40> "Wouldn't it be better to run it as a competition or something in that case?"

Sounds like a worse idea to me. Lots of people do work and only a handful win. With their current offer, lots of people can do work and lots of people can win.

Also, the Switch is perfectly capable of using the internet, and has onboard storage. There is no technical barrier to them choosing 25 winners a month and offering them as download packs even after release.

</comment></comment></comment></comment><comment><USER41> ... As opposed to all those non-text-based programming languages?

<comment><USER42> It's important to distinguish from visual/block-based programming environments directed at families and children, such as Lego Mindstorms, [https://scratch.mit.edu/](https://scratch.mit.edu/) , [https://developers.google.com/blockly/](https://developers.google.com/blockly/) , etc.

<comment><USER43> I disagree. When talking about things you don't need to go out of your way to indicate you are the same as 99% of the group you are in. It is assumed. You need to go out of your way to indicate when you are NOT like 99% of the group.

and the fact that it's for the switch doesn't make one automatically assume it's part of the visual programming group because most of the switch games were probably programmed with text based languages.

</comment></comment></comment><comment><USER44> Just in time for Labo?

</comment><comment><USER45> Sorry to sound so negative, but the closed ecosystem for this is a very bad fit for encouraging young people to code. They won't be able to share it amongst themselves, share to other devices such as smartphones etc. There clearly is a gap in the market and someone with enough resources could come up with an ecosystem that let's young people code in a simplified environment and share those results. in fact there's quite a few of such initiatives, it's just that they are lacking in terms of embracing many modern devices and latest trends such as sharing via github etc.

<comment><USER46> Why is "sharing to smartphones" in the set of things we want out of the technology stack that encourages young people to code?

Smartphones aren't the Nintendo Switch, and (for me, at least) wallpapering over the differences in hardware platforms is not an exciting part of the learning-to-code experience.</comment></comment>


The technology of the web, reinvented - <AUTHOR> http://beta.dadi.tech/ <comment><AUTHOR> We're really excited to share our project with you. DADI is over two-years in the making and we've just launched in beta.

The DADI platform was born out of frustration. Our previous business was an agency, and during the 10-years we ran it we built hundreds of content managed websites and apps for clients all over the world. Typically we'd use third- party content management platforms and user management tools, but this always ended up being a frustrating experience, with development complexity slowing us down and limitations within these tools limiting our vision. For the most part, the frameworks and tools we were using seemed locked in the past.

So we set about building our own.

DADI is a powerful, API-first development stack for products of all sizes and scale. Think of DADI as a connected collection of micro services that manage content and user data together in one pot, and has the intelligence to decide who sees what content and when.

It's evolving all the time and we have a roadmap that takes us well into next year, but we're excited to share it with you as it stands.</comment>


Emphasizing My Web App's Free Trial Improved Its Sign Up Rate By 25% - <AUTHOR> http://www.mattmazur.com/2012/06/emphasizing-my-web-apps-free-trial-improved-its-sign-up-rate-by-25/ <comment><USER2> Very interesting. I have been thinking about Sign up buttons/titles as well. It does seem more intuitive to click on "Sign up free" vs "sign up".</comment>