CVE-2019-1347: When a mouse over a file is enough to crash your system - danso
https://blog.tetrane.com/2019/11/12/pe-parser-crash.html
======
jacquesm
One more bit of proof that if you want proper isolation _you should not bloat
your kernel_. All this stuff belongs in userland. At least there the damage
will be limited.

~~~
millstone
The crash is in parsing an executable file. Linux also performs this parsing
in the kernel. Moving it to userland would be a microkernel design.

~~~
duskwuff
> The crash is in parsing an executable file.

In a context that doesn't involve executing it. On a Linux system, this
functionality would probably be implemented with libelf or libbfd, neither of
which depends on the kernel.

~~~
Varriount
But here's a question - supposing that this functionality was moved into a
hypothetical library "pe.dll"/"pe.exe", how would the kernel load this library
or executable? Wouldn't one run into a catch-22 situation?

~~~
paulddraper
The kernel would probably statically link it.

~~~
saagarjha
…wouldn’t that have the effect of bringing this code back into the kernel’s
address space?

~~~
paulddraper
The code itself would be in the kernel, but the "parsing while mousing over"
invocation would be on userspace code.

That is, the parse logic could be a library linked by multiple application.

------
leetrout
I assume the audience of a post like this is other security researchers?

That's a radical piece of software, though. I've never seen anything like that
before.

The text and technical details supporting the screen caps is very dense and
hard to approach as a complete outsider. I would love to have a glossary with
all the terms and initialisms/acronyms in use. PTE (apparently means page
table entry), for example, is something I've never heard of before.

~~~
stevemk14ebr
I'm in the security field and do work similar to this professionally. This
article it poorly written and i found the videos shown absolutely useless. If
you want to see how technical articles should read, take a look at j00ru's
blog (research that found this). That is how you write about this stuff.

~~~
sqldba
Thank goodness!

I looked at the article and it made me mad because it seemed to be a bunch of
nonsense.

I mean the second video paragraph is: "A closer look at the memcpy arguments
shows that this address is built as 0xfffff8035b2a0000 + 0xe7ff, so we taint
the value 0xe7ff to find where it comes from." But there's absolutely zero
explanation of what we're looking at.

So it made me mad because it made me feel stupid for not understanding it,
when in reality it's just poorly written. Poor communication is theft.

------
petschge
This issue apparently affected Windows 8.1, Windows 10 and their corresponding
Server editions (32-bit and 64-bit) and has been patched since October 8th.

------
temac
The real question is: why the fuck the kernel parses the PE on just a mouse
over... it like Windows is asking for vulns with even more impact :/

~~~
rincebrain
It displays an overlay when you hover the mouse over a PE executable with
information like the author/company/version/date created.

The fact that it does this in the kernel is foolish, but there's functionality
directly tied to this, not an indirect chain of things that results in parsing
this for little reason.

~~~
malux85
Nobody is contesting that there’s a chain of events that leads to this, but
doing this in the kernel is not “foolish” - it’s batshit insane, amateurish
and frankly laughable.

~~~
barrkel
Typically these things happen because people want to reuse code. There's some
code that parses executables, there's a bit of shell that wants to display
information from an executable, and someone joins the two together without
understanding the ramifications.

~~~
c256
I would argue that the stronger reason is that Windows typically doesn’t
enforce, allow, or contains any distinction between kernel code and user-space
code. This happens because there is a gigantic gravity well of pre-existing
code that predates and/or precludes real separation, and the costs of
concretely losing that support was nearly always judged higher than the
abstract benefit of adding separation.

One old example: I have an old friend who used to do sysadmin work in the
Windows 2k days, and he would often get gigs by speeding up services by 5-15%
within a day. His go-to trick was to log into the headless win2k server and
disable the screensaver process, then wait.

~~~
kevingadd
Windows NT (and as a result win2k, xp, 7, 8, and 10) has always had strict
user and kernel space separation. Modern Windows also has separate 'integrity
levels' within user space - for example, Chrome and Firefox run most of their
functionality at 'Low' integrity to prevent compromised browser code from
being used to exploit other processes. I'm not sure what the basis is for the
claims you're making about the kernel. The idea that distinguishing between
kernel and user code is Not Allowed is very confusing to me, how would you do
that without running both user and kernel code at the same privilege level in
a shared address space?

The CVE here literally has nothing to do with privilege separation or being
unable to distinguish between user mode and kernel mode. It's this simple:

* Someone in user-space wanted to parse an executable to get information on it

* A syscall is exposed to parse an executable

* They used the syscall to parse the executable, and that code path had a bug in it which triggered a BSOD (since the failure was in kernel mode).

In the end, this is just "a syscall had a bug in it that caused a kernel
crash, and a user-mode application issued the syscall on mouse-over".

------
m712
The images in the article will stay a blurry mess without Javascript and will
not load. Please don't do this. Use progressive images.

EDIT: Apparently they are videos, but you can still add thumbnail images to
native HTML5 videos without loading 40 script files (that uMatrix reported).


The "Soft Maximum" function - epe
http://www.johndcook.com/blog/2010/01/13/soft-maximum/

======
mcantor
This is my problem with mathematics. The concept of a "soft maximum," the
principles behind calculating it, and its startling similarity to a hard
maximum, are all fascinating and exciting to me. Look at that! Two completely
separate functions, and such magical results. According to this post, it's
useful for "convex optimization." I clicked through to the "related post,"
which was merely a comment about someone else's opinions on "convex
optimization," so I looked it up on Wikipedia:

<http://en.wikipedia.org/wiki/Convex_optimization>

Ah! A technique used to "minimize convex functions." Maybe some of this
notation will make sense to me if I understand the underlying concept of
whatever a "convex function" is.

<http://en.wikipedia.org/wiki/Convex_functions>

Great. An entire article that is completely and utterly meaningless to me. I
mean, absolutely nothing in that article--oh! "Convex sets?" That looks
promising.

<http://en.wikipedia.org/wiki/Convex_set>

Jackpot! The pretty pictures make the idea of a convex set clear to me.
Unfortunately, by now I'm 4 clicks away, and my actual understanding of the
subject is clearly just scratching the surface. Connecting my newfound--and
obviously still naive--understanding of convexity* to "soft maximums," which
initially inspired this search, feels dumbfoundingly impossible.

Am I approaching this all wrong? Am I expecting too much? Thinking too little?
I would love to understand more about this subject, and I have tried to learn
it the same way I learned how to program: by Googling and working on my own
problems. However, the resources simply don't seem to be there in the same
way. What's the deal, here?

* Would it be more accurate to say "Euclidian convexity?" What would that mean, exactly?

~~~
fgimenez
Trying to learn math from Wikipedia is like trying to learn English from the
dictionary.

As far as the subject matter goes, a convex function can just be thought of as
a function with a global maximum/minimum and no other local maximum/minimum.
I.E. The derivative is zero in only one place which is the global max/min.
These functions can then be easily optimized by taking their derivatives and
finding the zero. It is a really nice way to optimize a problem.

~~~
ntownsend
No, in this case, a convex function is one where you can draw a straight line
between any two points on its graph and not have the line intersect the graph
at a third point.

~~~
pieceofpeace
You are not contradicting what fgimenez said, its the same condition stated
differently.

edit: if two statements are not essentially same (and I am wrong), could you
please explain it.

~~~
jamii
The logarithm function is convex by this definition but has no maximum/minimum
point and never has 0 derivative.

------
imurray
The soft maximum often comes up when dealing with probabilistic models and in
neural networks. I'm surprised that a blog that has been highlighting
numerical issues hasn't pointed out how the soft maximum should be _computed_.

If x is vector of values then the naive code is:

      log(sum(exp(x)))

where exp operates elementwise. However, if even a single item of x is large
(1000 say) this will return Inf. If x are log probabilities, where you want
the log of the sum of the probabilities (common), the elements of x might all
be less than -1000 (also common) and then the function will return -Inf.

Many people have a function called logsumexp() kicking about to compute the
softmax robustly. It will do something like:

        y = max(x);
        return y + log(sum(exp(x-y)));

One example, slightly more elaborate, Matlab implementation is in:
[http://research.microsoft.com/en-
us/um/people/minka/software...](http://research.microsoft.com/en-
us/um/people/minka/software/lightspeed/)

~~~
dalke
See the followup posting

------
tjic
The huge flaw with this article: explaining WHY I would ever want to use a
soft maximum.

Yes, it "sands off the corners".

Why do I want that?

~~~
flipper
The article was possibly aimed at engineers or mathematicians so the author
thought the benefits didn't need explaining.

A soft maximum might be useful if you want a differentiable function that
closely approximates the max() function. By differentiable I mean you can work
out the rate of change of the function at any point. With the hard maximum,
the rate of change at the hard edge is not defined. Nicer to have one function
to represent the RoC and not have to worry about special cases.

~~~
tjic
Yep, I do have a CS degree, and I realized that the crisp corners are not
differentiable ... but a short paragraph about that and giving a few real
world examples would have strongly improved the post.

------
ramanujan
This is useful analytically, but one tradeoff here is that if this is in an
inner loop, the exp/sum/log process will be a lot more expensive than a simple
max.

For proofs and stuff it can be invaluable to have a differentiable objective
function, but in actual computation it's not always necessary.

