Apple tells U.S. judge 'impossible' to unlock new iPhones - aaronbrethorst
http://www.reuters.com/article/2015/10/20/us-apple-court-encryption-idUSKCN0SE2NF20151020
======
BWStearns
I applaud Apple for having made it technically impossible for them to betray
their customers' trust, but I was just wondering about third party
applications which have been granted access to various data on the phone. If
the prosecution is looking for evidence in photos, and the suspect has granted
Facebook access to their photos, could a judge compel Facebook to use their
access to the phone in question to retrieve photos that were never on
Facebook? I ask this in both a legal sense as well as a technical sense as I
am not familiar enough with iOS permissions/API.

~~~
avn2109
>> "...technically impossible for them to betray their customers' trust..."

Impossible is a very strong word in this context. Let me take the opportunity
to remind everyone that an iPhone is a very complicated device running nearly
100% closed source hardware and software, include all sorts of opaque
cryptographic hardware and a known-to-be-compromised secondary baseband
computer, such that the security of the device's entire stack, top-to-bottom,
could not possibly be verified by a third party in principle, let alone in
practice.

In light of that fact, security claims by Apple could be regarded as changing
(reducing?) the probability of the law getting your data by technical means or
collusion with Cupertino, but certainly not as insuring that the probability =
0.

Edit: This is not an indictment of Apple per se, since the same is true of
literally every smartphone ever constructed, but at least e.g. Blackberry
isn't out there claiming that they're unable to compromise your data, full
stop.

~~~
BWStearns
I wasn't trying to imply that Apple has forged a perfectly secure complex
system, but rather that they have (likely) legally and practically prevented
themselves from being compelled to betray their users. While forcing Apple to
hand over a password they have stored in plaintext is quite definitely in the
legal realm of accepted behavior, I don't think a judge could reasonably order
Apple to devote engineering time towards defeating their own security system
in order to make the prosecution's job easier, especially when it is not
actually assured that the effort would be a success and any success would
preclude the same work from being used in subsequent prosecutions.

I was merely skipping the caveats (back doors, implementation error, leaky
behavior, etc) and giving benefit of the doubt with regards to honesty of
intentions.

~~~
ckcheng
I think "legally and practically prevented" is key here.

Not sure if anyone noticed but this article is like a continuation of the
story from days ago [1] when the judge in the case "questioned the
government’s authority to compel Apple to unlock a seized mobile device using
the All Writs Act" [2] and "called on Apple to weigh in about whether it is
even capable of bypassing the lock screen in this case" [2].

Guess Apple has weighed in now as to its technical feasibility. Now it's up to
the judge to decide whether it is an unreasonable burden on Apple, and whether
it violates the Constitution, as to whether to compel Apple to help in the
Justice Department's investigation.

In this one single case, the iPhone has an older iOS, so maybe it's not an
"unreasonable burden".

But if it was iOS 8 or later, it might be deemed an unreasonable burden to
compel Apple to brute force or otherwise crack the password, even if it was
somehow technically possible. And "forcing Apple to push backdoored updates
would constitute 'compelled speech' in violation of the First Amendment" [2].

So it does look as if Apple thought it through, and made iOS 8 so that they
legally and practically cannot "betray their customers' trust" as you say.

