Warcraft 3: Remastered Will Work with Old Custom Maps - <AUTHOR> https://playwarcraft3.com/en-gb/ <comment><USER2> I was the QA Lead for Grapics on WarCraft3. This was Blizzards first 3D game and the early engine was very error prone but with the meticulous attention to detail and the sheer amount of time we spent polishing. This game turned out flawless for its time. Early on there were many models that would glitch and there was a massive artifact issue that would happen in multiplayer games. I'm sure the developers found it very frustrating but we fixed it! The solution was hand crafted per model every time. There were ~800 bugs in graphics.

<comment><USER3> I've played the first retail release version of WarCraft3 and it was indeed flawless, I haven't noticed a single glitch. But I have never tried the multiplayer mode.

Cool thing was it played nicely on my Pentium-II with a Matrox G550 video card which is famous for being great at 2D an very bad at 3D graphics.

<comment><USER2> Props to the compatibility lab at Blizzard. They worked a lot of overtime with me. I owned a Matrox Millenium card myself for 3DSmax and TruSpace. There was no such thing as truly dedicated gaming cards. Only high end cards for CAD. The gaming card evolution only came after the first GeForce.

<comment><USER4> I disagree.. There were quite a few gaming-focused graphics cards released during the development of Warcraft 3. \- 1996 : 3DFX Voodoo(1) \- 1997 : Nvidia Riva 128, ATI Rage Pro, 3DFX Voodoo Rush \- 1998 : Nvidia Riva TNT, 3DFX Voodoo2, Banshee, S3 Savage 3D,Matrox G100/200/300, Intel i740, ATI Rage 128, Rage 128 Pro, Rage Fury Maxx \- 1999 : Nvidia Riva TNT2/Pro/Ultra, S3 Savage 4/Pro/2000, Power VR, 3DFX Voodoo 3, Nvidia Geforce 256, Matrox G400 \- 2000 : 3DFX Voodoo4, Voodoo4, Matrox G450, Nvidia GeForce2/MX/GTS/Ultra, ATI Radeon, etc

<comment><USER2> Believe me I know, I also loved my monster voodoo card but Nvidia changed the game with GeForce 1 and the record breaking scores in 3Dmark. Nothing really was able to deliver spectacular graphics a̶p̶p̶r̶e̶c̶i̶a̶b̶l̶e̶ ̶g̶a̶m̶i̶n̶g̶ ̶p̶e̶r̶f̶o̶r̶m̶a̶n̶c̶e̶ particularly the frustratingly popular rage and embedded intel cards.

<comment><USER3> That's such a pity people mean spectacular 3D graphics under "appreciable gaming performance". IMHO that's very far from the most important part of a game.

</comment></comment></comment></comment></comment></comment><comment><USER5> The story of making the Starcraft 1 custom maps work on the remaster is pretty amazing:

[http://0xeb.net/wp- content/uploads/2018/02/StarCraft_EUD_Emu...](http://0xeb.net/wp- content/uploads/2018/02/StarCraft_EUD_Emulator.pdf)

Basically a lot of the maps were using a buffer overflow in the scripting to read and write all kinds of internal data structures in the game engine. If you're rewriting a game from scratch, how can you possibly make the new engine bug-compatible with the original to this extent? A single data structure's layout or a single variable's location changing will break everything.

I wonder whether there are any similar landmines in Warcraft 3?

<comment><USER6> > If you're rewriting a game from scratch, how can you possibly make the new > engine bug-compatible with the original to this extent?

Well you have the original source so you can derive the memory map and then just create an artificial "buffer overflow area" where the maps can write to that you then copy into the actual game data.

<comment><USER5> According to the slides that plan fails already at step 1 :)

> Unfortunately, we did not have private or public symbols for StarCraft > 1.16.1.

And then there are all kinds of complications that make the naive approach insufficient. Ok, you have a static memory map. But that's not really enough when the buffer overflows are being used to poke at dynamically allocated data structures (e.g. linked lists and GUI elements).

So you need to basically emulate the full original game and constantly sync the state (in both directions) between the emulation and the real game.

</comment></comment></comment><comment><USER7> I feel torn in so many dimensions.

On the one hand, one of the greatest games of all time gets remade. And I feel humbled that we're able to make giants over decades — Star Trek, Cobol, Warcraft have my respect.

But on the other hand, it also speaks of a dire lack of creativity as we speak, or boldness, maybe both. The general trend of remakes is also about fixing problems we too often created for ourselves in the first place..

— _cough_ DRM — _cough_ solo/LAN requiring online servers _cough_ —

Ahh, why can't it simply be WC4, all new and shiny and yet with better mechanics and player/customer freedom than any previous installment? I'm a simple man, I just ask for evolution.

Still confused whether I should be thrilled or disheartened or just 'meh'.

<comment><USER8> I'm in the exact same boat. I feel like the game industry has made this really distasteful shift, of the big AAA companies just adding shoe-shine on existing projects -- whether that's servicing a SaaS like League of Legends or World of WarCraft, or doing remake after remake of Age of Empires, Homeworld, StarCraft, Final Fantasy, etc, while leaving all the innovation and creativity to be explored at the expense of indies, mod creators or mapmakers. DOTA2, LoL, and the entire MOBA craze was spawned because of the success of a custom WC3 map, and since then AAA have 100% adopted this as an R&D strategy. DayZ/H1Z1 from the mod community spawning battle royale, DOTA Auto Chess custom map spawning DOTA Underlords, TFT, and Epic Games' Auto Chess (the newer big trend).

Once in a half decade we get a AAA game with a novel concept or a new IP (Overwatch, Fortnite maybe?), but even sequels are starting to just feel like polishing phases or DLCs on a tested IP and gameplay formula.

The indies used to look to the AAA for inspiration and something to aspire to, but the tables have turned in a way exemplifying the capitalism and diluting the art of the medium.

<comment><USER9> Overwatch is a riff on the class-based FPS genre, which was pioneered by Team Fortress, a game that started its life as a Counter Strike mod.

<comment><USER10> Team Fortress started as Quake1 mod, which then Valve made to a Half-Life mod TFC, and later as the TF2 [1]. Also Counter-Strike was a mod as well which again Valve made official versions of.

I started with the Quake TF and now still pay TF2 sometimes. Basically been playing the same game for ~20 years.

1:[https://en.wikipedia.org/wiki/Team_Fortress_2#Origins_and_ea...](https://en.wikipedia.org/wiki/Team_Fortress_2#Origins_and_early_development)

<comment><USER11> Some games are just good so you can play them for a long time. As long as there is a community. I occasionally fire up HL deathwatch and have people playing. Plus CS:S is almost 15 years old and that is quite active (surf communities anyway)

</comment></comment></comment></comment></comment><comment><USER12> I recently pre-ordered and got access to the original wc3 which they've since patched with updates.

I started working on a new custom map, which now has support for Lua and all kinds of new natives like UI natives that allow you to completely customize the UI.

Unfortunately, the debugging tools are abysmal. There is currently a player desync happening in multiplayer in my map (somehow different players disagree with their local emulation), but I am given absolutely zero information about it. No stack traces, there's no way to add breakpoints or logs, prints slow things down to a crawl and so aren't really reasonable to try to debug with either. I've done manual tests slowly by removing parts of code, but due to the random nature of the desync, it's really challenging to solve anything this way. Even if I remove some modules and can't get a desync anymore, doesn't mean it's fixed - it's possible I just never hit the specific circumstance that causes it.

Whenever errors occur during load, I just get an error dialog with an empty box. Whenever errors occur during runtime, it just stifles the error and continues without logging or warning or anything. Lua has `debug.traceback()` but it seems Blizzard has prevented calling it. It's like trying to code without a compiler, without stack traces and without a debugger. Very challenging.

I'm extremely excited for reforged, but I really hope there are better debugging tools added for Lua (perhaps for JASS as well, although I'm not as familiar with the need there). If anyone from Blizzard is reading this, I'd say that's my number one concern right now.

<comment><USER13> How did you get access to the original w3? I mean where did you get the keys?