~~~
roundsquare
Depending on your application, a good compromise might be to use soft max if
the numbers are nearby and a hard max if they are very distant (though you'd
need to find a suitable definition of distant and nearby).

------
mitko
Also known as "smoothed" max/min which in my opinion is better name as it is
mathematically more meaningful as the max function [NOT smooth] is
approximated with a smooth function.

There is no such thing as soft function in mathematics! Please be consistent
when naming...

------
shalmanese
Is there a accepted modification to the function to make it scale invariant?
I'm kind of weirded out by something that would spit out a different result if
did a unit change.

~~~
memetichazard
Here's an idea. Take the scaled function: g(x, y; k) = log( exp(kx) + exp(ky)
) / k

Let k be 1/max(x,y) so that you have:

g(x,y) = log(exp(1)+exp(min(x,y)/max(x,y))*max(x,y)

There are some issues if the maximum value can be negative or zero, though.


Ask HN: Fitting a Rockchip RK3399 into an X201? - dhanvanthri
I've been using a librebooted X200 for 3 years now. It's no overstatement to say that it delivers the most holistically amazing computing environment I've ever worked in.
If I'm to buy a new laptop, it must remain "superficially" identical/comparable. I want better performance, but what's ciritcal is getting as much battery life and improved thermals as I can. Even the screen is not as much of an issue to me as those 2.
Now I've been looking at some products offered by thinkpad modders, but knowledge of the non free bios weighs some on my mind.
Since acquiring this laptop, beside remaining abreast of news about Pine and others striving toward software/hardware freedom, I've totally cauterized myself from the greater consumer tech ecosystem.
With the context out of the way, what I want to know is whether it's possible to retrofit a Thinkpad X201 (When I'm casually using my X200, while laying down and watching a video for example, I miss the touchpad), with modern hardware capable of running mostly/all free software. I'm honestly not sure what projects are out there, and which ones are promising. Now although I do crave more performance, the thought of going from this beut to ANY of the machines I see on the market is appalling.
In parallel, why do consumers love sodomizing themselves with whatever garbage companies throw at them? What happened to voting with one's wallet?
Anyway...
I don't even know how to make headway into a project like this. I'd love a little guidance specifically about retrofitting X201s, as well as about  retrofitting any of the prime era thinkpad shells for my needs.
======
2025
Try looking on r/thinkpad there’s a lot of decicated enthusiasts. Or if you
can read Chinese, 51nb is your best bet.

~~~
dhanvanthri
51NB has actually been fragmented, and various members of the original project
are selling their own modded equipment.

Thank you though, I'll make sure to check r/thinkpads!


Ask HN: What happens to old developers? - darrennix
It seems like the overwhelming majority of engineers in the valley are guys in the 22-30 band.  What happens at 30?
I'm three months away from the big 3-0 and I'd like to know what's going to happen.
Will I stop being employable?
Will I be expected to put on a tie and stop writing code?
I'm tempted to think that tech phenomenon is just so new that the median age of engineers hasn't had time to move up but that doesn't foot...  all the guys who were 25 in 1996 are now in their 40s.  Are they still writing code?
======
7402
I was shocked by this question. I'm 56 and I've worked at a variety of SF Bay
Area companies since 1984 as a software engineer. It's been my experience that
if you love coding and you keep learning new languages and technologies, then
you can keep on coding. The other software engineers I work with are in their
20s, 30s, 40s and 50s.

Over the years, I've participated in probably more than a hundred discussions
about job candidates I've helped interview for software engineering positions
at places I've worked. I have never seen age discrimination. It is true that
someone who has, say, been a manager for the past 10 years and now wants to
"return" to programming may be regarded as a dubious candidate - but the same
doubt would also apply to a candidate who is 26 and has not done much
programming since the age of 16. It is also true that if you have learned
nothing but FORTRAN or COBOL, we aren't going to be interested in hiring you
for our Ruby-on-Rails / JavaScript / C++ project. But it's not hard to tell
who is a real software developer, no matter what their age - it's someone who
just _has_ to write code, like a writer has to write or an artist has to make
art.

One thing I've always prized about technical work and hacker culture in
general, is that outer appearances matter much less than in other fields. We
don't need to judge what someone looks like, what clothes they wear, where
they come from, how old they are; we just need to see what they do and how
they act. If you are working someplace where that's not the case, I encourage
you to look elsewhere. Otherwise, keep learning and continue to enjoy coding.

------
maxdemarzi
Some move to management, some move to architecture but there are plenty of
"old" software developers.

Look up "neckbeard"... or here
<http://www.urbandictionary.com/define.php?term=neckbeard> Items 2 and 6.

I think as you get older, you seem to go lower on the stack and find yourself
building software that others use to build software, or get tied up in the
abstract with your own ideas for a language, algorithms, etc.

... but I'm only 32, so I'm not sure.

------
oh_no_my_eyes
I'm about to turn 30 in a month. I find myself coding less and spending more
time reviewing code and systems designs. I work with other, younger devs
(hopefully) teaching how to structure applications and organize them for
easier deployment. I'm still always on the lookout new ideas, tools, language
patterns, etc. That part of the job never stops. I also get to think about
higher level systems architecture, scalability/availability. Fun stuff :) If
you wanna stay elbow deep in code and not manage people or go to meetings all
day then work with a small startup where every developer has to pitch in.

------
tomfakes
I think it's something like the plot of the Logan's Run movie:
<http://en.wikipedia.org/wiki/Logan%27s_Run_(1976_film)>

~~~
Zev
I was pulling for Soylent Green myself:
<http://en.wikipedia.org/wiki/Soylent_Green>

------
latch
I'm turning 32 soon, and I feel like I'm where 22 year olds are today. I'm
motivated, willing to take risk, untied. It was a strange ride to get here
though.

------
andrewcooke
it was my 44th birthday yesterday. i write software. i've
written/edited/deleted various answers to this question - i'm not sure what i
can add that's relevant on a personal level. seems like you are really looking
for some kind of statistical answer. but if there's anything you're curious
about, feel free to ask here or by email.

------
mrlyc
I'm 56 and I've had trouble finding a job. Part of it is because of my age -
employers aren't allowed to say that so they say there are "too many jobs" on
my résumé - and part of it is that I haven't kept up to date. I stuck with C,
refusing to learn C++ which I find revolting and C# which comes from a
revolting company.

------
zabuch
You may find it difficult to believe but I personally know and worked with a
guy, who has decided to _start_ work in IT when he was 32. With absolutely no
prior experience in IT, after few years he became quite decent developer. He
is nearly 40 now and he is still coding.

------
thoughtsimple
My personal experience is that it becomes tougher to find a full time
programming position after about 40. Like hga, I look younger than my age but
that is starting to fail as I get older. I haven't resorted to scrubbing my
resume yet but I've considered it.

I mostly do contracting now. It avoids many of the issues of trying to get
hired after 40. For short term gigs, fewer managers care about your age. I
prefer contracting so that works out well for me.

I will have to come up with a strategy for dealing with age discrimination
since I've tried other jobs and hated them. I'm a programmer and it is pretty
much all I want to do. My short stint as a manager was pretty much a failure
and I really didn't find anything I liked about it.

------
wkearney99
There's often more money and less stress to be found doing something else. You
figure this out as you get older. You wise up and start wanting to have a life
and not spend every waking hour typing code. Thus you move up the management
chain and find a new crop of the young and stupid to accept the wages and
working conditions. Just wait, it'll dawn on you eventually...

------
klaut
I am 35, developer (actively coding) and feel like i am still in my twenties.
And I only now (like a year ago) started to consider to start a business. Is
there something wrong with me? But it's true, sometimes I wish i was 22 again.

------
wuster
There are plenty of mid-late 30s Software Engineers at the Big G.

~~~
hga
But how many mid 40s through, say, somewhere in the '50s (which I'll pick as
an end point due to the availability of PCs in the '70s and programming jobs
in the '80s)?

------
dreamux
30 is a common age to start a family these days, you don't stop programming
but your priorities certainly change.

------
gyardley
At my last company, we had a great guy in his 50s writing code for us. I
wouldn't worry about it.

------
hga
_Will I stop being employable?_

As a conventional, salaried programming employee? Yes. (In what other field
does 5 of so years of experience allow you a title with "Senior" in it?)

My experience is illuminating in that I'm blessed with genes that allow me to
look _much_ younger than I am. I'm now 50 and in casual encounters (e.g. in
stores or restaurants) I'm still routinely mistaken for an 20s something
possible student (of course I dress the part).

