GTK+ 3.12 on Android - <AUTHOR> https://github.com/eugals/GTKAndroid

<comment><AUTHOR> I stumbled upon this gem a couple days ago and was surprised at how unannounced the port was; a lone GitHub repo with a sole wiki page telling you how to build and install it. I've tried using it with some slightly modified sample GTK3 applications and was surprised how well they worked, only having a few rendering bugs here and there...</comment>


Creating a Top 5 iOS Fitness app for Fitbit with PhoneGap Build - <AUTHOR> http://phonegap.com/blog/2014/04/01/creating-a-top-5-fitness-app-with-phonegapbuild/

<comment><AUTHOR> Hi all - creator here. If you have questions about how my Fitbit app works or how I leveraged PhoneGap Build, please don't hesitate to ask! The platform has really matured in the past year, allowing for real great apps to be created in HTML5/JavaScript.</comment>


Boomers Buy More than 1/3 of all Music - <AUTHOR> http://ipcarrier.blogspot.com/2007/09/boomers-buy-more-than-13-of-all-music.html <comment><USER2> " Baby boomers born between 1941 and 1964"

Yet _another_ demarcation of the years that define the (essentially meaningless) term Baby Boomers.</comment>


Show HN: Pg-extend-rs – Easy Postgres extensions in Rust - <AUTHOR> https://bluejekyll.github.io/blog/rust/2018/12/27/announcing-pg-extend.html <comment><USER2> Ohhh this is great! I have had a query planner extension idea for a while but dealing with C bugged me a lot. I think that this might help me try some Rust ans some Postgres

<comment><AUTHOR> As warning, there's still a bunch of work to translate various types from Rust to Postgres Datums.

I'm interested in feedback on the library, so if you use it and experience any issues, please let me know.

</comment></comment><comment><USER3> This made me curious - are there any SQL databases being actively developed in Rust? I found one on GitHub (LlamaDB) that does not appear to be maintained.

