"Snap is the programming language for UC Berkeley’s Beauty and Joy of Computing curriculum (BJC), which aims to bring introductory CS to a wider range of students than the typical intro to programming does. BJC is also used at the high school level, and is a curriculum for the new AP Computer Science: Principles test."
Curious to see how this works out, with JS being the native way to write applications. Been excited about the Firefox platform because of this for a while (especially for POS/embedded/tablet applications), but I'm developing a cross-platform app for both iOS and Android in Ionic, and I'm much less interested in PhoneGap now that I've actually done something with it. (I'm a big proponent of Angular at work, it's not that part.)
I think I was able to get about 40% of the way there in about five hours in Cocoa, the only real stumbling block was dealing with ViewControllers and UITableViews. Unfortunately for non-native platforms, if PhoneGap is positioned as a good starter for low-barrier apps, it doesn't bode well if a developer can go in fresh and with about the same amount of effort build one platform in whole, and about 20% of another...
I spent some time (>18 months ago) testing PhoneGap for potential use with what would become http://recent.io/, but PhoneGap was too slow on actual devices to be usable. Launching a "Hello, world" app took something like 30 seconds on an iPhone 3GS. Maybe hardware speed increases have helped to fix that problem.
I haven't tested Ionic, though the Creator utility looks promising. Do you have any experience in how well Ionic interfaces with native APIs, like Twitter/Facebook on iOS and sharing on Android? And how do Ionic-built HTML apps perform in terms of speed?
Creator does look great, but so does Interface Builder. IB has caused me to leave the computer in a state of shock from frustration, so I'll have to reserve judgement.
Performance is fairly good. I get around 5 seconds on a 4s, and about 8 on a Nexus S, though I haven't tested with recent code on the Android Phone. The only native API I've used has so far been push notifications. While there's a plugin for that, it works as a pretty thin bridge between native code, and a couple of dispatch functions that use stringByEvaluatingJavaScriptFromString. I've had to fix things, so it means having to understand Cocoa code anyway.
There are also some visual issues with the code, in that the view will save its state if the user uses a route in a view to change the current view. Normally this would help, but if it frequently updates the view changes back and then it flickers.
Overall it's ok if you really love web tech, but I'm learning native iOS development in response to my experience.
I'm currently developing an app with the ionic framework and I'm quite pleased with the overall performance (both Android and iOS) and the UI boilerplate it provides. I haven't developed anything super advanced yet, but so far so good.
The funny thing is Doctorow makes references to "just metadata" years before it became a public issue, however this goes beyond metadata, and will eventually contain facts about people, not just tangential stuff.
"This isn't P.I.I."—Personally Identifying Information, the toxic smog of the information age—"It's just metadata. So it's only slightly evil."
One quibble: Metadata is facts about people. Logging meta-data isn't a slippery-slope toward also catching facts. It's a problem from the jump.
"Joe goes to the gym three times a week" is a fact.
"Joe's network activity originates from a gym on the following schedule" is not only at least an equivalent fact, in practice it's far superior to the simple case. It can give you subtleties [1], it's less susceptible to subterfuge [2], it gives you actionable evidence of specific occurrences, etc.
Consider the CIA doesn't use meta-data to target hellfire missiles because it's less identifying than actual data. They use it because it's far better.
[1] Joe never goes to the gym on Saturday. Joe goes to the gym more during the spring than the winter. Joe almost never misses a day when Sally is at the gym. Joe and Sally nearly always leave at the same time.
[2] It's trivial for someone to say they go to the gym on a schedule they don't. It's not even too difficult to get a second or third party to fudge, embellish or outright lie on their behalf. It's much more difficult to get a second or third party to help you make your device convincingly take the claimed routine, without you creating any conflicting meta-data that gives up the ruse.
This is important and should be a top-level post. I think many people miss this in discussions about privacy, and this is the reason I believe the privacy is dead. Everything you do is metadata about everything else you do, about everything else people around you do. You can infer any piece of "data" you want given enough (meta)data sources and computing power.
Thus the only way we can keep privacy would be to roll back the last 50 years of technological progress, and that's why I'm starting to entertain a thought that we (as a society) should drop the concept entirely and tackle the change head-on, instead of being dragged there by force by the ongoing progress of technology.
Management. Business Analysts. "Metawork" in the words of a coworker who used to architect BPM implementations at the parent corporation of my job. Getting consensus from possibly hundreds of stakeholders.
Generally, the disconnect is that management is under the assumption that you can manage your way to success, so they add more overhead to watch and prod at the proceedings. Development is almost always an afterthought in most business projects. The first thing they do? Get consensus, which is generally everyone putting in ideas so that they seem involved—see Atwood's Duck[1]. After you have a ton of often contradictory ideas, you need to have them prioritized. And since nobody managing the project is technical, they need to hold countless "prioritization meetings with stakeholders and implementers." Often times the meetings will grind to a standstill while process analysts and engineers argue over the wording of things. Usually the analyst will tell the engineer that the business has standardized on a set of terms, of which are not the trade names for things. Maybe everyone uses a set of terms which aren't the "correct" wording.
After things are prioritized based on the wrong criteria, they're then pushed off to an engineering group who are tasked with implementing things exactly to spec. Since the definitions are incorrect, they need to constantly circle back and check with the stakeholders to double check. Occasionally checking in will involve a "subject matter expert" who is on vacation, and the only one allowed to answer the question. (Thus stalling that item and anything depending on it.) Others will often say "it's above my paygrade" in an attempt to avoid culpability.
After the project has run long and only has a majority of the features complete, people are reassigned to other projects, and the app is sent to QA to hand-test features. Sometimes it will involve the "stakeholders" sitting in a room for days or weeks, manually clicking their way through the interface. Maybe the project is declared a boondoggle, deleted, and replaced with someone else's pet project.
It is a bit scary that an accurate description of reality could easily have been sourced from Dilbert.
The tough reality is that certain projects have a scope such that a small team could never reasonably be expected to capture the requirements of the project. Also, remember that large enterprise projects are generally built by people who are not users themselves. This is where the technology crowd often draws false conclusions, reflecting on projects of their own, where they have intimate knowledge of the problem space. There are likely very few forward-thinking engineers who also have visibility into the intricacies of the various SS systems. This is where the layers get piled on and the efficiency vanishes.
This is true. And it doesn't just apply to governments, but any organisation that is large.
Once a organisation gets to a sufficient size, organising and allocating resources and communication starts to eat up a disproportionate amount of time, if the organisation is left to drift into whatever shape it likes.
At my day job we generally will bundle small procedures/scripts into a simple webapp with either flask or express.js. For our backend systems, we're looking into rundeck to allow non sudoers the ability to restart a system service. That might be potentially useful.
It seems like there might be a niche for a "Delphi for the web" stack of reusable components and standard backend systems.
This sounds really cool! So non-engineers can just click "run" on a system service and get the output? How do you handle small procedures/scripts that require them to put in inputs? Or does that not pop up for you..
From the article: "At age 18, arrest rates were 12 percent for white females and 11.8 percent and 11.9 percent for Hispanic and black females, respectively. By age 23, arrest rates were 20 percent for white females and 18 percent and 16 percent for Hispanic and black females, respectively."
The parent comment is clearly referring to the HN headline, not the article itself. Since young men do not massively outnumber young women, it is not the case that 40% of all US youths have been arrested.
It's in the article.
"Snap is the programming language for UC Berkeley’s Beauty and Joy of Computing curriculum (BJC), which aims to bring introductory CS to a wider range of students than the typical intro to programming does. BJC is also used at the high school level, and is a curriculum for the new AP Computer Science: Principles test."