In the '90s, as I made the journey from 30 to 40 I noticed it became harder
and harder to get results from sending out resumes ... until I got a clue and
scrubbed my resume of the hard evidence of how old I was (education dates; by
the time this happened I'd already scrubbed it of jobs prior to 1990).

The difference was like night and day, and if I watched my words I was able to
keep up the subterfuge until I was hired and had to prove to HR I could be
legally employed, something that didn't necessarily make its way to my
managers. There was one interview a bit less than a decade ago where I slipped
and mentioned working on PDP-11s ... the response was "Just how old _are_
you?!??!!" (yes, that's illegal, but it was an instant honest response). They
did hire me but it didn't work out; they were desperate but it's just as
likely it was due to total cluelessness of the real customer, a state agency.

So my advice is one or more of the following:

Hide your age if you can and for however long you can. They can't legally ask.

Transition as quick as you can to a field that doesn't care so much about age.
Embedded tends to be one (although not the Detroit car companies).

Get out of the conventional salaried programming career ("Nobody ever got rich
typing"). As noted by others, you can move to management (which is genuinely
challenging). You can be a consultant, although that tends to be a hard life.
Or otherwise become your own boss, i.e. be a founder of startups.

Note that my experience is on the East Coast; I've _heard_ that age
discrimination in the Bay area is much worse.

~~~
Daniel_Newby
How do you reconcile this with the common claim that programmers are painfully
difficult to recruit? If they can't find people who can pass the FizzBuzz
test, why would they narrow the applicant pool even further?

~~~
hga
Prejudice (for that is what this seems to be, although I don't know not having
it) doesn't have to be rational.

Some of this is almost certainly due to low quality (middle) management;
people who are unable to mentor or supervise someone coming up to speed in
their company's technical ecosystem are infamous for playing buzzword bingo
with resumes and not indefinitely not filling positions. It's a small leap
from that to e.g. not being willing to manage someone significantly older than
you.

Then there are entirely rational aspects: older programmers tend to cost more
per unit of time. In the US past 39 in the US they can sue for age
discrimination if fired (see e.g.
[http://en.wikipedia.org/wiki/Brian_Reid_%28computer_scientis...](http://en.wikipedia.org/wiki/Brian_Reid_%28computer_scientist%29)
for the current best known example). Safest not to hire them in the first
place, that's legally _much_ easier to defend.

I've been hired entirely on the basis of FizzBuzz type tests when the hiring
manager took an instant dislike to me. He tried to find a reason not to hire
me (as reported by one of my references, who knew both of us, me very well)
but went ahead and did it because it was the only way to save his company (I
was the only one who passed the tests). He was just out of college with no
management experience and I was 37 (I think age was a small but otherwise
minor factor in all this).

So rationality can overcome a lot. But how many times have we seen managers
make "irrational" project or company killing hiring and firing decisions? How
many investors have preferred to have all of nothing instead of some of
something?


Bitrig 1.0 Released – OpenBSD fork - chrismsnz
http://article.gmane.org/gmane.os.bitrig.devel/6

======
hhw
There was a discussion about this on the OpenBSD misc mailing archives back in
2012:
[http://marc.info/?t=133961305400003&r=1&w=2](http://marc.info/?t=133961305400003&r=1&w=2)

Theo's initial response to the thread, which may help illuminate the
situation, was:

"Except for the fact that it is bullshit.

They started the fork because they got kicked out because one developer
(Marco) hired 5 other developers for his startup company, and attempted to
hire around 10 other developers in a sneaky and underhanded way. They were
told, oh i forget they were "asked", to not tell anyone else in OpenBSD that
this was happening, probably because people "including Theo" would be upset.

Funny thing is, I've never been upset about the 20+ OpenBSD and ex-OpenBSD
developers who now work for google.

Previously, many of those developers were in critical positions in the
development team. As they were suddenly hired with such terms and conditions,
they became more scarce in OpenBSD -- perhaps because they suddenly got real
busy with work, but also to avoid telling others that this was happening.
Various projects lagged. To avoid telling a lie, they instead chose to not
tell the truth. It had effects. It was dishonest of them to not tell their co-
developers that they were creating vacuums in the development process.

So because of those decisions, they are now gone from OpenBSD. And now they
miss it. So now, all these guys who work for the same company have started a
fork. And it is directed by the guy who hired them in the first place.

From where I stand, that is the truth.

Yet none of that is in that article, because the truth hurts, doesn't it
guys?"

~~~
illumen
I don't like that this gossip thread from a few years ago is at the top.
People come to Hackernews for entertainment (including me), but I still don't
like it. Mainly I'm here so I can learn things, and see what other people are
doing. The gossip side of things is sort of annoying.

It's much more interesting to compare the development process of the groups,
and how the two groups will help each other.

I always thought if OpenBSD had modern development tools and processes they
would do really well, but unfortunately there are too many risks. How they're
doing it works well for them already. But perhaps this situation with another
group working in a different way better again. Since this project can
experiment, and anything that is proven can be taken on by OpenBSD.

~~~
hhw
A thread with some of the people most directly involved, including OpenBSD's
founder, on how the fork happened is as relevant to the subject at hand as it
gets. Not sure why you view it as gossip. It also directly answers your
question on how the two groups will help each other i.e. not much at all.

~~~
clarry
> It also directly answers your question on how the two groups will help each
> other i.e. not much at all.

Hopefully the bitterness surrounding the fork's birth will eventually wash
away and the people involved just look at the benefits. And it's not true that
the two groups aren't helping each other. Some code does flow between OpenBSD
and Bitrig, just as it does between OpenBSD and NetBSD. And there are people
who are involved in both, and communicating with developers from both
projects.

------
Bluerise
Bitrig developer here, feel free to shoot questions!

~~~
yrmt
Correct me if I'm wrong, but most of the things (or maybe just the ideas?) you
have implemented seems to be coming from NetBSD. If so, could you share other
NetBSD stuff you'd like to see on Bitrig ?

Congratulations on the 1.0 !

~~~
Bluerise
For me personally, better armv7 support. Even though many things stem from our
hands, NetBSD and FreeBSD are a great resource. I have already started working
on SMP support, based on their example.

Otherwise I do not have any NetBSD stuff in mind. Can't speak for our other
developers though. ;)

I would love to have FreeBSD's bhyve on Bitrig. I will dedicate some time in
January for that goal. DragonflyBSD is an inspiration for us, too. We have an
experimental branch (smpns) for revamping the kernel for decent SMP support.

------
paulannesley
I love this in the FAQ:

> Why is the project named Bitrig? > > The name Bitrig is derived from the
> Latin "Bitrigus", the name of the software used by the Romans to conquer
> Europe. Sadly, not having zero among its numerals made traditional computer
> science difficult for the Romans and the project was put on hold
> indefinitely. Bitrigus faded into obscurity until it was recently
> rediscovered at a Viking archaeological site in the modern day country of
> Iceland. > > The Roman emperor Hadrian is rumored to have sent Bitrigus as
> far west as a boat could carry it to keep it from the then growing threat of
> religious fanaticism within the Roman Empire.

------
protomyth
Aren't there some compiler additions to GCC that OpenBSD relies on that
haven't made it into LLVM/clang?

~~~
calvin_
well, support for VAX might be one

~~~
protomyth
I was thinking -fstack-shuffle and its related changes

------
debacle
Why did they decide to fork OpenBSD?

~~~
adamnemecek
"With the goal of bringing more experimental development to the OpenBSD code
base, a few developers have announced a fork named Bitrig. According to their
FAQ, Bitrig aims to build a small system targeting only modern hardware and
"be a very commercially friendly code base by using non-viral licenses where
possible." Their first step toward that goal was removing GCC in favor of
LLVM/Clang. The project roadmap shows their future goals as adding FUSE
support, improving multiprocessing, porting the system to ARM, and replacing
the GNU C++ library with LLVM's."

[http://bsd-beta.slashdot.org/story/12/06/13/1645211/openbsd-...](http://bsd-
beta.slashdot.org/story/12/06/13/1645211/openbsd-fork-bitrig-announced)

~~~
danudey
Portability and modernity instead of a security focus?

I'm not sure why I would use a fork of OpenBSD instead of just FreeBSD though.
I've always seen the primary benefits of OpenBSD as deriving from their
obsessive focus on security, but if this fork isn't focussed on that I'm not
sure what I gain vs. other BSDs that already have these goals and objectives
in place/completed.

~~~
sigzero
Exactly. OpenBSD is very specific in what it is. That description is more a
description for a fork of FreeBSD or NetBSD.

~~~
BBoingo
OpenBSD has always had a strong focus on protability. It's just the focus on
portability was never restricted to "modernity" for the reason that there's
few interestingly different processors anymore you can compile against to
check for breaking errors.

It would be interesting though if Bitrig became sort of a DragonflyBSD for
OpenBSD, where weird experimental stuff can be tested in a separate
playground.

------
chaz72
Will OpenBSD look to pull from their updated C++ libraries?

------
jakschu
I'm super excited about this!


Ask HN: Are you like people from Greenland? - pierreminik

Hi everyone,
I'm a 27 year old Problem Solver from Greenland.
We aren't many people up here on top of the world so limiting yourself to a single field is most likely gonna mean excluding yourself from potential stuff in the future. Unless you have awesome talents - which I ensure you many greenlanders do when it comes to things as music or drawing or hunting or storytelling... But for those of us who didn't turn out to have artistic talent, well, yeah, we could either pick an education and get a career job to earn some resources or do like me and not care about what people thought, decide money should never rule your life and do whatever you felt like.
Best decision of my life! It has taken me through lots of awesome positions from assistant-bicycle-mechanic, web programmer, sales person, project manager, web designer, marketing coordinator, entrepreneur, publisher, tourist guide to stuff like cleaning stores so early in the morning I'd wish... I don't know... I'd wish that manual labor in Greenland was so expensive, they'd use robots to clean the stores, or something. And although my list of jobs is extensive, my employers list is really short. In fact, a lot of those positions have been with a single employer who hired me when I was very young because I wanted a bike but my somewhat wealthy father didn't want to give me one because he thought I should learn the price of things/value of money/whatever. Instead of learning me to respect money he fueled a passion I had for solving problems. All of those jobs and I have never been fired or asked to quit, and I have never let any of my employers down. On a need/want basis I still work for the very same guy that gave me my first job.
All of this is true but I'd never usually bring any of it up. The thing is just that the HN community seem to have huge number of very skilled technical people and I don't really consider myself to fit into that crowd. Probably mostly because I'm the least gifted programmer of the hacker friends I have. I'm also the least gifted designer among the visual artists-y friends I have. But I understand and cherish both fields.
Now, it's sort of given I have a ulterior motive with this and I know this is getting rather long but I the length of the text has two purposes. I had an idea that it might've sorted the good shrimps from the other stuff that the fishnet catches. No, that is not a greenlandic saying, I don't even know how they catch shrimps but I really love their taste. Secondly I hoped it would give some sort of idea who I was and what I might be like.
Enough about me... The prerequisite for the question:
Greenlandic people are often considered unproductive and inefficient by people who don't know us. Once people get to know us they will quickly realize we're all about living life and enjoying the things we like.
You see, hundreds of years of living in extreme conditions and in challenging environments with a "job" that meant risking everything in order to literally put food on the table for your family or whoever couldn't provide for themselves in the settlement, has learned us an invaluable lesson: When life treats you nice, like giving you an opportunity to go sailing in the wonderful weather, you take the opportunity and you really, really enjoy it, because you never know when your next chance to do so is gonna be.
So, are you like people from Greenland?
My ulterior motive:
If so, you might want to help me fulfill this idea I have.
While the greenlandic way of life is about enjoying what you have, it doesn't mean trying to avoid work. Work after all is what most would consider the essence of a great life. When it comes to computer stuff there is so many tasks and so much thinking that has little to do with what you are actually trying to do.
As the co-founder of a new local magazine that wanted to improve the consumer's and the advertiser's experience I realized there was tons of tasks that had very little to do with writing content, designing ads or servicing customers. To avoid errors we had to make a strict structure and have naming policies and whole lot of other stuff. To manage the process we used project management tools and we had to-do lists and a whole lot of other crazy things. I spent a lot of time trying to find some form of system that was great at it all. I even considered developing a unified solution that took care of everything out of Adobe InDesign.
In the end I gave up the search, and I certainly didn't have the time to develop a system myself. And why should I? All the applications we use, we use for a reason: they are our beloved and most trusted tools. It would be naive to think I could replace all the different applications I used with a single application that worked just as great.
Here it comes:
I want to make an integration workflow "framework" that greatly limit all the trivial stuff, taking care of all the needed interactions across all the applications, leaving the user with what they love to do: coding or designing or whatever they do. (You could say it would be like Automator on some drug that made it crazy fast.)
That is the core of it. I have lots of ideas for great implementation and starting capabilities as well as future features that doesn't go beyond the core principle of the idea.
What I need is someone willing to join me for making it. I can code, I can design but I am not insanely great at either. I'm a sucker for great UX and I think this application could improve the overall UX, regardless of what tools you may use. (Unless you use emacs or vim as I am told they are what the hardcore hackers use and they already sort of do all this macro/scripting stuff.)
I'm open for whatever licens people would want to make this under. It could be some open source licens or we could try and sell it or something. I basically just want to make it because I'd love to use it myself.
What do you think? Could this be something? Could you be interested in making this with me?
PS: I work on Mac OS X (10.6, not sure about Lion yet). I'm open for other platforms I am just not able to help making those and I can't test for them either.
PPS: I don't know what drug makes you crazy fast cus we only have cannabis here in Greenland.
======
dalke
Ideas are plentiful. Your's comes across similar to "the next generation of
the social web"; that is, "Automator on some drug that made it crazy fast" has
nothing in the way of how such a thing might work. Even after thinking about
the problem a lot over the years, I don't see how one might build a "crazy-
fast Automator" along the lines of what you propose.

Given your background, you likely don't either. You come close to the
discussion from <http://news.ycombinator.com/item?id=2579668> of "Idea Guy
Looking for Developer." Read the linked essay and the responses.

BTW, there are other drugs in Greenland. The average inhalant use is higher
there than the rest of Europe, says <http://www.espad.org/greenland> .

~~~
pierreminik
What is inhalants even? People here don't really hide if they do drugs,
believe me. Cannabis is illegal but even police knows who does what, and don't
actually do much about it because pushers will beat up anyone trying to sell
anything but cannabis, and crime rates rise should any pusher be arrested
because the kingpins will withdraw the drug from the market leaving a big
demand with very little supply, price rise and people will have to steal
things in order to afford the drugs.

Crazy-fast was bad choice of words on my behalf, I ment something more like
crazy-efficient but I guess no drug makes you that.

I can give an part example of things that could improve workflow a great deal
for almost anyone with a client that approves graphic work in lets say
Photoshop. The tasks that is only related to the stuff you do on the computer
would be: making a new document, naming it, (if you work with both print and
web you might want different units, rulers and color profiles for either
type), making the graphic work, saving it some place associated with the
client, exporting it for web in some reduced resolution that is big enough for
the client to see the details good enough, opening up your email client or
webmail, adding in the clients contact information, maybe you have some form
of request tracker that needs an ID field in the email, attaching he file for
approval, writing a message for your client, press send. Turning all those
steps into something more enjoyable like: selecting the client in a dashboard,
give the task a name, make the graphic work, save, write a happy message for
your client, press send.

Adobe allows JS to be used for improving workflow so it would be ideal coming
up with a framework that would use JS. Web developers and even most designers
already know JS which makes it an ideal choice.

How often do you name a file according to a name convention? Whatever text
field you enter that name in should just allow you to type the filename not
having to think about conventions. If the convention only allows a typical
lowercase a-z, 0-9 and dashes only, then the field you type in the name in
should convert all characters as you type to lowercase, spaces could even
automatically turn into dashes, international characters like å, æ, î, é
should perhaps turn into their a-z equivalents, and everything else should be
ignored. No errors, no interruptions, just work like you like it.

Making an iOS app for both iPhone 4, older iPhones and iPad, you'd have to
save the (most likely) same icons and so forth in different resolutions with
same prefix but different file naming that allows Xcode to recognize the
different versions for the different targets.

For every website project you have a starter pack that consists of a bunch of
different things, like a css-reset, maybe jQuery, maybe Modernizr, maybe a
responsive mobile-first css framework... Downloading to update all those could
be a task in it self...

You like a certain folder structure maybe but the developer you're gonna pass
the work on to for coding the project is really strict about how they should
be delivered. The developer could give you a profile-file which the workflow
framework would use to run a preparation check of the files, checking images
are in correct format, packaging your work so it's ready for the developer.

You use Photoshop for something that has to be both printed and for a web
campaign, there should be a switch that would make sure stuff like black in
the CMYK version is 100% black. You share your Photoshop files between
computers? Nothing is more important than having to send fonts back and forth
should the other computer not have the font you're using.

You've tried spending time trying to figure out why some server-side code is
not working as expected only to realize that there is some cached stuff
somewhere that is teasing you. You just saved your changes to the server-side
code, you alt+tab, the browser should flush the cache and reload the page when
ready.

Your website project is ready for production? Minify all the stuff, in some
cases you'll merge files, gzip them, ou get the drill...

In the end, less frustration, more getting done what you like. Computers are
supposed to make the tasks easier, not get in our way.

~~~
dalke
<http://en.wikipedia.org/wiki/Inhalant_abuse> . "Huffing", "sniffing glue",
etc.

The tasks you are talking require massive customization. It's a lot of niche
development; few clients in each niche and a lot of work => more like
consulting work than product development.

Niche customization is the reason why VB, Automator, etc. were all developed.
You also have a massive sales problem - how do people find out about your
software?

Consider "website projects". RoR and Django projects each have their own
layouts and requirements. Most people using Modenizr are going to be the types
of people to mix-and-match, and not want to use some tool to select the parts.

Then you switch to talking about xcode, and Photoshop. And server-site code.
And minification. Each of those is hard in their own right. Then you'll find
that someone really wants the filename name to be "España.jpg"

The dream of making it all work together smoothly is nice, but there's no easy
route to there from here. Nor have you outlined what that route would look
like. You've only stated the goal and have some idea of the tools you might
use for that goal. Eg, how does one actually specify the "folder structure"
and content validators? Is it a GUI? A configuration file? How does one handle
cache flushing, including configuration information for the different
deployment environments, connections to the different cache layers, and
timestamps placed in GET requests to force new fetches?

Solve one of those problems and you'll have people using it. Don't try to
solve the entire problem - I suspect there is no general solution.

~~~
pierreminik
I realize it'll take a huge effort. I don't believe making the "framework" is
consulting work. I don't mind giving the framework away for free with some
common/possibly popular workflow schemes, showing it's potential and then
whoever wants to can be hired for developing schemes for those who can't make
them themselves. Or another more likely scenario, people could make their own
schemes fitted for themselves, giving them the option to share it with others
if they want to.

The framework would be modular. Sure, no two projects are actually exactly the
same but there is a whole lot of overlapping, repetitive, unnecessary, tasks.

I'm not saying you lock into forever using whatever name convention you're
using.

It's my first time ever proposing to work with strangers on the internet. I
don't have a whole lot of experience with it so I can't really come out with
every angle of the final product before anyone asks. (You might think you're
asking but you're not, you're saying "You are an incompetent "idea man" who
just came up with something you assume is unique and now you want a developer
as your pet slave". Instead of saying things like "Nor have you outlined...",
you could say "But how do you plan to deal with...").

I imagine folder structure being defined in Finder, the whole concept of the
framework is based on the idea that all apps are great at their own thing, so
Finder being the core of navigating through folders and finding files it would
be logical. While the framework running in the background, Finder could get
some extra toggle buttons or drop down menu in the toolbar to let you select
what the folder should have of attributes "Like this should be where the XX of
the project goes". Could use color labels to make it faster to distinguis
between the different folders if one didn't find them hideous. Depending on
what'd you were developing cache flushing would obviously be handled
different, who ever developed the scheme for that workflow would decide how it
should be done. Someone likes to do it with changing filenames of the files
you've edited. The workflow application would handle this, make sure where
ever those files where included in the rest of your project their reference
would be updated, and the browser you were using would be redirected to the
new url. This would mean that your source files would have to be copied into a
the deployment folder.

People are creative and resourceful and if you let them taste something great
you should expect some of them to crave for more. I'm not saying the framework
should have schemes (one computer is not limited to having a single scheme
either) that fit perfectly for everyone but if you'd provide a few and show
how smooth it can be I don't doubt that some people will want to roll their
own.

~~~
dalke
Yep, I'm old and jaded. You see me as negative? _shrugs_ . I never said it was
impossible, only that it's hard, tedious, boring, and that it goes through
well-trodden areas with lots of competition so revenue generation will be
hard. Pick one of the sub-tasks and work on it. You'll be happier and with a
larger chance of success. Or think of that as a stepping stone to learn more
about what's needed for the larger project.

Personally, I think the directory structure layout validation is the most
interesting, especially if you can tell it to build your final structure
layout. This could include minimization tasks, or automatic image format
conversions. Another direction that could go is towards a static site
generation tool. But then, I'm a developer.

Your rhetorical style needs work. It's ludicrous to assume that I or anyone
else would expect you to have all the details planned beforehand. Neither did
I say that you are incompetent. I pointed to that URL for a reason - it's hard
to come up with an idea and get developers involved, and that essay gives some
of the reasons. Instead, I am pointing out your inexperience and giving advice
for the some things you need to distinguish yourself from an "incompetent
'idea man'."

You should also talk a lot less about yourself. Most people don't care enough
to read through several paragraphs defending your inexperience to figure out
what your point is, the title had little to do with what you wanted from
people, and the self-described term "Problem Solver" is another suspicious
flag which falls into the "Idea Person" category.

~~~
pierreminik
You're right, my rhetorical style is rubbish. :)

I really appreciate you taking the time to help me on my way. I will work on
some proof-of-concept apps that can help illustrate the approach I wish to
take. Starting with the folder structure layout builder, image format
conversion and layout/format validation. Then I'll see if it has something to
it.

I'll post when I have some updates. Gotta go.


Internet will 'disappear', Google boss tells Davos - dnetesn
http://www.hurriyetdailynews.com/internet-will-disappear-google-boss-tells-davos-.aspx?pageID=238&nID=77329&NewsCatID=374

======
tempodox
Schmidt's ideas are certainly entertaining. He just forgot to mention who's
going to pay for all that wireless connectivity and data transfer. Before any
of the other pipe dreams can come true, the first disruptive innovation we
need is affordable wireless connectivity. Today's mobile carriers will never
give us that.


BBC+ “super app” curates content - abhi3
http://www.bbc.com/news/technology-36834757
======
abhi3
Couldn't help but notice how neutral/balanced their coverage was.


Testing suggests 50% of coronavirus cases have no symptoms - dagurp
https://edition.cnn.com/2020/04/01/europe/iceland-testing-coronavirus-intl/index.html
======
LockAndLol
1% of 9000 tested people had the virus and of this, 50% were asymptomatic or
had mild symptoms. That's 45 of 90 people.

I don't know how significant this makes the results. Maybe a statistician can
weigh in.

~~~
dagurp
It at least shows that you can never be too careful. I also hope it encourages
more testing.


This spy watch is too complicated - hanifbbz
http://user.wordpress.com/2012/03/12/an-spy-watch-which-is-cryptic-to-operate/

======
hanifbbz
Imagine if the designers of this watch created iPhone! :D


FEMA is about to send a ‘Presidential Alert’ to millions of U.S. phones - sahin-boydas
https://techcrunch.com/2018/10/03/fema-is-about-to-send-a-presidential-alert-to-millions-of-u-s-phones/
======
mindcrime
_And, unlike other alerts, Americans cannot opt-out of receiving a
presidential alert_

Is that still true if you run your own customized OS (like whatever-the-
successor-to-cyanogenmod-is-called-now)? Or is this all done at such a deep
level within the phone's firmware that it's all-but-impossible to turn it off?


Imaginary Booleans (1987) [pdf] - childintime
http://www.wbricken.com/pdfs/01bm/07imagine/01imaginary-boolean.pdf
======
childintime
About the author:

[https://www.techfak.uni-bielefeld.de/ki-
dagm95/bricken.html](https://www.techfak.uni-bielefeld.de/ki-
dagm95/bricken.html)

[http://www.wbricken.com/](http://www.wbricken.com/)


Hacker News New Christmas Theme - jjar
https://news.ycombinator.com/news/#
======
ColinWright

        Unknown.

The link you've given is -
[https://news.ycombinator.com/news/#](https://news.ycombinator.com/news/#) \-
I do not think this means what you think it means.

------
DanBC
See also some discussion here:
[https://news.ycombinator.com/item?id=10790754](https://news.ycombinator.com/item?id=10790754)


Ubuntu AppStore: Like Apple AppStore, but with less Suck - Swizec
http://swizec.com/blog/ubuntu-better-for-app-management-than-apple/swizec/1672

======
kolektiv
Sigh... I wish Linux (and Ubuntu in this case) were better at UI/UX. But
still, it's so clearly designed by programmers (not always a bad thing, but
sadly more often than not).

So what's called out here as being good? Well. Subcategories. Average users
don't respond well to taxonomy, generally. People are also not good at
classifying. So in that example shown, what's the difference between "Arcade"
and "Sports"? I've played football games in Arcades. Where should users look?

More: "Some items can be bought, others just downloaded" Cool, where can I
filter so I only see free apps? Because it's nowhere in the screen shots, and
I will bet money that it's the first thing a sizeable percentage of users want
to do. Which would be known, had any user testing been done. I hope it was,
but I'm guessing not.

I could be nit-picky - "Get Software" vs. "Installed Software" - they're not
even the same tense. Imperative tense is commonly interpreted by users as
causing an action to happen, not a categorisation. I could go on too, merrily
burning karma as I go, but all I see when I look at this is how far it has to
go, not how great it is. Don't get me wrong, the Apple version is by no means
perfect, but I bet it performs better in tests with actual users.

Someone needs to get a real UX team together and actually sit down for a real
project - not "someone and their favourite futuristic GUI idea for the next
version". I would hope that Ubuntu, Red Hat, etc. have the budget to do that,
but I see little sign of it.

~~~
kylemathews
Canonical (the commercial company behind Ubuntu) has hired a number of full-
time UX and Mark Shuttleworth, the founder, recently stepped down as CEO to
focus full time on leading product design and development.
[http://www.zdnet.com/blog/open-source/mark-shuttleworth-
to-s...](http://www.zdnet.com/blog/open-source/mark-shuttleworth-to-step-down-
as-canonical-ceo-in-march/5491)

I think this is evidence that there's a "real UX team" at work.

~~~
pan69
"Mark Shuttleworth, the founder, recently stepped down as CEO to focus full
time on leading product design and development."

And this is where the high degree of "programmers design" is coming from.

------
andymoe
1) I don't think Ubuntu's UI is any better than Apples UI. If anything it's
the same bad copy of the Windows 98/2000/XP/7 lineage of program management
tools in control panel that linux has beed copying all the way back to
RedHat's RPM package management GUI in the early 2000's.

2) The title of the article is "Ubuntu’s app management better than Apple’s"
not "Like Apple AppStore, but with less Suck."

~~~
Swizec
at 2) I couldn't decide on a good title, hence some disparity. The URL itself
contains a third version.

at 1) Actually GNOME has since forever been an Apple copy, the newest Unity
thing even moreso, but I really really like the Launcher. I feel like it's
just innovative enough while being sufficiently familiar not to throw me off
completely.