<comment><USER12> Once you pre-order, you can log in via your battle.net account to get access. You can download the game from here: [https://www.blizzard.com/en- us/download/](https://www.blizzard.com/en-us/download/)

<comment><USER13> The issue is that it doesn't show in my Battle.net launcher. After I downloaded the game I was asked to enter the Key. Anyway I've purchased a key from a 3rd party seller/marketplace(g2a).

</comment></comment></comment></comment><comment><USER14> I Still have all my original copies of all my blizzard games with CD keys from the original Warcraft and diablo up to Warcraft 3. I enjoyed Warcraft 3 but I always liked 2 and its exapansions better. I wasn't a big fan of the the expanded RPG elements and to be honest i never really liked the way the story went. I also never got into WoW so I was kind of sad to see the franchise change so drastically after and still hope, fruitlessly I feel, there'll be a Warcraft 4 with a return to the solid RTS roots of the first 2 games.

Warcraft was the first RTS I ever played and the first game I remember going to a computer store to buy. I remember seeing the box and that was the game I wanted. I read through the manual, eagerly awaited the never released Warcraft adventures and played Warcraft over and over. When the second one came out it blew my mind. It made everything about the first one better and expanded the story pretty well. It introduced other races, increased unit speed drastically, added aerial and naval combat, got rid of the ridiculous road system and just felt like such an awesome improvement. It was the first game I played over lan. I remember playing with my cousins and my brother when we got a newer computer and had the old one hooked up still. It was amazing to me.

I never felt the same way about Warcraft 3. The 3d graphics were cool, though I didn't really like how cartoonish it all became, I enjoyed the additional races, but it didn't really feel the same. It felt like they took those really annoying maps from the first Warcraft where you had a hero and had to go through those dungeon cave things and made an entire game around it. I played through it all and the expansions, but I don't remember it as fondly. It may have just been that point in my life where I was becoming more disenchanted with video games overall, but the series is still one of those special ones to me. Even if I probably spent far more time with StarCraft and diablo 2. I was addicted to diablo 2 for a while, I can't play games like that any more.

<comment><USER15> Replying here because you mentioned WarCraft 2.

For whatever reason, while I love watching others play 3D MMORPG, I personally prefer to play 2D or 2.5D (Diablo 2, Dungeon Keeper, old school FF Tactics).

<comment><USER16> FFT is one of the greatest games of all time. It has a little community of people making custom mechanics / storylines / etc.: [http://ffhacktics.com/](http://ffhacktics.com/)

<comment><USER15> Thanks. That's very encouraging.

I love the UI, mechanics of Polytopia on iOS. I'm eagerly awaiting a Final Fantasy Tactics with a similar touch-centric UI.

</comment></comment></comment></comment><comment><USER17> Unfortunately I doubt it will still have LAN.

A sorely missed feature that makes a game really feel like it's yours after purchase rather than just on lease until the servers shut down.

I'd be happily corrected about this though.

<comment><USER18> This is Blizzard. They're still running the "Battle.net" servers for games they released over 20 years ago.

<comment><USER19> What about when Blizzard doesn't exists anymore ?

This summer with a group of friends we wanted to play Battlefied 2 (2005), official support for that game ended years ago, and even with the unofficial patches, we couldn't play in a fully offline LAN, the game needs to ping a specific server to enable, even local, multiplayer.

<comment><USER20> An interested group will reverse engineer and reimplement the server-side components.

<comment><USER19> Even if, like for BF2, you can patch (cough hack intellectual property) the game to change what server it has to ping to enable "online" play, it will still needs a, as you say, third party benevolent group and we still won't be able to do what _I_ was trying to do, which is a basic, _fully offline_ LAN gameplay.

My friends and I often play BF2 remotely on a vLAN through a VPN, so we are quite used to BF2 networks tricks, and I thought we could trick the game, no luck.

<comment><USER21> If you can get your hands on the very first, unpatched version, it should work. I got that to run in an offline LAN setting.

EDIT: I remember now what the problem was, running a co-op local game. They'd allow you to do a LAN game, but not with bots. A friend of mine played it locally in single-player, and I'd use my online account to connect with IP, a button which was only unlocked if you used an online account. You may be able to work around it by specifying the IP address to connect to in the windows shortcut for launching the game.

EDIT2: I may or may have not been using a crack at the time, not sure if that has anything to do with requiring an online connection...

</comment></comment></comment></comment></comment></comment><comment><USER22> One thing I don't see mentioned here is how important for history it is to be compatible with those old mad. WC3 was where the tower defense game was invented, where DOTA was invented, and where a dozen other smaller sub-genres of games were invented. Being able to play those again will be incredibly important for future generations.

<comment><USER11> Not sure if it'll be important but it'd be fun for sure! Think I'll have no luck on Linux though.. blizzard does not give Linux any love :(

<comment><USER22> The original works great in Wine!

</comment></comment></comment><comment><USER23> Oh I'd be thrilled to play WC3 Tower Defence again. Those were loads of fun.

<comment><USER24> Amazing how WC3 maps were responsible for both MOBAs and Tower Defence, two of the most popular genres of all time, both moreso than conventional RTSs at this point

<comment><USER25> Pretty much any genre you can imagine was emulated with WC3 custom maps.

Proto-MOBAs and tower defense games were basically singlehandedly popularized by WC3, of course. Some of the WC3 TDs, like Wintermaul Wars, were way more complex than the mobile games you see today, though -- they involved strategies like building truly gigantic mazes to expose enemies to more tower fire and precisely angled walls that took advantage of quirks in the pathing AI to confuse enemies and keep them in the kill zone _juuust_ long enough. Some of them were really unique, too. Battle Ships combined MOBA mechanics with the auto-firing of a tower defense game. Skibi's Castle TD had a ton of unique Mario-Party-style minigames that you'd play against the other players between waves.

There was also a whole genre of _reverse_ tower defense games, where you would buy and upgrade tons of units that would automatically march into the middle to battle enemy units, until one pushed far enough to take out the enemy's bases. Or until there were so many units on the map that the game crashed. But what a spectacle it was.

There were games that were sort of a mashup of RTSes and Betrayl/Secret Hitler, in that every player built villages but one was secretly a "werewolf" whose goal was to convert all the other players.

There was a game called Darwin's Island and other similar ones in an "evolution" genre, which were basically prototypes of Spore.

There were games similar to Civ/Risk played on a map of the world.

RPGs based on popular books and movies were super common, and some were as as good as or better than missions in the WC3 standard RPG campaign. Some the multiplayer ones incorporated a system where you could serialize your stats as a code that you could copy and paste into the next game you played to start were you left off.

There was a CTF-style game called Tree Tag where one player was an infernal who had to tag the other players (treants), who could build defenses and countermeasures as they hid. Then if they got tagged, they'd be sent to jail, where other players could rescue them.

Board games like chess and checkers were common too.

There were platformers like Run Kitty Run.

Even micro-MMOs like Life in the City where you basically just hung out, got a "job", and played some resource gathering minigame. Some of them were crazy complicated, several-megabyte maps with some players playing as institutions and others as citizens. Of course there were fantasy and sci fi themed ones as well.

The best part was that there was zero quality control, because anyone could edit anyone's map, so you constantly encountered variations and remixes of popular maps. Apart from a handful of very popular main maps, you often had no idea what you were going to get.

<comment><USER26> >The best part was that there was zero quality control, because anyone could edit anyone's map, so you constantly encountered variations and remixes of popular maps. Apart from a handful of very popular main maps, you often had no idea what you were going to get.

Absolutely the best part. It was so easy to modify maps and just try stuff. You could play a brand new game every night. So much creative flourishing, constantly inventing multiple genres. You might even give it credit for AutoChess since the Dota mod was inspired by a similar Pokemon WC3 map.

It looks like the most comprehensive map archive site went down and never came back up -- all those maps will be lost in time.

<comment><USER27> >It looks like the most comprehensive map archive site went down and never came back up -- all those maps will be lost in time.

epicwar.com's first map was uploaded in Feb 2005. And now there's wc3maps.com, which automatically archives ~all hosted maps.

</comment></comment></comment></comment></comment><comment><USER28> Interesting - will they only work with the latest patch (1.12 I think?) as custom maps did? There were some breaking changes that meant you couldn't use older versions of maps.

I'm very excited for this - so much creativity flowed out of that map maker - it created (or rather, popularized) multi billion dollar genres in MOBAs and tower defense. Hope wintermaul wars gets popular - that was one of my favorites.

<comment><USER29> Island Troll Tribes was one of my favorites. I wonder if this will also create a DotA 1 scene (though IceFrog will not work on it).

<comment><USER30> Hi! I am the original author of Island Troll Tribes and I'm glad you like my map! Fun fact: I started making that map in 9th grade and eventually handed it over to another dev during my freshman year of college. Now I'm a lead software engineer; its amazing how time flies. Maybe I will pick it back up again, who knows :)

</comment></comment></comment><comment><USER31> A similar story about Blizzard adapting WoW's original art assets and game data to a modern game engine for WoW Classic:

"Restoring History: Creating WoW Classic Panel Recap"

[https://worldofwarcraft.com/en-us/news/22646759/restoring- hi...](https://worldofwarcraft.com/en-us/news/22646759/restoring-history- creating-wow-classic-panel-recap)

</comment><comment><USER32> While a new story and characters ie Warcraft 4 would be awesome I actually really like this idea. WC3 is a perfect game, refreshing graphics is the only thing I really want and maybe this will get some younger people to try a game they might have written off otherwise.

<comment><USER16> I don't care about the graphics, I just want support returned. I quit when they dropped support because ladder just became a maphack infested hot mess

</comment></comment><comment><USER33> This is incredible news. So many genres of games came from these.

</comment><comment><USER34> I am looking forward to this release. I really like some of the older strategy games (Dark Reign, Total Annihilation, Warcraft) but they don't "age well" relative to newer games and it is nice to be able to re-create that feeling of amazement but now on a 2K or 4K screen rather than on a 1280x800 screen.

</comment><comment><USER35> Very very cool, though I remain a bit sad about the lack of love from Bliz to Warcraft 2. :(

Previously they said they weren't interested in any remasters because they didn't think anyone would play it.

It's a nice simple RTS game. We wouldn't be where we're at now in the genre without it!

</comment><comment><USER36> Bit of a mixed bag here. The editor updates are nice, but they break all of the superior community created tooling. And a custom map I made a decade or so ago now seems to crash regularly, along with having a few minor but important pieces of it broken.

</comment><comment><USER37> Blizzard is now doing only remasters? Starcraft, World of Warcraft and now Warcraft 3.

</comment><comment><USER38> Where on the page does it say that it will work with old custom maps?

</comment><comment><USER39> This is great, but I assume we now have to deal with Blizzard's always-online DRM shenanigans.

I would like to be able to play games on LAN and not be required to connect to the web all the time.

</comment><comment><USER40> Visuals looks awful compared to what Valve achieved with source2 and dota2, but not sure if this fair comparison.

</comment><comment><USER41> Sweet, hopefully we can get some footies games going, I always thought it was far more enjoyable than dota.

</comment><comment><USER42> Activision & Blizzard is scam & spy business.

You are the product for the shareholders & CEOs.

</comment><comment><USER43> Learning that there will be a C&C remaster and a WC3 remaster made my day

</comment><comment><USER44> Would be nice to get a Warcraft 2 remastered. Like we have for Homeworld

</comment><comment><USER45> Does anyone remember "Tides of Blood"?

</comment><comment><USER46> Hope to find some Dota Classic 3.76b games!

</comment><comment><USER47> Release date?

</comment><comment><USER48> Ugh this looks so addicting

</comment><comment><USER49> dota lives

<comment><USER50> When I was tinkering with dota map, it used abysmal number of various hacks. I doubt that it'll work.

<comment><USER51> Blizzard knows their audience. I fully expect that the DotA maps are among their test cases. :)

</comment></comment></comment><comment><USER52> why?</comment>


Archive it or you will miss it - <AUTHOR> https://drewdevault.com/2017/06/19/Archive-it-or-miss-it.html <comment><USER2> I do something similar; you can see my scripts at [https://hackage.haskell.org/package/archiver](https://hackage.haskell.org/package/archiver) [https://www.gwern.net/Archiving%20URLs](https://www.gwern.net/Archiving%20URLs)

</comment><comment><USER3> The bigger problem, when personally archiving websites and whatnot, is managing that data, i.e. organizing storage and making it searchable. [https://camlistore.org/](https://camlistore.org/) seems to be the right software for that, though I haven't tried it yet.</comment>


Twitter Sentiment Analysis Using Deep Learning - <AUTHOR> http://www.deepytics.com/twitter-sentiment-analysis-convolutional-neural-networks/ <comment><USER2> This would be a good case for early stopping. Rather than assuming 10 epochs is the way to go, this gives you a rational way to choose the number of epochs, which in turn sets you up to look the hyperparameters.</comment>


Moleskine Smart Writing Set - <AUTHOR> http://www.moleskine.com/microsites/smartwritingset <comment><USER2> Solving the wrong problem. Moleskine is losing market share to companies like Leuchtterm because the quality of their products (especially the paper) has been in steady decline. People who care about writing in journals care a lot. They buy bottles of imported fountain pen ink. They have long conversations about paper acidity and copperplate vs. roundhand. They will not buy your cludgy pen or limit themselves to an expensive journal that doesn't care about any of that. The "new feature" you're advertising is already available to anyone with a camera-equipped smartphone. Your only potential customers have already tried the dozens of cheap high-quality software solutions for digitizing, analyzing, cleaning up, and distributing photographs and other digital representations of what they write or draw in their own journals with their own pens. And they're definitely saavy enough not to tie themselves to an expensive low-quality replacement that'll be discontinued in two years when Moleskin decides they're going to try to compete in the presentation whiteboard space instead.

<comment><USER3> I tend not to digitise other than scanning the occasional opening for future reference and I agree with the sentiments expressed in the parent post.

However I must disagree about specific brands...

 _" Moleskine is losing market share to companies like Leuchtterm because the quality of their products (especially the paper) has been in steady decline."_

UK: Leuchtterm notebooks cost an arm and a leg here as do Rhodia.

Generic A5 sketch books in arts supply shops cost around £5 for 80 sheets of acid free 100 g/m^2 paper signature bound in boards or £2 for stapled 20 sheet booklets with cardboard covers. Not as trendy as Moleskines but very serviceable and pen-proof - you can even paint in them (by design).

<comment><USER2> Yep. I don't need rules or grids for a lot of tasks, so I often just buy bound sketchbooks. But I was talking about market-share, and a significant chunk of the share Moleskine has been losing are the former "vrai moleskine" customers who care not only about actual quality but conspicuous consumption.

</comment></comment></comment><comment><USER4> I personally prefer paper. The idea is nice but reaching a perfect product is hard. I won't buy this, some thoughts:

\- the pen is too big and low quality. It makes click noises when writing.

\- you can't use any pen you want and writers like their pen (ballpoint, etc.).

\- the battery lasts a week or so (not that much). When you use a pen you don't want to have to think about it (like with watches).

\- not fast enough, sometimes it doesn't start quickly enough so you loose some words.

\- not worth the 200$. The price is higher than some very capable full tablets with a pen.

\- you can't use any notebook, you have to use their tablet notebook and buy it every time for 30$ or so.

\- 229€ vs. 200$ (unfair as usual...)

So there's still work to do but one day this technology will be ready :)

<comment><USER5> These guys: [http://www.iskn.co/](http://www.iskn.co/) Have a similar product that is compatible with any notebook and any pen.

Not sure how the Moleskine works but this one is an "active system": you need a device gathering the data while you draw but it's definitely worth taking a look.

<comment><USER4> Cool stuff (plus they're French !). I wonder how this works with a standard thick notebook (with hard cover). Can I just put the slate beneath it ? And you still need to carry the slate.

One concern though, it's only made for Apple iOS gadgets which is a bit useless because Apple newest iPads (Pro) have this included...

It should just work in the cloud and be available on the web before anything else.

</comment></comment></comment><comment><USER6> We've spent decades trying mimic physical notebooks with electronics - Moleskine is one step ahead, the hipster of the hipsters, they are already making paper notebooks "mimic the shape and look" of a digital tablet. What a time to be alive!

</comment><comment><USER7> It looks like you need to press very hard. I expect that people's fingers will get tired and stiff.

Why not just take a picture of your paper? Ideally, they could just put some special markers on the corners of the page, and then a phone app could home in on those to properly focus and align the page. Problem solved.

The other thing is, why make the pen communicate with the device (e.g. tablet) in real time? This seems like a waste of power, and not practically useful [1]. You could simplify it by just having a button on your pen that, when you click, sends over the aggregated line data.

[1] I suppose one use case is to share in real-time with some kind of audience, but this is already a solved problem with a stylus on a laptop or tablet... why add the extra cost of special paper?

<comment><USER8> You're basically describing this: [http://whitelines.se/link/](http://whitelines.se/link/)

I've bought the paper, which is nice, but haven't used the app.

<comment><USER9> This works excellent.

Another reason to love it is they provide their app for free as well as downloadable and printable pdfs of their special paper.

Seems they make money on the convenience of buying ready-made stacks of this paper as well as whiteboard magnet kits that allows you to use normal whiteboards with their app.

(And yes, I love it and have occasionally used it but I am otherwise unaffiliated.)

</comment></comment></comment><comment><USER10> I've got a Livescribe gathering dust somewhere, which is basically what this looks like. Decent idea, just didn't quite fit the way I work.

</comment><comment><USER11> I had to give up on moleskine because I use fountain pens and the paper is just awful!

Ironic, the iconic paper notebook is of such low quality paper.

<comment><USER12> actually, they're not that iconic:

[http://www.independent.co.uk/arts- entertainment/books/featur...](http://www.independent.co.uk/arts- entertainment/books/features/moleskine-a-page-out-of-altered- history-7870099.html)

<comment><USER13> I love the way marketers package a complete bare faced brazen lie as "not the absolute truth"

</comment></comment></comment><comment><USER14> Because if there's one thing the world needs, it's paper with DRM.

</comment><comment><USER15> I have been searching for the holy grail of note taking for a while now. I switch from analog to digital and back like a manic note taker. This sounds very promising.

<comment><USER16> Same story here... Tried lots of different combos. Nothing was quite right. Just picked a 12" iPad Pro and Apple Pencil. It's been fantastic! I'm glad I tried the 12, it's pretty much the size of a piece of paper. Now apps are still limited but it's a new favorite for me.

<comment><USER17> For a cheaper & smaller alternative, also worth looking at the Samsung Galaxy Tab A with S-Pen 8.0. Convoluted name, but I love it, and it is dramatically cheaper than an iPad Pro. I think it compares favorably too, I've tried both & I don't feel the Galaxy Tab lags too far behind the iPad Pro in latency. I'm not a heavy writer, but for me it has replaced paper note-taking during phone calls or webinars, or times when I need to sketch or write an idea out on paper (sometimes I find typing doesn't help me solve a coding problem, but writing with a pen does - writing on the Galaxy Tab is giving me that same mental shift). And of course it syncs with Evernote & you can resize/move objects you've sketched and all the other good things.

</comment></comment></comment><comment><USER18> You can print your own paper on a color laser printer with their Windows program. [http://www.neosmartpen.com/en/products/n_toaster](http://www.neosmartpen.com/en/products/n_toaster) So, you don't need to use Moleskine, if you don't want to.

The pen, separately, is $170 on Amazon.

</comment><comment><USER19> I actually really dislike the Moleskine pens.. really poor quality, alas.

(Amazon reviews seem to agree!)

</comment><comment><USER20> "A notebook with a distinctive design and rounded pages that project beyond the cover to mimic the shape and look of a digital tablet."

from [http://www.moleskine.com/microsites/smartwritingset/descript...](http://www.moleskine.com/microsites/smartwritingset/description)

So ridiculous it reads like an April 1st joke.

</comment><comment><USER21> I think they should focus on making paper notebooks instead of adapting technologies that have failed many times before.

</comment><comment><USER22> so we pay $200 for a notebook and electronic pen to store and notes and forget about them.

<comment><USER23> You might be forgetting about them.

For others notes are crucial parts of our workflow and projects.</comment></comment>


Fifteen Clasic PC Design Mistakes - <AUTHOR> http://technologizer.com/2009/06/14/fifteen-classic-pc-design-mistakes/

<comment><USER2> #16: The USB connector. There's no way, without looking into the port and the end of the cable, to know which way to plug it in.

</comment><comment><USER3> > Re: The Macintosh > ...No one general-purpose computer configuration can > meet every user's needs, though, so this idea ultimately failed in the > marketplace.

I may be mistaken, but wasn't the original Macintosh actually pretty successful?</comment>


How should I learn Java Web Development? - <AUTHOR> I am a freelance developer doing most of my work with Laravel (PHP). However, I want to branch out and learn Java, primarily in the context of web development.
My main question is this. What would you say is unique to Java web development that I should focus on as I learn?
I understand that syntax is easily picked up, and design patterns can be translated from one language to another. But are there special paradigms that make Java development different than a language like PHP, Ruby, and Python?
In other words, what's the 20 % investment that will get me 80% return to become a professional Java web developer? <comment><USER2> Java is much heavier weight [1] than languages like PHP and Python, and that's not at all a bad thing - it just changes what the language is used for [2] and what's normal within it. As such the threshold for overengineering is significantly higher than in most other languages. Dependency injection for example is something that in the small looks like needless complexity but when used well [3] makes things that would be realistically impossible without it easy and routine.

Java is a very dumb language, and that's also not at all a bad thing. What we get from this dumbness is best-in-class tooling. I don't think I have to say it but pick one of the 3 major IDE's: IntelliJ, Eclipse, or NetBeans. If you have no preference IJ tends to be the modern (and my) favorite. I frankly switched from years of emacs to PyCharm for even my dynalang stuff due to the quality. Java lacks [4][5] many of the powerful and dynamic features of other languages like eval, code execution during class definition, the ability to flat lie to the type checker, et cetera. In return we have an ecosystem of tools that can nearly perfectly understand the intent of code statically - things beyond simple templated code generation like 'go to definition' and 'find all references' work so well that automatic refactoring can usually be done fearlessly. The downside of this is that I've yet to see a code review system that can gracefully handle the giant diffs these tend to create, but the end result has a vastly higher chance of success than for more expressive languages, and it's better than the alternative of accumulating technical debt (and hey, nothing's perfect :). Similarly get used to using the debugger. You basically never have to resort to 'printf debugging' in Java due to the high quality tooling. To learn a codebase set breakpoints and poke around.

To your 80%/20% question: in my opinion Java's killer feature is its unbeaten ease at handling vast codebases, which unfortunately presents a barrier to short-term entry. I think I'd say look for a Java-only library that interests you and put a web interface on it. Due in part to Hadoop there are lots of Java-only (or effectively so as a result of shoddy ports) systems that deserve an HTTP wrapper so other languages can access them (a colleague of mine wrote one for Kafka a while back as an example, and frankly things like Elasticsearch and Solr are basically this for Lucene). This will get you into exploring and getting familiar with not only the library you wrap but the webserver (like Jetty) or framework you choose. Due to its tooling I find learning large Java codebases easier than those of any other language [6] and as above to me that's what Java is 'for'.

[1] HotSpot more or less expects to be able to use all of its host's cores, which somewhat clashes with modern container-centric ecosystem. Containers have always meant less to Java though as it's had things like jar shading, internal access control, and classloader isolation for many years. OSGi for example has been capable of similar multitenancy through these features. That's not to say docker isn't still remarkably useful to Java development, it just tends to be less 'amazing' in the context.

[2] The amount time it takes to build a simple CRUD site will likely be higher than in, say, Rails (although it's getting better all the time), but many of the things a growing site winds up talking to (Elasticsearch, Cassandra, ZooKeeper, et cetera) are implemented in Java. Different tools and all that. I'm not discouraging its use for even smaller projects but it does tend to be more of an up-front investment than a lighter language all else equal.

[3] As a Guice fan I recommend checking out the Presto codebase ( [https://github.com/prestodb/presto](https://github.com/prestodb/presto) ) - lovely and extensive (perhaps a tad too much :) use of Guice, and extraordinarily high quality codebase in general. I've never used much of Spring[Boot] myself but as with Java in general many of the criticisms aimed at it are many years out of date and irrelevant.

[4] All of these things are ~possible~, just (as usual :) more involved and verbose than in many other languages, and more importantly extremely non- idiomatic (or at least considered 'big guns'). As an example in lieu of eval many systems leverage runtime bytecode generation to do things like building object proxies and computation pipelines at boot or on user input. HotSpot dutifully jits, optimizes, profiles, and inlines this with 'normal' code resulting in usually impressive performance, but it also involves jumping through a lot of hoops to make it work right as the vm spec mandates fairly strict requirements.

[5] Notable though is Java's extensive use of annotations - they're used to communicate to both tools and people (though primarily the former), and you can stick them nearly anywhere. Annotations themselves do absolutely nothing - they exist purely as introspectable markers (not to be confused with similar looking Python decorators). Tools like serialization libraries, web frameworks, dependency injection systems, and thread safety analyzers scan for these and do things with them as they please. A lot tends to happen at boot and during warmup in Java systems both in the app code and in the vm, and much of it is powered by these otherwise-do-nothing purely-for-reflection annotations.

[6] The only other equal to me is C#, which is basically Microsoft Java. There are numerous differences (mostly more advanced static language features at the expense of a dumber runtime - .NET has F# but Java has Nashorn and Graal) but they share the spirit of dumb but extremely toolable 'heavy' languages. I haven't touched Mono in quite a while though so I can't comment on its modern usability.

<comment><AUTHOR> Wow, thanks for your reply. That's exactly what I was looking for. I know there are IDE's for PHP, Ruby, and Python, but it seems for Java it's practically a requirement.

As I've been researching, it seems to me like newer versions PHP has borrowed a lot of ideas from Java, which has made PHP better.

Thanks for the detailed reply, and I will definitely do some of those ideas.</comment></comment>


Saudi Aramco: The message from the world's biggest and wildest IPO - <AUTHOR> https://www.economist.com/leaders/2019/10/31/the-message-from-the-worlds-biggest-and-wildest-ipo <comment><USER2> "Intention to float IPO" (official document):

[https://www.saudiaramco.com/-/media/images/investors/aramco-...](https://www.saudiaramco.com/-/media/images/investors/aramco ---intention-to-float.pdf)

If you are wondering about investing..

Offer Highlights:

Listing of the Shares will be on the Main Market of Tadawul

The Offering is being made available to qualifying Individual Investors and Institutional Investors.

The Offering shall be restricted to the following two groups of investors:

Tranche (A) (Institutional Subscribers): Institutional subscribers comprise the institutional investors eligible to participate in the book-building process as specified in Annex I

Tranche (B) (Individual Investors): Individual investors comprise Saudi Arabian nationals, including any Saudi female divorcee or widow with minor children from a marriage to a non-Saudi person who can subscribe for her own benefit or in the names of her minor children, on the condition that she proves that she is a divorcee or widow and the mother of her minor children, any non-Saudi natural person who is resident in the Kingdom and any GCC national, in each case who has a bank account with one of the Receiving Entities

<comment><USER3> Why does Tranche B specifically mention Saudi female divorcees? Is the implication that married and single women aren't allowed to purchase shares, or am I misunderstanding?

<comment><USER4> A married female is the property of her husband, therefore the investment is being made by a non-saudi national if she is married to a foreign national. Just your everyday Saudi sexism.

<comment><USER5> A married woman is not the property of her husband. Stop spreading lies and hate.

<comment><USER3> I was curious about the issue and found this article which has some details: [https://en.wikipedia.org/wiki/Women%27s_rights_in_Saudi_Arab...](https://en.wikipedia.org/wiki/Women%27s_rights_in_Saudi_Arabia)

In Saudi Arabia, women need permission from their male guardian to perform a variety of activities:

> The anti male-guardianship campaign is an ongoing campaign by Saudi women > against the requirement to obtain permission from their male guardian for > activities such as getting a job, travelling internationally or getting > married.

[https://en.m.wikipedia.org/wiki/Saudi_anti_male- guardianship...](https://en.m.wikipedia.org/wiki/Saudi_anti_male- guardianship_campaign)

While maybe not property (just like how children are not property of their parents in the US), it does seem that women's rights are limited in Saudi Arabia compared to most other countries.

Can single or married Saudi women purchase Aramco stock in this sale or do they need permission from their husband/guardian? That's what I was trying to understand originally. Reading between the lines, it seemed to be saying that only divorced women who are responsible for kids can buy shares, and other women cannot (maybe with permission of their guardian?)

<comment><USER6> > [...] it does seem that women's rights are limited in Saudi Arabia compared > to most other countries.

I would like to nominate this for comment for 'Most Valuable Understatement' of the day.

Trolling aside, yes, it is very restrictive for females living in Saudi Arabia compared to pretty much any other country on Earth. I have hope that in my lifetime this will change.

</comment></comment></comment></comment></comment></comment><comment><USER7> 2 trillion market cap?

Corrupt russian oil and gas companies trade at 4x earnings. At that valuation with annual earnings of $90 billion aramco should be valued at more like $360 billion.

Sorry, but that's the penalty you pay for being a corrupt journalist murdering autocrat.

<comment><USER8> The difference is that Saudi oil reserves basically cost nothing to extract. Maybe $5 a barrel. You literally poke a hole in the ground and oil bubbles out.

That makes Aramco significantly less risky than your typical oil company. Even if oil goes to $25 a barrel, the company will still be solvent, and even profitable. Mismanagement (like Pemex) is basically impossible under these conditions. It also means less capital reinvestment is necessary, so more dividends for the shareholders.

Less market risk, less operational risk, higher cash yield. All those things drive up the valuation multiple.

<comment><USER9> Personally I'd be worried that the easy-to-extract Saudi oil is about to run out and the Saudis know that and that's why they're selling. They run a fairly tight ship and might be capable of suppressing the truth about their oil reserves.

</comment></comment></comment><comment><USER10> From my understanding, the high valuation of Saudi Aramco does not seem to stem from them being the best in to industry for processing oil, but rather, from their access to the richest and cheapest source of oil. This license is their source of making huge profits - i.e. the difference between the cost price versus the market price.

To the best of my understanding, Saudi Aramco has no ownership of the oil fields but merely manages them on behalf of KSA. So is there anything impeding KSA from simply selling oil field access to someone else than Saudi Aramco after the IPO, and in effect, eliminating Saudi Aramco's source of profits?

<comment><USER11> Why would you sell your goose that lays golden eggs?

Even if you think that the goose might be getting older and less fertile, it doesn't make sense.

It only makes sense if you know when the goose is gonna run out of eggs. And in this case I'm not sure anyone knows.

<comment><USER12> You missed the point.

The goose is the land. The eggs are the oil.

The eggs roll into a basket where people can buy them.

The basket is saudi aramco.

Now that the basket has been sold, why not make a new basket and send over some eggies?

<comment><USER13> Because only 1-2% of it is being sold. The Saudi state will still own 98% of the shares.

<comment><USER7> With a small float and Saudi state owning the other 98% it means that high price can be maintained with little inflow, but global passive equity investors are mandated (I think?) to hold a big chunk of this overpriced equity due to the huge market cap. Anyone know if that is correct?

<comment><USER14> According to [1] you can have float-adjusted or market-cap weighted indices.

> An example of a company in which float-adjustment comes into play is Amazon > (AMZN). The online retail giant's overall market cap is estimated at around > $130 billion. However, only about two thirds of its shares are publicly > traded. The non-publicly traded shares, controlled by insiders such as > founder and CEO Jeff Bezos, would not be included when determining a > company's weight in a float-adjusted index. Incidentally, a company's full > market cap, including both its float and non-float shares, is used to > determine whether it belongs in the index.

So it depends on the index.

[1] [https://www.morningstar.co.uk/uk/news/124023/understanding-p...](https://www.morningstar.co.uk/uk/news/124023/understanding- passive-funds.aspx)

</comment></comment></comment></comment></comment></comment><comment><USER15> The original oil well is probably the ultimate example of how the best ideas often sound completely insane. The basic story is that the guy pitched a bunch of VCs in New Haven in the 1850s and got laughed out of the room for saying that he thought the stuff inside whales was buried under a mountain in Pennsylvania.

<comment><USER16> Maybe they were (bio)chemists at heart? That stuff under a mountain is mineral oil: more useful than edible oils in many ways but it has to go under the frying pan, not in it.

<comment><USER17> It was not used much as food. [https://en.wikipedia.org/wiki/Whale_oil](https://en.wikipedia.org/wiki/Whale_oil) only mentions margarine as an edible product. The rest are lubricants, lighting and soap.

From reading the article, it seems some of the whale products were waxy esters which _I guess_ weren't digestible anyway.

</comment></comment></comment><comment><USER18> The IPO price may be artificially inflated due to pressure on Saudi families to purchase shares:

[https://www.ft.com/content/19363bfc- dbc0-11e9-8f9b-77216ebe1...](https://www.ft.com/content/19363bfc- dbc0-11e9-8f9b-77216ebe1f17)

<comment><USER13> Non-paywalled [https://www.irishtimes.com/business/ey-entrepreneur-of- the-y...](https://www.irishtimes.com/business/ey-entrepreneur-of-the- year/saudi-aramco-kick-starts-what-could-be-world-s-biggest-ipo-1.4070908)

"Bankers say there is enthusiasm among Saudis for the listing, with domestic investors expected to comprise the bulk of the offering. Local banks are expected to lend heavily to Saudis to enable them to buy shares. Wealthy merchant families, many of whom were ensnared in Prince Mohammed's corruption crackdown in 2017, have been pressed to invest."

</comment></comment><comment><USER19> [http://archive.is/DQUEd](http://archive.is/DQUEd)

</comment><comment><USER20> I wonder if the decision to float SA now is due to risk from alternative energy sources and, more recently, security risk. Trade the cow in for cash while you still can.

</comment><comment><USER21> If you want to read a more thorough and vivid version of all the history mentioned, and so much more, I recommend _The Prize: The Epic Quest for Oil, Money, and Power_ by Daniel Yergin. One of the most enjoyable non-fiction books I've ever read.

</comment><comment><USER22> One to sit back and watch with interest. The question should be "why now?".

The Saudis don't have an industry more strategically important than oil.

<comment><USER23> Saudi Arabia is economic time bomb. They want to sell because they need the money.

Saudis have been running budget deficits 4 - 5 percent of the GDP year after year. Deficit might hit 7 percent this year. Saudi Aramco is a profit machine but the population is now over 30 million and the country if full of unemployment and bullshit jobs.

Cutting spending may not be politically possible because it's buying peace. Official unemployment rate is less than 15% but it's estimated that only less than half of working-age Saudis hold jobs or actively seek work. Foreign exchange funds provide buffers but their net foreign assets are gradually eaten away if oil price don't recover.

</comment></comment><comment><USER24> > And then there is Saudi Arabia itself. Aramco's pitch to investors will > boast of its abundant, cheap and relatively clean oil. That much is true.

Beautiful clean oil.

</comment><comment><USER25> Paywall so couldn't read full article. If someone buys during IPO, what prevents Saudi government from just running away with investors money?

<comment><USER26> Like with sovereign bond defaulters or countries who have nationalised US owned assets: they would get sued in US courts. US courts would freeze and/or confiscate Saudi assets. Saudi Princes might find yatchs, private planes and super cars start getting impounded wherever lawsuits can be filed.

<comment><USER27> The Saudis engaged in a widely-publicised example of state-sanctioned murder of a US journalist last year with limited repercussions. I'd think twice before trusting in the rule of law where our politically expedient friends are concerned.

<comment><USER28> Khashoggi wasn't a "US journalist" or a US citizen. He was a Saudi citizen, and he was killed on foreign soil. As despicable as the events were, let's not lose track of the facts here.

WaPo calls him a "Saudi journalist and author": [https://www.washingtonpost.com/people/jamal- khashoggi/](https://www.washingtonpost.com/people/jamal-khashoggi/)

If you're appalled by this murder, do recall that our lord and savior Barack Obama droned US citizens he didn't like without trial in Yemen: [https://en.wikipedia.org/wiki/Anwar_al- Awlaki](https://en.wikipedia.org/wiki/Anwar_al-Awlaki)

So I'd say such extrajudicial executions are about par for the course for nation states.

<comment><USER29> Hit squads with bone saws sawing people up in their embassies are not par for the course. This was an extreme event. Drone striking ones citizens is extreme too.

<comment><USER28> Sure (assuming "bone saws" aren't made up by the Turks - they've never actually been demonstrated). But be that as it may, we're hardly fit to lecture others from our high horse.

<comment><USER29> > But be that as it may, we're hardly fit to lecture others from our high > horse.

Could you explain this? Why can't a group claim moral superiority for not butchering people? And what grouping of people does 'we' refer to?

<comment><USER28> United States. It was suggested that the US should sever ties with SA to protest the killing.

<comment><USER27> No one suggested that. Let's not lose track of the facts here. The original point was about whether Saudi Arabia is a rule of law jurisdiction; it is not and potential investors might do well to keep that in mind.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


T-Mobile internals confirm Samsung is holding the Android update hostage  - <AUTHOR> http://androidspin.com/2011/01/12/breaking-t-mobile-internals-confirm-samsung-is-holding-the-android-world-hostage/

<comment><AUTHOR> I wonder if this will open a market for "update guaranteed" Android phones. It's sorely needed, in my opinion. While updating older phones might lower the value of newer ones, if a company promises (and delivers) timely updates to their phones, it lowers the other company's phones' values in comparison.</comment>


AntTinder-Scale workplace romance with AI and find coworkers to date on Slack - <AUTHOR> https://try.anteateranalytics.com/antinder/ <comment><AUTHOR> Hey HN - so we've realized AI could help massively scale dating in the workplace. After many years of hard work we're launching AntTinder today!

AntTinder helps you find love in the workplace - See who is dating who in your team, and scale workplace your workplace romances with AI. It's built for Gmail and Slack.

Spread the news! our Twitter is @anttinder ;- )

We love feedback and ideas for improvement - Let us know if you have any questions & Happy 1st of April!

 __Here 's how you can help get the word out __

1.Share on LinkedIn! 2.Tweet ! Our twitter is @anttinder and please tweet about AntTinder! Here's a tweet ready for you to use:

"Check out AntTinder, the new AI-powered app for Gmail and Slack to scale your workplace romances. Makes it super easy to find love in the workplace !" try.anteateranalytics.com/antinder/ @anttinder #workplaceLove #scaleWorkplaceRomance #AprilOfLove

3\. Like us on Facebook! It's easy, visit the website and click the like button at the top

</comment><comment><USER2> Looks awesome. Have you thought about adding blockchain? For investors?

<comment><AUTHOR> Absolutely! We're planning to record all consent and all relationships on blockchain (our own, because the ones out there are not scalable enough) so that people can lookup their partner history and make better data-driven decisions in their romantic lives. Imagine the disruption!</comment></comment>


Show HN: we're a Small Indie Studio and, after 1 year, that's our first iOS game - <AUTHOR> https://itunes.apple.com/us/app/dengen-chronicles-trading/id882529454?mt=8

<comment><AUTHOR> The game is a mix of Card Game and RPG in manga style :)

Of course feedbacks are very welcome!!

The game is also available for Android ([https://play.google.com/store/apps/details?id=net.mangatar.d...](https://play.google.com/store/apps/details?id=net.mangatar.dengen)) and for Windows Phone ([http://www.windowsphone.com/s?appid=171a2246-66ae-4e60-a299-...](http://www.windowsphone.com/s?appid=171a2246-66ae-4e60-a299-d958e17e87b3))</comment>


Toyota iQ drives through 18 UK cities on one tank of gas, 59.4 MPG - <AUTHOR> http://www.treehugger.com/files/2009/01/toyota-iq-hypermiling-challenge-uk-59-mpg.php

<comment><USER2> 59.4MPG isn't remarkable.</comment>


DataScript – Datomic in ClojureScript - <AUTHOR> https://github.com/tonsky/datomicscript <comment><USER2> Looks like a great library... It would be intriguing to try to use something like DatomicScript for the app state of an Om application.

(Edit: Read in a separate blog post that the author of DatomicScript is thinking about this already)

At the end of the day though, I still think someone (smarter than me) needs to figure out the full end-to-end solution for datomic+clojurescript, with both client and server elements.

The core question: Does it make sense to map datomic to a REST API on the server, then consume the REST on the client? Or, does it make more sense to build something more clojure-like for the client-server interface, and remove REST from the equation entirely?

<comment><USER3> [https://twitter.com/richhickey/status/355394063165440000](https://twitter.com/richhickey/status/355394063165440000)

<comment><USER2> Interesting, I get the feeling though that RH also thinks this isn't the right approach, that some more though needs to be put into the client-server interface still that goes beyond vanilla datomic.

<comment><USER4> Thing is, server-side Datomic peers work in trusted env; every peer sees everything. As you start doing something like a peer in every browser that opens your app, you need to provide it only with the part of the database. This filtering should be done two-way (what's allowed to read, what's allowed to push back) and is not very straightforward thing to do. It's not even clear how this thing should be configured. Also server-side lazy loading model won't work in JS — queries will become async. Given that, server-client communication layer can be implemented, I guess, but it won't look like anything like vanilla Datomic peer.

</comment></comment></comment></comment><comment><USER5> ...now renamed to DataScript [https://twitter.com/nikitonsky/status/459403600775876608](https://twitter.com/nikitonsky/status/459403600775876608)

</comment><comment> dj-wonk HN moderators: can you please rename the post, since the project has been renamed to DataScript: [https://github.com/tonsky/datascript/commit/5beb53d7db03bd27...](https://github.com/tonsky/datascript/commit/5beb53d7db03bd274b109c823b182214151b5058)

<comment><USER6> Sure.

</comment></comment><comment><USER7> Not familiar with Datomic. Does it mean now you can reuse querying code on the server to real Datomic and on the client (in browser) to DatomicScript?

If so, it could lead to some features like latency compensation and stubs similar to Meteor's MongoDB and MiniMongo. That would be cool.

<comment><USER4> Yes, query language is almost identical.

</comment></comment><comment><USER8> This looks like a very interesting project although it's a bit confusing that it's named after a proprietary database.

<comment><USER9> Why is it confusing? It's a basic port of that proprietary database to JavaScript. It's not like it's something completely unrelated.

<comment><USER8> In the same way that OracleScript would be an odd choice of name for a SQL database implemented in JavaScript. Now that I say that, though, I guess there isn't really a name for what Datomic is except Datomic.

</comment></comment></comment><comment><USER10> I had no idea what this was, but after some wandering I found some background: [http://en.wikipedia.org/wiki/Datalog](http://en.wikipedia.org/wiki/Datalog)

Datalog is apparently a subset of Prolog that's used by Datomic (a commercial database) as its query language.

<comment><USER11> Here's a quick introductory resource: [http://www.learndatalogtoday.org](http://www.learndatalogtoday.org)

<comment><USER12> The SICP lectures on logic programming will provide some conceptual background if needed.

[http://ocw.mit.edu/courses/electrical-engineering-and- comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-001-structure-and-interpretation-of-computer-programs- spring-2005/video-lectures/8a-logic-programming-part-1/)

</comment></comment></comment><comment><USER13> Looks great. I could see using this for some data crunching client-side, maybe even in conjunction with something like graph.js.

</comment><comment><USER14> Are there any examples of using this from a JavaScript-mostly app? I can see it being useful as a way to clean up existing "global variable" apps.

<comment><USER4> There isn't—yet—but it's a popular request and I'm now thinking it could be made accessible from JS pretty easily

</comment></comment><comment><USER15> Curious: why is this limited to ClojureScript? I can see this being useful in JVM Clojure in projects which do not need real or full Datomic.

<comment><USER16> Why even limit it to Clojure and ClojureScript? I could use this from JavaScript or PureScript as an immutable local store to replicate/merge with the backend asynchronously.

<comment><USER12> The query language is embedded in legal Clojure data structures, so it would be tricky to port to JS. That's a drawback of embedded DSL's I suppose.

<comment><USER16> Contingent on the design but not necessary. I could make something similar in PureScript.

I wouldn't use Datalog though, I got turned off on it after using Datomic at work.

</comment></comment></comment></comment><comment> dj-wonk How about another rename? DatomicScript was clearly a bad idea and possibly infringing. "DataScript" is just misleading. Using "_____Script" creates the appearance that is a scripting language. Perhaps "_____DB" or "_____JS" would be better.

<comment> dj-wonk How about "NotDatJS" (short for the "Not Datomic" JS Database)?</comment></comment>


State of Rust Survey 2016 - <AUTHOR> http://blog.rust-lang.org/2016/06/30/State-of-Rust-Survey-2016.html <comment><USER2> I'm disappointed that "No" and "I stopped using Rust" were merged into one answer for the "Do you use Rust?" question. Knowing the reasons people have never used Rust compared to the reasons people have used Rust but moved away would have been a really interesting result.

<comment><USER3> That's a good point. Since this is apparently a self-selected sample of people interested in Rust, a 1/3 "No" report is a problem.

If the survey was from a random sample of all programmers, the usage level would be much lower.

<comment><USER4> > Since this is apparently a self-selected sample of people interested in > Rust, a 1/3 "No" report is a problem.

How do you know what usage level is a "problem" without any point of comparison?

I'm interested in JavaScript, for example, but I don't use it more often than a handful of times per year, if that. I wouldn't be surprised if a third of people answering a JS survey were in the same boat. And I'm not worried about the future of JS.

> If the survey was from a random sample of all programmers, the usage level > would be much lower.

Is there _any_ language which more than a small minority of all programmers in the world use?

<comment><USER5> "I'm interested in JavaScript, for example, but I don't use it more often than a handful of times per year, if that. I wouldn't be surprised if a third of people answering a JS survey were in the same boat. And I'm not worried about the future of JS."

This may or may not counter the point. Your language specifically... per various comments I've read here (esp vs Go language)... targets programmers demanding high-efficiency or low-level usage that are basically using C, C++, Objective-C, Java, or C#. Vast majority are with most in efficiency camp using first two. So, _if_ data self-selected for those, then a third saying No _could_ be a serious failure if the goal was replacing those with significant uptake. At the least, it would be meaningful metric on if Rust was succeeding.

Unfortunately, we need the people responding to represent those groups to be sure. I suggest that whoever has the responses filter out everything but those languages above. Then look at the No's or any problems reported. Then, filter again to get just C, C++, and Objective-C as they're the low-level ones. Then look at the negative responses again. That could get information on uptake in most important targets plus generate ideas for action to take for key demographic.

<comment><USER4> First of all, it's not "my language". I haven't even worked on the compiler for over a year.

Second, think about C++. A year after it came out, were 90% (say) of C users who had heard of C++ using it? I highly doubt it.

There simply isn't enough data to compare to. So you can look at that number and support any narrative you want by making up what you think a "healthy" number "should" be.

<comment><USER5> Good rebuttal. Especially with the C++ vs C example. :)

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm curious if there were any significant responses to the tooling/ecosystem questions regarding packaging and integration with Linux distributions.

I'd like to provide an application written in Rust in major Linux distributions. "cargo install" will not work, both because it depends on network access, and because it pulls in dependencies from outside the distribution. Similarly, many distributions have policies against bundling library sources in the application. There needs to be a straightforward way to turn a source package with a Cargo.toml file into a package for Debian and Fedora that depends on other packages corresponding to its Cargo dependencies (and C library dependencies).

<comment><AUTHOR> Cargo install was never intended to be used that way. It's for things useful for Rust developers, not for people who use a program who happen to be written in Rust.

There's a few things at play here. For "build from source" distros, we've been making some changes to make it easier to package rustc. Namely, instead of relying on a specific SHA of the compiler to bootstrap, starting with 1.10, it will build with 1.9, and 1.11 will build with 1.10. This is much, much easier for distros. As for Cargo dependencies on those packages, we'll see. There's a few ways it could go, but we need the compiler distribution sorted first.

A second is that we'd like to eventually have tooling to make giving you a .deb or .rpm or whatever easier: [https://github.com/mmstick/cargo- deb](https://github.com/mmstick/cargo-deb) is an example of such a tool. This won't necessarily be good enough to go into Debian proper; I know they tend to not like these kinds of tools, and want to do it by hand. But "Hey thanks for visiting my website, here is a thing you can download and install", these kinds of packages can be made with this kind of tooling.

In general, it's complex work, as then, these issues are also different per distro or distro family. We'll get there :)

<comment><USER6> I was more looking for a path to producing Policy-compliant packages for Debian and other distributions.

Do you know of anyone working on that right now, and how I can help?

<comment><AUTHOR> [https://internals.rust-lang.org/t/perfecting-rust- packaging/...](https://internals.rust-lang.org/t/perfecting-rust- packaging/2623) is the big internals thread about it; weighing in there is a good entry point. Thanks!

</comment></comment></comment></comment><comment><USER7> Are disabled people "under represented in technology"? Just a question... I have fused wrists from a motorcylce accident. It's inconvenient and I cannot drive or play most sports, but I don't consider myself disabled. Am I under- represented? Do I self-identify as disabled? No. Would others in my position? Maybe... I guess that's a question about disabled threshold...

Do wheelchair bound people identify as "under-represented in technology"? I don't even know. All I know is that some of them may say yes, and some of them may say no. So we don't know who is in the 81%.

Gay - are gay people "under-represented in technology"? Somehow I doubt it. Again same problem. You're gay. You're part of a minority group, definitely. But are you "under-represented in technology"?

Wouldn't it have been better just to spell out the categories and ask people if they are in them? "Are you white", "how old are you?", "black", "gay", "trans", "female", "disabled" etc?

<comment><USER8> Rust Community Team lead here.

It is fine if people don't consider themselves underrepresented, we just want to be proactive about discovering if people end up self selecting themselves out of our community because they don't feel welcome. Furthermore, we are starting some initiatives to focus growing a diverse group of participants ([https://github.com/rust-community/RustBridge](https://github.com/rust- community/RustBridge)), and so we need some baselines to see if we are successful or not.

We did have a number of categories that people could select from. Our plan for next year is to identify groups from the free text for next year. We are tracking our improvement plans here: [https://github.com/rust- community/team/issues/28](https://github.com/rust-community/team/issues/28)

<comment><USER9> > we just want to be proactive about discovering if people end up self > selecting themselves out of our community because they don't feel welcome.

Why not simply ask the question directly? "Do you feel welcome in the Rust community?"

For those that respond "no, I don't feel welcome", it might be interesting to also ask why, and to see if that correlates with demographics.

<comment><USER8> That's a reasonable question! I put that on our list for the next survey: [https://github.com/rust- community/team/issues/28#issuecommen...](https://github.com/rust- community/team/issues/28#issuecomment-229799193)

<comment><USER10> I quit doing the survey when I read the color question.

If you had worded it something like, 'do you feel welcome' I would have answered (yes) and kept going.

</comment></comment></comment></comment></comment><comment><USER11> Good start for a year one survey.

I'm surprised there aren't more Java devs responding. Rust is characterized as a systems programming language, but Java is a language that has made incursions down into the C/C++ "systems programming" space over the last decade than any other language, and it is ripe for disruption by Rust due to Rust's superior efficiency.

In agreement with the survey, I believe this will not happen until there's good IDE support, and until more hardened enterprise-y dependencies/libraries emerge (e.g., database access to things like Oracle via OCI or ODBC). After an extended run with Rust, I returned to the Java 8 world briefly shocked to find a) how much more productive a good IDE made me and b) how productive such an IDE made me in terms of writing inefficient code! In there lies an opportunity. Rust should be attacking Java from below. The waste in a typical Java stack should make us all weep. The only barrier I see is perception around the ownership learning curve.

In bouncing between languages, what Rust lacks (and what other languages have) is the ability to pass the sip test...the first experience. Out of the box, untuned Java screams due to JIT and the IDEs; it's only far later when you try to do something serious that you feel the cost of the abstractions that help productivity, and you're in a forest of JVM tuning options and writing non- idiomatic Java code in order to get reliably performance and behavior. Rust requires too much faith at this point--that the microbenchmarks matter and that investment in mastering the borrow checker will pay off with more stable performance and behavior later.

Other points: Cargo is underrated. Traits over primitives is a huge win over Java's boxed collections. Community involvement and health is underrated.

Keep up the good work.

<comment><USER11> Someone posted a great question here that they later deleted. My full response also wasn't submitted (and lost), so I'm trying to recreate part of it here. It was actually a good question about whether Rust's efficiency has been tested.

I've done some testing; Java is _faster_ in terms of the sip test for a lot of stuff, especially for cases where you micro-benchmark single processes without regard to overall CPU or memory usage. However, when you scale up (to the point where JVM tuning comes into play), the raw performance in terms of response time is comparable, while the overall system utilization (e.g., "time" measurements of user/sys) is much better for Rust--Java uses a _lot_ more system time due to JVM housekeeping threads. So more _efficient_ is not a win for Java, even though wall-clock benchmark time might look better for a single process (as long as you don't look at overall system utilization.)

Java's performance comes at the price of more memory usage and higher variance in response time. You can attempt to constrain one or the other, but you can't constrain both at the same time. Microbenchmarks typically put a high enough ceiling on memory that they're relevant for very constrained loads. To be robust beyond the microbenchmark, incremental GC is required, which levels the playing field between Java GC and Rust's jemalloc. Still, even when you attain parity, the Java solution is using far more memory due to the JVM's OOP overhead.

Another example of a hidden "cost" of Rust comes from things like Unicode support. Recently I tested a regex-heavy algorithm that used burntsushi's regex library for Rust. In initial testing, Java blew it away. What I later realized was that the default Java implementation I used did not support Unicode characters. When I enabled that support, and enabled incremental GC (to support the scale of testing I was performing), the performance was similar.

This is another example of Rust being mischaracterized up front. Older languages took short cuts, and fare well for the low end of testing (the microbenchmark). Rust tends to look forward and to the bigger picture.

Anyway, sorry you deleted your legitimate question. It was a good one, and the kind that will make Rust better.

<comment><USER12> > Another example of a hidden "cost" of Rust comes from things like Unicode > support. Recently I tested a regex-heavy algorithm that used burntsushi's > regex library for Rust. In initial testing, Java blew it away. What I later > realized was that the default Java implementation I used did not support > Unicode characters. When I enabled that support, and enabled incremental GC > (to support the scale of testing I was performing), the performance was > similar.

Could you explain a bit more about this? I find it surprising. If you can't share the code, perhaps you could share the regexes? Which Java regex engine did you use? (There really should only be one case where Unicode support causes performance problems, and that's when you use word boundaries.)

<comment><USER11> It was a find_iter() across \w+. There was other surrounding code that might have affect the output (it emitted (String, position pairs).

I will try to isolate a test case and reach out...

BTW, your fst is great stuff.

<comment><USER12> Thanks! If you come up with an example I'd love to see it.

Generally, even though `\w` in Rust's regex library supports Unicode, it shouldn't result in a slow-down compared with the non-Unicode `\w`, assuming you're using find_iter. (Of course, Unicode support isn't free, but the primary cost here is memory and compile time, not matching performance.)

If you were indeed emitting `String` (a new allocation for every match) instead of `&str`, then that could certainly be a possible explanation for the slow down.

</comment></comment></comment></comment></comment><comment><USER13> Thank you for publishing the results of this survey. It has inspired a similar survey for the Nim programming language[1] that is still open, so please take a look if you have a spare couple of minutes.

It will be very interesting to see how the results differ between Rust and Nim.

1 - [http://nim- lang.org/news/2016_06_23_launching_the_2016_nim_c...](http://nim- lang.org/news/2016_06_23_launching_the_2016_nim_community_survey.html)

</comment><comment><USER14> My favorite part about this survey is that for many of the questions there is a majority agreement. Many developers believe that tooling needs to improve or that crates should work with stable features.

I think this is great for the Rust team going forward knowing that they will act on it.

<comment><USER15> It's early days for Rust, there will be general agreement on what needs work because it's usually obvious and everyone has roughly the same experience with the language.

I feel the difficulty comes when the language ages and the most apparent problems have been tackled. Take Python, what's needed: async ? GIL fix ? more functional? faster execution?

<comment><USER16>
      > async ? GIL fix ? more functional? faster execution?

Three out of these four boil down to "this isn't fast enough", which makes it seem as though the Python community is unified in understanding the problems it faces. :P

<comment><USER15> This could also be because of my limited knowledge of the Python community :P

</comment></comment></comment></comment><comment><USER17> "Person of color": perhaps this answer had so few responses because few people identify as being a person of colour. The wording does seem rather twentieth century.

<comment><USER18> I feel like we talked about this already

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

<comment><USER17> Thank you. This reddit thread discusses it some: [https://www.reddit.com/r/rust/comments/4ikawg/launching_the_...](https://www.reddit.com/r/rust/comments/4ikawg/launching_the_2016_state_of_rust_survey/d2yyb41) plus there's this little gem[0]: 'Talking with my Korean friends here in Korea, I found that they didn't check "person of color" checkbox because they had no idea what that is. Typical response: "does it mean person with colorful personality?" Just for your information.'

[0]: [https://www.reddit.com/r/rust/comments/4ikawg/launching_the_...](https://www.reddit.com/r/rust/comments/4ikawg/launching_the_2016_state_of_rust_survey/d2zpndo)

</comment></comment></comment><comment><USER19> As many women as trans people (1.6%).

<comment><USER20> That's actually a poorly-constucted survey question since a person can be a part of several underrepresented demographics in technology, which makes percentage breakdowns inaccurate.

<comment><USER21> The percentages total 106.6%.

<comment><USER22> Yup. Total is 3138 [1], not 2942. 196 are unaccounted for.

Maybe the survey form let you choose two or more different groups?

From the article:

> A huge thank you to the 3,086 people who responded!

3138 is also more than the number of respondents.

[1]: (2402+86+51+189+159+73+47+47+84)/2942 = 1.0666

<comment><USER23> > Maybe the form let you choose two or more different groups?

Yes, since you can be a member of multiple groups.

</comment></comment></comment></comment></comment><comment><USER24> If items ("fn" definitions) implemented type inference instead of requiring the programmer to manually document something the compiler can figure out, the learning curve would be easier.

Especially with tooling that shows the type of any given expression (integrated with an editor).

<comment><USER4> > If items ("fn" definitions) implemented type inference instead of requiring > the programmer to manually document something the compiler can figure out, > the learning curve would be easier.

No, it wouldn't. Not when the compiler is spewing error messages about types you didn't even mention, especially if the compiler inferred that type on the basis of code in some random other file you didn't know about.

<comment><USER24> Guess our experiences are different. In F# I do this all the time, and I've never had it be an issue. In Rust, if I'm trying to play around with something, I have to figure out the signatures even when there's only one option.

I hear this argument that the inferred types will be confusing (from C#, F#, and Rust communities; I'm sure it exists in others) -- but they will be accurate! It's something the human has to figure out anyways, except without computer assistance. All because of some misguided attempt at enforcing documentation guidelines and verbosity on programmers, sight-unseen.

I guess users can wait for IDE support with a "show inferred types" option.

Edit: And just as a note, I really love Rust. My only core complaint is the verbosity. And that's a small price to pay since I'd either be paying with perf/memory usage (more expressive languages) or bugs and far more verbosity (C).

<comment><USER25> Just as an anecdote, the fact that Haskell does this (infers type signatures for functions) is one of the things I don't like about it, because it seems to often infer things that are surprising to me. I think inferring types in most places, but enforcing explicit types at the level of method definition strikes a really good balance. I care about the types required to satisfy _interfaces_ , but enjoy not needing to care so much in _implementations_.

IDE support for creating method signatures by inferring types would be neat though.

<comment><USER24> Haskell _allows_ it. The programmer decides if they want it. Requiring a full signature inhibits natural code writing by introducing a high amount of overhead per function. Writing a 1-line inner function is no longer an obvious win. The annotation requirement applies to nested functions in Rust.

<comment><USER26> I don't really understand this issue. If I write a one line function in rust, nested within another function, I will use a closure. Which, incidently, rarely requires me to annotate any types.</comment></comment></comment></comment></comment></comment>


Gopher images for the Go developer community - <AUTHOR> https://github.com/hackraft/gophericons

<comment><USER2> The Golang Gopher is a design of Renee French, and the lack of attribution here is disappointing. Wouldn't these derivative works also be covered by her copyright?

[https://blog.golang.org/gopher](https://blog.golang.org/gopher)

<comment><USER3> The original Gopher is licensed under the Creative Commons 3 Attribution license: [https://golang.org/doc/gopher/README](https://golang.org/doc/gopher/README)

While technically you could license your own stuff under the WTFPL, these gopher images are still CC BY 3.0 underneath that.

<comment><USER4> I think in CC BY 3.0, as long as proper attribution is given, license of derivative works can be changed.

Licensor cannot revoke adaptation rights, as long as attribution is given, even for commercial use.

So the use of WTFPL is fine here, but the lack of attribution renders CC BY 3.0 non-applicable, and hence makes this repo a copyright infringement.

<comment><USER3> That's pretty much what I was trying to say... you can decline to add more license to your own work, and decline to ask for your own attribution, but you can't erase the underlying license and WTFPL the whole thing, as the only license.

<comment><AUTHOR> We have already added licensing. Now it must be ok.

<comment><USER4> Good that you took action. But it is still not compliant. You must link to original work by Renee. You need include link to her blog, where she posted the design.

See here: [https://creativecommons.org/licenses/by/3.0/](https://creativecommons.org/licenses/by/3.0/)

> _If supplied, you must provide the name of the creator and attribution > parties, a copyright notice, a license notice, a disclaimer notice, and a > link to the material._

For reference, here is how official Golang README puts it:

> _The Go gopher was designed by Renee French. > ([http://reneefrench.blogspot.com/](http://reneefrench.blogspot.com/)) _

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Hey guys!

We will put right license here. Just tell us what to write to not break other licenses. We updated old images and added own new.

So how to be here? I think we should add license of original authors (while Olga updated them and put into ai). And put own license (free to any use) to others. Could you make right pull request here?

P.S. Work is not aimed to harm anyone and we

</comment><comment><USER5> If golang has this much interest in mascot images, then game over. Time to start writing all services in golang. Sorry c# and Rust, you just don't have the same swaggage. Screw generics.

<comment><USER6> Rust does have the unofficial Ferris the crab: [http://www.rustacean.net/](http://www.rustacean.net/)

</comment></comment><comment><USER7> Gopher is a cool mascot, although I really enjoyed "The Autistic Gopher Hypothesis" I read some time ago.

For humor's shake: [http://www.evanmiller.org/four-days-of- go.html](http://www.evanmiller.org/four-days-of-go.html)

<comment><USER8> My Gopher has always made intense and direct eye contact:

[http://i.imgur.com/8THC2th.jpg](http://i.imgur.com/8THC2th.jpg)

:)

<comment><USER9> Imagine me making a very high-pitch squeaking sound, kind of like Kenneth from 30 Rock when he meets the cast of Night Court.

That is one _CUTE_ gopher!

</comment></comment></comment><comment><AUTHOR> I also don't think too much about licenses problem and make things instead. Please, help us to add right licenses where appropriate and feel free to add yours to keep all such artwork in one place.

<comment><USER10> 1) the wtfpl is incompatible with the cc by that the gopher is licensed under. Please replace and properly attribute renee.

2) the wtfpl is not an open source license, or a software license, at all.

<comment><AUTHOR> Then we should write which images were improved from original site and our own images put with CC license?

</comment></comment></comment><comment><USER11> Can someone put these onto gopher ?</comment>