Relearning to Type - <AUTHOR> https://gryphon.dev/2019/10/04/relearning-to-type/ <comment><USER2> I have begun the path to learning stenography. Steno involves chording, or pressing multiple keys at once. Multiple keys at once means greatly improving the information density of when you type allowing professionals to type 240 words per minute (realtime), which is just not possible on single-key-at-a- time keyboards. Unfortunately most commonly available, non-gaming keyboards do not natively support multiple keys at once which is also known as n-key rollover (nkro). I ended up buying a pre-assembled, fully opensource hacker keyboard Ergodox EZ⁰, and have a custom layout firmware that matches up with the open steno project¹ . From here I am using Querty Steno² to practice my chording. Here is an example video someone did of using steno for programming a simple FizzBuzz on a different keyboard on YouTube³. In my opinion, if anyone is looking to really take their typing to the next level, chording is the only way and Dvorak/Colmak/single-key-at-a-time-layouts will never really get you there.

⁰ [https://ergodox-ez.com](https://ergodox-ez.com)

¹ [http://www.openstenoproject.org](http://www.openstenoproject.org)

² [http://qwertysteno.com](http://qwertysteno.com)

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

<comment><USER3> Do you take advantage of any predictive typing?

Coding, in particular, reuses a lot of keywords and variables names.

<comment><USER2> Steno itself in the general sense is not predictive but rather phonetic. You can create your own custom macros/variable-names/code-blocks to your dictionary for things that are common in your workflow as you go. If you already use some sort of predictive typing system such as sentence/phrase autocomplete you could probably just assign a macro for accepting the autocomplete suggestion.

</comment></comment></comment><comment><USER4> One thing I always miss when I see statistics such as "Your fingers on QWERTY move 2.2x more than on Colemak," is an explanation of what _activity_ you're presumably doing then. I'm _guessing_ the assumption is that you're writing pages and pages of English text. As a programmer in a non English speaking country I have _no idea_ how that translates to my use case. 50% of the stuff I write is code. Sure, there's a bunch of English words in there, but I seldom get further than three letters before I mash my Emacs binding for autocomplete. When I write text, it's often internal emails that may not be in English.

So, perhaps my fingers _don 't_ move 2.2x more when using QWERTY. Perhaps they move _less_?! Maybe unlikely, but I really have no idea.

<comment><USER5> I think that the main advantage of using Colemak over QWERTY is to reduce pain and effort.

<comment><USER6> Could Colemak increase pain and effort in non-english languages?

<comment><USER3> You could run what you type through an analyzer.

[http://patorjk.com/keyboard-layout- analyzer/#/main](http://patorjk.com/keyboard-layout-analyzer/#/main)

</comment></comment></comment></comment><comment><USER7> I haven't yet tried switching to Colemak or Dvorak, but when I started to get real bad RSI I switched to a split ergonomic keyboard and it made a world of difference. On top of that, it helped a lot to adjust the keymap so the keys I need most often are comfortably reachable.

YMMV, different people have different conditions, etc.

<comment><USER5> Can you please share your keymap customizations?

<comment><USER7> Current ergodox keymap is here: [https://configure.ergodox-ez.com/ergodox- ez/layouts/yov40/la...](https://configure.ergodox-ez.com/ergodox- ez/layouts/yov40/latest/0)

Most of my typing is in emacs, so having the ctrl/alt modifiers on the thumb clusters was important for me; it lets me navigate easily without moving my fingers much.

Redox layout (which is closer to stock) is here - this is for QMK Configurator: [https://github.com/jfrederickson/dotfiles/blob/master/keyboa...](https://github.com/jfrederickson/dotfiles/blob/master/keyboards/redox/default_387bd55.json)

Less customizations there, though I swapped ctrl/alt to match my ergodox layout.

</comment></comment></comment><comment><USER8> It's a misconception that layout switchers are relearning to type, especially if they were proficient qwerty touch typists. The better typists in qwerty have a significantly easier time learning a new keyboard layout. Most of the typing skills positively transfer over, even though there's still an initial hurdle.

Furthermore, I think there's significant bias when typists learn a new more ergonomic layout. For example, they may have incidentally fixed their typing posture when learning Colemak, they want to justify their investment, or they overestimate the efficiency/comfort gains in respect to how much they need to type daily. Performing frequent typing tests (something alternative layout typists like to do!) is furthest away from reality for most people. Many switchers also forget how to type in qwerty well; improving typing speed while learning feels "really nice" and it's easy to wrongly associate this with "qwerty is uncomfortable."

They also downplay the importance of living in a qwerty world, having to share a computer with another, or being able to proficiently type in qwerty (which many of them do not retain), or dealing with software not accounting for other layouts.

I type in Colemak in Qwerty proficiently.

</comment><comment><USER9> I've been contemplating switching to Colemak for years but I'm ultimately reluctant to because most of my day is is split between typing in English and typing in a second language (for which I can only assume it wasn't optimised for).

Does anyone know how the cited benefit analysis is done? Is there a github project I can just feed a dictionary to to and get a 'benefit' score from?

Also, just to echo a couple of the other comments here - switching to an ergonomic keyboard without row offsets (ie. something like an ergodox[1] or planck[2]) is a huge, huge leap in ergonomics and comfort. Personally I feel the discussion we should really be having is about moving away from the pointless typewriter-hammer-collision-avoiding row offsets we're all forced to suffer, and towards something that reflects the range of motion of our fingers.

[1] [https://www.ergodox.io/](https://www.ergodox.io/) [2] [https://olkb.com/planck](https://olkb.com/planck)

<comment><USER10> I ended up on carpalx after learning dvorak and colemak. It's a generated layout like you are looking for and the code is available [http://mkweb.bcgsc.ca/carpalx/](http://mkweb.bcgsc.ca/carpalx/). You should be able to just swap the dictionaries with whatever you like and get a layout "for you".

</comment></comment><comment><USER11> I'm not convinced this is worth the effort. I assume that typing speed is rarely an issue for touch typists. It is also not clear that different layouts do help with RSI.

But the main issue for me is having to switch between layouts. Actually, it's an issue I used to have living in France, where I occasionally had to switch between my QWERTY layout and some AZERTY layout (for instance, to show something to a colleague and friend). Even though I know both layout, there is always some adaptation time.

Slightly unrelated, I noticed that what breaks my typing flow is to add/remove pairs parenthesis/braces (which happens all the time when coding). I still haven't found a good solution to this. I think that even Vim doesn't have a good default solution for this. I wonder how efficient typers solve this issue.

<comment><USER12> Vim-surround is a nice solution for this. It's developed by the same developer who wrote vim-fugitive. It is also available non the vim plugin for VSCode by turning on a setting.

[https://github.com/tpope/vim-surround](https://github.com/tpope/vim-surround)

<comment><USER13> > It's developed by the same developer who wrote

... almost every useful Vim plugin. Tim Pope is a Vim plugin god.

</comment></comment></comment><comment><USER14> Are there any actual studies that show that DVORAK or other layouts help with RSI or that QWERTY causes or worsens RSI?

</comment><comment><USER15> I touch-type, but unlike many tech folks, I'm a really bad typist and make a huge amount of errors. Many of these errors concern symbols rather than letters: - instead of =, or (a particularly frustrating one) <ENTER> instead of '. Other errors are rooted in the physically row-staggered keys. Will alternative keyboard maps like Dvorak or Colemak help with the kinds of issues I'm facing, or are they orthogonal to my problems?

<comment><USER16> I too make a lot of errors. In my case they are mostly due to small hands that have to travel quite a bit from the home row to hit special keys, and end up getting "lost". The move to Colemak didn't particularly help my error rate while programming; however, it did help the general case. Typing long blocks of text is now an absolute pleasure, my hands hardly move at all.

If Apple give me the option, I think my next MBP will get a Colemak layout. My external keyboard got a "hacked" version - it's actually pretty sad that the mechanical-keyboard scene does not really support anything but qwerty.

</comment></comment><comment><USER17> I did this a year and a half ago, but with an even more niche layout called Norman. [https://normanlayout.info/](https://normanlayout.info/)

Its goal is to change as little as possible from QWERTY while getting as big a benefit as possible. In particular I like how it preserves the locations of many common keyboard shortcuts that are on lesser-used keys. It also retains the same finger for most QWERTY keys, whereas Colemak changes more in ways that don't feel really necessary to me.

It took me roughly 3 weeks to get back to feeling consistently productive, though it was only the first week that was truly frustrating.

I don't think I'm a faster typer, but I am a lot more comfortable.

I also took the opportunity to switch to an ortholinear keyboard, which has been great.

</comment><comment><USER18> I believe the pain comes from having a "proper" qwerty finger setting, where you have 8 of your fingers on asdf and hjkl. Then typing some combinations is awkward.

I never got the hang of that style but rather evolved into some fluent version where my fingers float around and sometimes I will use different fingers to type the same latters based on what I previously typed.

This has allowed me to end up at a top speed of around 160wpm using normal qwerty keyboard layouts.

I always felt that switching to a totally new layout crippled me when moving around between customer servers, mobile devices and so forth.

But I totally get that others have had different experiences and I appreciate that there are alternatives out there. I love choice.

Very interesting read!

</comment><comment><USER19> I've done Colemak and came back to Qwerty for two reasons that are really compelling, I feel.

One, I program so I make lots of weird motions anyway. When writing long prose, Colemak felt nicer but for coding typing it wasn't a big change. In both cases, I'm regularly typing symbols and making weird patterns. Additionally, you usually are never reaching high speed during coding so your hands often have time to rest.

Two, other people's keyboards aren't Colemak. Other people using your keyboard is also a problem. For better or worse the non-standard choice tax is really high with keyboards, especially if you experience difficulty with Qwerty after making the switch.

</comment><comment><USER20> I wouldn't recommend Colemak to programmers suffering from RSI. It favors the right hand way too much. For writing English this is fine, but when you have to type programming symbols and use Vi keys it really does a number to your right hand.

Qwerty is inefficient as all get-out, but it's more balanced for programming with how the most used letters are on the left hand.

<comment><USER3> That's not what this article claims:

[http://mkweb.bcgsc.ca/carpalx/?colemak#colemak_detailed_stat...](http://mkweb.bcgsc.ca/carpalx/?colemak#colemak_detailed_statistics)

"Colemak is more balanced in hand use, with a 6% preference for the right hand (Dvorak has 14% for the right and QWERTY 15% for the left)."

<comment><USER21> If I understand correctly these stats will depend on the text you type, so each natural/programming language (especially programming language) will have a different stats, right? Think typing python vs typing perl for instance...

</comment></comment></comment><comment><USER22> Has anyone become truly proficient with multiple layouts? Can you shed light on what it's like to switch throughout your day or week?

<comment><USER23> I'm 'fluent' in QWERTY and DVORAK. Learned QWERTY when I was 13 years old, learned DVORAK around college years. For DVORAK I used Stamina Typing Tutor - [https://typingsoft.com/screenshots.htm](https://typingsoft.com/screenshots.htm) It was frustrating at first, but within a few months I only made mistakes with very rarely accessed characters.

Since then I've been able to switch between the layouts swiftly. At work I use Dvorak on my external keyboard, but when I take the laptop with me I switch to QWERTY. The switch is a mental flip akin to talking in another language (I'm fluent in Russian and English).

I think the switch is very worth it. If I was re-doing it, I'd probably learn Colemak instead of Dvorak (apparently it's a slightly better choice for some reasons).

<comment><USER23> Just found my tweet from last year urging people to migrate away from QWERTY: [https://twitter.com/whyboris/status/1036300736953544704](https://twitter.com/whyboris/status/1036300736953544704)

</comment></comment></comment><comment><USER24> I suggest looking into the BEAKL layout.

<comment><USER23> Funky! Numbers are re-ordered `40123 76598`

</comment></comment><comment><USER25> Filed under: Depths of Yakshaving

</comment><comment><USER26> Did u setup your fone to use colemak and how much hassle was it?

<comment><USER27> Android's Google Keyboard comes with Colemak built-in. iOS requires a third- party keyboard, unfortunately.

</comment></comment><comment><USER28> I just want to say that Vim is easier with Dvorak than Colemak.</comment>


Suggest HN: Add "Who is hiring?" and "Who wants to be hired?" threads to "jobs" - <AUTHOR> <comment><USER2> suggestions best go to email@example.com

<comment><AUTHOR> Thanks for that! I did not know.

</comment></comment><comment><USER3> I like the idea, and I agree with the suggestion of detaro to email the mods email@example.com</comment>


How China Spied on the African Union's Computers - <AUTHOR> https://mg.co.za/article/2018-01-29-how-china-spied-on-the-african-unions-computers <comment><USER2> I'd tear down the whole building; as I'd be very surprised if the walls weren't full of bugs as well, similar to the American Embassy case.

[http://www.nytimes.com/1988/11/15/world/the-bugged- embassy-c...](http://www.nytimes.com/1988/11/15/world/the-bugged-embassy-case- what-went-wrong.html?pagewanted=all)

<comment><USER3> China also helped building headquarter for Vietnam Ministry of Public Safety [http://mapio.net/pic/p-57003656/](http://mapio.net/pic/p-57003656/) The rumour is that this build is full of bugs in the walls and everywhere, so that the Ministry is still using their old building, the new one is only for unimportant paperwork.

<comment> dis-sys welcome to world politics -

US sold a Boeing 767 to China which was planned to be used by the Chinese President as the official jet, as expected, it is full of bugs.

[http://www.telegraph.co.uk/news/worldnews/northamerica/usa/1...](http://www.telegraph.co.uk/news/worldnews/northamerica/usa/1382116/China- finds-spy-bugs-in-Jiangs-Boeing-jet.html)

Australia put bugs in the newly constructed Chinese embassy in Australia's capital back in 1995.

[http://www.abc.net.au/news/2013-11-08/the-chinese-embassy- bu...](http://www.abc.net.au/news/2013-11-08/the-chinese-embassy-bugging- controversy/5079148)

<comment><USER4> Idea for political trolling: just once, sell the other country a jet or whatever _without a single bug_ , and laugh as they desperately tear it apart, trying to uncover something.

<comment><USER5> Bonus points if you leak the intel/design plans talking about your recent breakthrough in bug technology and how untraceable they'll be now.

</comment></comment></comment></comment></comment><comment><USER6> >China built and paid for the African Union's computer network

I guess the old saying applies, "if you aren't paying for it, you are the product."

<comment><USER7> No wonder the US pressured Verizon to stop selling Huawei phones completely. [https://www.bloomberg.com/news/articles/2018-01-30/verizon-i...](https://www.bloomberg.com/news/articles/2018-01-30/verizon- is-said-to-drop-plans-to-sell-phones-from-china-s-huawei)

I can feel the tensions between the West and China heating up notch by notch now.. It's a bit uncomfortable.

I even feel a personal dampening on what I will say publicly about China on social media, just because of hypothetical tech/travel opportunities, and I don't even live there.

The CCP banned hip hop music in the country the other day, and they're pressuring the Hong Kong courts to make guilty rulings against democracy dissidents: [https://www.wsj.com/articles/beijing-attacks-hong-kongs- rule...](https://www.wsj.com/articles/beijing-attacks-hong-kongs-rule-of- law-1517270605)

It _feels_ like there could possibly be more larger scale problems going forward and I'm slightly jittery.

<comment><USER8> They're also attempting to take control of the local operations of foreign companies in China:

"American and European companies involved in joint ventures with state-owned Chinese firms have been asked in recent months to give internal Communist Party cells an explicit role in decision-making"

[https://www.washingtonpost.com/world/asia_pacific/command- an...](https://www.washingtonpost.com/world/asia_pacific/command-and-control- chinas-communist-party-extends-reach-into-foreign- companies/2018/01/28/cd49ffa6-fc57-11e7-9b5d-bbf0da31214d_story.html)

"Late last month, executives from more than a dozen top European companies in China met in Beijing to discuss their concerns about the growing role of the ruling Communist Party in the local operations of foreign firms"

[https://www.reuters.com/article/us-china-congress- companies/...](https://www.reuters.com/article/us-china-congress- companies/exclusive-in-china-the-partys-push-for-influence-inside-foreign- firms-stirs-fears-idUSKCN1B40JU)

<comment><USER9> Strictly speaking, there are no foreign companies in China.

Only joint ventures, and the Chinese partner has to have the majority. Otherwise you are not going to do business there.

So it may be very well in scope of established rules.

</comment></comment></comment></comment><comment><USER10> There were concerns with using Huawei equipment in New Zealand for the UFB Network (New Zealand's national fiber optic network) for similar reasons.

I can't remember what equipment they ended up using. But all I could think of at the time was that if Huawei and the Chinese weren't spying on us, then Cisco and the US government would be spying on us. Damned if you do, damned if you don't.

Of course, after Snowden, it was revealed that they were spying on us the whole time, with the NZ government being an enthusiastic participant as one of the Five Eyes nations. They had actually tapped the (only) submarine internet cable running out of New Zealand.

<comment><USER11> > _Of course, after Snowden, it was revealed that they were spying on us the > whole time, with the NZ government being an enthusiastic participant as one > of the Five Eyes nations. They had actually tapped the (only) submarine > internet cable running out of New Zealand._

Yep, it's mostly theater -- "oh, those pesky Chinese might spy", when they already give every bit out to others.

</comment></comment><comment><USER12> Seems silly to exfiltrate the data during a quiet time instead of a busier time of day where it should go unnoticed? "Hidden in plain sight"

</comment><comment><USER13> Here's a quick sample of some of China's computer donations to parliaments, defense and foreign affairs departments and police and immigration departments in recent years:

PNG: [http://pg.china-embassy.org/eng/zbgx/t849942.htm](http://pg.china- embassy.org/eng/zbgx/t849942.htm)

Fiji: [http://www.fiji.gov.fj/Media-Center/Press- Releases/CHINESE-G...](http://www.fiji.gov.fj/Media-Center/Press- Releases/CHINESE-GOVERNMENT-DONATES-EQUIPMENT-TO-DEFENCE-MI.aspx)

Botswana: [http://bw.china-embassy.org/eng/sbgx/t541543.htm](http://bw.china- embassy.org/eng/sbgx/t541543.htm)

Maldives: [http://www.foreign.gov.mv/index.php/en/mediacentre/news/2786...](http://www.foreign.gov.mv/index.php/en/mediacentre/news/2786-chinese- government-donates-computer-systems-to-the-newly-established-fosim)

Samoa: [http://www.samoagovt.ws/2017/01/china-donates-new- computers-...](http://www.samoagovt.ws/2017/01/china-donates-new-computers- for-legislative-assembly/)

Cambodia: [http://www.xinhuanet.com/english/2015-11/03/c_134779443.htm](http://www.xinhuanet.com/english/2015-11/03/c_134779443.htm)

Mozambique: [http://clubofmozambique.com/news/china- donates-100-computers...](http://clubofmozambique.com/news/china- donates-100-computers-to-mozambican-parliament/)

Sri Lanka: [http://www.colombopage.com/archive_17B/Aug05_1501907095CH.ph...](http://www.colombopage.com/archive_17B/Aug05_1501907095CH.php)

Ghana: [https://www.ghanabusinessnews.com/2017/06/07/chinese- embassy...](https://www.ghanabusinessnews.com/2017/06/07/chinese-embassy- donates-computers-cash-to-attorney-general/)

Pakistan: [http://www.xinhuanet.com/english/2017-09/22/c_136627663.htm](http://www.xinhuanet.com/english/2017-09/22/c_136627663.htm)

Liberia: [http://mofa.gov.lr/public2/2press.php?news_id=880&related=7&...](http://mofa.gov.lr/public2/2press.php?news_id=880&related=7&pg=sp)

Zimbabwe: [https://bulawayo24.com/index-id-news-sc-national- byo-16364-a...](https://bulawayo24.com/index-id-news-sc-national- byo-16364-article- china+donates+computers,+tvs+and+scanners+to+parliament.html)

Laos: [http://www.xinhuanet.com/english/2017-04/12/c_136202934.htm](http://www.xinhuanet.com/english/2017-04/12/c_136202934.htm)

Macedonia: [http://arhiva.vlada.mk/?q=node/5196](http://arhiva.vlada.mk/?q=node/5196)

Serbia: [http://eng.mod.gov.cn/news/2017-06/21/content_4783395.htm](http://eng.mod.gov.cn/news/2017-06/21/content_4783395.htm)

Afghanistan: [http://www.gov.cn/misc/2007-01/11/content_493797.htm](http://www.gov.cn/misc/2007-01/11/content_493797.htm)

Kyrgyzstan: [http://en.people.cn/90001/90776/90883/6776679.html](http://en.people.cn/90001/90776/90883/6776679.html)

Dominica: [http://news.gov.dm/index.php/news/536-china-donates- equipmen...](http://news.gov.dm/index.php/news/536-china-donates-equipment- and-stationery-to-dominica-parliament)

Barbados: [http://www.caribbean360.com/news/china-gives-barbados- over-u...](http://www.caribbean360.com/news/china-gives-barbados-over- us-400-000-in-military-aid)

Guinea Bissau: [http://en.africatime.com/guinee_bissau/articles/china- donate...](http://en.africatime.com/guinee_bissau/articles/china-donates- military-equipment-guinea-bissau)

Moldova: [http://www.army.md/index.php/duhovniceti/img/userfiles/info/...](http://www.army.md/index.php/duhovniceti/img/userfiles/info/aquizition/inf/617/inf/kcaptcha/?lng=3&action=show&cat=122&obj=1448)

Guyana: [https://www.stabroeknews.com/2017/news/stories/11/07/457430/](https://www.stabroeknews.com/2017/news/stories/11/07/457430/)

Nigeria: [http://www.spa.gov.sa/299126](http://www.spa.gov.sa/299126)

Malawi: [http://en.africatime.com/malawi/articles/malawi-china- donate...](http://en.africatime.com/malawi/articles/malawi-china-donates- computers-immigration-department)

Yemen: [http://ye.mofcom.gov.cn/article/jmxw/201309/20130900303426.s...](http://ye.mofcom.gov.cn/article/jmxw/201309/20130900303426.shtml)

Syria: [http://sy.china-embassy.org/chn/xwfb/t790038.htm](http://sy.china- embassy.org/chn/xwfb/t790038.htm)

[http://china.aiddata.org/geospatial_dashboard](http://china.aiddata.org/geospatial_dashboard) and [https://www.lowyinstitute.org/chinese-aid- map/](https://www.lowyinstitute.org/chinese-aid-map/) are interactive maps (albeit using older data) showing where donations and aid have ended up.

These are just the overt instances where press releases are issued with prime ministers, senior officials and ambassadors shaking hands in front of donated computers and laptops. There has also been research such as [https://en.wikipedia.org/wiki/GhostNet](https://en.wikipedia.org/wiki/GhostNet) which is relevant to this discussion.

Also very telling is how Western countries are responding. Some recent articles:

Verizon no longer selling Huawei phones: [http://www.afr.com/news/world/verizon-is-said-to-drop- plans-...](http://www.afr.com/news/world/verizon-is-said-to-drop-plans-to- sell-phones-from-chinas-huawei-20180130-h0qgok)

AT&T no longer selling Huawei phones: [http://www.afr.com/news/world/north- america/att-told-to-stee...](http://www.afr.com/news/world/north-america/att- told-to-steer-clear-of-huawei-by-us-congress-20180116-h0jaa7)

Australia funding a PNG-Solomon Islands-Australia undersea fiber optic cable project to prevent Huawei from getting the contract: [http://www.smh.com.au/federal-politics/political- news/austra...](http://www.smh.com.au/federal-politics/political- news/australia-takes-over-solomon-islands-internet-cable-amid-spies-concerns- about-china-20180125-h0o7yq.html)

</comment><comment><USER14> > The organisation acquired its own servers, and _began encrypting its > communication_

yikes, sounds pretty sloppy from all sides

</comment><comment><USER15> Not sure what going public with this benefits anyone. They could have covertly leaked missinformation or gain benefits by being in control what is leaked.

</comment><comment><USER16> Seems such a small gain with potentially huge downside with African countries distancing themselves from China. And so sloppily done too...

<comment><USER11> > _Seems such a small gain with potentially huge downside with African > countries distancing themselves from China._

European countries and the US have been meddling in African countries for centuries, even more blatantly (including directly toppling governments or bringing in their armies) and they have hardly "distanced" themselves from them -- and they'll do that to China for such small peanuts?

The population doesn't know better or is kept down, and the leaders do what brings money to their accounts, not to the country.

<comment><USER17> > The population doesn't know better or is kept down, and the leaders do what > brings money to their accounts, not to the country.

This is less the case, and it is more that Chinese spying is peanuts compared to what the West has done and continues to do.

</comment></comment></comment><comment><USER18> It's really embarrassing... for who always call Africans "old friends"

<comment><USER19> Next, they'll claim that Africa has been part of China since ancient times.

<comment><USER20> Zheng He's voyages

</comment></comment></comment><comment><USER21> When will Africa realise that they have to learn to look out for themselves because no-one else will?

They declined Europe's "offer" (though realistically Europe really didn't have anything to offer its colonies after being devastated by WWII), but where they that much better off under Soviet influence and are they that much better off under China? It's time they started working towards real independence instead of always trying to chase the next free lunch.

<comment><USER22> Well that's exactly what the African Union is for.

The poverty trap right now is:

1) Loan from the IMF

2) Restructure your debt = privatization = loss of sovereignty and control

3) Repeat

The hope is that through a regional central bank, regional investment bank and a regional monetary fund they can break away from the shackles of predatory psycopaths like the IMF and the World Bank.

I personally think this will not actually succeed and neocolonial powers will do everything in their power so the union does not succeed.

For example, UNASUR, the Latin American equivalent of African Union, is dead on arrival because of corruption. The president pro-tempore, Macri, doesn't seem to be representing regional interests at all.

<comment><USER23> The AU seems likely to be a in better spot, in part because it is built on regional "pillars" and a lot of separate organizations, so even if the AU itself for some reason were to fail, it is already having massive impact. E.g. ECOWAS covers 15 countries and ~350 million in West Africa. SADC covers 16 states in Southern Africa etc. COMESA acts as a superset of SADC and EAC, providing a free trade area covering 400m+ people in Southern and Eastern Africa, and so on.

A number of monetary unions have started coalescing the currencies of he continent, as well, so even if the progress towards a single African currency were to fail, that too is still having an impact.

<comment><USER24> the AU is also much older than UNASUR. The OAU was established in 1963 with a very clear mandate towards unification and decolonization.

However, the good intentions towards unity had to quickly face the reality of each despot desire to stay in power.

<comment><USER23> That's true, but also changing, with the AU getting increasingly willing to send in joint AU forces to stabilize countries, or pressuring various governments to hold elections. That the AU is taking a more active role in curtailing dictators is quite ironic given that one of the drivers in getting to the Sirte declaration that laid a lot of the groundwork for reviving the work on the AU was Gadaffi...

</comment></comment></comment></comment></comment><comment><USER25> Why don't the reporter reveal more details about the "strange peak in data usage"?

The news could be less lame if published from a non-formal-colonizer country.</comment>


Show HN: Full Release – Mr.Node – A JavaScript Library for Node.js Functions - <AUTHOR> https://www.mrnode.tk <comment><AUTHOR> Thanks to everybody that stars the repo!</comment>


Glass Sphere Betaray Concentrates Solar and Lunar Energy - <AUTHOR> http://understandsolar.com/glass-sphere/ <comment><USER2> Like many "advances" in solar energy, nobody is going to care about the efficiency gains if they are overshadowed by cost increases.

The article tries to make it sound like a miracle technology that concentrates light "up to 10,000x", but that doesn't mean you get 10,000x more energy out of it, it just means that you can use a much smaller panel since the light is concentrated on a smaller spot by a comparatively large, bulky piece of hardware.

Panels are already pretty cheap, so it's not clear if the cost of a giant glass sphere, plus heavy-duty steel frame, plus tracking hardware will beat just blanketing your roof with stationary panels. It looks cool, sure, and maybe it's a bit more efficient at converting sunlight to electrical energy, but the real figure that's going to matter is the $/kW ratio.

</comment><comment><USER3> A water filled glass sphere? Really? A single typical (300 to 400 watt) solar panel has a surface area of around 2 square meters. A glass sphere with the same cross sectional area is 0.8 meters in radius and would weight over 2130 kg or around 4700 pounds.

<comment><USER4> Second last paragraph.

>"Rather than glass lenses, the consumer models will rely on water-filled acrylic polymer lenses and will also be able to handle thermal energy generation in addition to solar energy generation."

<comment><USER5> I don't think the weight of the glass is the main problem here. (Though obviously plastic will be lighter and easier to transport.)

Where do you mount this contraption? Solar PV is light enough for any roof - otherwise wasted space. You probably have to mount this on the ground unless you want to spend a ton of money reinforcing everything.

<comment><USER4> Here is eastern Canada pitched rooves are capable of withstanding about a metre of snow. Wet snow supposedly has a mass of close to a tonne per cubic metre, a cube of pure water is one tonne at 4C. I can't imagine these devices would weigh more than a tonne (1,000 kg) per square metre.

</comment></comment></comment></comment><comment><USER6> [https://en.wikipedia.org/wiki/Concentrator_photovoltaics](https://en.wikipedia.org/wiki/Concentrator_photovoltaics)

has been a thing for a while and seem to be more expensive than normal PV panels.

If this design really focuses the sun "10000 times", then it'll need complicated cooling to avoid killing the solar cell. I wonder how that is supposed to work.

<comment><USER7> I believe the heat will be used to drive a Stirling engine. Most concentrated solar power rigs use steam engines of some kind.

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

<comment><USER8> In that case.... there goes their moonlight claim.

[https://what-if.xkcd.com/145/](https://what-if.xkcd.com/145/)

<comment><USER9> I'm a huge Randall Munroe fan, and so I was hugely disappointed when he posted that "What if", because it is 100% wrong.

Moonlight is pretty much partially reflected sunlight. The moon is acting more like a dirty mirror than like a blackbody emitter. This is easily apparent through two simple facts:

1) If the moon was emitting light due to its temperature rather than reflecting light from a higher temperature object, we couldn't see it all. Objects at 120 C don't really emit light in the visible range.

2) The color temperature of moonlight is around ~4000K, about 1000 K lower than sunlight. It's not like we haven't measured this stuff.

So, yes, you could start a fire with moonlight. I leave this as an exercise for the Mythbusters-inspired reader.

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

[2] [http://physics.stackexchange.com/questions/244922/why- does-m...](http://physics.stackexchange.com/questions/244922/why-does- moonlight-have-a-lower-color-temperature)

<comment><USER8> Im not following your reasoning. Which I admit has more to do with my lack of knowledge than anything else, so don't read that as "I think you are wrong". I did find other places with the question asked... some have similar answers to the what-if... others came to a different conclusion as you did. Either way even if it is on some boundary of what is possible, it seems weird for this company to mention it as a feature considering it would be many many times less effective than using it with sunlight and even then only on a few nights out of the month if that..

EDIT: After giving TFA another look, I see that they do mention using PV and not just steam engines... so I guess you could use moonlight sometimes to charge a PV, then switch it to the steam engine during the day or something.

<comment><USER9> Another way that you could look at it, is as LeifCarrotson said below, that the moon is like a mirror. If RM's idea that the sun's light reflected from the moon could not start a fire was true, what makes the situation different if you are reflecting the sun's light from a cold mirror? Can the light from the mirror not cause a higher temperature than the temperature of the mirror? We know that mirrors (and even lenses made of ice) can be used to create temperatures at their focus high enough to melt them. So, what is it about the moon that is different from a mirror, besides a lower reflectivity?

I suspect that RM just got a little lost in the weeds on this one. I remember making a similar mistake in undergrad when I was thinking about a problem with two light sources with an optical filter in between. The key insight I needed to make was that the filter was a physical object with its own temperature.

Thinking about things like this is how you develop what physicists call "physical intuition".

</comment></comment></comment></comment></comment></comment><comment> mark-r Light concentrating lenses and mirrors have been a thing for a very long time. This article doesn't go into any detail about what makes the globe so special, other than it looks kind of cool.

</comment><comment><USER10> Why does it need to track the sun if it's a sphere? Why wouldn't current solar panels work for heat generation?

<comment><USER7> The focal point for light going through a sphere is right at the surface of the sphere on the opposite side of the light source. So the focal point will rotate around the outer surface of the sphere as the sun moves throughout the day (and it also changes slightly each day in a perpendicular direction to the sun's daily movement). Assuming this is using some kind of steam engine, the water tank that gets heated by the focused light needs to follow this focal point.

That's for efficient electrical generation, which I assume is the point of this thing. As far as pure heat, you're right. You could just have a big curved metal water tank wrapped around the bottom half of the sphere and you might get pretty good water heating capabilities without a complicated tracking system.

</comment></comment><comment><USER11> Beautiful art, but it's inconceivable that this would be cost effective per unit area if it's only increasing panel efficiency by 35%

That's roughly 500Kg of water, in a glass sphere, and the whole thing would have to cost a couple hundred dollars to beat standard PV, an it STILL needs an active tracking system.

</comment><comment><USER12> Bummer Questions: \- How much does it cost? \- Does it require special expertise to install? I'd hope/assume the sphere can be filled with water on- site \- How often will it need to be inspected/repaired? Will that require a specialist? \- How often will it need to be cleaned?

This wouldn't seem to make much sense for individual installations (unless you're wealthy and want something to show off on your roof), but I wonder if the economics would work out in medium-sized arrays, to fill the gap between small residential/commercial installations and huge solar collector operations. Still though, is a 35% efficiency increase enough to justify this particular design? Is it that much better than other concentration methods?

</comment><comment><USER13> This is obnoxious, but why do they report the percentage improvement, but not the actual yield?

If it is 35% improvement, it would be nice to know what it was an improvement on. One of the linked sources suggests that current maximums on PV efficiency are around 24% of total sun energy converted to electricity out of a maximum of 33.7%. so, if that is the case then does this get us from 24% to 32%, or very close to the maximum solar electricity extraction per area?

Please double check my math or correct me where I'm wrong, but putting everything in marginal terms is very confusing.

</comment><comment><USER14> What would be the comparison between this and a fresnel lens?

This feels enormously wasteful in construction, a huge sphere doesn't feel like the most obvious lens shape. Am I missing something?

</comment><comment><USER15> Trying to solve the wrong problem, PV solar has gotten fairly cheap and works on overcast days so this is going to cost more and be less useful.

</comment><comment><USER16> Looks like a recipe for fire if one goes a bit awry.

</comment><comment><USER17> I wonder if SolarCity will pivot and get rid of the panels or do both?

</comment><comment><USER17> This looks amazing, and seems like a big win for renewable energy tech!</comment>


Ask HN: Direct advertising experience? - <AUTHOR>

I have a site that generates around 500,000 impressions monthly (and growing).  I'm interested in getting away from Adsense, but I don't know how much to charge for ad space.  There are alot of blog articles about this, but I'm wondering if anyone here has any experience, advice, or tips for me.
My site is extremely targeted: http://www.ThatHigh.com
Some stats:
May 2010: 300,000 page views
June 2010: 600,000 page views
July 2010: 400,000 page views (so far)
Always about 4 pages per visit with a very long length of visit (anywhere from 2 to 15 minutes).
Thanks for your help.  Email me at firstname.lastname@example.com if you have any questions or private inquiries :-)
EDIT: Do I need to be incorporated to accept money from direct advertisers? <comment><USER3> Disclaimer: I'm going to speak about 'premium' ad sales. That means more or less fortune 500+ companies. This is my area of expertise so I won't speak to other types of sales.

I work for an ad network and have seen sites around your size flounder trying to do direct sales. Granted, there are a few (ala 100layercake.com) that are extremely focused on a very profitable genre (in their case: weddings). However, you're much better off bridging the gap in the short term.

Sign up for an ad network.

Figure out what your audience is like. How old? Male/female? Tech savvy?

Then go out and find a 'premium' network to fit your demo. For example, I work for Giantrealm.com and we serve 12-34 yr old males (our sweet spot is 18-34). We focus on Gaming/Entertainment/Lifestyle. Your blog would be a ... lifestyle blog I guess? If you're struggling with categorization, try thinking how you would be described by TV Guide. Lame, I know.

I've seen tons of sites try to get off google and go straight to direct sales. 99% of the time they fail because they aren't big enough to be on advertisers' radar.

Google CPM's (cost per thousand ad impressions): About $1.00 on a good day.

'Remnant' CPM's: $1.50-2.00

'Premium' CPM's: $4.00-12.00 depending on the unit and setup.

note: these prices are AFTER the standard 50/50 split with your ad network.

Although direct sales will make you more money in the long term, you have a number of items going against you by selling direct:

First and foremost, most advertisers won't blink an eye unless you're over 1,000,000 US unique visitors (the unit most advertisers think in). You can check this by looking at the separate box called 'Unique Visitors' on the Google Analytics dashboard and then segmenting by US.

Second: Advertisers usually work with an ad agency who takes care of most of the buying. Ad agencies are usually staffed by 'junior' account execs which are 20-24 yr old females (sorry to stereotype) that generally don't browse the internet beyond Facebook. They usually have no idea that your site exists and like to buy things they understand. They definitely don't understand your site. They don't understand most of our sites. It's the problem we face with 'niche' content that doesn't focus around Twilight video reviews and Lindsay Lohan paparazzi shots.

Third: Ad Agencies rely on an antiquated tool called Comscore. Comscore is like a database of nearly every site online and how big they are. Unfortunately, they rely mostly (this is changing nowadays) on panel-based metrics, which means that they call people on the phone, ask them if they would like to take an 'internet survey,' and then have them install a plugin on their machine to do so. You can imagine that most of your viewers probably won't be up for this. Most of our sites show up at 1/10th of their size on comscore. For example Gameriot.com, a site I worked on for a year, showed 800k unique visitors in Google Analytics. It showed up as 30k, 80k, 450k, then didn't show up. These are 4 consecutive months. I would try to find a friend to see if you show up.

Fourth: Advertising is alot of work. If you want to enter the true 'ad industry, you need to get used to what are called RFP cycles. Advertisers send out things called 'RFP's (Requests for Proposals) every few weeks that require you to do a TON of work (build a powerpoint deck that sums up your 'pitch') and fill out an excel spreadsheet in terms of 'media dollars' which is a convoluted way of saying "convert all dollars into banners, break it out by page, then give me a bunch of free stuff because I'm an advertiser and everyone else does."

Fifth: Advertising is all about connections. There's a reason that most sales people are given salaries that are directly based on their number of contacts. If you don't know anyone, you're going to have a hard time getting meetings. There are rumors about people buying football tickets, strippers, etc... No comment.

Ad Networks will go out and sell your site 'directly' (good ones at least) and pitch custom plans that your audience wil be excited about. Granted, sometimes they sell a load of shit and everybody hates it, but the best sales people sell campaigns that the site loves so users write positively about the brand.

The Ad Network model is to 'rep' a site 50/50 until the site becomes big enough (traffic-wise) to sell direct. At that point, they will offer you large sums of money NOT to sell direct :)

You'll also have a great idea of what sells on your site, what ads do well (use their campaign monitoring tools to see which advertisers keep buying you and what the click through rates are), so you'll be educated once you do start buying direct :)

Finally, if read all that and REALLY don't want to sign up for an ad network, you might try signing up for Google Ad Manager (Google's free ad server) and dabbling in ad exchanges. They use real-time engines to allow advertisers to bid against each other on your inventory. You can see rates of $2-6 this way if your site is popular.

If you have any questions about what ad units you should run (728x90, 300x250), how you should pitch your site, how ad servers work, or which ad networks to reach out to, I'm happy to help. E-mail is in my profile.

<comment><AUTHOR> This was fantastic. I can't tell you how much I appreciate it.

<comment><USER3> endlessvoid94 just asked about which ad network he should choose. I'm cross- posting my e-mail here so others can hopefully make a good decision:

I'm not really sure how to estimate how much you can make. I don't work on that side of the business (I build products like video players and ad units that help people monetize their content more effectively) but I can tell you that unless you break out of 'traditional' units (ala start serving skins, interstitialls, pre-roll, etc), you won't make a decent living until you reach 2 million+ pageviews. Even at that point, you'll be looking at around $2-3k monthly revenue for a normal site.

I would suggest you start looking at the following providers: AdMeld - <USER2> optimize your 'remnant' ads by signing you up for a FUCKTON of remnant providers (like Google, just different). This can lead to some short term revenue gain (your $20-30/day will probably be pushed to $40-50/day).

Google Ad Exchange - I haven't signed up for this in forever but I think the easiest way is to sign up for Google Ad Manager. Premium advertisers use whats called a 'small order system' (Like AdWords if you've used it) to buy on your site. If a few advertisers like you, they'll continue to buy. There's a ton of logic that goes into optimizing your inventory (example: you can adjust the minimum 'bid' you will accept until it's very low like $0.10 and a bunch of people agree to buy your inventory then you can jack up your floor to $3.00 and see if anyone forgets to change their 'bids.') and I used to work with the guys who run Pubgears.com which is a great resource. One of the founders is also a huge marijuana fan so that might help you :)

Federated Media / Brash / IGN / Crave Online / UGO / GorillaNation / Break - These guys are all our competitors. They hit 18-34 yr olds, just like your site, and focus on men. Talk to all of them. The one you choose should be based on your experience with the 'publisher support' (each company calls them something different) person you speak with. Generally it's hit or miss. Some of them are assholes, some of them are flighty. Get one that seems friendly and responds VERY quickly to e-mails. Some networks care about you and will talk to you on a daily/weekly basis to see what's going on with your site and if you have any cool promotions, events, etc coming up. Other networks will just ignore you once you sign up and that's the last thing you want to happen.

Collective Media / Burst / I-could-name-a-thousand-more - These are 'Blind' networks. So-called because they usually avoid site-specific buys. Instead they focus on selling a 'vertical' or a 'channel' like "Guys" as opposed to individual sites.They don't require their ad tags to be the first on your site so you can just throw them into your remnant chain ahead of google. If they serve you a premium ad, you'll see $2-3. If not, they'll just default to google anyway.

Also as an alternative... people were talking about selling stuff. Here's a company I'm working with for my side venture that might be cool: OpenSky - These guys hook up influential bloggers/sites with product manufacturers. For example lets say someone has a hemp necklace (apologies for the lame example) that they want to sell to people. Your site might be a good fit for that, so they'd introduce you and send you a free necklace. If you dig it, you make a couple posts about them and they give you some simple .js to place on your site which renders an e-commerce store selling the necklaces. You keep a split, the seller gets a split, and Opensky gets a split (known in advertising as a 'three way split).

<comment><USER4> Wow, I'm speechless about your contribution! Thank you very much!

I'm the founder of VisualizeUs (<http://visualizeus.com>), a social bookmarking site for images, and we're in the same situation as endlessvoid94, so the information in your posts is extremely valuable. Right now we aren't monetizing all our traffic properly (900K unique visitors last month, 10M pageviews last month, 51% of the traffic is from US, and you'd laughed about the total revenues!). We have adsense and direct sale to small sponsors, but without any special work on selling the spots (two people just to run all the site).

We're looking for an ad network to monetize our traffic. As you can see our public is creative young people that loves pictures and visual culture, and thus not any graphical ad could fit on there. In fact, to prove that point, the two sponsors we have right now on the small spots, they have a huuge difference on clicks just because of the creativity and theme.

We've just applied to IndieClick, and I'll explore some of the options you mention in your post, including the adnetwork you're working at, as I think it fits into our public ;) I'd appreciate any tip or special suggestion from you, as your opinion is very valuable! Truth is, as a hacker, I'm so new to all this ad world, and feel kind of lost sometimes ;)

Also I'm open to share any info that can be helpful of course!

<comment><USER3> I have a friend that just left Indieclick. E-mail me (on my profile) if you want to speak with him for opinions :)

I would suggest trying to get signed by Federated Media. They're the leaders.

</comment></comment></comment></comment></comment><comment><USER5> Here's a thought, build a few products to sell yourself.

You have a super specific audience, one that skews to the younger end I imagine.

I bet some good t-shirts with short / popular slogans would do well, probably posters too.

A few years back CollegeHumor was selling $18.00 t-shirts at a 30,000/MONTH clip:

[http://www.businessinsider.com/2008/3/collegehumor-guys- secr...](http://www.businessinsider.com/2008/3/collegehumor-guys-secret- success-t-shirts)

T-shirts, posters, etc are all extremely easy to fulfill via 3rd party and move internally when the model is proven.

If that sounds appealing start with a simple survey to try and figure out what your audience would be interested in.

<comment><AUTHOR> This is a great idea, but I'm unclear of the particulars on how to pursue it. I don't have very much money, and I can't afford (currently) to just order 500 tshirts and spend 1000 bucks on it.

Are you suggesting something like Cafepress? I'm terrible at graphic design and not sure what to put on the tshirts other than a logo...

<comment><USER5> In my experience <http://www.zazzle.com/> or <http://www.cafepress.com> are the best.

Since you have the traffic, and you're a hacker and can set this up, I'd suggest that you run a T-Shirt contest.

Pay $100.00 for the top design and promise to promote the designer from your home page - let your audience vote on it.

Prior example: Shoemoney is a master at getting people to design all his stuff for free eg:

[http://www.shoemoney.com/2009/05/29/design-my-new- business-c...](http://www.shoemoney.com/2009/05/29/design-my-new-business- card-win-free-business-cards-for-life/)

Good examples of sites doing this:

<http://store.theonion.com/category/mens-tees-hoodies,4/big/>

<http://www.bustedtees.com/>

Even CNN played around with this model:

<http://www.cnn.com/tshirt/#headlines/allshirts/2010/6/1>

I actually think the CNN-type model could work well for you - let people pick their favorite saying, make the contest about building a template / format for the t-shirt

</comment></comment></comment><comment><USER6> Checkout this post in our series on How to Sell Ads Online.

[http://www.trafficspaces.com/blog/2010/01/13/how-to-sell- ads...](http://www.trafficspaces.com/blog/2010/01/13/how-to-sell-ads-online- let-the-market-determine-the-price-via-an-auction/)

It talks about setting up an auction instead of a fixed price. It is an efficient way to find the market price for your ad space.</comment>


Ask HN: Why was the HN karma ratio removed (HN profile page)? - <AUTHOR>

(it was just below "karma" field on the profile page and contained an average score of the last few weeks, afaik) <comment><USER2> Asked here: [https://news.ycombinator.com/item?id=9320742](https://news.ycombinator.com/item?id=9320742)

dang's answer here: [https://news.ycombinator.com/item?id=9314604](https://news.ycombinator.com/item?id=9314604)

More details at [https://news.ycombinator.com/item?id=9322256](https://news.ycombinator.com/item?id=9322256)

<comment><AUTHOR> thanks!</comment></comment>


Version 6 of Angular Now Available - <AUTHOR> https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4 <comment><USER2> I was joyfully expecting this upgrade and checked the release notes daily during the RC phase. Don't let the quick 'major' version changes shock you, upgrading 4 -> 5 was easy and I expect the same for this upgrade.

A big thanks to everyone involved in shaping this release and ensuring the upgradability for the past major versions, including the huge effort in making it possible to continuously migrate from AngularJS. <3

If you care for the details behind my experiences:

We have begun migrating a ~80k loc AngularJS codebase first to TypeScript in 2016, which was the preparation for the Angular upgrade starting Q1 this year. Now we are roughly 80% migrated to Angular 5 (in the meantime we did the upgrade from 4 to 5 in a few hours thanks to [https://update.angular.io/](https://update.angular.io/)), the rest running with ui-router hybrid [1] and ngUpgrade [2] and now are looking forward to moving the rest to Angular and upgrading to 6.0.

Coming from AngularJS where many things are done without a proper reason, I have started to embrace and even somewhat love Angular for the niceties it brings it. When you already embraced TypeScript, it is a breeze to work with and I cannot recommend it enough (for large-scale frontends this is).

The one pitfall I always ended up with during the migration was that AngularJS attribute directives cannot be converted to Angular and then downgraded (In the hybrid app, the entry component is always(?) AngularJS and up from there), which is a large part of the remaining AngularJS code. There are a few workarounds but they did not seem to work properly. If anyone has suggestions on that part.

[1] [https://github.com/ui-router/angular-hybrid](https://github.com/ui- router/angular-hybrid) [2] [https://angular.io/guide/upgrade](https://angular.io/guide/upgrade)

<comment><USER3> How about the story on mobile? Is there an Angular analog to React Native?

<comment><USER4> Called NativeScript. I can't vouch for it quality or support.

<comment><USER3> That's what I'm wondering. I can see a lot of material vouching for the quality of React Native, but I see very little consistently coming out for the Angular competitors in the mobile sphere.

For what it's worth, I really like Angular for web development, but I don't know much about the mobile side of things yet. I've just started to look into it.

</comment></comment></comment></comment><comment><USER5> This upgrade looks absolutely fantastic. The Elements piece in particular looks amazing, and has the potential to be a real game changer for shops that have a diverse set of applications that they use, and need large scale re-use of components.

At the mid-size corporation that I work at, we just standardized all Javascript development on Angular from a mismash of a ton of technologies. Angular seems very well suited for this role.

There was a interesting statistic recently that showed that Angular was dominating "east coast" applications (traditional financial services, pharma, insurance, manufacturing, established CS) while React was most popular in "west coast" applications - primarily silicon valley, etc.

I'm glad these two technologies are here to push each other.

<comment><USER6> >At the mid-size corporation that I work at, we just standardized all Javascript development on Angular from a mismash of a ton of technologies. Angular seems very well suited for this role.

In my experience centralisation and fixation on specific technology leads to stagnation quickly. IMO you should allow teams to choose their own tools. How else will you improve?

<comment><USER7> To quote one of Akin's laws which were on HN yesterday, "better is the enemy of good".

It's really good when one technology is used throughout an organization to achieve the same purpose. At some point, the technology you use is actually good enough, and incremental improvements to "keep up with the times" are simply distractions from the real work. And if at some point you find that your tech has truly stagnated, at least you're stagnated together, and can modernize together at the same time.

<comment><USER6> The problem is how will you find that your tech has stagnated? If nobody experiments with new tech - who will teach others? How will that knowledge come into your corp? Hiring new people to do that will not work, because: \- People being hired will be evaluated by legacy people (different thinking will be considered disadvantage during interviews) \- Legacy people will not listen to new hires since they have no credibility and it "has been the way it was always done"

<comment><USER7> These are solvable problems. Just because a group of engineers agree on a standard tool, doesn't mean that they are blind to the world around them, or that they are now doomed to be single minded "legacy" people. I'm sorry if in your experience this hasn't been the case. Maintaining a balance between using modern technology and having a healthy "if it ain't broke, don't fix it" attitude is certainly do-able.

But when every team is doing it's own version of the same thing, that's another story. It can be crushing to productivity, in fact it's likely to be the deciding factor if some types work get done at all. And, unlike your concerns about preventing stagnation, the only way to solve that problem is to stop doing it.

</comment></comment></comment></comment></comment><comment><USER8> Sigh.

Yet more confirmation that my team has made the correct choice in switching to a mostly vanilla JS development stack (we still use RiotJS for one-way template binding). I was there for the beginning of Angular and it got me hooked on single page applications, but what I am seeing now is the antithesis of productivity.

No one building a website for a business should be using this stuff, unless they drank so much frontend framework kool-aid that they cant find their car keys without an NPM command anymore. I don't care how many internal projects at google use this framework. _Our_ business doesn't have billions of dollars to incinerate on attempts to prove a point.

The means of successfully executing SPA and managing your UX state are not intrinsically linked with using someone's subjective interpretation of how it should go (aka a frontend framework). Treat the browser and the DOM like an actual canvas and stop looking through the perspectives of others to see it. Focus on what you want to build, not the tools you use to build it. The fact that there are literally hundreds of angular-style frontend frameworks with wildly different approaches should be a warning sign to developers looking for a consistent basis upon which to build shit.

<comment><USER9> > Focus on what you want to build, not the tools you use to build it.

This is an interesting comment to me because, by essentially building your own framework, that onus is now completely on you. If you want to implement code splitting or tree shaking or whatever, you have to figure that out for yourself. That's time taken away from building product features. Whereas other frameworks can offer this out of the box because smart people in the open source community have figured that all out for you.

In addition, no one coming into your organisation has any continuity of knowledge, so they have to learn all the proprietary ways your app is set up, which is more time lost.

<comment><USER10> I also did what the parent did. I'm using mine on several enterprise projects. And I'd also argue that devs spend //more// time implementing updates due to framework churn than for maintaining their own framework. After mine was "done", it was done. There is no code churn, all the features are in, tight code, etc,...so now I only spend time creating/expanding my products.

The discussion today about React v6 is exactly what we get to dismiss (as well as any along the way from v2 - v5) since our framework work is done.

Granted, you're absolutely correct when you say new devs have to learn all the proprietary ways of your framework. But even then, since the framework is such a small percent of the overall knowledge dump for a new hire, I'd argue, that it's not much of a concern. It'll take months to learn the systems, and maybe a week(?) to learn the framework.

And to be fully honest, I haven't learned React/Angular/Vue (did learn KnockoutJS back in the day), and if I need to hunt for a job, then yes I'm behind the curve.

<comment><USER11> > After mine was "done", it was done. There is no code churn, all the features > are in

Do you actually believe that? Or does your organization not believe in software maintenance and opts to rewrite entire apps instead? In my experience, Enterprise^w software is never "done". A common conclusion to your story is "I've been asked to modify/refactor this app that has ben unchanged since 2005" \- sure it's perfectly crafted, but it's in ECMAScript _3_. Also Best practices shift over time.

</comment></comment></comment></comment><comment><USER12> Beware that new @email@example.com doesn't support universal node packages that are using fs/net/stream depending on the environment

(e.g. using fs.readFile() when running in Node, while using window.fetch() when running in a browser.)

It seems that Angular team made a decision to not have out-of-the-box support for projects using such packages even in the future [1].

[1] [https://github.com/angular/angular- cli/issues/9827#issuecomm...](https://github.com/angular/angular- cli/issues/9827#issuecomment-369578814)

<comment><USER13> Makes perfect sense to me.

<comment><USER12> It may sound logical, but unfortunately breaks a lot of existing angular projects and there is no kosher way to configure it to work.

For example both Rust's stdweb and emscripten are detecting node/browser to load wasm file by appropriate method, they will not work in angular 6 project.

</comment></comment></comment><comment><USER14> Was a firm believer in Angular when it was version 2, made the switch to React before Angular version 4. Best choice I've done for productivity.

<comment><USER15> I'd offer the opposite perspective: I started a recent app in React, and I wish I'd stuck with Angular.

The core of the React render model is beautiful. It's far quicker to start writing and using a new component in React than in Angular, and the functional nature of React components feels good and highly productive. At first.

But the problem is, around that beautiful core, the React community has built a mass of libraries, meta-frameworks, techniques and practices that are decidedly _less_ beautiful. After a while, I really found myself missing features from Angular, and struggling to replicate them by wiring together a hodge-podge React++ framework. Instead of being productive, I was wasting an inordinate amount of time trying to discover what the current micro-framework de-jour was for handling a particular problem in React.

For example, Angular supports view encapsulation. So you can write CSS targeting a component, and the framework will ensure that the style rules you write apply only to the HTML rendered by that components, without leaking to other parts of the app. This really is a godsend for properly isolating components in a reusable way. With React, there's a myriad of libraries for doing CSS, but most seem to be abandoned, and none seem to offer as straightforward or as easy style encapsulation as what Angular provides out of the box.

It was a similar story with forms. Which are a rich, reactive API in Angular, but seem to be an afterthought in React. And with dependency injection, both of singleton services and components elsewhere in the hierarchy.

I expect if you go all in on Redux, you can eventually build up a reasonable facsimile of what Angular provides. But from a standing start I think Angular is a much more productive framework, just because it's actually trying to be a framework, whereas React seems to be stuck somewhere between being a UI library and a framework, leaving the community to somewhat badly fill in the gaps.

<comment><USER16> Check out this pattern [http://meiosis.js.org](http://meiosis.js.org)

Works great along w react

<comment><USER17> your comment proves his point exactly.

<comment><USER18> The Meiosis pattern cristalizes the essential complexity of centralized state management (flux/redux), with no boiler plate, and little to no extra library code...

How does that prove his point?

</comment></comment></comment></comment></comment><comment><USER19> Just in case if somebody didn't read to that part, I want to highlight this amazing tool: [https://update.angular.io/](https://update.angular.io/)

</comment><comment><USER20> The auto import of providers is my favorite feature in this. Now you can just define something as @Injectable() and make it available in the module automatically. Big improvement over older versions

<comment><USER21> Why do you even need providers?

No one using React uses them. Google can't break free of old Java habits.

<comment><USER22> The things Angular Community achieved with the dependency injection system is mind boggling, it's a very powerful paradigm.

</comment></comment></comment><comment><USER23> In case anyone else has not been following Angular very closely, apparently AngularJS is version one, based on JavaScript, while Angular refers to version 2 and higher, which use Typescript. A major difference seems to be that Angular is more geared towards one-way binding. Two-way binding was from what I gather a common complaint from the React side, saying it's slow and leads to complex and unexpected behavior.

</comment><comment><USER24> Very nice!

The ng update command will make updating a lot easier, this has been bugging me with the fast release cycle Angular is using.

</comment><comment><USER25> I was waiting for ivy renderer which is a big improvement. It was not included in this release.

<comment><USER26> Its available behind a a flag. angularCompilerOptions.enableIvy

This article had more on it [https://blog.ninja-squad.com/2018/05/04/what-is- new-angular-...](https://blog.ninja-squad.com/2018/05/04/what-is-new- angular-6/)

</comment></comment><comment><USER27> I came in here to try and get a feel for what front-end developers these days think of the new Angular vs React. I don't have any stake in this game, since I'm not currently working on anything front-end. I'm pleasantly surprised to see that, instead of the half-expected Angular bash-fest, there seems to be a number of people praising Angular over the React ecosystem.

When I last did front-end, I was using Angular 1.x, and despite some warts, I did like the overall architecture of it, and how it provided all of the important components for you and gave you an overall app organization. It felt like quite a change to try and build an app with React and experience the world of having to pick and glue together a bunch of components with ever- evolving build systems. This makes me more interested in trying to build something in the new Angular.

</comment><comment><USER28> Probably good for starting new projects. The ecosystem looks clean with separation of concerns. Not worth the pain migrating old projects to Angular 2/3/4/5/6/n, unless you have the resources to do so.

</comment><comment><USER29> Yay. I thought I was done with work for the day but I'm going to start seeing how this update goes. I doubt I will be allowed to spend much time updating packages during the week.

</comment><comment><USER30> Still no support for deleting components in one go. That would improve the toolchain :(

</comment><comment><USER31> Ignoring Angular since the start, this headline and comments made it like I need check this out again, but, Angluar2+ seems like in decline in trend(comparing to React and even Vue), is this not true all of a sudden now?

</comment><comment><USER32> How will WebAssembly play in to Angular in the future?

<comment><USER33> For the most part, they're not part of the same discussion. TypeScript/JavaScript is still a sensible language and execution environment for interaction driven browser concerns.

That said, there are some interesting implied ambitions for Angular. The AngularDart project, the Bezel project, the AngularCompiler more generally as a point of special focus...

</comment></comment><comment><USER34> 6? Weren't we just talking about the major upgrade to Angular 2.0 less than two or three years ago?

</comment><comment><USER35> What is the backwards compatibility and support model for Angular? I just don't have time to chase after things that move this quickly, not and fulfill all my other responsibilities. I'm supporting a mature application that has a front-end started less than eighteen months ago with AngularJS. Maintenance and support on third-party components we use is already starting to dry up. Rewriting things every six months is not reasonable for our team, much as we really ought to stay up to date.

I suppose we'll muddle along until things really break down, but this pace of change is not sustainable, particularly when so much of it just seems like churn for churn's sake.

<comment><USER36> Angular 2 came out in 2016. Why use angular 1 in 2017?

<comment><USER35> It was 2016 when we started this front-end rewrite, away from a mess of jQuery and Razor view spaghetti. Angular 2 was brand new, without much support for third-party components we used, and AngularJS looked like the mature option. Probably should have bet the other horse, but c'est la vie.

<comment><USER37> We're in the middle of upgrading from Angular 1 to Angular 5 (probably now 6) - it's not that hard and I'd recommend doing it.</comment></comment></comment></comment>


Genetically modified apple reaches US stores - <AUTHOR> https://www.nature.com/news/genetically-modified-apple-reaches-us-stores-but-will-consumers-bite-1.22969 <comment><USER2> If nothing else, I hope this leads to less produce waste in grocery stores.</comment>


Minify Your SVGs - <AUTHOR> https://victorzhou.com/blog/minify-svgs/ <comment><USER2> Unfortunately the reference to the actual minifier, SVGO ([https://github.com/svg/svgo](https://github.com/svg/svgo)), is buried in the middle of the post.

SVGO is an incredible project driven by a single volunteer in spare time (originally Kir Belevich [https://twitter.com/deepsweet](https://twitter.com/deepsweet) , and for the last few years Lev Solntsev [https://twitter.com/ruGreLI](https://twitter.com/ruGreLI)). It's the type of project you probably use regularly behind another tool like Sketch or SVGOMG ([https://jakearchibald.github.io/svgomg/](https://jakearchibald.github.io/svgomg/)). They accept donations ([https://www.paypal.me/deepsweet](https://www.paypal.me/deepsweet)) and you should definitely consider contributing if you find it useful.

<comment><USER3> Another svg optimizer (link contains comparison to svgo): [https://github.com/RazrFalcon/svgcleaner](https://github.com/RazrFalcon/svgcleaner)

</comment></comment><comment><USER4> Pro tip for people with SVGs that have an image inside. You can pull that base64 image out of the svg, convert to image, compress it (tinypng, pngcrush etc) then convert back to base64 and out back in the SVG. We automated this with a slackbot but it's often overlooked with all SVG optimization scripts.

<comment><USER5> Somewhat related: a while ago realized that the SVGs that draw.io generates (exports) have an interesting property. If you include an SVG inside such a drawing and you export it to SVG, that SVG is actually embedded as base64. This is unfortunately not supported by some programs (e.g., Microsoft Office). A quick fix is to actually expand the SVG into the big SVG. I wrote a quick tool for this that does this for you (I should consider open sourcing this maybe). Anyway, I bet doing this and then minimizing the SVG could result in more savings?

<comment><USER4> Interesting. Care to share one of these images? I'd love to check it out.

</comment></comment></comment><comment><USER6> Related: [https://jakearchibald.github.io/svgomg/](https://jakearchibald.github.io/svgomg/)

<comment><USER7> I use it every time I'm using SVG for the web.

My only problem is that when pasting SVG directly from Illustrator it finds an invalid character at the end and refuses to use it. I have to paste the SVG into an editor, remove some invisible character at the end, and then paste to svgomg.

I reported this and offered to PR but never got an answer: [https://github.com/jakearchibald/svgomg/issues/145](https://github.com/jakearchibald/svgomg/issues/145)

<comment><USER8> Is it legal to have a NUL byte in an SVG? Might want to also contact Illustrator as well if it's not.

<comment><USER7> I doubt it, but I also doubt Adobe would pay attention...

</comment></comment></comment></comment><comment><USER9> Be aware that svgo is a lossy operation. One thing it does is round the digits in numbers to a certain precision. When I last worked with it, it also did some things I did not like such as mess with viewboxes. I found that it messed up the sizing of SVGs embedded with <img> tags in certain browsers. It has been a while since I used it though.

<comment><USER10> I was curious about this. It looks like it has numerous individual plugins that provide the actual functionality. Do you know if some of the plugins are lossless, while others lossy? It may be possible to pick and choose the lossless ones.

<comment><USER9> It has a boat load of plugins. I looked at a few and after puzzling over which were default enabled and default disabled I decided I didn't want to use a program with unsafe defaults.

<comment><USER10> That's fair.

</comment></comment></comment></comment><comment><USER11> I absolutely love ImageOptim for manually optimizing SVGs, JPGs, PNGs, and GIFs. It's a simple GUI that wraps some excellent compression libs (including SVGO), which I find much faster to use for one-off image optimization than the CLI. It does a clever job of trying multiple compressors and picking whichever one creates the smallest file for each image. You can run it in a lossless or lossy mode, and tune various compression options. It's free (gratis), OSS, and runs on Mac, Windows, and Linux.

I make it a habit of running images through ImageOptim before sending them via Messages or Slack, as a courtesy for people on slow connections.

[https://imageoptim.com](https://imageoptim.com) (by HN user pornel)

Bonus round: When it comes to optimizing SVGs, nothing beats hand-editing the SVG source. I've done a fair bit of that optimizing the artwork for [https://www.lunchboxsessions.com](https://www.lunchboxsessions.com) and it's been totally worth the effort. Taking a detailed 10k SVG down to 500 bytes with no perceptual difference is a huge win when you have hundreds of those SVGs on the page and you serve people who still use dialup.

<comment><USER12> ImageOptim also strips out a lot of (all?) the image metadata which is often a place people leak data unintentionally.

</comment></comment><comment><USER13> Yet another alternative that has benchmarks against svgo and scour is svgcleaner: [https://github.com/RazrFalcon/svgcleaner](https://github.com/RazrFalcon/svgcleaner).

It is written in Rust and has been my go to for SVG optimization due to its speed.

</comment><comment><USER14> Would be more compelling with the sizes of that neutral net in the different passes. As it is, this is like comparing two algorithms on a small dataset without accounting for growth in data on behavior.

</comment><comment><USER15> There's also [https://vecta.io/nano](https://vecta.io/nano), which I've found to sometimes give better results than SVGOMG

</comment><comment><USER16> A related (but less automated) advantage is if you're building react components that render SVG, this minified output will be much shorter and hopefully easier to reach through and figure out where you want to insert your own colours/child components.

</comment><comment><USER17> Illustrator has an export SVG function (as opposed to just saving as an SVG, which I was doing and then using a minifer for a long time) that will minify it for you.

That said, it currently appears unable to reopen those minified SVGs (go figure).

<comment><USER7> FYI you can copy any vector in Illustrator and when you paste it somewhere it is actually SVG code.

<comment><USER18> Which is why I fairly frequently end up with amusingly-long pastes of raw svg markup being posted into email fields... .

</comment></comment></comment><comment><USER19> I love seeing efforts to make software more efficient, so I enjoyed this post, but at the same time your own blog has a 434kb 512x512 png favicon. I'm not at all a web developer and so I don't know if there is a technical reason for that, but it seems a bit absurd in juxtaposition to your goal to reduce a 2kb svg to 100 bytes.

I've seen this on a number of other blogs, which seem to focus on minimal design. Can anyone explain what the need is for these enormous favicons?

<comment><USER20> 512x512 is specifically for browser loading splash screens when the site is added as a launcher on a phone. It's required for Chrome to have an "Add to Home Screen" prompt and requires a 192x192 and 512x512 icon. I imagine most minimalist sites you browse are expecting people to add the website as an icon/app launcher on their phones. Not sure how common an experience that is for users, I sure as hell wouldn't but maybe other people might.

Was intended for web apps I believe but is usable by sites that aren't web apps.

Read more here: [https://developers.google.com/web/fundamentals/web-app- manif...](https://developers.google.com/web/fundamentals/web-app-manifest/)

</comment></comment><comment><USER21> Don't forget to also use GZip or another transport compression on them as well. Text tends to compress well, and can net additional benefits on top of minification.

<comment><USER22> I ran the examples in the article through gzip. The long one is 789 bytes compressed, and the short one is 266 bytes compressed.

The reality is that while text compresses well, gzip doesn't know what data is relevant. It keeps it all. So for this example, the original long svg contains things like inkscape configuration (the window height, the current layer name, etc.) while the shorter one omits all that. So not emitting that information will always be more efficient than emitting that information and compressing it.

<comment><USER23> He means in addition to minifying the SVG, you should compress it for transport (which is likely happening already depending on how you serve it)

</comment></comment></comment><comment><USER24> This is neat, but I wonder: are there path optimization tools? For instance: flattening, removal of entirely occluded paths, and combination of paths.

<comment><USER25> Not exactly that but comes close (and perhaps could be used for that if you rasterized the input vector): [https://vectormagic.com/](https://vectormagic.com/)

I haven't used their desktop edition but on the web it worked really well for cleaning up images. I imagine similar algorithms could be applied directly to SVGs to simplify them.

Worth noting is the manual step in their workflow - I think there's only so much you can do before you need a human to decide whether any important meaning has been lost.

</comment></comment><comment><USER24> SVG optimization seems like a good choice for delivery, but oftentimes I find myself using SVG in a development context. Having human readable, annotated SVG files is useful when looking through previous revisions. In terms of compressed filesize: there's no serious practical gain.

<comment><USER26> It's analogous to JS minification -- Clients on the production site should get a bare minimum and the VCS should have the readable form with all the digits of precision and whatever comments, non-functional groups acting as layers in the editing software, etc.

</comment></comment><comment><USER27> Aren't garden variety SVG files ~75% smaller than other lossless compression methods (e.g. PNG). As such, is minification necessary or a best practice?

In short, is this an intellectual exercise or something that should be in an SVG producer's toolkit?

<comment><USER28> Raster formats have a worst-case file size that is linked to their visual size.

SVG has no such limit; for a given visual size it can have arbitrarily many objects. If you're not careful, you can quite easily end up with multi- megabytes SVGs where a PNG would have been <100KB.

SVG is therefore a dangerous format to use if you don't know what you're doing, because its performance characteristics are quite unlike raster formats.

</comment></comment><comment><USER29> This is an excellent post!

It does a fantastic job of defining the problem and walking the reader through the process of solving it. The language is so succinct and clear that even if the reader had never heard of SVGs before, they would understand this post.

Well done, Victor!

<comment><AUTHOR> Thanks, appreciate that!

</comment></comment><comment><USER30> Nice work, svgo is awesome. I'd love to adapt this to a non-gatsby post-build tool that also runs image compression on any jpg/png files.

Big advantage to running post-build besides convenience is that sometimes Inkscape doesn't render optimized svg's correctly. So I have to keep originals elsewhere.

</comment><comment><USER31> We provide hosted service for optimising SVG. If anyone is interested for image optimisation as a service, take a look here: [https://www.gumlet.com](https://www.gumlet.com)

<comment> jarek-foksa Just another shameless plug here. I'm developing an SVG editor which focuses on generating clean and readable SVG files (e.g. no redundant namespaces, metadata or deeply nested structures).

You can try it online on [https://boxy-svg.com](https://boxy-svg.com), there are also desktop apps for macOS, Windows, Linux and Chrome OS.

</comment></comment><comment><USER32> For inlining, you can even go further and remove that xmlns attribute to end with something around 50 bytes. I'd recommend keeping the viewbox though, since it's required for proper resizing.

</comment><comment><USER33> Most of the time, automated optimizers for SVG are relatively bad, though, and rewriting the SVG by hand can get a 2KiB svgo result down to 200 bytes or less.

</comment><comment><USER34> Don't SVGs have to have an XML declaration? I think that magic will fail to identify the content type of an SVG if it's not a valid XML file.

<comment><USER35> No, the declaration is optional in many cases.

</comment></comment><comment><USER36> Very neat! Now just need to figure out how to plug svgo into my jsx rendering pipeline, at build time.

</comment><comment><USER37> I've also noticed the cruft in Inkscape SVG's.

The TXR logo SVG is cleaned with a TXR script:

[http://www.kylheku.com/cgit/txr/tree/win/cleansvg.txr](http://www.kylheku.com/cgit/txr/tree/win/cleansvg.txr)

The original looks like this:

[http://www.kylheku.com/cgit/txr/tree/win/txr.svg](http://www.kylheku.com/cgit/txr/tree/win/txr.svg)

The cleaned one is not in the repo. It's obtained by "txr cleansvg.txr txr.svg":

      <?xml version="1.0" encoding="UTF-8" standalone="no"?>

      <!-- TXR Logo
           Copyright ... -->

      <svg xmlns="http://www.w3.org/2000/svg"
           viewBox="0 0 277.4375 297.4375"
           id="svg2"
           version="1.1">
        <g transform="translate(-200.03125,-416.34375)">
          <g transform="matrix(3.078678,0,0,3.078678,-1110.4532,-1582.3752)">
            <path d="m 476.96875,651.28125 c -7.29171,7e-5 -14.03911,1.37247 -20.21875,4.125 -6.17972,2.75267 -11.36983,6.39069 -15.5625,10.875 -4.33856,4.5938 -7.66668,9.81776 -10,15.6875 -2.33334,5.86983 -3.50001,11.92191 -3.5,18.15625 -10e-6,7.29167 1.28645,13.62241 3.875,19 2.58853,5.3776 6.02082,9.89063 10.25,13.5 4.26559,3.60937 9.05205,6.29426 14.375,8.0625 5.32287,1.76822 10.74475,2.65623 16.25,2.65625 6.1614,-2e-5 11.73692,-0.987 16.75,-2.9375 5.01294,-1.95054 9.35409,-4.51564 13,-7.6875 l -1.71875,-2.78125 c -3.60945,2.98957 -7.66675,5.27603 -12.1875,6.84375 -4.5209,1.5677 -9.67194,2.34374 -15.46875,2.34375 -5.14067,-10e-6 -9.93234,-0.82814 -14.34375,-2.46875 -4.41149,-1.64064 -8.224,-4.09376 -11.46875,-7.375 -3.31773,-3.39062 -5.89586,-7.61198 -7.71875,-12.625 -1.82294,-5.013 -2.71877,-10.80728 -2.71875,-17.40625 -2e-5,-6.85413 1.16665,-13.00517 3.5,-18.4375 2.33331,-5.43223 5.36976,-9.94787 9.125,-13.59375 3.86454,-3.75515 8.14059,-6.59889 12.84375,-8.53125 4.70307,-1.93222 9.54162,-2.90618 14.5,-2.90625 5.21348,7e-5 9.82806,0.80215 13.875,2.40625 4.04679,1.60423 7.40096,3.79174 10.0625,6.5625 2.77074,2.80735 4.83846,6.02349 6.1875,9.6875 1.34887,3.6641 2.03116,7.66672 2.03125,11.96875 -0.1377,8.31795 -2.4429,16.899 -11.71184,23.81796 -4.24484,3.16863 -9.29313,4.01343 -14.18104,4.49201 -2.5623,0.25088 -7.11725,0.30793 -9.74156,0.25794 -1.81112,-0.0345 -3.02482,-0.27866 -3.74043,-0.81795 -0.71564,-0.53929 -1.06251,-1.22605 -1.0625,-2.0625 -1e-5,-0.90247 0.57819,-3.28219 1.71875,-7.15625 l 7.90625,-28.15625 3.59375,0 c 3.15321,4e-5 5.11461,0.28996 5.875,0.90625 1.00632,0.81447 1.49996,2.04944 1.5,3.65625 -4e-5,1.36476 -0.20014,2.91736 -0.625,4.65625 l 2.78622,0 4.09375,-13.875 -37.14277,0 -3.53125,13.87504 2.29405,0 c 0.62617,-2.3112 1.42225,-4.1203 2.40625,-5.375 0.98398,-1.25462 2.27599,-2.21462 3.875,-2.875 1.59897,-0.66031 3.69596,-0.96871 6.3125,-0.96875 l 2.71875,0 -8.34375,29.125 c -0.93928,3.16968 -1.69323,5.23924 -2.21875,6.21875 -0.52556,0.97952 -1.10147,1.65706 -1.75,2.03125 -0.93928,0.55029 -2.28692,0.8125 -4.03125,0.8125 l -0.875,0 -0.96875,3.46875 19.90942,0.12627 c 4.65825,0.0295 14.28759,-0.73275 17.58443,-1.82102 6.80584,-2.24657 10.97411,-5.63785 13.61133,-8.47036 1.87071,-2.00924 7.5173,-9.18725 7.82441,-20.78032 0.12261,-4.62853 0.078,-9.57025 -1.39847,-13.83592 -1.47666,-4.26557 -3.67197,-8.03119 -6.625,-11.3125 -2.95321,-3.31763 -6.74488,-6.00774 -11.375,-8.03125 -4.63028,-2.02336 -10.09903,-3.03118 -16.40625,-3.03125 z"/>
          </g>
        </g>
      </svg>

<comment><USER38> Are you talking about inkscape SVG which also save many details for inkscape or raw/small svg saved by inkscape ? Those if needed could use a patch if theyre too big and there are low hanging fruits

</comment></comment><comment><USER39> Why? Why minify everything? It all gets gzipped at the HTTP layer anyway! I truly cannot understand this need to minify everything (JS included)

<comment><USER40> I started by downvoting your comment, and I realized I was choosing the cowardly way of reacting. I am saying this just to illustrate my own shallow reading of your comment at first and how I was avoiding actually being helpful.

The short answer is that 99% of the time no purpose is being served by that cruft except to be bloat. Minifiers remove that cruft and optimize for the intended audience, which is machines.

The longer answer is that in optimizing for machines, you're also optimizing for humans in the long run. Anyone stuck with a 2G connection, dial-up, or Bluetooth tethered device, or a new ultra low powered device on a different CPU architecture, will appreciate not having to operate solely in the world of gigabit+ connections, 8GB mobile devices, or 8 core hyperfast CPUs. Realize that such use cases still exist, and for very legitimate, not truly edge cases.

Think of pages with hundreds or thousands of vector images. Not everyone can afford to run a Blink-powered browser or have CPU cycles for days. Every little bit helps.

Edit to fix typo and add further clarity.

</comment></comment><comment><USER41> In general I'd recommend the opposite: don't minify anything unless necessary, prettify it instead. Every plaintext-based format file should be optimized for human readability unless you actually need to make it hard to read (e.g. you are developing a proprietary product not meant to be open-source) or your bandwidth is limited so severely that every single byte matters.

Nevertheless the kind of minification demonstrated in the example (removing Inkscape bloat) feels really great and actually makes the file more human- readable. This reminds me of HTML files generated by MS Word and other WYSIWG editors which included tons of bloat code that actually harmed rendering (needless to say human readability).

<comment><USER42> I completely disagree. It's trivial enough to run any minified file through a prettifier.

Even in the first world, on a spotty mobile connection every single byte matters, and _some_ of your users are almost _always_ going to be in that situation some of the time.

Think of minifying as "compiling" for the web. A good dev makes their site performant, and doesn't care about generating readable source code for end- users which 99.9% of them don't care about.

If you want to expose the site's source code to the world in a readable format, then just publish it on GitHub as well, which is the audience that might actually care.

Readable plaintext files are for developers on your team. Not for end users of your product.</comment></comment>