~~~
arth2910
GNOME an Apple copy? Unity's not developed by the GNOME devs but by Canonical.
Since Lucid, the behavior of Ubuntu has shifted somewhat to match that of Mac
OS X. Traditionally, buttons defaulted to the right hand corner of the window
rather than the left and multi-touch tapping has been remapped to match OS X's
style (two finger right click, three finger middle). Compiz has the window
picker plugin similar to Exposé along with a cover flow-like window switcher.
Now you've got he Unity Launcher with Spotlight/Quicksilver/Gnome-Do
functionality. The Add/Remove Applications tool has been around since Breezy
in 2005, predating even the iPhone App Store, and provided the same functions
as the Software Center and the Mac App Store.

GNOME can be tweaked to look like OS X or Windows or whatever you want, but
it's because you can mix and match things like themes and window managers. If
you just used vanilla GNOME 2.x with Metacity, I don't think you'd find much
of a similarity.

You could say that Ubuntu or GNOME3 borrows functions or aesthetics from other
contemporary desktop environments, but GNOME "forever been an Apple Copy?"

~~~
tvon
Calling GNOME an Apple copy is a bit much, but 2.0 was strongly influenced by
Apple/NeXT design principals, or at least it seemed that way when it was
happening.

------
joshma
What I get from this article is a) apt-get is awesome and b) there's
subcategories in the launcher. I completely agree that apt-get is great, and
subcategories aren't bad either. However, this has nothing to do with "app
stores." apt-get has been around way before the ubuntu software center, and if
anything it goes way deeper than just "apps." If anything, this article is
just bringing up the point that software management on linux (for the more
technically inclined) is better than on mac, something that isn't quite
exciting or new.