<comment><USER4> TiKV ([https://github.com/tikv/tikv](https://github.com/tikv/tikv)) is a database (KV-store to be precise) written in Rust and speaks MySQL protocol.

Toshi ([https://github.com/toshi-search/Toshi](https://github.com/toshi- search/Toshi)) is Elasticsearch-like engine that uses tantivy (Lucene-like), both also written in Rust.

<comment><USER5> Tikv is key-value. Mysql layer, tidb, is in golang.

<comment><USER6> Tidb is built on top of tikv though.

</comment></comment></comment></comment><comment><USER7> What's the purpose of this? Why this over a function in PL/pgSQL?

<comment><USER8> That's a funny comparison. The much more obvious contrast would be to writing a Postgres extension in C.

Or are you asking, "why have native DBMS extensions at all?" Looking at the set of native Postgres extensions that currently exist would probably be enlightening:

• PostGIS, for one. You can't really define those types—and especially, the algorithms that operate on them—efficiently in PL/pgSQL. In this case, the extension is native for _low overhead operation_.

• uuid-ossp, for another. To generate the data it does, this extension needs access to several pieces of data from the OS (e.g. the MAC address of an Ethernet interface) that you can't access from PL/pgSQL. In this case, the extension is native _to query native OS data APIs_.

• Citus, for a third. Citus basically changes Postgres's runtime "operational architecture" in several fundamental ways. It augments the Postgres Postmaster, changes how replication works, etc. None of this is possible from PL/pgSQL. In this case, the extension is native _to use native OS threading and IPC APIs to override how Postgres works_.

(And that's ignoring the fact that having native extension support usually gets you ABI compatibility with the embeddable runtimes of most other languages, allowing you to then support things like Python or Java—and thus get access to low-overhead shared-memory+FFI-based "IPC" with existing libraries in those languages, rather than needing to have them run as co- servers and communicate over sockets. Which, in turn, gets you the ability to cheaply and easily use _client libraries_ written in those languages to create Postgres Foreign Data Wrapper libraries for Datomic, or Elastic, or the AWS Public Dataset API, or whatever other weird-API-with-relatively-few-library- impls you like.)

<comment><USER9> I thought uuid-ossp was just a bunch of utilities around uuid parsing and generation. It shouldn't need anything special from the OS.

[https://www.postgresql.org/docs/9.4/uuid- ossp.html](https://www.postgresql.org/docs/9.4/uuid-ossp.html)

<comment><USER8> A UUIDv1 contains the host's MAC address as a component. And the uuid-ossp extension (or rather, the OSSP's libuuid, which it uses) does indeed read said MAC address when building UUIDv1s: [https://github.com/sean-/ossp- uuid/blob/master/uuid_mac.c](https://github.com/sean-/ossp- uuid/blob/master/uuid_mac.c)

Keep in mind, if you're using uuid-ossp rather than just relying on Postgres's built-in gen_random_uuid() function, it's _very likely_ because you want to generate UUIDv1s instead of UUIDv4s (as they're the only two types of UUIDs that see much use.) So this functionality is pretty essential to the extension—a version of the extension without it wouldn't be worth much.

</comment></comment></comment></comment><comment><USER10> Does it have additional overheard compared to rolling in C/c++?

<comment><AUTHOR> Right now, the only additional overhead I can think of would be on transforms from Rust style Strings and &str's to C style CString and CStr's.

Beyond that, I think it should be nearly identical with C/C++.</comment></comment>


Reddit's database has only two tables - <AUTHOR> http://kev.inburke.com/kevin/reddits-database-has-two-tables/ <comment><USER3> > Adding a column to 10 million rows takes locks and doesn't work.

It does not take locks, other than for very briefly.

1\. Make a new empty table that has the same structure as the table you wish to add a column to. Add your new column to the empty table.

2\. Put triggers on the old table that, whenever a row is added or updated, makes a copy of the row in the new table or updates the copy already there.

3\. Run a background process that goes through the old table doing dummy updates:

        UPDATE table SET some_col = some_col WHERE ...

where the WHERE clause picks a small number of rows (e.g., just go through the primary key sequentially). Since you aren't actually modifying the table, all this does is trigger the trigger on the specified rows.

4\. When you've hit everything with a dummy update, rename the current table to a temp name, and rename the new table to the current table. This is the only step that needs a lock.

There are tools for MySQL to automate much of this. There was a post either here or on Reddit a while back about this which linked to them. I'm sorry but I didn't save a link to it so you'll have to search if you want it.

<comment><USER4> Alternatively, you can use a database such as PostgreSQL, which stores metadata about tables in other tables, allowing you to not only add a column without locking the table but do so as part of a transaction with other changes that can all be rolled back atomically on failure.

PostgreSQL also supports concurrent index creation, so if you realize later you need an index on your amazingly large table you can have it built in the background while you are still using the table. (Managing indexes were another locking issue mentioned in the article.)

<comment><USER5> > PostgreSQL also supports concurrent index creation

I use this _all_ the time, and am flabbergasted how people can do without it. I feel like migration frameworks should make it the default with Postgres.

It's too bad it can't be mixed with transactional DDL, but because indexes are not logical changes, I don't really care as much, even if it is dissatisfying.

So, all in all, for those who want to take advantage of this feature in Postgres:

Stop doing this:

CREATE INDEX foo ...

Start doing this:

CREATE INDEX foo CONCURRENTLY ...

For the cost of one keyword, your index additions can be a non-event.

<comment><USER5> True to forgettable SQL-ish (did you know that indexes are not addressed by the SQL standard?) syntax, I got it slightly wrong:

        $ psql
        fdr=> \h CREATE INDEX
        Command:     CREATE INDEX
        Description: define a new index
        Syntax:
        CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table [ USING method ]
            ( { column | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
            [ WITH ( storage_parameter = value [, ... ] ) ]
            [ TABLESPACE tablespace ]
            [ WHERE predicate ]

So, rather:

        CREATE INDEX CONCURRENTLY foo ....

</comment></comment></comment></comment><comment><USER6> This is called a <http://en.wikipedia.org/wiki/Entity-attribute-value_model> or <http://en.wikipedia.org/wiki/Triplestore>. I think the author is understating the price, though. There's a lot of existing software you could reuse if your data was stored in more conventional relations, and "manually enforce consistency" is a pipe dream. Your code has expectations about your data, so in the abstract you do still have a schema, and not writing it down merely prevents any tools from helping you keep your data sane over time. I've seen Notes databases decay to the point that not even the dev team could explain how a document got into its contradictory state nor how the apps should (much less currently would) handle it. The few people diligent enough to do completely correct work without a checkable schema, aren't the people who would be tempted to try.

<comment><USER7> I recently read The Pragmatic Programmers book _SQL Antipatterns: Avoiding the Pitfalls of Database Programming_ (<http://pragprog.com/book/bksqla/sql- antipatterns>) and chapter 6 talks specifically about this kind of DB design (entity-attribute-value) and the benefits/pitfalls. It's a great read and I highly recommend it.

<comment><USER8> I bought that book after my first time developing on top of Magento.

Pure curiosity: Do you know of any other OSS projects that went down this route?

<comment><USER9> Yeah, I'd been thinking "Magento" from about halfway into that article.

Wordpress uses the EAV db pattern too (have a look at the wp_options and wp_meta tables).

Of course, Magento and Wordpress use it in fundamentally different ways - <USER2> this project I've got to build a combined search across a site with both Magento (EAV for products) and Wordpress (non-EAV for posts/pages) in use, is in that "it'll sit on the backburner until it becomes critical or somebody else solves it for me first" state…

</comment></comment></comment></comment><comment><USER10> Note: Steve was exaggerating a bit, or this post misrepresents what he said. I can think of 12 just off the top of my head.

That said, many of them fit the same pattern:

        reddit_thing_link
        reddit_thing_comment
        reddit_thing_user

...and each had a complement with "data" in place of "thing".

Though there were also ones like:

        reddit_xref_subscription_user_subreddit
        reddit_xref_vote_user_link
        reddit_xref_vote_user_comment

...for the many-to-many relations.

That accounts for most of the big ones (though there are also a handful of smaller specialty tables, too.)

Also, the above is as of March 2011 -- a lot has moved to Cassandra since then.

<comment><USER11> Thanks for the comment, that makes more sense. I was trying to figure out in my head how to do the lookups to reander comments with votes and what comments the user voted on all from one data table.

Also I guess the table schemas are slightly different for the different "thing" tables.

<comment><USER10> Nope, all "thing" tables have exactly the same schema as each other. Ditto "data" and "xref" tables.

</comment></comment></comment><comment><USER12> That quote is just painful to read, littered with FUD and not a single bit of evidence to back it up.

You _should_ worry about the database because it's probably your canonical storage of data, which for most of us is the most important part of our product/service/whatever. A good schema enforces consist data, invariants, and all sorts of other stuff that you don't want to be dealing with a manual (and buggy) basis.

Schema updates do not need to be slow. They might not always be as elegant as you hope but the big databases are improving on that front, and as tzs mentions - there are tricks that can be employed. With the latest and greatest PG, I believe we're even starting to get event triggers, so it may well be possible to do schema updates with replication. I also have a feeling the binary replication in PG 9 and up can even do it out of the box, with hot standby to still allow responses. I'm not entirely convinced replication is a backup solution, so maybe that was an operations antipattern. That's some baseless assertion from me though :)

If deployments are a pain, work to alleviate pain. They are pretty mechanical, even if involved, which lead very nicely to being automated.

Seriously, we're smart people, let's not throw at least 30 years of research out the window in favour of glorified entity-attribute-value schemas.

</comment><comment><USER13> Pretty sure Reddit has thousands of tables - last time I looked, it was really hard to see this but this is how it seemed like it was working. It has "thing"/"data" tables for every subreddit - created on the fly (a crime for which any DBA would have you put to death, normally). While I'm honored they use my library (SQLAlchemy) for relational database access, their actual usage of the relational DB couldn't be more...well... let's just say please don't imitate their style. If you want to build a Reddit, use Mongo/Cassandra or something like that. They'd very likely have done so themselves if NoSQL products were mature when they first developed their platform (I am vaguely recalling/guessing here on that one).

Edit: if any reddit devs want to correct me here, feel free, as I found the reddit source extremely difficult to follow back when I looked.

<comment><USER14> > It has "thing"/"data" tables for every subreddit - created on the fly (a > crime for which any DBA would have you put to death, normally).

That's not correct. There in't "table" for a subreddit. There is a thing/data pair that stores metadata about a subreddit, and there is a thing/data pair for storing links. One of the properties of a link is the subreddit that it is in. Same with the comments. There is one thing/data pair for comments and the subreddit it is in is a property.

> They'd very likely have done so themselves if NoSQL products were mature > when they first developed their platform (I am vaguely recalling/guessing > here on that one).

Actually, still today I tell people that even if you want to do key/value, postgres is faster than any NoSql product currently available for doing key/value.

<comment><USER13> > That's not correct. There in't "table" for a subreddit. There is a > thing/data pair that stores metadata about a subreddit, and there is a > thing/data pair for storing links. One of the properties of a link is the > subreddit that it is in. Same with the comments. There is one thing/data > pair for comments and the subreddit it is in is a property.

Having a bit of trouble parsing this, but I think you mean that the "thing/data" tables are per _type_ , where _type_ is "subreddit", "comment", "links". Which would indicate a fixed schema.

Can you clarify if Reddit just has a fixed number of tables? I remember seeing some "table.create()" in there but I wasn't sure what I was looking at.

<comment><USER15> Every "thing" (a single table) has an attribute _called_ "type". Type is a string, and is something like "comment" or "post" or "badge".

"table.create()" doesn't create a new table, I think it creates in index on "type", so you can treat it a bit like a separate table.

Yes, it is not a "real" database. It's a key-value store, which doesn't lose data.

<comment><USER13> > "table.create()" doesn't create a new table,

if its a sqlalchemy.schema.Table, create() emits DDL for "CREATE TABLE" to the database (trust me, I wrote it). I'm guessing "table" here is some other object local to the reddit codebase.

anyway, how many "thing" tables are there total?

</comment></comment></comment></comment></comment><comment><USER16> This is a thin wrapper around a good, but two year old, High Scalability post:

[http://highscalability.com/blog/2010/5/17/7-lessons- learned-...](http://highscalability.com/blog/2010/5/17/7-lessons-learned- while-building-reddit-to-270-million-page.html)

which was discussed on HN recently:

<http://news.ycombinator.com/item?id=4467077>

and on HN long ago:

<http://news.ycombinator.com/item?id=1354542>

EDIT: Fixed "long ago" vs "recently". Thanks, sync.

</comment><comment><USER17> My fear with headlines like this is that people with no business working at the scale that Reddit does will suddenly eschew years of best practice SQL and by like "my dad's pizza shop CRM only needs two tables, JUST LIKE REDDIT".

Everyone please, use your brain before repeating such specific configurations. Reddit is quite exceptional. Your burgeoning to-do list app is not.

</comment><comment><USER18> Umm, assuming the github repo is what they actually use (i assume so given how often it is committed to) there are two tables _per object_. Reddit_thing_link, reddit_data_link, reddit_rel_thing_savehide, etc etc

</comment><comment><USER19> Seriously? Sounds like a half-baked reimplementation of a <https://en.wikipedia.org/wiki/Triplestore> to me ...

The post he refers to is more than 2 years old, things may have changed.

</comment><comment><USER20> They've built a database in their database. Also known as the inner platform antipattern: <http://en.wikipedia.org/wiki/Inner-platform_effect> [http://thedailywtf.com/Articles/The_Inner- Platform_Effect.as...](http://thedailywtf.com/Articles/The_Inner- Platform_Effect.aspx)

</comment><comment><USER21> No, they have <thing> and <thing data> tables for each entity. This is a grave misunderstanding of what was actually said.

</comment><comment><USER22> Datomic takes similar approach. A unit of Entity, Attribute, Value and Time is called datom. Although in this approach we don't have to have schema, datomic forces us to define schema for some benefits.

</comment><comment><USER23> Basically they rediscovered RDF.

They should switch to an RDF triplestore, at least they would be able to exploit some of the RDF-only optimizations and their validation tools.

</comment><comment><USER24> This is roughly the path I'm taking on my current project. There are some things that have a consistent, "traditional" schema. However, many of the feature-important things are being stored as JSON blobs. This means that I don't have to worry about schema migrations when I add a new feature; instead, I just define its JSON schema. This works particularly well because I don't need to join on these items. The downside is that I do have to do occasional manual processing on them (sum up all values of type FOO) that would be trivial if everything were perfectly normalized.

<comment><USER20> > many of the feature-important things are being stored as JSON blobs. ... > when I add a new feature I just define its JSON schema.

Some no-sql stores work like that. You may be better off using one of them.

<comment><USER24> I looked at that (and have done that in the past), but I really missed some of the ORM features I got with relational. I would up writing more glue code than I liked for things that would otherwise be free. This is my compromise world (and Postgres is getting better at handling its JSON).

</comment></comment></comment><comment><USER25> I used to work at a company with a huge LDAP database that had been growing in uncontrolled and organic ways for years. If you've never worked with LDAP before, it's basically a big key-value store, with some optional schema enforcement. We spent an inordinate amount of time manually cleaning it up and trying to enforce some kind of data integrity and we were always bemoaning the lack of a real structural schema.

I think the kind of ad-hoc generic data typing described in this article is sometimes the right solution but it comes at a cost.

</comment><comment><USER26> I wish I read this article a year ago before I started developing my latest app. I have that exact problem, where adding a column to a 10M+ row table takes over an hour. So instead I end up with "things" tables all over the place.

Sigh.

<comment><USER27> The last company I worked at made an application that used the Entity- Attribute-Value pattern in the database. The stated reason was to be dynamic, so we didn't have to worry about adding new columns and the associated downtime (assuming the DB got huge, which of course it would because this app would surely be a huge success). We had that problem on our main app (with 10s of millions of rows) where adding a column was always tricky, so I think management over-corrected. The other supposed win was that since the model didn't change, the code didn't need to be updated.

The data that was being stored fit into the relational model pretty well. But thanks to E.A.V. it was very difficult to query. The kinds of questions we often looked at (how many records from this zip code) would have been trivial without the E.A.V. Today you might use a NoSQL database (which were just starting to get noticed at the time), but in reality it fit into MySQL just fine.

The real sad part is, we never used that functionality in the 2-3 years after it was developed while I was there. The app wasn't big enough for adding columns to take much time at all. All that "flexibility" we needed? We didn't use it, because it would have taken additional time to implement the additional front-ends and update the other backend systems.

Even if we wanted to keep things smaller, we could have gone with a table per type of record (record_type_one, record_type_two, etc) instead of one big records table. That would have made schema changes easier.

And of course, the code did need to be updated. Always. Sure there were no new columns that might cause problems if they didn't have default values, but you can never make changes to an app without code changes. We still had to implement the new interface. We had to implement the code to post that new kind of record to the systems it got processed by. Making the code handle the DB changes would have taken less time than the day or two a designer might work on the front end. It never would have been a bottleneck.

<comment><USER28> Looks like you guys did a bit of a premature optimization there. I know how painful it can get :(

<comment><USER27> That's exactly what it was.

It was designed to replace a growing set of systems that were all tiny forks of the same basic code base over a couple of years. Managing all that had become a mess, and it did need to be replaced. But there wan an opportunity and we ended up trying to reach for the stars when we should have aimed a bit lower.

The irony is that after the system had been in production for a few months, we noticed it had terrible performance that was getting worse with load.

It turned out the programmer who had written some parts of the system had it recalculating _way_ too much data, things that didn't apply to what was going on and that couldn't have changed. It was probably an artifact from initial development (I'll do it this way to get it going, then cleanup later...). Once we caught and fixed that, it was much much faster.

That was the only optimization I remember it needing while I was there.</comment></comment></comment></comment>


Practical tips for writing inclusive job ads (2016) - <AUTHOR> https://blog.hostedgraphite.com/2016/04/26/no-brogrammers-practical-tips-for-writing-inclusive-job-ads/ <comment><USER2> At my current job, we used to advertise that we wanted someone with deep knowledge of Python, who had written their own Python metaclasses. How many of you know off the top of your head exactly what a metaclass is and why you would want to write one? While we did have _one_ hand-rolled metaclass in our own codebase, it was just there, written long ago, worked fine, and didn't need any modification. None of us actually working at the job have to think about metaclasses on our day-to-day tasks.

By putting that very specific bit of Python arcana in our job ad, we were just scaring away lots of potential candidates who could have done the job just fine. They stopped mentioning metaclasses in the ad and we've gotten some really good new hires since who are very competent, and best of all, are very nice people.

<comment><AUTHOR> Yep, agreed! Thanks for sharing that, nice point. Most of the work we do as developers isn't the sort of John Carmack's Magic Numbers sort of wizardry, so looking for more of the same sort of dev skill can be counterproductive as you've found.

Nice people are where it's at. After all, we've gotta work together, and someone will always be able to learn the tech...

</comment></comment><comment><USER3> I'll add one - I immediately ignore any job ad that contains anything along the lines of "Work in an exciting/agile fast-paced, dynamic environment", which pretty much signals that only youngsters need apply.

Of course, if the job really is chaotic and high-stress, then that signal should probably stay in the job ad.

<comment><USER4> _" Work in an exciting/agile fast-paced, dynamic environment",_

Or they're just randomly cut-and-pasting whatever fast-sounding lingo they've seen in other ads.

Either way, it's a negative tell.

</comment></comment><comment><USER5> > No ninjas, rockstars or brogrammers, please; just nice, caring humans.

I like how in a post about inclusive job ads, they still wanted to show off that they _Exclude The Right People_.

Their cultural based discrimination is obviously correct and should be applied universally; previous cultural based discrimination is a crime we should all strive to avoid!

I actually enjoyed the post (and agree with most of the points about writing job postings) and don't mean to be overly critical, I just think it's an interesting chance to reflect on how easily these habits come to us as people. (And so some of the language above is dramatic for effect.)

<comment><USER6> i think you might be conflating the discouragement of a behavior with the application of an identity to people, something the article seems to try to avoid.

hostedgraphite isn't saying they don't want competent programmers, even if they've copped the brogrammer attitude in the past, but rather, to leave the brogrammer stance at the door. if you can't do that, then (and only then) don't apply for the job because you probably won't fit in (and likely as a result, won't be as successful).

we wear different faces at different times (shout out to billy joel!), and can discard one (or put it in the back pocket) as desired/needed.

<comment><USER7> I understand that their message is "this is not a frat". However, I still absolutely hate the pejorative usage of brogrammer. People do not use it to exclusively refer to culture.

It is absolutely a label that is applied to people. Sitting here, I feel like I am part of the specter of brogrammers that looms over the industry. Whether it was their intended usage or not, I feel like this term is referring to programmers like me.

Their job ad is not going to have the context of this blog post. Their job ad doesn't say "no brogrammers, but we don't mean men who work out and code, we actually mean the toxic culture of exclusivity that you would see in a frat." Nope, their job ad just says "no brogrammers". If I saw that I would assume that their culture would be toxic toward me.

Please stop using this term. There are people out there who feel like it applies to them and it alienates us. I agree with OP, it is not a term that encourages inclusivity because there is a stereotypical image of a person that comes to mind when it is used.

<comment><USER6> i agree that it's often used pejoratively to define people. i was not trying to justify that kind of usage. i was simply pointing out that the article generally uses the term as an adjective, not as a noun (i.e., it's something you can wear, not something you can be).

however you are right that the called-out text from the job ad uses it as a noun, unfortunately.

i'm curious why the phrasing makes you feel it's toxic toward you personally (without a preconception either way on my part)?

<comment><USER7> From the article:

>This is amusing and captures our opposition to Silicon Valley rockstar/brogrammer culture

If they are saying that Silicon Valley's culture is a brogrammer culture, they are probably talking about the culture of the dominant group there. If I worked in that area, I would be part of that dominant group.

So, my question is how they would screen out "brogrammers" during an interview process. I think someone looking to filter out this group would have a strong chance of looking at me and fitting me part of it.

If it is as pervasive as they say, then it probably includes me. That is how I see it used most of the time, describing tech's overall culture. I am part of tech's culture, and I am a fit white male who programs. I assume that I am perceived as a brogrammer by many people who use the term.

</comment></comment></comment></comment></comment><comment><USER8> _> original: Your code will be exercised by 125,000 events every second,_

 _> revised: your contributions will be exercised by more than fifty billion events per day_

Why does 125 __* 10^3 vs 50 __* 10^9 influence diversity hiring?

The scientific study the blog references does not mention anything about altering numerical figures (such as altering a numerator from 3 zeroes to 9 zeroes) to be more inclusive.

Also, why is _" code"_ a taboo word for inclusiveness? Here's female Ginni Rometty using the phrase _" lines of code"_.[1] Another female (also a non- programmer) Mary Barra using the phrase _" lines of code"_.[2]

[1] _" New cars today have 100 million lines of code"_: [https://www.ibm.com/ibm/ginni/01_06_2016.html](https://www.ibm.com/ibm/ginni/01_06_2016.html)

[2] _"A car today has hundreds of millions of lines of code,"_ : [http://www.triplepundit.com/2017/07/gm-boosts-stem- education...](http://www.triplepundit.com/2017/07/gm-boosts-stem-education- girls-women/)

<comment><USER2> I was reading Girl Code today:

[https://www.girlcodethebook.com/](https://www.girlcodethebook.com/)

One of the girls there describes her expectation of coding as coming from Hollywood: indecipherable zeroes and ones, weird symbols, all very fast-paced. When she saw that it was just "System.out.println()" to make something appear on the screen, she realised how much more mundane this all was.

I guess this sort of suggests that "code" is some kind of secret, difficult thing, which may be off-putting to some people. I agree that most people wouldn't balk at the word "code", but if you can make even fewer people balk, why not do it? The worst that can happen is that you broaden your search and get more people applying for your job.

<comment><USER9> Still not really a gendered thing. Nobody understands how tech works until they do it themselves.

</comment></comment></comment><comment><USER10> I guess I could be classified under "POC," even though I'm half white. I was fully expecting this to be full of overly sensitive trite, but now I wish everyone writing job ads reads this first!

The other issue is HR usually does the postings, where they just get handed some skills and they make up random numbers and go from there. But seriously, you don't need a Java guru that has achieved nirvana with the JVM to write CRUD apps, so why not just advertise what you're actually looking for?

</comment><comment><USER11> On the other hand, if you were going to write your job posting the pre-edit way and the said applicant was turned off by it... will they even be a good fit in your org? Do you want to continue editing all of your communications?

I'm kind of being devils advocate here but I do find it a drag to work with people who can't read between the lines sometimes and get the gist of what someone means rather than feeling excluded by they're word choices.

<comment><USER12> So you actually do want a workplace culture that alienates women and people of color?

[edit, but leaving original off-the-cuff comment] I think if your goal is to create an inclusive workplace then editing your communications in ways like this will be useful. I think its incorrect to think that being inclusive means hiring people that aren't confident in their skills.

<comment><USER11> This is why I had to put the devil's advocate part in my original comment because of this accusation. Obviously, I do not agree with purposely creating a workplace that alienates women but it would take me much editing/censorship and thought than I'm willing to give to make sure I don't write something in a way that you could misconstrue my words.

I'm simply pointing out that what I am for is being who we are as individuals. Everyone. If you exclude yourself because of the way I write my job posting, then we probably wouldn't work well together. If I over edit my job posting and it doesn't reflect the way I actually communicate on a day to day basis; guess what, we probably wouldn't work well together either. Why? Because I'm not going to edit my communication style, I'm going to be who I am.

If I'm the author of the original job posting... You're coming from the stance of assuming that I need to be edited. My communication style is horrible and exclusive. None of those words were offensive, obviously exclusive, etc[1]. So, I don't think I do need editing. I'm not an asshole, I work well with women and people of all types, thus I am not going to change. However your view assumes because I wrote my job posting that way that I am a women alienating asshole that does not value inclusion.

I want people that can work together and not let minor communication issues get in the way of their productivity or happiness. We should be teaching people how to read a job posting and infer that they could be a fit and apply. Applying is far away from accepting the job, if you sense any red flags you will have an opportunity to explore them. Don't get held up by the job posting.

[1] Okay - I do not agree with the use of rockstar & ninja terms

</comment></comment></comment><comment><USER13> I would replace " No ninjas, rockstars or brogrammers, please; just nice, caring humans." with "Just nice, caring humans". "no..." sentences sound defensive to me.

<comment><USER14> You could say:

 _We value the ability to work with others over exceptional technical skills. That is, while there is value in the latter, we value the former more._

No "no", no defensiveness, but the preference is clear.

<comment><USER5> That's still defensive.

"Here, we place a strong focus on ability to work with others and collaboration. Success requires teamwork!"

Don't justify your preference, just state it directly. It's not about tradeoffs, it's that we're fundamentally doing something collaborative -- everyone needs to be on the same team.

</comment></comment></comment><comment><USER15> I honestly don't understand what any of this has to do with inclusion. Maybe the aim is to de-emphasize competitiveness, directness, and individual responsibility, which is fine if that's the kind of employees you want to hire. But is there strong scientific evidence that women lack these qualities compared to men? What if you'd like to hire people with the qualities of, say, the Williams sisters of tennis fame?

<comment><USER16> There is evidence that women are penalized for showing these traits. The same behavior is seen as direct and competitive in men and as bossy and stuck-up in women. Which is also why negotiating while perceived as female can be a very different experience. Generalizing, of course.

It's interesting to read the experiences of trans people who have truly seen both sides.

</comment></comment><comment><USER17> Can someone define what a "rockstar programmer" is and why a company would want to not hire rockstar programmers?

Here's one definition I found: [http://www.urbandictionary.com/author.php?author=ChrisTTT](http://www.urbandictionary.com/author.php?author=ChrisTTT)

 _A computer programmer with such strong skills and so much specific experience that they are the equivalent of a rock star in the domain of software. Many people play guitar pretty well, but only a few become rock stars. These programmers can develop more software than 5 - 10 newly hired regular programmers because they know what needs to be done and how to do it. They also might set the architecture of the product that dozens will build upon._

What's wrong with that?

<comment><USER18> I'll tackle this.

\- If they are expected to do 5-10 times the amount of software development as a regular new programmer, are they going to be offered 5-10 times the regular salary?

\- Are all the other programmers at the company dramatically more effective than a regular programmer? Most competent people don't think of themselves as being exceptionally better than their peers, so if that's the case, they probably shouldn't bother.

\- Or, are the other programmers at the company just regular ones, and the incoming new person is expected to be more effective than all of them combined from day one? That's a lot of pressure to put on one person. What was the answer to the salary question again?

\- Many people who have developed exceptional skills in one area have neglected other areas. What types of personal problems is the company willing to tolerate for the privilege of hiring rock stars? Is alcoholism okay? How about being sexually creepy towards co-workers, due to lack of social skill practice? How about body odor? Not that all exceptionally skilled programmers have these types of problems, but you have to make a trade off somewhere. Really, how much are you paying them? Because someone who is 5 or 10 times more productive than a normal programmer without being a socially impossible weirdo is likely already in a job paying far more than what hr had in mind for this position.

Is there no place for a programmer who's just basically competent and professional and will work for an average salary? Do you want to drive those programmers away?

<comment><USER19> For a lot of places, the answer is yes. They do want to drive that person away. They want someone who will do 5x the work for 0.8x the salary because they think $TOPIC is their great calling in life.

To someone willing to burn out a promising young programmer to get their startup to hockey-stick upwards, it's a good deal.

<comment><USER18> Yup. And that's exactly why more experienced programmers will stay the hell away.

</comment></comment></comment></comment><comment><USER20> What the heck is a "brogrammer" anyway?

It's one of those words I thought I understood just from its contsruction, but the more I see it used by others, the more confused I get.

<comment><USER21> It means "a male working in tech who I don't like"

</comment></comment><comment><USER22> Job postings that emphasize mandatory after-hours events especially based around alcohol are incredibly off-putting to multiple groups of candidates (senior engineers with families, introverts, non-drinkers, etc.). Things like "we have a beer keg in the office", "happy hours", or "work hard play hard".

</comment><comment><USER23> many of the job listing phrases suggested by this post make the company seem more inviting, open, comfortable _in general._

i don't see these phrasings as tied strongly to inclusion of specific underrepresented gender, sexual preference, racial or ethnic groups. many white males who dislike brogrammer culture will find these phrases more appealing too.

also, these phrases actually advertise for _a different type of job in a different type of company,_ a company that _isn 't_ looking for a ninja/messiah to save its ass and make all the critical decisions singlehandedly, a company with a management team that _isn 't_ a gang of lazy, entitled, technical illiterates who are ignorant about how to organize and run a software dev operation.

in other words, this company is not just looking for a bro (sucker) to dump all the shit on (exploit). this company knows what it's doing.

</comment><comment> Paul-ish "Evidence That Gendered Wording in Job Advertisements Exists and Sustains Gender Inequality"[1] looks at wording of job applications effect on applicant pool. I know there are some start-ups[2] in this area trying to automate the process the author describes.

[1] [http://gender- decoder.katmatfield.com/static/documents/Gauch...](http://gender- decoder.katmatfield.com/static/documents/Gaucher-Friesen-Kay-JPSP-Gendered- Wording-in-Job-ads.pdf)

[2] [https://textio.com/](https://textio.com/)

</comment><comment><USER24> It's been found that women generally look at job ads and find the things they _can 't_ do. They will feel underqualified and not apply. I think that's the reasoning behind taking out "several years", etc.

As a female junior software dev, I honestly would be more likely to apply to the revised job ad than the original. So, good job to them I guess.

</comment><comment><USER25> Why not just skip all the weasel words and have a big "WHITE MEN NEED NOT APPLY"? If you are looking to specifically discriminate against white males then say so, I'm sure the potential minority candidate would be much more encouraged to apply knowing that their major competition has been disqualified already.

<comment><USER24> The revised language is attempting to widen the applicant base.

If you consider that eliminating your chances of getting the job, I would re- evaluate your own application not the job ad.

<comment><USER25> Then what does it have to do with "diversity"? Why does the author even mention it if the only goal is to get more people to apply? Dropping your experience requirements in a job ad quite obviously would increase number of applicants, why do we need an article for that?

</comment></comment></comment><comment><USER26> For those interested, another take on using language to bring down social barriers:

[http://micheleincalifornia.blogspot.com/2016/07/less- exclusi...](http://micheleincalifornia.blogspot.com/2016/07/less- exclusive.html)</comment>


Snapchat Has Been Faking Growth Numbers, Ex-Employee Alleges - <AUTHOR> http://variety.com/2017/digital/news/snapchat-fake-growth-lawsuit-pompliano-1201952800/ <comment><USER3> Direct link to (redacted) complaint: [https://www.scribd.com/document/335725243/Pompliano-v- Snapch...](https://www.scribd.com/document/335725243/Pompliano-v-Snapchat)

The General Allegations reads like the synopsis of a Silicon Valley episode.

<comment><USER4> It indeed does. Firing someone with that kind of track record for incompetence within 3 weeks and then bad mouthing to all four winds about it? Something more credible would be that visions did not align, clash of personalities, or that he did not fit the culture, but incompetence? Also, isn't standard practice for companies to only confirm employment rather than give a review exactly for this kind of lawsuits?

<comment><USER5> Well, if his claims are accurate and they are defrauding investors, I'm sure they want to trash him before he can suggest anyone else look into it.

"Oh, THAT guy? Ya, he's just angry we fired him because he's an idiot and has no idea what the numbers we were showing him even meant." \- quick guys, let's find a way to fix or bury those numbers we showed him!

</comment></comment></comment><comment><USER6> The story just doesn't add up.

"2X successful founder"... looking on Crunchbase, he founded Digiforce "acquired" by Strategic Link partners. digiforce.com directs to some random japanese site and the Strategic Link site looks like something made from a (bad) wordpress template. I almost wonder if he made up a company to acquire his company.

Next, no way Facebook hires someone like that to lead "THE" growth team for pages. Maybe as an entry level PM or something. He was only at facebook for 1.5 years, which also makes me skeptical he was such a high priority hire for Snapchat.

Sounds like a bunch of hot air and resume puffing to me. My guess is that Snapchat realized he had an overly active imagination and had taken liberties with his resume.

<comment><USER7> I registered a throwaway account to play devils advocate with what feels like a straw-man argument from yourself:

>digiforce.com directs to some random japanese site

It could be that the brand digaforce wasn't valuable to strategic link partners & they let it go.

> the Strategic Link site looks like something made from a (bad) wordpress > template.

Their target market looks like military and law enforcement. You don't necessarily need shiny marketing to sell to the land of powerpoint: personal selling through established contacts works. Ex military stick together because of how bonds were forged.

>I almost wonder if he made up a company to acquire his company.

Are you suggesting he invented strategic link partners? This is probably pretty easy to validate as their management is well documented on their site - all ex military.

>Next, no way Facebook hires someone like that to lead "THE" growth team for pages.

You've built the next step of your argument assuming your previous allegations are true.

>Maybe as an entry level PM or something.

Is what you argued previously about his character true or not? If he was fraudulent (i.e. inventing companies etc.) then Facebook probably wouldn't hire at all (or he'd get washed out pretty quickly).

> He was only at facebook for 1.5 years, which also makes me skeptical he was > such a high priority hire for Snapchat.

His allegation says that Snapchats intent was to gain confidential information about Facebook. Does 1.5 years matter in this case? Recent information is what's key here.

> Sounds like a bunch of hot air and resume puffing to me.

What are the facts we know for sure? He worked for Facebook. He was involved in some startups. He is ex military. He was hired by snapchat briefly and fired.

>My guess is that Snapchat realized he had an overly active imagination and had taken liberties with his resume.

Have you read his complaint? He alleges he was calling out snapchat internally on misrepresenting metrics to prospective investors - and they fired him for it.

What's more likely? He faked his way into Facebook and survived 1.5 year, generated enough demand to get noticed by Snapchat and then jumped to snapchat only to be found out to be completely incompetent in three weeks?

Or... his military / honour based mindset got him in trouble when he saw things happening in snapchat that were at odds with his value system.

There is definitely smoke here in my opinion. You have to be grossly incompetent to get fired within three weeks. If he did manage to fake his way into Facebook then he does have a level of competency. To me, it doesn't make sense that he'd screw up and get fired in three weeks. Especially given his military background.

Does this make sense?

<comment><USER8> > There is definitely smoke here in my opinion. You have to be grossly > incompetent to get fired within three weeks.

Agreed. _grossly incompetent_

<comment><USER7> Yes. Further, if you put yourself in his shoes. What are you doing in those three weeks? You've sold them on the growth strategy - now you're getting up to speed on the details getting ready to execute. It's natural that you'd look into things in more detail. If you find something that's not right... whoah... differences.

If you _were_ a fraudster, you'd just go along with it ;-)

</comment></comment></comment></comment><comment><USER9> Important to note from the filing: this all went down in September of 2015. I wouldn't be surprised if they had trouble with their growth numbers at that time, but in 2016 they seem to have exploded growth-wise.

Not saying his lawsuit isn't legit, but I wouldn't take this as a sky-is- falling for a 2017 IPO.

<comment><USER10> Well, the allegation is that they were faking their growth numbers, or planning to. If this is true, than I doubt this was aborted after firing the guy.

</comment></comment><comment><USER11> If this is true (and if he wins), won't snapchat's customers - the advertisers sue it too? (because they lied about the numbers?)

Also, it is well known now that Reddit's initial userbase was all fake - <USER2> does anyone know what the appropriate way to report this to customers is?

<comment><USER12> When WSJ reported that Facebook inflated its view count metric was inflated, there were no ensuing lawsuits. My significant other works directly in advertising for one of Facebook's advertising partners, and while she told me there was a lot of concern about it, there was almost no trickle down effect to the downstream customers. After a week or two, life went on as usual.

This may not be a completely equitable comparison (Facebook has far better brand equity and a longer history of trustworthiness than Snap at this juncture), but I think it's illustrative that this may not have the "sky is falling" impact we would otherwise anticipate.

</comment></comment><comment><USER13> If true this could be really bad for their IPO plans. Yikes.

<comment><USER14> Even if it isn't true, it is something that Snapchat would like to to go away quickly.

<comment><USER15> The mere implication of that would bring on predatory suits from disgruntled ex-employees looking for an easy payday...

</comment></comment></comment><comment> blubb-fish > organizations which design systems ... are constrained to produce designs > which are copies of the communication structures of these organizations

[Conway's law]

So if Snapchat is what Snapchat Inc designs then I'm not at all surprised if the initial communication structures turn out to be of the alleged kind.

I mean Snapchat is a shallow concept promoting short-term thinking and used for boasting :D

It's like Facebook - just worse. Facebook is almost academic in comparison - you actually have to _write_ things.

<comment><USER16> But Facebook is very profitable with it. And that's what counts. The lawsuit is in connection to an IPO, so he probably states that user/revenue/profit numbers are somehow misstated. Not the quality of the content, that doesn't really matter here.

</comment></comment><comment><USER17> Interestingly, the tweet ([https://twitter.com/APompliano/status/639097166405853184](https://twitter.com/APompliano/status/639097166405853184)) mentioned by Techcrunch ([https://techcrunch.com/2015/09/02/snapchat-hires-a- new-growt...](https://techcrunch.com/2015/09/02/snapchat-hires-a-new-growth- lead/)) doesn't exist anymore.

</comment><comment><USER18> Do these documents ever get unredacted? Because I want to read this document so badly.

<comment><USER19> Right? I was wondering if it would be possible to build something to guess what these redacted lines(at least for the not-8-page-part) say. Since they redact mid-sentence, could you calculate the font size, estimate how many characters there are, and fill in some common words using an NLP based implementation? Or would the sheer volume/complexity be too much?

<comment><USER20> [http://www.nytimes.com/2004/05/10/business/technology- resear...](http://www.nytimes.com/2004/05/10/business/technology-researchers- develop-computer-techniques-bring-blacked-words-light.html?_r=0)

</comment></comment></comment><comment><USER21> There have been a few issues with how Facebook has calculated some of their views as well so it's not surprising that there maybe issues with Snapchat.

But regardless of whether they are misquoting some of their growth numbers or not I think even without that they are going to have a difficult time with their valuation and IPO. They are already at $25B in the private market and with an IPO investors would be hoping for at least $40-50B. To justify that price just look at some of the companies in that range and the amount of revenue and growth they have in order to justify it.

Snapchat is not a ubiquitous service like Facebook so ultimately it's going to be in a category somewhere between Twitter and Instagram.

Instagram has one of the easiest on-boarding processes and with their static stream from friends that are now directly hooked into FB you are immediately immersed in what the experience is. Snapchat is a bit more complex.

Regardless to justify a $50B valuation they are going to need a substantial revenue growth story with no hiccups. And they are ultimately going to have to prove out to about $2.5B of revenue in 2017 which is impossible.

Comparatively speaking FB IPO'd for $100B in 2012 and had $5.2B in revenue for that fiscal year and also don't forget that it lost about 30% of it's value after IPO before rebounding substantially and their revenue growth and profitability has been world class.

So I'm not looking at Snapchat with a commentary on it's product, but simply from a financial perspective and it's hard to create a story that validates their $40B-50B IPO target that they are most likely shooting for.

</comment><comment><USER22> Vanity Metrics = largest plausible number with a straight face

</comment><comment><USER23> just as a little side note.....I don't believe anything Pompliano says. I created this account to further hide my identity since I live/run a company in Raleigh where he is now a "VC". He claims to "innovate VC" and was written about in the business insider ([http://www.businessinsider.com/full-tilt- capital-22-deals-90...](http://www.businessinsider.com/full-tilt- capital-22-deals-90-days-2016-11)).

I work/live with the supposed 22 deals. Only 1 of these 22 deals has been paid (100k checks). The only one that was paid was paid after the founder threatened to go public with these numbers.

Look into his firm and ask around in the raleigh area. 21 unpaid checks.

</comment><comment><USER24> Snapchat makes no sense to me so I choose to believe this. Theranos 2: The Snappening coming to a theater near you!

</comment><comment><USER25> no body care about how much growth is faked? The discussion here is kind of focus on wrong area.

<comment><USER26> Nobody wants to speculate in an area where they might be vulnerable themselves.

Maybe storytime won't always be sufficient to run a business.

</comment></comment><comment><USER27> The uptick...

</comment><comment><USER28> TL;DR

According to the complaint from Anthony Pompliano: When they were trying to hire him Snapchat said they would hire 40 people under Pompliano for his growth team. Based on this promise he left FB to join Snapchat. He then found the numbers they were touting were not accurate and they were not committed to what they told him.

When the complaint gets to what happened starting the day Pompliano was hired and more specifically what happened when working there, it is blacked out for the next 8 pages.

After those pages it says he was fired after 3 weeks and Snapchat told employees, media contacts, and a company looking to hire Pompliano he was fired for being incompetent. This misrepresentation has cost him his reputation, money, etc.

<comment><USER14> It is common knowledge that you risk getting sued if you give negative references to ex-employees:

Source: [https://www.totaljobs.com/careers-advice/money-and- legal/ref...](https://www.totaljobs.com/careers-advice/money-and- legal/references-faq)

<comment><USER29> it is probably a bit hard to prove competency/incompetency in just 3 weeks.

<comment><USER30> It can be in extreme cases, and in these situations it's better for both parties to resolve things quickly.</comment></comment></comment></comment>


Backup SQLite database with zero downtime when running Ghost in Azure Web Apps - <AUTHOR> https://tomssl.com/2016/09/12/backup-your-sqlite-database-with-zero-downtime-when-running-ghost-in-azure-web-apps/ <comment><AUTHOR> This is my blog post. The title is rather specific, but at least that will save you from clicking through if you're definitely not interested.

<comment><USER2> I shall digest the article properly later on as it is relevant to me. One question I wanted to reach out and ask quickly is how do you find the speed of the new Azure portal? I appreciate this is very much an aside topic, but it's recently been incredibly slow for me. I'm not sure if this is just related to UK traffic. Having got used to it I would say I prefer it to the classic one, just wish it wasn't overly slow.

<comment><AUTHOR> Hi Alex. Cool! Please let me know how you get on with it.

Now that you come to mention it, I have also found the portal to be rather slow. Indeed, sometimes it's excruciating. However, for some reason I hadn't really thought about it until now. I usually have loads of browser tabs open, so maybe I thought that was the culprit.

<comment><USER2> I've tried several browsers with one to many tabs and it's consistently slow. Things like the price prediction just time out. Really hope this gets sorted as it's becoming a pain point for me.

Yes, your article looks just the thing I'm looking for. I'll definitely let you know how I get on. Thanks for the writeup!

<comment><AUTHOR> I had timeouts with the pricing stuff too, although it's all been a bit better for the last few weeks.

Great if I can help. Good luck - it should take less time to sort out the backups than to read the article :-)</comment></comment></comment></comment></comment>


Microsoft unveils Cortana voice assistant for Android and iPhone - <AUTHOR> http://www.engadget.com/2015/05/26/microsoft-cortana-android-iphone/

<comment><USER2> [https://www.youtube.com/watch?v=lt5iLwNChyo](https://www.youtube.com/watch?v=lt5iLwNChyo) Found this video on verge comment section, I must admit Cortana is really impressive!</comment>


I Can Text You a Pile of Poo, but I Can't Write My Name - <AUTHOR> https://modelviewculture.com/pieces/i-can-text-you-a-pile-of-poo-but-i-cant-write-my-name <comment><USER2> > But Bengalis were forced to make similar orthographic contortions just to > write a simple email: ত + ্ +  = ৎ (the third character is the invisible > "zero width joiner").

> But the final letter [of my name] has still not been given its own Unicode > character, so I have to use a substitute.

I am having a difficult time determining, partly due to the example in the previous paragraph, whether the issue is that Unicode can't represent the final character of the writer's name using a single/correct glyph or if that glyph simply requires multiple codepoints (at which point I would argue this is an issue with their keyboard or text editor, not the storage format of the text).

<comment><USER3> It's sort of a poor example, especially when the skin tone emojis also use combining characters.

The overall frustration is understandable, I'm just not sure if there are any easy remedies, especially if the metric for success is assigning a code point to every grapheme that some group considers sufficiently distinctive. Having a more diverse leadership might help, as the author suggests. But his anecdotes aren't convincing. I'd like to see a more comprehensive critique of the diversity of the leadership, particularly regarding their credentials and experience.

English readers would never accept a Greco Unification because English orthography _already_ went through tremendous simplification and unification at the behest of technological necessity, starting from the printing press but especially since the advent of computers. European languages generally are far along that path. Excepting the Western/Cyrillic divide, the European languages he described are already substantially unified, which he perhaps unwittingly takes for granted. To some extent the author is merely experiencing what European authors began experiencing long ago; namely, yet another culture clash with modernity.

Which isn't to say that European orthography isn't privileged. Just that the scope of that privilege can be more difficult to determine than one would think given the current state of affairs. To some extent European orthography might seem privileged because it was already drastically simplified and already underwent significant unification. Yes, there are many one-off esoteric European glyphs, but you can't judge how "privileged" that is without accounting for all the orthography discarded and abandoned, even in the past century.

Also, it's worth realizing that the Unicode project is literally destined to fail in the sense that languages and meaning are constantly changing. Unicode will always struggle with the inherent limitations of the goal. Arguably non- syllabic scripts are especially difficult to deal with in this manner. We should be careful not to equivocate written languages. English is, frankly, much easier to accommodate than many other languages, especially considering how English accommodated to technology.

Finally, it's worth pointing out that emojis were originally a Japanese phenomenon. More specifically (lest people think I forgot about the long history of ASCII emoji), AFAIU Unicode began accepting emojis at the behest of Japanese companies, and the first groups of glyphs were from Japan. Understanding why they first evolved in Japan might actually go a long way to addressing some of the author's questions and criticisms.</comment></comment>