[1]
[https://news.ycombinator.com/item?id=10383253](https://news.ycombinator.com/item?id=10383253)

[2] [https://www.eff.org/deeplinks/2015/10/judge-doj-not-all-
writ...](https://www.eff.org/deeplinks/2015/10/judge-doj-not-all-writs)

------
shalmanese
For those who have questions about "Couldn't Apple just do X or Y?", Apple has
published an eminently readable whitepaper on the software and hardware
components of their security:
[https://www.apple.com/business/docs/iOS_Security_Guide.pdf](https://www.apple.com/business/docs/iOS_Security_Guide.pdf)

Of course, Apple could be implementing things differently from as described
but the whitepaper lays out what is and is not possible in the described
system.

~~~
zaroth
The iOS Security Guide is 60 pages of technical goodness, but when dealing
with encryption, it's really not enough to fully understand the system, even
putting aside concerns about it being closed-source. There is such an
incredible level of detail in the document, it would take a really long time
to peel that onion back to be able to claim to really understand the trust
model. It's some of the best technical documentation on encryption methods
I've read, but even still there is plenty of room for ambiguity.

The key section I think most people really should take a look at is "iCloud
Backup" starting on page 42. Almost everything you do with your device will
end up in an iCloud Backup if you have enabled that, and while the data is
encrypted for transport, _note well the following_ ;

      The backup set is stored in the user’s iCloud account and consists of a copy of the
      user’s files, and the iCloud Backup keybag. The iCloud Backup keybag is protected by
      a random key, which is also stored with the backup set. (The user’s iCloud password
      is not utilized for encryption so that changing the iCloud password won’t invalidate
      existing backups.)

In plain English, if you have enabled iCloud Backup, everything but your
keychain itself is accessible in plaintext to Apple, and can be restored,
without your password, to any new device that [you / the Feds] may provide.

I would very much love for Apple to provide an opt-in where the iCloud backup
key is tied to the account password with extremely aggressive key-stretching.
I would take the risk of losing my iCloud Backup over the trade-off of having
my backups accessible to Apple and anyone they can be compelled to share them
with. But I do appreciate for the average user, it's not uncommon for iCloud
Backup to be immediately preceded by a password reset (just look down-thread
for an example).

Note, Apple says that they use a combination of S3 and Azure to actually store
the iCloud data, but that they have an additional layer of encryption over the
data before sending it out. So while backups technically reside on
Amazon/Microsoft servers, it's a black box to them.

~~~
shalmanese
Yup. As the celebrity photo hacking should have made clear, Apple can only
offer far weaker security guarantees on the web because they control less of
the ecosystem.

At a minimum, if the police get access to your email account, they can force a
Apple ID password reset and then restore your data onto a new device without
needing permission from you or Apple.

Note however it is still possible to backup your iphone locally using iTunes
and Apple now supports encrypted local backups. If you are worried about this
threat vector, encrypted local backups provides a large degree of the same
usability with significantly stronger security guarantees.

~~~
jameshart
"if the police get access to your email account, they can force a Apple ID
password reset"

That's an interesting assertion. I mean, yes, sure, they could do that, but
it's an interesting question of whether they are legally allowed to do that.
Effectively they'd be misrepresenting themselves to your email provider and to
Apple as if they were you. Is that acceptable 'undercover policing'? Can they
reset your banking password too? Can they do this only while they have you
under arrest?

~~~
FD3SA
They don't need to admit they did it. Parallel construction works more
effectively.

~~~
eridius
If they have information that was only present on your device or your iCloud
backup, and they already can't get at your device, how exactly does parallel
construction help them explain the fact that their evidence includes
information that could have only been obtained one way?

~~~
Natanael_L
Because that's not the evidence they present, they use that to figure out
where else to look for evidence, pretending they found that randomly or by
guesswork or suspicion or following an anonymous call.

~~~
FireBeyond
Right. "By virtue of my training and experience, I had reason to believe" is a
stock statement re anything, in trying to establish probable cause for
searches, stops and the like.

It's a broad, overarching, and highly vague statement that amounts to, in many
cases, "I decided you do, so therefore I have the right to act as if you do".

------
faide
In case anyone shares my confusion: they aren't talking about unlocking in the
sense of removing carrier restrictions, but rather in the sense of disabling
the security features of the device to access the data stored on it.

~~~
daimyoyo
I believe they're talking about trying to access a phone once it has been
"locked" from too many wrong tries at the lock screen.

~~~
pakled_engineer
That's what I got from the article, the key was wiped because of X many tries
so Apple can't "unlock" the data on the device (excluding everything backed up
to apple cloud).

In the future they will use shady FinFisher iTunes and other exploits to grab
the data then seize the phone.

------
api
So on one hand we're carrying around little location-aware sensors that upload
all kinds of tracking data to who-knows-where, enabling unprecedented tracking
of human beings and their movements at incredibly high resolution. We also
voluntarily post so much data online any number of social media sites,
financial institutions, etc. can see almost everything we do.

BUT on the other hand with proper use of crypto it is now possible to engage
in secure communication at a distance that can _never_ be decrypted without
our consent and (if certain protocols and method are used) allow anonymity at
_both_ ends of the link (e.g. Tor hidden services). It is also possible to
securely send money to others using Bitcoin without knowing their identity...
ever.

Very interesting times... it's both a panopticon and an unprecedented age for
anonymity and privacy.

~~~
revelation
Well no, you have already detailed the crucial vulnerability in this
panopticon: the devices can not be trusted. Trying to do encryption and secure
communication with untrusted devices then is utter folly.

I'm just astonished by the breadth of vulnerability in modern smartphones,
particularly with Googles handling of Android security. We haven't even gotten
into baseband vulnerabilities yet because the whole applications processor
security thing is just an entirely crumbling piece of cardboard.

------
lemiant
Can someone explain how Apple has managed to render brute force ineffective if
there are only 10000 possible 4-digit passcodes?

~~~
peterhadlaw
To everyone replying to this comment saying that you can set a limit and then
the phone will wipe itself after the limit has been reached - that point is
moot. Although I wish it wasn't so, there are a couple people who were able to
setup a mechanism to brute force an iPhone pin by shutting off the device
before it registered an unsuccessful attempt therefore ... giving you
limitless potential.

~~~
scintill76
That's patched:
[https://news.ycombinator.com/item?id=9225317](https://news.ycombinator.com/item?id=9225317)
Unless you're talking about a newer instance of the same bug.

~~~
peterhadlaw
Here is what I was referring to:
[https://youtu.be/meEyYFlSahk](https://youtu.be/meEyYFlSahk)

Seems more of a mechanical setup, rather than this guy's video. Like put a
kill switch ON THE PATH (i.e. before signals reach) the "Okay iPhone, register
this failed attempt" destination.

~~~
scintill76
The automatic thing is just an automatic exploit of the same issue[0]
(forcefully cutting power rather than powering off with the buttons might make
it more reliable.) It's called an iPBOX and AFAICT it doesn't support iOS
8.1.1[1], when the issue was fixed.

Other commentors have pointed out that the PIN/crypto stuff is handled by
dedicated hardware designed to resist tampering, probably pretty much state-
of-the-art. The issue before was a software issue. Now that it's fixed it's
very hard to completely hack the hardware and would have to be done to each
phone individually:
[https://news.ycombinator.com/item?id=10424439](https://news.ycombinator.com/item?id=10424439)
I'm not an expert, but I imagine intercepting the signal would be just as
hard, as the signal is contained within one tiny chip and it might not even be
possible to reliably modify a circuit on that scale. You can't just replace
the chip with a no-PIN version either, because it contains a unique crypto key
to the data you presumably want from the phone. This also makes modifying the
chip difficult, because if you screw up you could lose the key.

[0] [https://www.mdsec.co.uk/2015/03/apple-ios-hardware-
assisted-...](https://www.mdsec.co.uk/2015/03/apple-ios-hardware-assisted-
screenlock-bruteforce/) [1]
[http://forum.gsmhosting.com/vbb/10720367-post1.html](http://forum.gsmhosting.com/vbb/10720367-post1.html)

------
guelo
Theoretically, couldn't Apple push an auto-update to the phone that could
decrypt the data?

~~~
jacobwil
Where would that software auto-update get the decryption key from? If the user
has enabled a passcode, then their passcode is used in generation of the key
used to protect the disk encryption key. Even if apple did push an update, the
user would still have to unlock their device post-update.

~~~
baddox
The update could wait for the next time the user types in that password. If
you own the phone (which you do if you can push OS updates), you can own the
data on it. There's no way around that, unless the phone is already
confiscated or the user knows to not type in their password.

~~~
johncolanduoni
> which you do if you can push OS updates

Unless Apple already inserted a secret backdoor that allows for forced
updates, you don't have to update the phone when it prompts you. The closest
I've seen it get is a reminder that asks you if you'd like to schedule an
update for 2:00 AM or some such time, and then asks for your passcode to do
so. You still need to type it for the explicit purpose of updating for it to
go through.

~~~
crazypyro
Was there not a huge storm when iOS 7 came out because they automatically
pushed the update?

~~~
comex
That was about iOS automatically downloading the update file in the background
(and at the time lacking an option to delete it), not automatically installing
anything.

~~~
crazypyro
Ah okay, thanks for the clarification.

------
tacotuesday
This sounds really similar to when the Snowden docs were first leaked. You
have to listen very carefully to exactly what is said and read between the
lines.

[http://www.cnet.com/news/obama-denies-that-us-spied-on-
germa...](http://www.cnet.com/news/obama-denies-that-us-spied-on-german-
chancellor-or-does-he/?_escaped_fragment_=#)!

"the United States is not monitoring and will not monitor the communications"
means, "Was monitoring up until just now."

Here Apple says "We can't unlock new iPhones." Apple says nothing about their
ability to restore iCloud backups or load software to capture evidence from a
locked phone.

------
PopeOfNope
You hear that? That's the sound of a million security researchers
simultaneously shouting 'Challenge Accepted!'

------
asadhaider
For users with Touch ID enabled, would it be legal for law enforcement to use
your fingerprint on file to access the phone that way?

I'm not sure how easy it would be to fool the touch ID sensor on the phone. I
think I remember a MythBusters episode where they made a silicone mould of a
fingerprint to bypass a security system.

~~~
zaroth
Yes, and there is case law that fingerprints are not testimony (since you
leave them everywhere you go). However, as others stated below, it won't work
because the PIN is still required after a timeout. Really, they thought this
through.

~~~
MBCook
Or you can quickly disable TouchID by giving it an invalid fingerprint too
many times or simply shutting off the phone. Then you'll need a password and I
don't believe they can compel that.

------
Titanous
Here's the actual filing from Apple:
[https://s3.amazonaws.com/f.cl.ly/items/2G372p3E1D0m3806001A/...](https://s3.amazonaws.com/f.cl.ly/items/2G372p3E1D0m3806001A/document.pdf)

------
qyv
The only direct quote in the article that offers any real context:

"Forcing Apple to extract data in this case, absent clear legal authority to
do so, could threaten the trust between Apple and its customers and
substantially tarnish the Apple brand"

This quote, granted taken without full context, seems to indicate a pretty
clear stipulation of "clear legal authority". Not sure what to make of that,
but I do think that in matters of privacy and surveillance the words are
always chosen very carefully indeed.

------
joeyspn
In security, _impossible_ is a marketing word

~~~
venomsnake
There is situational impossibility though. Apple not being able to decrypt a
powered down phone is possible if they did their design work properly.

~~~
joeyspn
> There is situational impossibility though.

Agree, but often impossibility claims have an expiration date. They also said
it would be impossible to jailbreak iOS 9 with the new rootless security... It
took few months for a Chinese team to completely by-pass Apple's new design.

[http://www.forbes.com/sites/antonyleather/2015/10/18/how-
to-...](http://www.forbes.com/sites/antonyleather/2015/10/18/how-to-jailbreak-
your-ios-9-ipad-or-iphone/)

------
__sarcasm
But what if some diabolical fiend attaches an encrypted iPhone to a nuclear
bomb, and the only way to diffuse the timer is by asking Apple to unlock the
encryption to stop the timer???

Also, "child pornography" ...what if "child pornography" is involved? You
wouldn't want _THAT_ , right?

------
xkiwi
what if this is parallel construction? Can it state as 'impossible' to
'unlock'(crack/backdoor) in civil level but unlock-able on DoD/NSA level?

------
vbezhenar
iPhone pincodes by default are very short. iPhone protects them from
bruteforce with delays after unsuccessful tries. But does the hardware, where
pincode's hash is stored, protects it with delays and protects it from
labaratory attack? I mean, government could just open iPhone, extract that
chip, extract pincode's hash and crack it. You would need quite long password
to withstand such an attack.

Another vector of attack is fingerprint scanner. After iPhone turned on, by
default you can unlock it with fingerprint scanner. And turning iPhone off is
not very quick, you need to push power button for a few seconds and then slide
over screen. If police arresting you, then will get your phone from your hands
and just force your finger to open it, no pincode needed.

So yes, while iPhone is probably safe when properly configured (ruling out
possible vulnerabilities), the proper configuration is hard to use and is not
default.

That's from the point of goverment attacker. If attacker is just some thieve
or commercial espionage, probably iPhone is a good device even with default
settings.

~~~
BillinghamJ
Comments above suggest that the pincode information is managed within a HSM-
esque onboard hardware device. As such, extracting that chip and retrieving
the pincode hash is likely to be entirely infeasible, even for very capable
orgs like the NSA.

------
yyhhsj0521
Chrome says that the page contains malicious softwares... oops?

------
jlebrech
So the US wants it to be impossible for the average person to unlock a phone
(via law) but Apple make it technically impossible and the US justice system
cries foul. Swings and roundabouts.

------
randyrand
Anyone know how iCloud backups are encrypted?

~~~
frankzinger
This comment above by zaroth might answer your question:
[https://news.ycombinator.com/item?id=10422952](https://news.ycombinator.com/item?id=10422952)

------
dsfyu404ed
They're saying "there isn't an easy way in that we know of" not that there
isn't one...

~~~
netheril96
No one can never be 100% sure that their security does not have flaws, either
in design or in implementation.

~~~
briandear
Righ. But a court cannot compel Apple to find an unknown flaw in something to
help law enforcement.

------
Learn2win
It sounds Apple is saying "If you don't want law enforcement to to break into
your iPhone, buy a newer iPhone."

~~~
runholm
Specifically they can't break iPhones running iOS8 or newer. Which is
available for quite old iPhones.

I do not think this is an attempt to sell newer iPhones to the small fraction
of users they have running iPhones too old for iOS8.


Unsurprisingly, studios don't 'get' technology or their customers - boredguy8
http://arstechnica.com/media/news/2010/01/warner-bros-props-up-decaying-dvd-market-with-netflix-pact.ars

======
boredguy8
It really seems to me like they should try and capture online distribution
rather than fighting against Netflix. Hell, charge a premium to NetFlix to get
the media BEFORE the general DVD release but only via streaming, say.


Why You Need a Co-Founder - maxcameron
http://bigbangtechnology.com/post/why_you_need_a_co-founder
======
Swizec
As a guy who very recently split-up with his cofounder, I can say that having
a cofounder is awesome and much better than going it alone, but if they aren't
also a partner and willing to pick up your slack when real life crap is going
on next to the startup crap ... it isn't going to work out.

Also a word of advice: When crap starts going on, on either end, the proper
solution isn't to stop talking to each other for a few weeks.

~~~
maxcameron
Totally appreciate your take on the subject. Yeah, two weeks would constitute
a major breakdown of communication. Do you think it's possible to have
contingency plans in place for actual situations like that?

~~~
9oliYQjP
The best contingency plan is to have at least 3 co-founders. This can be an
asymmetrical relationship at times. But I think you'll find a lot of
successful companies usually quickly added a 3rd person to the mix early on.
It's a matter of semantics whether you want to call them co-founders or not.
The point is that they're in there early on before the major successes of the
company which they help contribute to.

------
thaumaturgy
Whether finding a co-founder is appropriate or not is completely dependent on
your goals. For a relationship to work out between two or more people --
especially one as stressful and challenging as starting a business --
everybody involved has to be equally committed to the goals set in the
beginning.

OK, so let's say that the only goal you set in the beginning is, "churn out
social 2.0 web app, sell to megacorp inc., make lots of money". Yeah, you can
probably find one or two other people that are willing to commit to that for a
year or two.

But, let's say instead that your only goal is, "build a high-quality service
in some niche, fill a customer need, money and popularity be damned". Are you
as likely to find someone else willing to fully commit themselves to such a
project? I doubt it.

For "crusaders" -- people who are willing to sacrifice a lot in order to
change some aspect of the world they're in -- you're probably never going to
meet anyone that will be as committed to your goal as you are. Holding
yourself hostage to a co-founder search will just kill your project.

For everyone else: spend some effort on putting together "the team" -- the
smallest possible group of people that can handle all of the roles of sales,
engineering, direction, management, finance, etc. etc. -- apply to YC, build
your thing, get money, cash out, have a great life.

To that end, I think startup speed dating is a pretty great idea.

------
rottencupcakes
I think Steve says it best:

> My model for business is The Beatles: They were four guys that kept each
> other's negative tendencies in check; they balanced each other. And the
> total was greater than the sum of the parts. Great things in business are
> not done by one person, they are done by a team of people.

I think this applies to co-founders too.

------
m311ton
Startup speed dating is a cool idea in my opinion. The single hardest thing
I've ever done is trying to find a co-founder. Two years in I'm still looking
for that partner. Anything to help alleviate that pain point would be
tremendous.

Flying solo is convenient at times because you don't have interpersonal drama
and the risk of a nasty split. But on the whole I would never recommend anyone
go solo.

~~~
worldtize
Would you happen to be located in San Jose?

~~~
m311ton
Unfortunately not. Half my problem might be that I'm located in the anemic
Midwest. St Louis to be exact. Are virtually connected co-founders very
prevalent?

~~~
worldtize
As long as there is a connection, things can happen. Do you have a facebook?

------
orky56
When seeking funding, having a co-founder or team looks much better to an
investor than a sole founder. If you take a look at YC, I believe Dropbox is
the only (or one of the few) with just one founder. Having more than one
demonstrates that there is less risk through complementing abilities and
checks/balances. Also, it can get kinda lonely...

------
maxcameron
Hi,

I'm the author of this article. You should read it if you've been following
the debate about whether you're better off with a co-founder or going it
alone.

Max

~~~
CapitalistCartr
I think we're all better off with the right co-founder, and worse off with a
wrong one. Better off != need, though.

~~~
maxcameron
So do you think that it's just a personal relationship, or do you think there
are actual characteristics you could look for in a co-founder?

------
TimJRobinson
I think the startup speed dating is a fantastic idea, especially for those
cities outside of the valley where just finding people interested in startups
is damn near impossible.

I recently found a good partner after 2 years of going it solo (and searching)
and it's made a world of a difference.


Une stack Sublime Text 2 pour développeurs Ruby - florian95
http://www.synbioz.com/blog/sublime_text
======
mdomans
Learn english

------
jezfromfuture
Umm French ??


Track Expenses in Google Docs via SMS - avand
http://avandamiri.com/2012/05/14/track-expenses-in-google-docs-via-sms.html

======
andrewneilcrump
like _


Norway authorities take away Indian couple's kids, say feeding with hands wrong - x3c
http://www.ndtv.com/article/india/indian-couples-norway-nightmare-kids-taken-away-for-feeding-with-hands-167660

======
senthilnayagam
eating with the hands is common practice in India, it gives an additional
sense of touch, besides looks(eye), smell(nose), taste(tongue) of the food.

also please dont site hygiene as a reason as the mother has masters degree in
health care administration.


Newton Mail app shutting down September 25 - zeitg3ist
https://9to5mac.com/2018/08/07/rip-newton-mail/
======
ljoshua
Nooo! Newton is my favorite! This is a sad day for me, and of course even more
sad for the team.

Alright, what is everyone's favorite cross-platform mail client these days
then?


Recovering Atari ST ASIC Designs - walkingolof
http://www.chzsoft.de/asic-web/
======
walkingolof
Atari's chip company Styra (from the article) got me to search a bit and its
only mentioned on 3 sites according to google, and this goldmine for an Atari
fan was one of them:

[http://mcurrent.name/atarihistory/tramel_technology.html](http://mcurrent.name/atarihistory/tramel_technology.html)

------
Annatar
This is amazing! Time to fire up my Atari Falcon again (anyone out there
willing to sell a CT63?)

These schematics could be used to implement the entire Atari STE's or Falcon
030's in a single FPGA. In phase two, new chips could be added, or existing
chips enhanced (Blitter with texel and shading support, anyone?) The best part
is, as the Amiga 600 Vampire II accelerator proved, the FPGA implementation
could be anywhere from ten to 50 times faster and cheaper than the original
hardware![1] The possibilities are endless with these schematics...

[1]
[https://youtube.com/watch?v=lEjtc6JWlsk](https://youtube.com/watch?v=lEjtc6JWlsk)

~~~
cmrdporcupine
It's worth pointing out that the entire Atari ST has been already done in a
single FPGA. See the MiST project:
[http://harbaum.org/till/mist/index.shtml](http://harbaum.org/till/mist/index.shtml)

I'm sure there are things to be learned from the ASIC designs that could
improve the GLUE/MMU/Blitter/Shifter etc. VHDL. But they already work really
well.

The rest of the Atari ST is off the shelf (mostly Motorola) chips.

------
larsbrinkhoff
There's also an effort to decap the ASICs and take die photos to reverse
engineer the schematics:

[http://www.atari-forum.com/viewtopic.php?t=29658](http://www.atari-
forum.com/viewtopic.php?t=29658) (Shifter, display controller)

[http://www.atari-forum.com/viewtopic.php?t=30241](http://www.atari-
forum.com/viewtopic.php?t=30241) (MMU, memory controller)

------
Noseshine
Ah memories... and my personal progress over time:

My very first calculator: [0]

My first slide rule: [1] (for two years or so, then we switched to electronic
calculators)

Before I could afford a computer I spent a a few years on computers I didn't
own, ZX Spectrum, C64, C128, 8bit Atari, KC85/1,2,3, but also LC 80 [2]

My 1st (own) computer: East German 8 bit KC85/4 with the CAOS operating system
(the makers had a good sense of humor, it means "Cassette-Aided OS") [3][4].
Mass-storage was ones regular stereo cassette radio recorder, a floppy disc
drive was available but rare.

My 2nd computer: Atari 1040 STFM [5] - bought with my first West German money
after reunification! Finally 16 bit!

Atari ST software worth mentioning: "Script 2" was a wonderful word processor
for Atari [6]. When used in combination with the (for the time) excellent
black/white monitor and a 24 needle printer (Epson LQ 580) I got near laser
printer quality through the special drivers of that program.

Worst Atari incident: I had a capacitor (literally) blow up on me with a very
loud _BANG!_.

I'll end with the Atari. The next one - for my studies - was a 486DX33 8MB RAM
machine with Windows 3.1, soon RedHat Linux (1995). Thanks to the student
network I could start large programs like Netscape on another student's
Pentium PC (in another building) and export the display until I was able to
upgrade to 16 MB RAM... and all the usual mid-1990s Unix systems, also
available remotely thanks to the network.

[0] My grandfathers calculator (really!)
[http://i.imgur.com/jBDUHPp.jpg](http://i.imgur.com/jBDUHPp.jpg)

[1] My slide rule:
[http://ossikult.de/ossi/images/product_images/original_image...](http://ossikult.de/ossi/images/product_images/original_images/img_2552.jpg)

[2] LC 80
[https://de.wikipedia.org/wiki/LC80#/media/File:Lc80offen.jpg](https://de.wikipedia.org/wiki/LC80#/media/File:Lc80offen.jpg)

[3] KC 85/4 picture
[https://upload.wikimedia.org/wikipedia/commons/9/90/KC85-4.j...](https://upload.wikimedia.org/wikipedia/commons/9/90/KC85-4.jpg)

[4] KC 85/4 Wikipedia article
[https://en.wikipedia.org/wiki/KC_85](https://en.wikipedia.org/wiki/KC_85)

[5] Atari 1040 STFM
[https://en.wikipedia.org/wiki/Atari_ST#/media/File:Atari_ST_...](https://en.wikipedia.org/wiki/Atari_ST#/media/File:Atari_ST_1040.jpg)
\- just like mine was, minus the hard drive

[6] Atari ST word processor Script 2
[http://www.stcarchiv.de/stc1990/10/script-2](http://www.stcarchiv.de/stc1990/10/script-2)

~~~
SwellJoe
The picture of the Atari ST linked in 5 also happens to have the back of a
Fairlight CMI (Computer Musical Instrument) in it, which is a piece of history
itself, and dwarfs the price/rarity of the ST.

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

The ST was strong in the music industry, particularly in Europe, because of
its built-in MIDI interface.

~~~
digi_owl
As a long term pen and paper gamer, i can't see the name Fairlight without
thinking of Shadowrun. There Fairlight brand cyberdecks were the cream of the
crop of preconstructed decks.


SoureForge starts preventing misleading download button advertisements - chris_wot
https://sourceforge.net/blog/sourceforge-blockthis-initiative-update/

======
chris_wot
Makes me wonder why it took them this long - but brilliant though! Finally
SourceForge is going to fix their UI issues and downright misleading malware
links. This should go some way to restoring their reputation.


Show HN: A generator for random ASCIItabs - rocheio
http://www.asciitabs.com
======
rocheio
I made this site to help myself practice guitar / music theory and learn the
basics of music composition.

It's all written in Go and hosted on an AWS t2.micro instance right now. I
haven't implemented any caching yet so we'll see what happens if it gets any
traction...

Feedback / bugs / feature requests encouraged. Thanks!

~~~
SwellJoe
This is a cool tool...but, as a musician of more than three decades, I would
discourage new players from spending too much time on tablature.

I'd recommend you jump to traditional music notation for your learning
process, ASAP. You're learning new things, anyway, you might as well learn a
tool that is generally much more useful. There's a wealth of music and
exercises in standard notation available to practice with.

I'm not saying this to be preachy or holier-than-though, or to suggest you
can't be a good musician without knowing how to read music. But, standard
notation is technically superior to tabs, on nearly every dimension. It
provides more information in a smaller space, it is transferable to other
instruments and other musicians, it is much faster/easier to read once you are
proficient with it, and it provides visual cues about the things that you're
currently trying to learn that tablature does not (e.g. you can usually
readily discern keys and chords from traditional notation, while it is not at
all obvious from tabs until you've read quite a bit of it and mentally or
physically applied it to the guitar).

I wish I'd learned traditional notation sooner and with more gusto. I would
have been a better musician more quickly if I had.

~~~
rocheio
Thank you for this advice. You make a strong case for standard notation and
I'll keep that in mind as I try and advance as a musician. I've found the
'Masters in Tab' series to offer tabs / standard notation interlaced, so
perhaps that would be a good way to transition from one to the other
([https://www.amazon.com/Spanish-Guitar-Masters-TAB-
Intermedia...](https://www.amazon.com/Spanish-Guitar-Masters-TAB-
Intermediate/dp/0739000772)).

This also makes me think I should focus the website on where ASCIItab excels
over standard notation -- editability as opposed to being a precise blueprint
for how to play complex compositions. I think offering an in-browser editor
would still make this a good tool for novice composers to get a feel for
enhancing / creating music before they advance to standard notation.

------
gnode
Pretty cool, thanks for creating this.

A good addition would be audio output, or MIDI export.

From looking at the tabs, this seems mostly aimed at fingerstyle guitar
playing, rather than playing with a plectrum. Some parameters to the
generation could produce tabs for a wider range of styles.


Submit shameful recruiter actions to - thegorgon
http://shame.heroku.com/

======
typicalrunt
This is an interesting app, but I fail to see the use of it after I forward my
spam onto the service. I can't click on the submissions to see what other
types of spam there are or what other people consider 'recruiter spam'.

There's also a privacy issue with displaying other people's full names
(probably pulled from the email headers).

Without any feedback about the submission, it would be easy to game the system
and skew the results by forwarding emails to the email address listed.

Lastly, IMHO there's a bit of spamminess to the whole service because now the
service now has now verified email addresses. Who's to say that the service
wasn't setup by another recruiting agency looking to increase their cold-call
database?


Google says ad blockers will save online ads  - peter123
http://www.theregister.co.uk/2009/12/16/google_on_adblockers/
======
pavs
Wow, the first half was all good and informative, than the second half the
authors started to dump all his opinion as known, absolute facts.

The fact is that Google, a multi billion dollar company which make ~90% of its
revenue through ads, not only allows ad blocking extensions to be installed in
its browser (which is rapidly gaining market share) but also not-so-evil
enough not to tinker with the Top 10 extension list and allow an ad blocking
extension to be listed as the second most downloaded extension. (2 of the top
10 extensions are ad blockers:
<https://chrome.google.com/extensions/list/popular>).

To top it off, they are forthcoming about the ad blockers and how they view it
and discussed it openly with everyone, by justifying it as a good thing. They
agree with something most of us already know is that the single biggest reason
we use ad blocking extensions is because of the intrusive and extremely
annoying ads. If ads were non-intrusive and fast and targeted most people
wouldn't bother with ad blockers. Google, the biggest online ad company gets
it. This is good news.

And this is what the author writes?

"And of course, there's no guarantee that Google will always allow ad
blockers."

Is the author really this ignorant? You don't even have to rely on extension
to block ads. Hello privoxy: <http://www.privoxy.org/>

~~~
axod
Agreed. Google should really be applauded. I'm bored of all this "Ah but
google have access to all my data. What if they turn evil".

There was a recent story about Google adding a _cookie_ so that people without
google accounts/not logged in, got some extra functionality. Instead of being
applauded for improving the product, people started moaning that they were
harvesting data from everyone. Tracking peoples movements on the web so they
can sell that data. I don't know why there's this recent "But what if Google
start being evil" meme, but I think I'll trust them until they do show signs
of abusing that trust.

~~~
hyperbovine
OT, but why do people keep saying "Google have too much power," "Google have
60 billion dollars", etc. ? It's a singular noun. The circle _is_ round.
Google _is_ powerful. _It_ is turning evil. We _are_ hungry. etc.

This is not meant to flame, I'm really curious why/when the usage shifted.

~~~
naz
British English

~~~
whatusername
Really?

I would have written those sentences as: "Google has too much Power", "Google
has 60 billion dollars"

The usage of _have_ seems wrong to me

~~~
axod
Both are common/valid, at least in the UK, but the plural is more common here
than singular afaik.

------
lliiffee
I don't buy it. The assumptions seem to be that A) annoying ads work in the
short term and B) annoying ads cause people to use ad blockers. Sure, it
follows that it is in the ad industry's long-term interest to avoid destroying
themselves through annoyance. However, _individual_ advertisers still have the
incentives to be annoying, since the costs (more adblock) are distributed to
all advertisers, but the benefits accrue entirely to them.

Maybe individual advertisers can avoid being annoying and hope that adblockers
only target the biggest offenders.

~~~
RyanMcGreal
It's a straightforward collective action problem. However, annoying
interruption ads work only when they can successfully interrupt people -
through pop-ups, flashing, grabbing focus, and all the other annoying things
they do.

It seems to me that the widespread adoption of adblocking software can only
hurt the annoying, short-term thinking advertisers and help the not-annoying,
long-term thinking advertisers.

As it gets easier to avoid annoying ads, the PR cost of being annoying will
continue to rise until it starts hurting annoying advertisers in the short
term - in effect, internalizing the negative externality of their activities.

~~~
Hoff
And that spam email stuff is going to stop arriving, too.

~~~
eli
Hey, if there were a plugin for Outlook that blocked _all_ commercial messages
(spam or not), I'm sure many people would use it.

------
gyardley
I don't believe the market will balance itself at all. Online publishers are
reliant on advertiser revenue, and there's far too much ad space to fill
solely with useful ads for useful products. At the same time, the vast
majority of AdBlock users block almost everything - including the 'useful ads
for useful products' and the high-value branded advertisements that pay by the
impression and really don't care whether you click on them or not, just as
long as you _see_ them.

Right now, online publishers view ad blocking as an annoying evil not worth
combatting - under the assumption that <5% of all users block advertisements,
that the users that do often aren't advertisers' most desirable demographic,
and that playing cat-and-mouse with ad blockers is more annoying than it's
worth. But as the percentage of users using ad blockers rises, more online
publishers will be open to technical solutions to this problem. I know of
multiple projects that incorporate server-to-server ad calls (so the ads are
served from the same domain as the content) and slicing of ads into multiple
smaller images (so the ads aren't standard IAB image sizes, but chunks of the
key content are.) Other projects I've seen tie the presence of advertising to
key site functionality, making it impossible to use the site effectively
without referencing a visible advertisement. As ad blocking increases to the
point where it's material to publishers, blocking ad blocking will spawn a lot
of startups.

There's already a good example of this: the increasing use of Local Shared
Objects (also known as 'Flash cookies') to store data formerly stored in
cookies and even to respawn data in deleted cookies. Use of Local Shared
Objects for advertising purposes was extremely rare several years ago. As the
proportion of users regularly deleting the cookies that contained unique IDs
for ad targeting and frequency capping crept up, the market didn't 'balance'
by forgoing unique identifiers in cookies - it found a technical workaround by
repurposing rarely-deleted LSOs.

I never really understand it when ad-blocking advocates evangelize to the
general public - the more there are, the more likely it is that their blocking
will in turn be blocked.

~~~
m_eiman
_the vast majority of AdBlock users block almost everything - including the
'useful ads for useful products'_

Is there such an option in AdBlock? If there is, I wouldn't mind seeing those
ads. Currently they get blocked along with the rest, though.

~~~
eli
No, not really. You can subscribe to different block lists, but last I checked
the goal of all the lists (or at least all the default lists) is to block
_all_ ads.

And anyway many of the block rules target ad networks and platforms. One site
may use doubleclick.net's ad servers to serve up great, well-targeted ads and
someone else may use the same system to server really obnoxious ads.

Personally, I don't subscribe to any lists and add all the block rules by
hand. I really just don't want anything that moves or talks to me. But it
ain't easy.

------
vdm
I don't want to see graphical ads with tits (I'm looking at you Evony), ripped
bodies, or oral cavities (teeth whitening). All of that stuff is, just like
porn, opt in. Its also why I sign new PC users up to Gmail and not Yahoo Mail.
Anything else, and especially contextual text ads, is fine by me.

That's why I agree with Google's position.

~~~
pavel_lishin
I don't care about tits, skin or toofs, but I am incredibly easily distracted,
and a single blinking flash ad can totally plummet my concentration.

~~~
Periodic
I can't have a real conversation at any restaurant that shows sports or the
like. I find my eyes wander to the bright and active pictures too often. I
usually try to position myself facing away, but it doesn't always work. I
blame a huge part of it on not having a TV, so I'm not used to tuning it out.

The same thing occurs on the web. I find it very hard to read text if there is
something flashing right next to it. For this reason I install NoScript as one
of my first add-ons on new systems. It blocks the worst offenders and adds a
layer of security to boot.

Simply blocking unauthorized scripts is usually good enough for a while, but
eventually I'll get to a few pages with non-flash, non-javascript ads that are
so annoying I go out and install AdBlock anyway.

I'm happy to meet in the middle, but I don't intend to waste my time.

------
robk
This is the historical Google line and a pretty fair one at that. Those of us
that are extremely savvy enough to use ad blockers everywhere are also rather
cognizant of where ads appear and usually consciously ignore the ads. Most
average users won't find the ads so objectionable as to warrant blocking them
or dealing with the hassle of installing extensions.

Firefox has over 90M active daily users _. The Adblock Plus plugin is by far
the biggest and most compelling Ad Blocker - it has 11M active daily users
right now_ _. Google seems willing to live with this 12% opt-out in effect. I
suspect of those 12% of users, most of those wouldn't click ads anyways, so
it's not a big deal in the end.

_ \- [http://blog.internetnews.com/skerner/2009/05/firefox-
hits-27...](http://blog.internetnews.com/skerner/2009/05/firefox-
hits-270-million-users.html) __-<https://addons.mozilla.org/en-
US/statistics/addon/1865>

------
TallGuyShort
I've never minded Google ads at all. In fact I quite like them. The reason I
have an ad-blocker is because of the many sites featuring sexually explicit
advertising with no warning - a big no-no when you use the internet as a
reference at work.

I'm not sure if I trust their motives entirely, but Google's theory about the
market balancing itself is right on, IMHO.

------
jsm386
_"There will always be some group of people who want to block ads for personal
reasons. But if we do a good job on the advertising side, people won't want to
block ads. People will find them actually useful.

"I think there will be a nice equilibrium. If people get too aggressive with
ads, then ad blockers will become more popular and companies will get less
aggressive with ads. The market will sort itself."_

As an Adwords advertiser, I agree. Maybe it's because I am selling a B2B
product, but I have no interest in 'aggressive' ads that trick gullible people
clicking them (the phrasing from this post last week:
<http://news.ycombinator.com/item?id=989729>)

P.S. The headline seriously distorts Google's argument. Saying that the market
will balance itself out as aggressive ads and ad blockers play off each other
is not 'ad blockers will save online ads.' In fact, the Google rep doesn't
make that statement at all.

------
axod
>> "But the truth of the matter is that most people won't install ad blockers
on Chrome because people are fundamentally lazy."

BS. Most people don't install ad blockers because they don't want them. Not
everyone is a new age hippy anti consumerism activist.

If an advert annoys you, don't visit that website again. Vote with your feet.
That's being honest.

I not lazy, and I won't be installing adblock. I don't think doing so is good
for the web.

~~~
anigbrowl
I rather think it's because a lot of people don't really know how. Like a lot
of others, I don't mind advertisin in principle; indeed, I think they have
utility and sometimes click on them because I'm actually interested in what's
being sold.

...BUT not the ones that float in when I've already started reading the page,
or that take over my screen when I unwittingly roll over them with the mouse
(and obscure their close button), or that feature hot pink silhouettes of
people dancing in a .gif loop to sell me car insurance, or use what's
apparently some guy's mugshot to tell me about some shady mortgage refinance
scheme.

For every informative, polite, and compelling advertisement that represents a
meaningful commercial communication, there are about 99 that are equivalent to
being shouted at via megaphone.

~~~
axod
Absolutely not my experience. Also do bear in mind that most people also have
TVs. And weirdly, out of choice!!! So they're quite used to adverts.

------
Periodic
I believe this other article was posted about a month ago and may be very
germane:
[http://www.mediapost.com/publications/?fa=Articles.showArtic...](http://www.mediapost.com/publications/?fa=Articles.showArticle&art_aid=115210&lfe=1)

In brief: only 32% of Internet users clicked on at least one ad in a month,
and 8% of users accounted for 85% of ad clicks.

The people using ad blocking software are not the people often clicking on
these ads, and most of the clicks come from people who click on a lot of ads
and are (I'm guessing by this behavior) unlikely to install an ad blocker. In
other words, ad blocking is not a threat.

------
motters
I agree with Google that advertisers will eventually sort themselves out. I
have no objections at all to discreet banner ads, but irritating/puerile
animations or anything which obscures the text I'm trying to read or forces me
to click on a close button I find unacceptable. For the foreseeable future
I'll continue to use Adblock/Ad-Art, but if advertising becomes more sensible
and restrained I may have no need to use those.

~~~
yungchin
I'm not sure if advertisers will sort _themselves_ out... but I hope websites
that care about their readership will learn what ads to refuse.

------
houseabsolute
Irony: <http://imgur.com/4QOPv.png>. Note that the only ads so blocked are
flash ads.

~~~
chronomex
I don't have flash installed in my primary browser (Opera). When I want to
view flash, I boot up Firefox and paste the URL over.

I also have a shellscript to download Youtube videos and feed them to mplayer,
since my computer is too slow for most Flash video.


Why I Pay for Draft and Other Free Products - rrhoover
https://medium.com/on-startups/77f78bee355f

======
jmduke
I feel like this is as good a place as any to plug Gittip
(<https://www.gittip.com/>) if you haven't heard of it.

You basically set up weekly donations to people through Twitter/GitHub. The
best sell I can think of is for those well-versed in Python: how much time do
you think Requests has saved you? An hour a month? How much do you value that
hour? Let's be crazy conservative and say you value it $20/hr.

Kenneth Reitz saves you $20 a month. What's wrong with throwing him a little
piece of that pie?

<https://www.gittip.com/kennethreitz/>

------
jmedwards
Well put, same sentiments here exactly (and same products!).

~~~
rrhoover
Thanks. :) Which free products do you pay for?

------
frakkingcylons
TL;DR of the article: I pay for them because I mainly want to support the
people behind them.

------
alcuadrado
And that's why I bought Sublime Text although I could have kept using it for
free

~~~
nate
I'm glad you brought up Sublime. They were a big inspiration to how I wanted
to charge for Draft. I love their model. It really makes trying out the entire
tool super easy, and still allows the people who do get a lot of value from it
to pay for it.

------
krmmalik
I pay Quoterobot for the same reasons and will be doing the same for
postach.io


Krzysztof Penderecki has died - stared
https://culture.pl/en/artist/krzysztof-penderecki
======
H8crilA
What an absolute legend, his music was like nothing else that came before.
Rest in peace.

In case you're not familiar with his work - one of the best known pieces is
the "Threnody for the Victims of Hiroshima". Here you can see it overlaid on
top of the notation he had invented to write this composition down:
[https://youtu.be/HilGthRhwP8](https://youtu.be/HilGthRhwP8)

Wikipedia page on the piece:
[https://en.m.wikipedia.org/wiki/Threnody_to_the_Victims_of_H...](https://en.m.wikipedia.org/wiki/Threnody_to_the_Victims_of_Hiroshima)

~~~
thr0w3345
I don’t get this at all.

It’s unlistenable. Dreadful. Who considers this music and why? What’s the
point of it?

What am I missing?

~~~
softwarejosh
it wasnt exactly written for easy listening, it represents the instantaneous
annihilation of life on the largest scale the world has ever seen.

~~~
Mediterraneo10
> it wasnt exactly written for easy listening, it represents the instantaneous
> annihilation of life on the largest scale the world has ever seen.

As is well known (or should be), Penderecki wrote the piece initially as
purely abstract music, a study in sound. The title referencing Hiroshima was
only applied to the piece later.

------
microtherion
The first piece of his I heard is still my favorite: "Stabat Mater"
[https://www.youtube.com/watch?v=f403XsOAFXE](https://www.youtube.com/watch?v=f403XsOAFXE)

It uses such a great palette of composition techniques — gregorian chant,
unison passages, clusters (the bell-like effects he achieves with clusters are
my favorite part of the piece), up to the surprise effect at the end.

------
pavlov
Fans of David Lynch’s work will recognize Penderecki’s “Threnody for the
Victims of Hiroshima” as the soundtrack to “Twin Peaks: The Return” (in)famous
Episode 8:

[https://robertsabinbass.blog/2017/09/20/this-is-the-water-
an...](https://robertsabinbass.blog/2017/09/20/this-is-the-water-and-this-is-
the-well-ravings-on-twin-peaks-the-return-episode-8/)

------
rurban
Right before the Corona lockdown there was a concert announced with him as
conductor, for a late piece of him. About a month ago. In our city which is
about an hour away from the place where he lives in Poland. Unfortunately he
didn't show up. We already thought, how bad, he's probably not feeling well. I
had this bad feeling already then.

------
acjohnson55
One of the real banner carriers for contemporary orchestral music. Rip.

------
ttlaxia
I never hear anyone mention his Capriccio for Violin and Orchestra, which I
tend to think is kind of a masterpiece of its type, for what that's worth.

[https://youtu.be/axVXBZBBUPM](https://youtu.be/axVXBZBBUPM)

------
the-rc
The Cello concerto no. 2 is his first work I listened to and still holds a
special place for me:

[https://youtu.be/ApJU2QbbXpc](https://youtu.be/ApJU2QbbXpc)

------
kolmogoshannon
Time to play Lacrimosa.

------
app4soft
My first thought was: _" Has this death relation to Covid-19?"_

And just found an answer:[0]

> _Penderecki had been tested for coronavirus after his carer was diagnosed
> with the illness, but the composer 's result was negative, his daughter
> Beata Penderecka told Reuters._[1]

> _Part of the family had been under quarantine at home after attending a
> family meeting on March 7, Penderecka said. Several people present later
> tested positive for coronavirus._

> _Elzbieta Penderecka, the composer 's wife tested negative, Beata Penderecka
> said._

UPD: On Wikipedia there no info about his "long illness".[2]

JFTR, _My Personal Opinion:_ Tests which used now around the world for
Covid-19 testing has NO 100% guaranties on its results.

[0] [https://www.thejakartapost.com/life/2020/03/29/polish-
compos...](https://www.thejakartapost.com/life/2020/03/29/polish-composer-
penderecki-dies-at-86-after-long-illness.html)

[1] [https://www.reuters.com/article/poland-music-
penderecki/upda...](https://www.reuters.com/article/poland-music-
penderecki/update-1-polish-composer-penderecki-dies-at-86-after-long-illness-
idUSL8N2BM082)

[2]
[https://en.wikipedia.org/wiki/Deaths_in_2020#29](https://en.wikipedia.org/wiki/Deaths_in_2020#29)

~~~
elwell
>
> [https://en.wikipedia.org/wiki/Deaths_in_2020#29](https://en.wikipedia.org/wiki/Deaths_in_2020#29)

That wikipedia link has 108 references to COVID-19, wow...

~~~
mantap
I was going to point out that some deaths may be more likely to be included in
the list _because_ they died of COVID-19, but fuck, that does not seem to be
the case. Genuinely terrifying.


Backer of the Day: Should Thinkful teach a class on Angular? - bhaumik
https://backer.app.net/thinkful

======
raddevon
I took the front-end and Python courses. These guys delivered a lot of value
for me with those. Not only that, but I'm also interested in Angular. I'd
likely be all over this if not for personal economic scarcity. ;-)

------
redbearded
This is the course I voted for! Awesome to see it coming together.

------
frimmy
heck yes, took their front end course/python course, learned more than I ever
did just reading/going thru the docs.

DO IT.


Libcrtxy – The CRT X-Y Library for drawing vector-based games - networked
http://libcrtxy.sourceforge.net/
======
tdicola
Neat looking library, but it seems woefully out of date for today's modern
graphics pipelines. Would be cool to see a similar library but that uses
OpenGL and modern GLSL shaders to more closely emulate drawing vectors on a
CRT. Still this could be a neat little library for use on low end systems like
a Raspberry Pi.

~~~
dddddannyyyyy
The owner of the github repo and myself worked on this for a while:
[https://github.com/blucz/Vector](https://github.com/blucz/Vector)

It does what you said. We never took this anywhere, but it does work, and on
retina displays, it's really pretty.

~~~
tdicola
Wow that looks great, nice work!


When to start publicizing a startup. - knandyal

Friends,
We are a startup that deals with fashion.  We are about 3-4 months away from the final product.
Questions are:
1) When is a correct time to start seeding the news about this site?
2) Who are the professionals that do this sort of "spreading the news"?
If anyone have any guidance regarding this I will be thankful.
Regds
Karthik
======
badmash69
Define your target audience, find a small representative sample whom you know
and have them come in to your site and kick the proverbial tires. Don't go
about "spreading the news" until your representative sample is happy about
your product.


Show HN: Create Interactive Coding Tutorials in Visual Studio Code - mlejva
https://codelines.dev/home
======
mlejva
Hey HN. Our goal with Codelines is to create a tool that makes it easy to
share programming knowledge between developers. We've created a code editor
plugin that let you create and read interactive coding tutorials/walkthroughs
in your IDE. We believe the way we share programming knowledge on the Internet
is hugely ignored. But it's a real problem that developers face every day. How
many times have you seen a snippet of code that could solve your problem but
the API was now deprecated, or just simple things like code highlighting and
being able to see a bigger code context.

Walkthroughs created with our plugin are full projects combined with text so
it gives you a lot of benefits. That way you can execute the code and at the
same time be able to read the "story" behind the code.

We are interested in what people on HN think about this. Feel free to ask any
questions.

~~~
zekehernandez
The idea sounds cool, but I'm struggling to know exactly what this does or how
to use it. The descriptions on the website are very brief and kind of vague,
and the screenshots are quite small. The only feature that's really clear to
me is running the terminal commands. But, like I said, sounds cool, just wish
I could gain more info as to what it is without having to install it and use
it.


Gotify – a self-hosted push-notifications service - adraenwan
https://github.com/gotify
======
dmitrygr
It is worth noting that this will use a noticeable amount of power more than
Google cloud messaging. The basic idea of how is works is about the same, but
the devil is in the details. If you look at an idle connection over LTE, you
will notice that after a while your carrier will close it. You need
keepalives. If you look at the connection for Google cloud messaging, you
might notice that it needs much fewer keep alives than YOU need to keep your
connection alive. This means fewer wakes from sleep mode and lower power.

~~~
nbevans
Is that because carriers have put GCM/FCM on some sort of white-list?

~~~
pas
Probably because GCM/FCM has been very well optimized.

~~~
fyfy18
TCP connection can be open and idle for hours without keep alives. This can
easily be configured with kernel parameters:

[https://www.tldp.org/HOWTO/TCP-Keepalive-
HOWTO/usingkeepaliv...](https://www.tldp.org/HOWTO/TCP-Keepalive-
HOWTO/usingkeepalive.html)

I suspect the hard bit for normal apps is keeping the app active on the device
while it is in the background. Google has their FCM receiver running as a low
level service so can make sure it is always running.

~~~
ktjfi
You can configure it locally in your kernel, but your ISP will most likely
close your connections for you, especially if you're behind a CGNAT.

~~~
londons_explore
Even if you have native IPv6, some carriers do connection tracking anyway to
prevent random port scans from the internet waking up your phone or trying
various exploits.

------
wybiral
Awesome! I've been working on a collection of news source parsers [1] (a
combination of RSS and HTML scrapers) that this will work perfect with to
replace my native news app. All I have to do is pipe the lines from my parser
through a Python script issuing these message POST requests and it just works
out of the box.

[1] [https://github.com/wybiral/stream-
sources](https://github.com/wybiral/stream-sources)

------
rubenbe
I gave it a quick try and "it just worked" with minimal configuration. Really
easy to get started.

Unfortunately messages are only plaintext.

~~~
johnchristopher
Same. I wasted more time this evening setting up octobercms behind a reverse
proxy (hours, not working) than getting that server handling notifications
from a VPS running many small services.

------
noahster11
Although I've been using Pushover[0], a paid service, instead of Gotify, I
found a really cool project to pair a push-notification service with is
huginn[1], which allows you to program bots to do things on cron jobs, among
other really powerful actions.

[0] [https://pushover.net/](https://pushover.net/) [1]
[https://github.com/huginn/huginn](https://github.com/huginn/huginn)

~~~
there
Just to clarify, Pushover is not a "paid service" in that you need to pay for
a subscription. You only have to pay once to use it past the 7-day free trial.

------
draugadrotten
[https://gotify.net/](https://gotify.net/)

------
siscia
I would like to point out that there exists solutions tested in the field in
the last 20 years to solve the same problem.

In particular I would suggest to get to know MQTT an open protocol with
several (open and close) implementation that is know for its flexibility and
scalability (if nothing has changed it is used to power the Messager Facebook
platform, but don't quote me on that).

verneMQ is the server implementation I would suggest if you are interested in
such topic.

~~~
qwertox
MQTT is just a protocol, not a service. I don't think it was the developer's
intention to provide an alternative to MQTT, but to offer a solution for push-
notifications, which just happens to be built on top of WebSocket without
MQTT. Also keep in mind that MQTT will usually get wrapped by WebSocket to
avoid issues with firewalls or to easily get TLS via a proxy server like
NGINX, or simply to add web browser support. VerneMQ is not the only server
implementation for MQTT.

------
dlhavema
Interesting project. Is this intended to replace Firebase Cloud Messaging on
android or be a wrapper in front of it?

I only saw android support, anything for iOS in the works?

~~~
dgivney
From what I can tell it appears to be a replacement FCM/APNS. The client
subscribes directly via websocket to a self-hosted server (Go binary).

New messages in the queue are then notified (gotified) via the websocket.
[https://gotify.net/api-docs#/message/streamMessages](https://gotify.net/api-
docs#/message/streamMessages)

The payload can be picked up and managed via REST API as well.

I'm building a similar solution for a slightly different usecase, so wanted to
have a look under the hood. There's nothing I can see that would stop you
using this for iOS so maybe they just don't have a iOS dev on the project.

Edit: Ah, here's why.
[https://github.com/gotify/server/issues/87](https://github.com/gotify/server/issues/87)

~~~
zmmmmm
So, their conclusion in the end that it is technically impossible to build a
self-hosted notification solution on iOS due to Apple's restrictions. Shame
because I would love to be able to deploy something like this internally at
work, but of course, half the business is walking around with iPhones. I'm
kind of curious though why it doesn't ruin every single XMPP client out there
- there seem to be a few on the App store.

~~~
petronio
Either the server is sending pushes through APNS or the client is simply not
getting messages reliably when the screen is locked or the app backgrounded,
as the network restrictions very much apply to those clients as well (and to
everything, to save power by sleeping the NICs).

------
benoliver999
Funny, I was just looking for an alternative to pushover that doesn't use
google services last week. Tested this and it worked quite well.

I actually wound up just using an SMS gateway provider with a simple API you
can just fire a get request to.

~~~
callalex
Sending a text message uses the GET verb? Yuck.

~~~
verelo
I get why that's "yuck" but if I'd hedge a bet...it's probably done because
it's easier to make a GET than it is a POST or PUT request and the length of a
text message will never exceed the query string uri length limits.

Not saying I disagree, but i don't know it changes a whole lot in this case.

~~~
beager
In this case maybe, but generally GET should be avoided for any
creative/transactional action because many systems will replay/cache GET
requests, assuming that they’re idempotent.

~~~
verelo
Yeah the caching issue is a great reason not to use a GET, i was more just
suggesting if you're being lazy and pasting a request into a browser v's using
a command line (which obviously you should) then it's easy to get going
quickly to kick the tires.

------
rakoo
[https://pushpin.org/](https://pushpin.org/) is another alternative that has
some history, has support for more protocols and is used in production by its
creators

------
188201
FCM is integrated in kernel, so it cannot be killed. And it starts a
persistent TCP connection to Google server. If all apps uses FCM, then all
notification would route through this connection, and this significantly
reduce battery consumption than the alternative, where each app uses its own
web socket server.

So, assume using a degoogled android, can this notification replaced FCM if
more apps use this notification server? This server uses web socket, so what
does FCM use for its connection? Does web socket battery efficient enough?

~~~
gruez
>FCM is integrated in kernel, so it cannot be killed.

What do you mean it's "integrated in kernel"? Are you saying google play
services includes a kernel module?

~~~
londons_explore
It does not.

It's a plain-old TCP connection in GMSCore, but has special permissions to
ignore various power save modes.

I personally wish Google would work with mobile networks to replace it with
something lower level (eg. Based on the same thing used to initiate phone
calls), because a hanging TCP connection open for many hours gets unreliable
as NAT drops it and as the phone migrates from one mobile network to another
(eg. Across country boundaries)

~~~
sofaofthedamned
That was how BlackBerry worked wasn't it?

------
blumomo
The documentation states that End2End tests are included. I didn't find them
in the repository. I want to learn from the tests - Can somebody please help
me and point me to the End2End tests?

~~~
jmattheis
You can find the ui end2end tests here:
[https://github.com/gotify/server/tree/master/ui/src/tests](https://github.com/gotify/server/tree/master/ui/src/tests)

------
linkmotif
Is there a standard understanding of what are push notifications? Are they the
same for android and iOS? I’m not sure what this project is about!

~~~
dgivney
I think Push API is an industry standard but there is this W3 draft
[https://www.w3.org/TR/push-api/](https://www.w3.org/TR/push-api/)

But yes, it's essentially implemented the same across iOS/Android and browsers
like Chrome, FF, Edge etc. There are services such as Amazon SNS or Google
Firebase that provide a single interface which can talk to all the slightly
different implementations.

In a nutshell the device registers to the server and receives an identifier
token. Then a server can send messages to that identifier and the message will
be displayed on the screen. Some providers allow for Icon, Audio and some
Actions to also be sent as part of the message payload.

~~~
linkmotif
Thank you! I’ve never actually implemented push notifications. Will soon so I
was wondering...

------
wiradikusuma
I like the idea of the project, but I'm curious.

Why would you need a self-hosted (or really, any other push-notif service)
other than the official one from Apple/Goggle?

They're optimized (for each respective platform), no need to maintain a
server, and free. If you need "cross-platform", you can use Firebase(?) that
abstracts that away.

~~~
wybiral
Privacy? Keep in mind that not everyone intends to build a user-supporting
platform on this tech. I like the concept because it's an easy way for me to
push notifications from my homebrew IoT stuff and news streams without it
flowing through ad companies.

~~~
there
You can encrypt notifications that go through Google's FCM and Apple's APNS
push notification servers. This is how Pushover works - each notification is
encrypted with a device-specific key, sent through the notification servers as
an encrypted blob, then the app on the device is woken up and receives the
blob, decrypts it, and posts it as a normal notification.

~~~
wybiral
You could. But if you don't need that kind of added complexity and scale (and
I don't for personal news updates or IoT device alerts) then why jump through
those hoops?

------
canada_dry
Bah... no linux 32 bit binary for my old home-automation server.

~~~
adraenwan
just build it yourself :)

$ git clone
[https://github.com/gotify/server](https://github.com/gotify/server)

$ cd server

$ env GOARCH=386 go build

------
sandos
This is what home assistant needs! The only really lacking thing about HA is
the lack of native Android app, but the most important thing is notifications.

------
eponeponepon
Neat. I could definitely use this for some home infrastructure I'm playing
around with at the moment - will definitely give it a shot!

------
AlfeG
Have anyone used Nats as a push notification service? We are looking for
alternatives to Google Play Services.

------
skybrian
Hmm, I didn't see anything about security while skimming the docs?

------
born2discover
Awesome! This opens the door to so many possibilities!

------
johnchristopher
Logo reminds me of traefik. Is it related ?

~~~
francislavoie
That's the Go Gopher:
[https://blog.golang.org/gopher](https://blog.golang.org/gopher)

~~~
johnchristopher
Thanks ! That mascot is super cool.

------
triplewipeass
Useless without iOS support. What’s the point of an abstraction that has only
a single implementation?

~~~
jkarneges
I'm not sure, but I don't think iOS lets apps auto-start and run in the
background forever. This would be needed for any alternative push notification
app, else it would be too easy to miss notifications.

~~~
saagarjha
It doesn't, but iOS will wake your app up when it receives push notifications.

------
nukeop
I'm not up to date with Android, but why does displaying notifications require
an entire server or a paid service? Is it not just a matter of installing a
client program and sending a curl to an endpoint?

~~~
npmn2
It is not needed for displaying the notification but specifically targeting
users. You would usually call an FCM function to get a token, which can be
used to specifically target that user and is stored in the database. To send a
notification to your customised target audience based on user-generated
events, it becomes essential to use web-service that does it for you.

For example- Let's say you wish to send a notification to user A when user B
sends him a message. In this scenario, you can call another FCM fn, using the
token user A had generated. Of course you can use the web dashboard to send
the notifications, but in this case, you would not be able to send event-based
notification reliability and in real-time. Other services also work in a
similar manner.

~~~
izacus
Of course FCM also has notion of channels where you can broadcast to certain
topics (which apps listen to) without having to track tokens on application
server side.

------
NicoJuicy
Off-topic

I got so scared when I looked at the swagger. The authentication uses the
exact same variables as mine and is somewhat similar. The name of the
endpoints are also very similar and the project has resemblance to mine.

That was really really akward for a moment.

I'll use the project though ( different use-case), looks really interesting.
Coincidentally it's for the same project as I mentioned.


Replacing ‘that = this’ assignments in JavaScript with Arrow Functions - kiyanwang
https://dbwriteups.wordpress.com/2017/04/14/replacing-that-this-assignments-in-javascript-with-arrow-functions/
======
andrewstuart2
I have never subscribed to this particular pattern (antipattern IMO), though I
do agree with a lot of the concepts Crockford proposes in "The Good Parts."
The concept of 'this' is complicated enough in ES5, with a few new
possibilities for its value in ES6+.

Since this is nearly always the pattern that's followed in the class pattern,
I nearly always alias `this`, if needed, to the lowercase instance name or
some short identifier that semantically maps to "an instance of the class". It
gets you instantly out of both the problem of "I already used `that` as an
identifier, now what?" as well as providing some nice context to what you're
working on if you happen to be scrolled beyond the function/constructor name.

        function SomeClass(arg1, secretArg) {
          var someClass = this; // or `var sc = this`, more often these days

          // Hopefully do something more interesting than this...
          someClass.arg1 = arg1;

          someClass.method = function(foo) {
            someClass.bar = foo;
            // Do something with the "private" param via closure.
            secretArg.count++;
          };
        }

Even if lambda expressions do fix the issue of "which that is that" it doesn't
provide me any helpful context for when I'm deep in coding or reading modes.

~~~
ksenzee
The this/that antipattern is one reason I dislike the class pattern. I avoid
it by using prototypes:

      SomeClass = function (arg1) {
        // Hopefully do something more interesting than this, indeed. :)
        this.arg1 = arg1;
      };

      /**
       * Assigns foo to the instance variable bar.
       */
      SomeClass.prototype.method = function (foo) {
        // Hopefully you do something more interesting than this, too!
        this.bar = foo;
      };

      someClass = new SomeClass();
      someclass.method(foo);

Then when I need a handler for a DOM element, I bind the instance to the
method:

      someClass = new SomeClass();
      var handler = someclass.method.bind(someclass);
      $('.link').click(handler); // using jQuery as easy-to-read DOM shorthand; it's not required

Or if I'm creating the handler within the class:

      /**
       * Creates a click handler for <a class="link"> elements.
       */
      SomeClass.prototype.init = function () {
        var handler = this.method.bind(this);
        $('.link').click(handler);
      };

Over the years I've found it really easy to maintain code written like this.
There's no callback hell, you don't even need Promises, and everything is easy
to document. But often I find myself in an environment where I'm maintaining
someone else's code, and I can't just refactor everything, so I grit my teeth
and use 'that' or 'self'. I like your idea a lot better.

~~~
andrewstuart2
The main reason I've come to avoid prototypes in many cases (except when I
_really_ need to control memory) is that you can't keep any kind of
information private (via closure) and share it across instance methods. It
_has_ to be a property on the instance, and is therefore accessible to anybody
with access to the instance.

Conventions (like prefixing with _) are great, but they can only help loosely
enforce encapsulation and provide no form of real privacy.

~~~
learc83
I just use factory functions that return an object that has arrow functions as
properties, then I get private information via closures, and I don't have to
worry about dealing with this.

[https://www.youtube.com/watch?v=ImwrezYhw4w](https://www.youtube.com/watch?v=ImwrezYhw4w)

------
acjohnson55
The dynamic binding of `this` at the callsite is one of Javascript's biggest
mistakes. It's a tremendous source of run-time errors, and we have to hack
around it with closures and arrow functions. How counterintuitive is that?
It's exhausting to reason about what `this` refers to within a given block of
code.

I very frequently want to pass methods around as callbacks and almost never
want my functions re-bound as methods on alternative objects. The only times I
can think of that I want to re-bind is when I'm writing library code.

~~~
int_19h
The real problem is the lack of distinction between functions and methods.
Dynamic "this" is really just a hack to make functions behave like methods
when invoked via an object member.

Python has an interesting solution to this, which is a lot more complicated -
it has a more generic concept of "descriptors" that's used to wrap functions
into magic sauce that makes them methods, taking care of "self" etc - but with
most of that complexity hidden from either side (definition and invocation).

~~~
orf
I wouldn't say the Python solution is more complicated (complex, maybe), it's
quite elegant and it essentially boils down to just pre-setting the first
argument to the class instance or class value.

You can do it yourself:

       >> def x(*args): print(args)

       >> new_func = a.__get__('silly sausage')

       >> new_func()

       ('silly sausage',)

When you do instance.method() Python will look up 'method' inside 'instance'.
If 'method' is a descriptor (with functions are), then `__get__` is called and
the first argument is set to 'instance'

Here are the docs if anyone is interested:
[https://docs.python.org/3/howto/descriptor.html](https://docs.python.org/3/howto/descriptor.html)

~~~
int_19h
Yeah, I meant descriptors themselves. Conceptually, having an ability in the
language for an object to do some special handling when it's retrieved as a
member of another object is a very powerful tool, and once you have it, it
solves this particular problem neatly. But it's also an unusual thing to have,
and few people are aware that something like this is at play every time you
write something like `a.b`.

------
bobbytherobot
Over many years of writing JavaScript, I've come to generally avoid the issues
regarding `this` by preferring a functional style of programming instead of
OO. I don't get away from OO completely and sometimes OO is the "goodest"
solution for a problem.

------
sailfast
In sum: "Since the...function was defined as an arrow function rather than the
traditional anonymous function, and since it is defined within the lexical
scope of another function X, the value of 'this' is set to the surrounding
lexical scope of X [instead of the global]"

------
yodon
Would love suggestions here, I've migrated towards a style of always using
that=this (even when not required because we're in an arrow function, for
example) because the JavaScript refactoring tools I'm aware of aren't
particularly robust (I'm mostly refactoring by hand) and I don't have
confidence that the dev (me) moving code from one method to another will
always correctly identify whether the source and destination this inheritance
contexts will have the same shape. Always using that=this doesn't solve all
problems (you can still get weird this's you're not expecting) but from what I
think I've seen this sort of "conservative" approach seems to increase the
safety of a lot of refactoring efforts in the more common use cases.

Are there sweet JS refactoring tools that a VS Code using, typescript
preferring dev like myself should be using? I'd really like to drop this style
if I can.

------
c-smile
Just on case, there is a `this super` construct in Sciter's Script for that
purpose:

       function Foo() {
         return function() {
           (this super).Bar();
         }
       }

_this super_ , when used in inner function, returns _this_ passed to outer
function call.

------
gerso
In reference to constructor invocation:

      ...a new empty object is created, (let’s name it newObj) and the function is invoked on that object,
      like say, newObj.Person() in this case.

Is this true? When a function is invoked with "new", "this" is set to the
object being constructed, but is that accomplished by making the constructor a
_method_ of the object being initialized? If so, it must be removed later on
in the process:

      (new Function).Function
      => undefined

~~~
laughinghan
It is not true. It's just a confusing attempt by the article to explain what
happens to `this` inside Person().

If anything, it's more like:

        var newObj = Object.create(Person.prototype)
        var result = Person.call(newObj)
        if (typeof result === 'object' && result !== null) return result
        return newObj

The article didn't explain it like that because that requires introducing the
concept of .call() on functions.

------
learc83
I prefer to combine arrow functions with factory functions, and avoid classes
completely. You get private variables and functions via closures. The only
real downside is that it's slightly slower.

Here's a good video on the subject
[https://www.youtube.com/watch?v=ImwrezYhw4w](https://www.youtube.com/watch?v=ImwrezYhw4w)

------
h1d
The arrow function doesn't solve it in cases where you define generator
functions. You cannot use the arrow operator for those causing syntax errors
and you still have to keep binding "this" or define "self" like in the
article.

This is one area where typescript (or es7) does it better with async functions
where arrow operators are permitted.

------
foreigner
One of my coworkers made the good suggestion that "that" is only one character
away from "this", so we use "self" instead for the same purpose.

~~~
yathern
Not to be overly pedantic, but I'm I missing something here? "that" -> "this"
is a two character change, no?

~~~
foreigner
Ha ha of course you're right! Math is hard.

~~~
kevin_thibedeau
Barbie? That you?

------
Waterluvian
I haven't had to use that = this in a few years and it's immensely improved
understandability of the code I work on.

------
gcb0
if you develop for browsers, title can be: how to lose 60% of your user base
to avoid one simple line.

if you are a node developer, title can be: something very banal you've been
using for ages.


What Wittgenstein Learned from Teaching Elementary School - Hooke
http://www.theparisreview.org/blog/2015/03/05/wittgenstein-schoolteacher
======
a_bonobo
>It’s hard now to know how consistent his use of corporal punishment was with
standard practice at the time.

The quoted Wittgenstein biography of Monk (highly recommended!) actually has a
comment on that:

>Another girl who was weak at mathematics remembers that one day Wittgenstein
pulled her hair so hard that when she later combed it a lot of it fell out.
[...] It was not that the villagers disapproved of corporal punishment, nor
that such methods of discipline were at all unusual, despite Glöckel’s
recommendations. However, though it was accepted that an unruly boy should
have his ears boxed if he misbehaved, it was not expected that a girl who
could not grasp algebra should receive the same treatment.

Location 419.4/1469 in my ebook copy

So, at least according to Monk, Wittgenstein's methods of corporal punishment
were according to the times when it came to male students, but not according
to the times when it came to female students, especially when it's about
mathematics.

~~~
a_humean
Monk's biography on Wittgenstein is great. I recommend his newest one on
Oppenheimer if you haven't read it.

I think Monk's point wasn't just about gender, but also about whether the
punishment was appropriate or proportionate in any case. Disrupting a class
should be punishable regardless of gender, but struggling with a difficult
lesson, especially one deemed unimportant for young girls at the time, is not
a publishable fault. There was also the fact that Wittgenstein's corporal
punishment was particularly harsh, and on one occasion fled town when even he
realised that he went too far by basically hospitalising a young girl. In
later life he eventually returned to apologise, but had his apology refused.

------
leroy_masochist
What I find interesting is that Wittgenstein seemed to view his students not
as "students" per se, but as foils for his ongoing inquisition into his own
understanding of philology, ontology, and philosophy.

He wasn't teaching just for the sake of doing something good; he was using
grade school students as test subjects (in a very benign way) for his own
exploration of paradigms of human consciousness. I find this to be an
interesting twist -- one might expect that a prominent philosopher hanging up
the gloves to teach grade schoolers constituted an instance of the old "rapid
burnout disguised as a moral epiphany". But no -- in fact, Wittgenstein
realized that he could only learn what he wanted to learn by teaching grade
school, and set about doing that without fully explaining his thought process
to the rest of the world, who probably would not have understood anyway.

~~~
jpt4
Though I have found no evidence of its inspiration by Wittgenstein's
experience, nonetheless one is reminded of the title character in Herman
Hesse's "Magister Ludi", who

[Spoiler Alert]

abnegates his position as head of the world's leading (perhaps only) academy
to seek a reification of philosophy (to "bring it into contact with the
broader world"), in part through the tutoring of a childhood friend's young
son.

I must at some point comb through the accounts of both attempts at this goal,
to see if the resemblance is more than superficial.

------
ianamartin
My experience, for what ever this is worth, was interesting when I was
teaching kids.

I taught violin and music theory for a University prep program when I was in
the later years of my undergrad.

A few things stuck out at me when I was doing this, and keep in mind--I had no
classes on education theory at all at the time. I was just a good, gifted
performer who had done some serious study of music theory. Music Theory
emerges from the Philosophy of the time, so teaching about that is also
teaching about the history of Western thought and also the social climate of
the different periods of time that you are covering with music. Along with
that comes the baggage of the Catholic church. The history of "Classical
Music" is much aligned with the history of the Church.

So there's a lot to cover.

I learned a ton from this experience, and it was good for me, and -- I hope --
good for my students.

Some things I learned from this in no particular order:

In a one-to-one setting with a young student, as in really young, like 4-5
years old, where you are trying to teach difficult things, get down on your
knees. That young kid is looking at an unfamiliar giant who is now telling
them to do things they don't understand. They are still looking at you and
wondering what the fuck is happening. Get to eye level with that kid. The kid
will be far more focused than if they are looking at what they think of as a
giant stranger.

Time yourself. If you are going to work on some really demanding physical and
mental things with kids like learning to hear and play an instrument, give the
kid a break every 10 minutes or so. The formula I ended up with at this gig
was to do 10 minutes of supervised practice on instrument mechanics and then 5
minutes or so of theory.

Across a range of "talent" levels, I was able to produce pretty amazing
progress with this method because you can keep a 5-year-old's interest for a
lot longer if you are changing things up every so often.

I could do an hour or two with a young kid, where other teachers were losing
steam and traction with the students after a half hour.

I never beat any kids, or hit them in any way. I grew up in that environment,
and I thought it was awful as a kid. As an adult I find it even more
repulsive. It's not, in my opinion, necessary for high achievement. And in my
personal experience, it was detrimental.

In a classroom situation, I feel like you are sort of stuck. You have to
present things as best you can and hope that everyone gets it. But you can
have some creative control sometimes. I remember teaching one theory class to
a wide range of kids. All of my students got locked into one history class at
the prep school. So I had kids who were 5-6 years old and kids who were close
to my own age at the time (I was 19, and the oldest students were 17).

That's tough, and I don't have anything to offer someone stuck in that
situation. But it is possible to come up with a curriculum that can work for
this assuming that everyone in the class in equally ignorant. It's just hard
to do.

Don't be a male teaching any underage female past puberty one-on-one. Just
don't do it. I never got into trouble, but I know many totally innocent people
who have. I'm sure it works the other way. But there's a lot of emotion going
on in pubescent kids, and they are likely to have confused romantic feelings
about figures of authority who are not abusive. Just don't get close to that
situation.

The last thing I want to say from my experience is that kids like to be
treated with respect. That's part of the getting down on your knees thing.
Another part of respect is to just assume that they will behave well and
create an environment in which it makes sense for them to behave well. Talk to
them like adults. Give them the freedom to fail and make mistakes.

They usually will not fail. They will usually step up to the challenge and do
some amazing things.

~~~
eyan
Sir, I wish all teachers (and parents) learn from this. Well said.

~~~
ianamartin
Thank you.

I would like to point out that my observations as a music teacher are not
limited to that one experience of teaching the children of upper middle class
white Texans.

I've been involved with the El Systeme projects in South America and co-
founded a Systeme project in the Philippines a few years ago with my brother.

These projects target the poorest of the poor in these countries--the same
people that drug cartels and criminal gangs recruit from.

We offer an alternative to that life. And we take it not to people who can
afford things like music lessons for their kids, but rather to families who
have no other options.

We set up a safe building where kids can go for their music lessons, and we
treat them with respect. We learn their language. We expect them to practice
and get better, but we are not mean to them if they don't.

It's service to the world that gave me and my brother the talent and
opportunities that we have.

Those things I mentioned in my post are things that cut across cultural and
class boundaries. Those are things that bring children--who have every
opportunity to go join a gang or deal drugs or go do whatever--back to the
music program time and again.

It's completely anecdotal information, and I'm aware of that. But it's working
in a small number of cases. Next year, we'll have a first generation of these
students getting visas to come to the U.S. to study music at one of our
universities.

Some of them won't just study music. Some of them are intrigued by computers,
and I've been teaching some comp sci at these programs as just an aside thing.

The U.S. is going to have a few more highly motivated, extremely talented,
hard working, legal immigrants next year.

I guess, if I can stop rambling for a moment, what I mean to say is this:

A lot of education isn't really about what you study or where you learn. It's
about training your brain to think about things in a certain way. I think
that's what Wittgenstein was getting at, in his own way.

I didn't get to be a software developer the normal way. But I learned to solve
problems through the lens of being a musician, which is all about solving real
problems.

I don't know what these kids will do with their lives. These ones that I've
only ever taught music to. But I know that some of the ones I taught when I
was 19 have already grown up to be really competent physicists, computer
scientists, and psychologists, and athletes.

Maybe they would have done that anyway. It's true. We don't know.

But we know that the poor kids from the countries I'm working in right now in
my spare time will not have had that opportunity. So we'll see.

~~~
rogeryu
> A lot of education isn't really about what you study or where you learn.
> It's about training your brain to think about things in a certain way.

In university I followed courses in Computing, Psychology, Law and Theology.
All had different ways of learning, approaching the subject. Psychology was
(for me) all about questioning: you can never be 100% sure and should always
be aware of another possible explanation. This has stuck with me, and I'm
champion finding alternative explanations.

One of my fellow students changed to medicine, and he told me that it was the
complete opposite. If you questioned a method or theory (as first year
student), you were completely out of line. These methods were tested thousands
of times, and no stupid first year student could think of a better way, so
don't even try. I guess this changes over time because you have to change
methods to make progress, but it makes clear how different cultures can be.

------
igravious
Some philosophers assume language. Aristotle assumed language, as far as I
know. It is unwise to assume language.

Philosophers manipulate concepts. This means that they create, destroy, morph,
change, add to, take away from, and so on. They put concepts into certain
sorts of relationships with other concepts. If it is true in Ruby that
_everything_ is an object, I think it is a fair analogy to say that in
philosophy everything is a concept. Concepts may be anonymous, like anonymous
functions, but also concepts are labelled, and concepts have descriptions.

Philosophy has both a _what_ and a _how_. This is the same as any discipline.
There is the subject matter of the discipline and also the methods (or if you
want to be fancy, the methodologies) of the discipline. The difference between
philosophy and other disciplines is mainly the subject matter. In philosophy
the concepts are of a certain sort, abstract rather than concrete, though no-
one knows as yet how to draw that distinction, some even disagree that there
is the possibility of drawing a clear distinction.

[A side note. Even though humans are pretty adaptable, because humans have
spent 99.99% of our evolutionary existence not being philosophers, we have a
lot of systems in place that make us ill-suited for philosophizing. What I am
trying to say is that learning _how_ to do philosophy (for a human being) is
as much about learning how to overcome human fallibility and bias and
prejudice as it is about learning how to think logically (this is overrated)
and learning how to manipulate concepts like a boss (this is underrated).]

Concepts are conveyed from person to person using language. When one starts
thinking about thinking you end up having to try to understand how it is that
we are able to manipulate concepts in the first place and also how it is we
come to acquire language. It is this conceptual and linguistic process that
Wittgenstein could observe first-hand while teaching kids.

~~~
sgt101
Some concepts are conveyed using language, others fail to be conveyed and are
the focus of the attempts of humans to innovate in the use of language. The
personal experience of love is one of these that has kept poets busy for a few
thousand years!

------
timothybone
He was also hoping I think to debarb his relentless search to know philosophy.
Everywhere he looked it seemed despair, even finding out his famousness in
Vienna, did not help him. He was utterly lost, and so looking to children,
found some light in their innocence. I've read quite a bit on Wittgenstein,
and he seems to always be wandering, as if there is no one thing to explain
anything at all. What is energy? Well it exists within the usage, as in, how
would you teach a child to use the word?

------
gnarbarian
Thanks for this. It prompted me to break out my old copy of The Wittgenstein
Reader for a second read.

[http://www.amazon.com/The-Wittgenstein-Reader-Anthony-
Kenny/...](http://www.amazon.com/The-Wittgenstein-Reader-Anthony-
Kenny/dp/1405135840)


Show HN: My weekend project gets engineers a girlfriend via command line - jonthepirate
http://clidate.io/

======
wmat
What's next, #geekdate on Freenode?


Opendoor Launches - uptown
https://www.opendoor.com/

======
LukeFitzpatrick
Nice looking site. Just letting you know, the video really slowed up the
loading time. Took about 30 seconds+ for the second half of the page to load
up. And, I've got a super fast connection.