I think articles like these are just looking for trouble. It immediately
stands as being biased, and screenshots completely skew things in Ubuntu's
favor. Seriously, "pushiness?" It's a bad thing now to be showing users
applications on the home page of a store? Maybe it might get cluttered, but I
definitely don't prefer Ubuntu's "Nice clean and unassuming" main page with
just a category listing. "The listing is pretty simple?" Now you're just
looking for things to say; I'm going to end my comment here before I make the
same mistake.

------
jmspring
Is it just me, or does the Ubuntu App Store resemble something one would find
in Windows? Not sure where the "less suck" comes from.

------
frou_dh
What about the Apps from the App Store? How many of them have good design?

------
sebkomianos
I love this kind of articles for the fact that they are all ignoring all the
background work you have to do in Linux in order to bring your system at a
state in which you can work and get what it has to offer. The story is pretty
straight yet a lot of people ignore it: Non tech savvy people just wouldn't be
able to work with Linux.

------
antimatter15
Cmd+Space works as a pretty decent app launcher, functioning pretty much
exactly the same way as Natty's new Super key which acts a lot like Vista/7's
search/start menu.

I still don't see why Ubuntu's is better. It's cool how it slightly blurs the
line between installed applications and available applications, but that's it.

------
Flow
Mature title...

------
tvon
"Ubuntu AppStore"?

~~~
Swizec
Purchasable apps -> app store.

~~~
tvon
Are we pretending anyone actually calls it that?


Swift UTF-8 String - gok
https://swift.org/blog/utf8-string/
======
skrebbel
I have never written a single line of iOS/macos code, but I'm interested in
Swift because it's a cool language.

Can anyone explain why this is done _now_ and not when Swift was first
released? I mean, UTF-8 was already the clear winner when Swift started. Is it
some obj-c compat story?

~~~
gok
The commonly-accepted wisdom among Unicode people was that UTF-8 is good for
transmission and storage, but bad for in memory representation. It now appears
pretty conclusive that this was wrong.

~~~
rstuart4133
They are still partially right, and I'd go so far as to say were totally right
if efficiency wasn't a concern. From the programmers point of view utf-32 is
still by far the easiest memory representation to use.

Back in the day, when the Unicode people were pushing it as an alternative to
whatever the ISO standard is that solved the same problem, they argued it was
better than the ISO standard because the was only one encoding, UCS2 whereas
ISO defined 8, 16 and 32 bit encodings. They said they could get away with
that because 16 bits was enough for all modern languages (read: languages in
use). Windows, Java and Javascript among others drank the kool-aid.

But they were wrong, 16 bits was not enough. USC2 morphed into UTF-16, which
is actually worse than UTF-8 because if has the byte ordering problem.

To make matters worse, Unicode decided to abandon grapheme == code point.
(This means there is ä and ä. They look identical, but one is '\xe4' and the
other is a combining diaeresis, '\61\u0308', and the latter is now preferred.)
I don't know why that did that as it makes string handling fragile, but I
notice the encoding chosen for UTF-16 drastically reduced the number of code
points available, so I wonder if they were worried about running out. The end
result means that makes utf-32 actually harder to parse than utf-8 (which is
quite an achievement), so you may as well use utf-8 for everything.

------
ezoe
I wonder how long Windows can hold UTF-16 as the default native encodings.
They recently added UTF-8 locale.

~~~
ygra
CP65001 has existed for quite a while. There just have been plenty of places
where it never really worked (I think the console was one of them).

Nonetheless, UTF-16 will most likely stay. They _might_ add wrappers around
all API functions that convert arguments first, so we'd get CreateWindow8
alongside CreateWindowW and CreateWindowA, but I wouldn't hold my breath. The
duality of API functions was to enable programs to be built for NT and 9x with
the same codebase. It was never really intended for people to call them
directly to enable non-Unicode-aware applications on NT.

The file system cannot migrate from UTF-16 anyway without breaking things, so
that will stay as is.

IMHO there's pretty much nothing to gain, except a _lot_ of risk in trying to
change Windows to UTF-8 internally and the current interface might be an
inconvenience to some developers, but not as much as to justify changing the
whole OS.

~~~
vbezhenar
When the world uses UTF-8 and you have to constantly recode from/to with every
WinAPI call, that's definitely an unnecessary overhead.

~~~
badestrand
Obviously it is unnecessary but I doubt it affects the perceived speed of the
average desktop application in any way.

------
ilovecaching
Is anyone using Swift outside of Apple specific stuff professionally? When
they first announced swift it felt like it might catch on as general purpose
gced language. The language itself is quite beautiful in a lot of ways
(although being OO was obviously an awful step backwards). But it feels like
it's still just the crazy language Apple uses, just like Objective-C was.

~~~
phamilton
We've been eye-ing it for a while at remind.com. Our hangup has been that
we're heavily aws focused, but [https://github.com/amzn/smoke-
aws](https://github.com/amzn/smoke-aws) is looking promising.

We're interested because it's one of a handful of statically typed functional
programming languages. Haskell/Ocaml are great as ML type languages, but it's
a big paradigm shift for a team to jump into. Rust still has a pretty decent
learning curve. Swift seems to have landed nicely in the "anyone can pick it
up" territory. Kotlin is also in that territory, but the JVM is a beast.

For now, we're heavily focused on Typescript as the statically typed
functional language, and we leverage types pretty aggressively (conditional
types, discriminant unions, etc). Our iOS devs bring a lot of the Swift style
over to our backend Typescript systems and from what I've experienced I think
Swift absolutely will have a place in backend development.

~~~
cageface
Swift is a nice language but I think the reliance on ref counting is going to
limit its adoption. You have to work a lot harder to avoid reference cycles in
Swift than you do in a garbage collected language. Unless GC latency is a deal
breaker for your problem domain it’s not worth the extra effort.

My money is on Rust for really low level stuff and Kotlin for anything where
JVM overhead is acceptable.

~~~
saagarjha
It really depends on what you're doing. A lot of the time, neither garbage
collection pauses nor reference cycles are an issue; and when they are it's
typical that one or the other will solve the issue.

~~~
cageface
If GC pauses aren't an issue for your app then you're better off with a full-
blown GC because it's a lot easier to code for. Reference counting, as used in
Swift, forces you to think a lot about cases where you might be creating
reference cycles and memory leaks. GCs can figure this out for you and take
that burden off the programmer.

~~~
millstone
One of the major advantages of reference counting is that it's easier to
integrate with other languages. For example you can manipulate Swift objects
from C via CoreFoundation, which then allows them to be used from C++, Rust,
whatever.

GC'd languages have some support (JNI, etc) but they require handles, pinning,
write barriers, etc. which ends up being more complicated and less flexible.

~~~
cageface
Right, which is one of the reasons it makes sense for Apple to use it, since
they have a lot of lower level C API to interact with.

For more general purpose backend work this is not usually a major
consideration though, which is one of the reasons I predict most backend work
will continue to be done in a GC language.

------
saagarjha
Great work by the Swift team on stabilizing this (especially around UTF-8) for
Swift 5. One question: how do Objective-C's tagged NSString pointers fit into
this? Are these imported as "opaque" strings? I see that _SmallString seems to
store its characters inline; are there any plans to do tagged pointers in
Swift as well?

~~~
rkunde
It would have to be opaque as there is no backing allocation of any kind so
the string can’t provide a pointer to the contiguous memory. (Plus tagged
strings use an encoding scheme that makes the incompatible with UTF-8 anyway)
It’s possible that a smallstring version of the tagged pointer is created in
some situations.

SmallString actually was just a tagged cocoa string at one point but that was
removed in favor of more powerful implementations. The latest implementation
allocates no memory on the heap either but can store more characters, so using
a tagged pointer would be a step back.

------
StefanKarpinski
Seems like the right move. Julia made a similar transition in 1.0 for similar
reasons and it has turned out very well.

------
faragon
Wise move, in my opinion. I hope Python will do that too, eventually.

~~~
kevin_thibedeau
Python implemented multi-representation strings in 3.3. It picks the best
encoding from ASCII, UTF8, UCS2, or UCS4. UTF8 is the preferred encoding for
strings exposed to the C API.

[https://www.python.org/dev/peps/pep-0393/](https://www.python.org/dev/peps/pep-0393/)

~~~
masklinn
CPython provides but does not use UTF8 internally, it's a cache for
PyUnicode_AsUTF8 (formerly _PyUnicode_AsString), which exists to convert
Python strings to char* in order to interoperate with C libraries. It is not
the canonical representation of the string.

pypy, on the other hand, made this change in the latest release (7.1.0):
[https://twitter.com/pypyproject/status/1095971192513708032](https://twitter.com/pypyproject/status/1095971192513708032)

------
garganzol
UTF-16 allows to quickly index a char in a string covering the most languages
that way.

UTF-8 is a different story, as nearly every byte of UTF-8 string is a
surrogate for most languages except English/ASCII.

Now, how can a char be indexed then? Only by slow iteration from the beginning
of a string?

UTF-8 is a good choice for storage, true. However, it seems to be a not so
good choice for string processing from the algorithmic point of view.

Or maybe there is a catch that makes UTF-8 strings well-suited for string
processing as well?

~~~
WorldMaker
> UTF-16 allows to quickly index a char in a string covering the most
> languages that way.

Nope. UTF-16 is not UCS-2 anymore for multiple reasons. You cannot assume you
can index a UTF-16 string as if it was UCS-2 anymore. UCS-4 (32-bit) is a
_possible_ option, though not generally recommended either.

There are multiple tricks for getting great performance in UTF-8 string
processing such as codepoint maps of various sorts. It's quite well suited for
string processing, and it's better to use UTF-8 at this point simply because
it also helps from falling into the UTF-16 is not (and has not been for some
time) UCS-2 trap, and UCS-2 cannot represent a lot of Unicode today (including
many emoji).

~~~
garganzol
Never made a claim that UTF-16 is UCS-2. "Most languages" does not mean "all
languages".

Still, many popular platforms treat it like that in terms of char indexing.
They are able to get away with it since a surrogate char is a rare guest in
UTF-16.

P.S. It's surprising how easily HN crowd downvotes something when it falls out
of a whimsical "popular contemporary view on things". Having a lot of years of
text processing behind my shoulders, I raised an important question and got an
immediate down-vote attack. But never mind, I'll survive.

~~~
ygra
All those languages make it quite clear that you only get access to a code
unit that way and other APIs usually exist to actually get access to code
points, which then usually take a string and an index.

That the most visible mechanism of accessing parts of a string is based on
code units along with UTF-16 masking bad code unless Emoji are involved (for
most developers at least), is a problem, though. UTF-8 makes the failure case
pop up much faster as pretty much every language doesn't only use ASCII.

------
sonnyblarney
If I ever wrote a language, handling strings wrt unicode would be the first
thing I would fix so so that it's clear, concise and especially consistent.

It bothers me that in 2019 it can still be difficult to manage even basic
things with strings, and yet, whenever we talk/argue/bike-shed about
'languages' we get caught up in intellectual meandering. Please, give us
strings that make sense. Then argue about monads.

~~~
asveikau
I don't think a lot of people realize that Unicode itself, in any
representation, is complex, and there is no one abstraction that will make it
always easy in all cases. So I think your goal is unobtainable.

Some of that complexity is because world languages themselves are not simple.
(eg. If you were to ditch Unicode and start from scratch, it would remain hard
to do bi-di text, to pick a random example.)

~~~
sonnyblarney
Totally see what you are saying (the underlying issue is language itself), but
it's pragmatically obtainable.

~~~
nicky0
The think is, strings that make sense has been a major goal of Swift, that's
why they have been iterating on it so heavily. FWIW I think Swift's is
probably one of the cleanest String abstractions out there with respect to
unicode correctness balanced against efficiency and usability.

~~~
asveikau
To be clear I applaud successful attempts to make it better, what I doubt is a
possibility to make the problem completely go away without users of the api
ever having to think.


Intelligence Augmentation and the Myth of the “Golden Lost Age” - jf
http://codinginparadise.org/ebooks/html/blog/ia_vs__ai.html
======
fr0styMatt2
There's a bit of a 'reboot' as such (I forget what it's generally referred to)
that contributes to this. By that I'm referring to the way that microcomputers
reset progress in software.

When low-power microcomputers hit the masses, the advances that had happened
in software in the minicomputer / mainframe world couldn't follow along. So in
the first instance you had computers that could only barely run BASIC programs
and where you were programming in assembly close to the bare metal if you
really wanted to do much more advanced things with the machine.

Now, the kids growing up on these computers in the 70s and 80s (I'm an 80s kid
myself) had no idea about things like GUIs or the latest in virtualization
technology on minicomputers or all the many problems that had been solved in
big-mainframe world but were yet to hit consumer devices. One factor is that
consumer hardware of the time wouldn't have run the software efficiently
anyway; another one is that there was no Internet where you could just Google
anything and find out.

So many of us then grew up in this era and became software engineers that
would go on to write operating systems and software of the 90s and beyond.
We'd never seen or heard of, for example, Lisp Machines or what they could do.
Which is I think why you end up with this weird generational gap, almost like
a chasm of knowledge born in the 80s and 90s.

Whenever I watch an Alan Kay video I'm blown away by how much was possible
'back then'. My mental map of technological progress starts with 8-bit micros
in the 1980s, which we all thought were 'cutting edge technology' except that
they weren't, in the broadest scheme of things. It's this amazement that I
think leads to the feeling of a 'Golden Lost Age'.

Remember when Windows 95 touted preemptive multitasking as a groundbreaking
new feature? Or when DMA for hard disks was a 'new' thing? (except that the
Mother Of All Demos basically showed the concept, from what I vaguely remember
from watching it many years back).

We see the same cycle in mobile computing - phones were once close-to-the-
metal devices; now they're running full mutli-tasking basically desktop-class
operating systems. The difference these days is that we have the Internet and
we have the lessons of history actually available to us.

~~~
agumonkey
I remember that awkward thrill to see a student thesis from the 60s being more
thoughtful than the latest vector drawing program from A. And I've toyed with
a long list of advanced packages, none of them has that tiny geometry solver
in them.

Time is surely not an arrow in progress. Lot's of colateral and inherited sub
cultures are sucking energy. As you mentioned, a new 'market' is also a
potentially huge drawback, but that's such a common thing. People will see the
world their way, not as a PhD knowing the history and state of the art (even
researchers don't know all).

It happens in programming languages too. All the web started a freeform joyful
environments, unlike c++ or java with their heavyweight specs and standards.
But then complexity hits and they're suddenly bringing a lot of structure,
types, conventions, etc etc. It's like a child, who cannot enjoy his parents
universe, he needs something compatible with his new mind.

ps: my latest 'the newest is less than the old' moment was realizing Haskell
was specified in 1990. At that time mainstream users were given Windows 3.0
and DOS :)

------
willholloway
> “pop software” as Alan Kay calls it. There was a natural trend in the PC era
> to make computing devices available to everyone, which I think was a
> positive thing; this necessitated moving away from software that needed
> training or methodologies, for example. It also required software that many
> people would use, as opposed to more niche applications, in order to make
> the profit necessary to support a company. Unfortunately this has made it
> harder to create the more expert-oriented applications that could co-evolve
> with users via training and methodology that would be akin to calculus or
> music notation, or “bicycles of the mind” as Steve Jobs said;

The greatest productivity boost I have yet found, and the closest I've been
able to come to a mind-machine interface is debian linux + tiling window
manager + command line proficiency + customization of text files for creating
shortcuts, tailoring work environment.

It has a learning curve, but the payoff is immense. I think we should be
teaching linux and the command line in schools, even if we don't teach kids to
code.

The computer is the most powerful and important tool we have, and we all use
it daily. Not teaching expert level proficiency is the same as sending kids
into the world handicapped.

~~~
vezzy-fnord
Linux is actually a large part of the "computing pop culture" that Kay
laments, FWIW.

------
amirouche
To be honest this is a "me too IA vs AI" kind of post. I upvoted to continue
the discussion

Previous posts:

\- AI vs IA
[https://news.ycombinator.com/item?id=10373180](https://news.ycombinator.com/item?id=10373180)

\- Machines for thinking: Computers will get smarter, but with humans in
charge
[https://news.ycombinator.com/item?id=10324648](https://news.ycombinator.com/item?id=10324648)

~~~
joe_the_user
I disagree. The article both does a good job of outlining the issues and makes
some interesting and reasonably substantial comments on these issues. An
article doesn't have to be earth-shattering to be useful.


Startup Quote Anniversary Edition: Yoda, Jedi Grand Master - raychancc
http://startupquote.com/post/4258464362

======
raychancc
Do or do not. There is no try.

\- Yoda

<http://startupquote.com/post/4258464362>

*Okay, Yoda does not run a startup, but he runs the Jedi Council! Happy April Fools’ Day!


Ask HN: Which Stocks to Buy? - rishiloyola
Which stocks do you recommend to buy during the corona virus outbreak?
======
pensatoio
Buy index funds. The risk associated with gambling on individual stocks is an
order of magnitude higher during a period such as this. You don't need that
extra risk to see gains.

------
crmd
I’ve been focusing on blue chips that were already in the dog house, e.g. IBM,
GE.


Dynamic languages have jumped the shark - levosmetalo
http://swizec.com/blog/dynamic-languages-have-jumped-the-shark/swizec/6204

======
shizzy0
The criticism of ENV only allowing strings has no bearing on his argument. ENV
comes from the OS environment. Code in any other language--strong or weakly
typed--would have the exact same issue. And not being able to coerce arbitrary
strings to booleans is fine because there is no principled way to do that
except through convention. And everybody makes up there own convention: true,
yes, YES, OK, TRUE, ok, ON, ENABLED, which just goes to show that there's no
principled way to do it.

~~~
kyllo
This.

Note that Java main methods start with public static void main(String[]
args){}

The main method takes an array of String objects from the command line as an
argument. You can't pass a boolean or anything other than a String in args any
more easily in Java than you can in Ruby.

But Ruby and other dynamic languages give you _eval_ which, although
dangerous, can have the effect of coercing your string into a boolean.

irb(main):001:0> a = "true"

=> "true"

irb(main):002:0> b = eval a

=> true

irb(main):003:0> b

=> true

irb(main):004:0> !b

=> false

------
gvickers
You have weak and dynamic typing confused.

------
programminggeek
Ruby has strong types, you can and should use them.

If you want type checking, use it.

Also, if Rails has security problems, stop using it.

Scala and Haskell have their own flaws. There is no magic bullet.


Ask HN: Does anyone know of any good iOS Storyboard tutorials? - davidcoronado
======
ratfacemcgee
this looks alright

[https://www.raywenderlich.com/113388/storyboards-tutorial-
in...](https://www.raywenderlich.com/113388/storyboards-tutorial-in-
ios-9-part-1)

like anything, best way to learn is just to hack on something. Follow the
tutorial, then break it. Mess with control dragging between VC's to setup
different segues. Try passing data between VC's using segues. Then try loading
a VC from a storyboard in code (hint: use
instantiateViewControllerWithIdentifier).

~~~
davidcoronado
This is really helpful thanks!

~~~
ratfacemcgee
happy to help! have fun!


The Alt-Right Finds a New Enemy in Silicon Valley - gregorymichael
https://www.nytimes.com/2017/08/09/business/alt-right-silicon-valley-google-memo.html
======
justforFranz
pathetic.


How to make your first game for less than $1,000 - gcheong
http://deadpanic.com/make_a_game_1k

======
windsurfer
Keep in mind he's valuing his time at 0$ for the title, in which case you can
make your first game for $0 very easily.

~~~
electromagnetic
I'd love to make a video game, but I value my time at $9.25 an hour, which is
currently Canadian minimum wage. I'm not going to work for less unless it
fulfils some other need, and I doubt video games will ever be need fulfilling
for me.

~~~
jacquesm
They're one hell of a way to learn, especially arcade style games are more
like mini operating systems inside.

------
ConceptDog
The bad news is that the iPhone gold rush is basically over.

------
erikb85
what can I learn from this article? That is, what I can read there: You have
to create images and sounds and if you can't you have to buy them. And no
matter what you do, in the end you still have to pay your rent (what will be
more as $1,000).

~~~
potatolicious
> _"You have to create images and sounds and if you can't you have to buy
> them."_

As a hobbyist game developer, this idea is probably the most key thing to game
development (for a hacker) - and gets a bit more nuanced.

There's a very real cost-benefit to the type of game you're making vs. the
cost of content.

For example, in a first-person shooter content costs a lot more than, say,
SimCity. That one wall you had to model, texture, and light? In the player's
field of vision for may 2 seconds tops. The amount of labor required to
generate all of your artistic assets is pretty prohibitive - which is why we
don't see many shooters coming out of small shops, and shooters tend to be
mass-market affairs so that they stand a shot at recouping the investment.

On the other hand, games like SimCity have significantly less content
development going on. That one building? Replicated hundreds of times over in
a single game, players keep coming back and seeing it, but never get bored.
Each piece of content goes further and has considerably more lasting power
than it does in an action game.

This is something many amateur devs disregard to their peril - the very
_structure_ of your game needs to account for your low-budget status. The
alternative is to try and execute a shooter on a budget, and then compromise
on the quality of the content (or worse, use bad design to gloss it over: e.g.
making players traverse a level backwards).


Disney Is Building the Streaming App to Rule Them All - cosmerewit
https://www.pcmag.com/article/357835/disney-is-building-the-streaming-app-to-rule-them-all
======
scrumbledober
If Disney goes through with their acquisition of FOX, they will control a 60%
share of Hulu. Is there a chance of Disney using the platform they've built to
make Hulu not suck anymore and put their content there, or will they simply
control two of the major streaming services at the same time? It seems that
Hulu would be a much better competitor to Netflix if they had the Disney
catalogue, but I doubt there will be very many people who will not get the
Disney service for their children simply because they already pay for Hulu.


Ask HN: Using Facebook like button for Alpha/Beta Invitation - abhishektwr

I am just curious anyone has done something like that. Rather than asking the visitor to sign up for invite using email, I just want them to like the page. Any pointers?
======
jokermatt999
If the only way to get to your site is to use a Facebook account, I'm just not
going to use it. I've heard Facebook accounts can be easier to set up than a
separate account system, but a lot of people just don't want their Facebook
tied with random sites like that.


Parallaxing Illustrations with jQuery - tombell
https://github.com/cameronmcefee/plax

======
olalonde
For an awesome parallax demo:
<http://www.nintendo.com.au/gamesites/mariokartwii/>

------
cylo
Another pretty neat example is this webcomic: <http://hobolobo.net>

------
Corrado
Very cool, and it seem simple enough for non-graphics guys (like me) to
actually make work. Thanx!

------
Hipchan
What's the difference between this and jquery.parallax?

------
sudont
Does anyone know the license on this?

~~~
wccrawford
Unfortunately, the lack of posted license means nobody is permitted to use it
without getting explicit permission. I really doubt that was the intent of the
author, though.

~~~
sudont
I'll email him and see if he'll add a license.

EDIT: Waiting on a response.

~~~
cameronmcefee
License added. Have at it, guys.


Being Happy at Work Matters - zabramow
https://hbr.org/2014/11/being-happy-at-work-matters

======
n2j3
Bloody *walls


Benford's Law tests on Wikileaks data - agconway
http://www.drewconway.com/zia/?p=2234

======
mbateman
> Also, as suggested in the comments, I used a chi-square goodness-of-fit test
> to see if the deviation is statistically significant, but it was not; with a
> p-value of 0.2303. Meaning we would fail to reject the null hypothesis: the
> observed data were a good fit for a Benford process. That said, the p-value
> is not so large as to suggest total adherence.

Welcome to stats 101. If you get p > 0.05, it means your test failed to tell
you anything. Which means your test failed to tell you about the likelihood of
tampering.

~~~
whyenot
You are on the right track, but no, it is more subtle than that. The test
could still be meaningful depending on what probability of false positives you
are willing to accept.

[1] <http://en.wikipedia.org/wiki/P-value>

[2] <http://en.wikipedia.org/wiki/Type_I_and_type_II_errors>

------
countersignaler
this is a statistical blog post written by someone who has no idea how to do
statistics. and even when told how to do it properly by a commenter, fails to
accept the simple and overwhelming conclusion. why is this on the front page?

~~~
Confusion
Perhaps because the data is interesting and we can draw the contrary
conclusion: that there is no reason to suppose the data has been tampered with
or fabricated?

------
djmdjm
They should expect a bias, since Wikileaks have stated that some information
has been held back deliberately. From
<http://wikileaks.org/wiki/Afghan_War_Diary,_2004-2010>

"We have delayed the release of some 15,000 reports from the total archive as
part of a harm minimization process demanded by our source. After further
review, these reports will be released, with occasional redactions, and
eventually in full, as the security situation in Afghanistan permits."

------
Symmetry
I might be missing something, but how is it that overall the number of leading
2s is greater than the number of leading 1s, but not in any of the constituent
regions?

~~~
ars
It might be a form of <http://en.wikipedia.org/wiki/Simpsons_paradox>

~~~
hiroaki
I don't think Simpsons paradox plays any role here, if I understand this
correctly.

In the first graph, the leading digit counts are _not_ the things being summed
up across all the regions. The weekly report counts are summed up across all
regions and _then_ the leading digits are counted.

------
zitterbewegung
I thought that wikileaks eliminates certain information that would cause harm
to a party mentioned in the leak?

~~~
biturd
That is correct, there is a subset of ~15,000 records that are being withheld,
which will be released when they no longer have a probability of being harmful
to those they mention.

Source: <http://boingboing.net/2010/07/26/wikileaks-qa-with-ja.html>

_Boing Boing: We're told that there are more documents from this archive yet
to be released by Wikileaks, some 15,000 of them as reported. Some have
speculated that these could relate to Iraq. Can you comment more?_

 _Jacob Appelbaum: The 15,000 documents are part of the set of Afghanistan
documents. They are being redacted for harm-minimizing purposes as requested
by our source, and will be made available as is applicable with respect to the
relevant security concerns._

I would like to know much more about the process by which Wikileaks determines
what is or is not safe/relevant to be released. While I support their efforts,
they are walking a thin line in becoming the very thing they are working
against.

I only hope that the decision was done by experienced committee, but even that
raises questions as to how do you vet that committee for the ability to gauge
what is and is not releasable. How does one determine those people are even of
adequate credentials/authority to read the information ahead of time?

If I were our the US govt., I certainly would be playing up that issue as much
as possible. On the surface it would not be hard to push general sentiment in
the direction of Wikileaks playing information Gods with the data they have.

------
jongraehl
Incredibly weak evidence.

~~~
long
It's not weak evidence. There's no evidence. The guy doesn't seem to know how
significance testing works.

------
corruption
An aptly named blog for the analysis.