Real pixel coding (2011) - <AUTHOR> http://www.iquilezles.org/blog/?p=1426

<comment><USER2> Back when I was coding on the Sharp MZ-80K ([http://blog.jgc.org/2009/08/in- which-i-switch-on-30-year-old...](http://blog.jgc.org/2009/08/in-which-i- switch-on-30-year-old.html)) we used to write code by typing it directly onto the screen. The screen was just directly memory mapped with each character on screen being a single byte. And the machine had the complete character set available from its (odd) keyboard.

The program would be written in assembly, converted by hand to hex and then each hex byte found in the character map and typed in. It was then possible to CALL the start of screen memory to run the program.

<comment><USER3> A useful debugging technique on the VZ200 was to locate the stack in video memory. The display would be a mass of snow when the program was running, since the CPU activity left hardly any cycles for the video controller to access screen RAM, but when the program crashed its state could be read directly off the screen.

<comment><USER2> Nice. I've used this type of technique in other situations where very high- speed debug output is needed.

At one job we had a machine code ring buffer implementation that could be called via a software interrupt (INT 3 I believe with a single character in AL) to write a single byte of debug information. This could be used when tracing a program's execution. When the program crashed the ring buffer could be examined using a system debugger (typically Soft-ICE) to see what state it was in. Very useful when it was critical to get tracing information in a way that had minimal timing impact.

<comment><USER3> I'm using this exact technique in my daily work right now! :-). It's an embedded DSP doing real-time signal processing for digital radio, and the technique you describe allows the execution flow leading up to a crash to be determined, without the timing jitter introduced by the "real" debugger.

</comment></comment></comment></comment><comment><USER4> There's this esoteric programming language: <http://www.dangermouse.net/esoteric/piet.html>

where the source code are images similar to works of Piet Mondrian.

And there's ColorForth where the colors replace some of the punctuation normally used in Forth: <http://www.colorforth.com/cf.htm> \-- this (seems?) more serious.

</comment><comment><USER5> "Kill two births with one stone" is the most unfortunate malapropism I've ever seen

<comment><USER6> And yet somehow appropriate to the unusualness of this technique. And, from a Google perspective, it's likely that you'll be able to reference this post with that phrase for all time.

<comment><USER5> Sure, if attracting anti-abortionists to your website is a good thing...

</comment></comment></comment><comment><USER7> 70% of the video he spends just manually copying bytes from a pre-written compiled and likely compressed source (off screen to the right). It's just dressed up (for the general public that find this stuff impressive because they don't really understand what's going on).

Not to downplay it here, I'm just describing what's going on. This is basically a small nice looking demo.

<comment><USER8> No compression of any type involved. He writes machine code and saves it to a .com file, which can directly be executed. The first thing it does is activate mode 13h, which gives direct access for drawing to the screen. The surprising thing here is that both these hacks are still supported by various versions of windows. They really used to take backwards compatibility seriously.

</comment></comment><comment><USER9> It took me several rereads to understand that what the author was referring to in the first few lines is a demo[1] say the 4K intro, where a few bytes in assembly language can create some interesting graphics often accompanied by music; often conveying a concept.

[1]: <http://en.wikipedia.org/wiki/Demoscene>

<comment><USER10> For reference, this is one of Iñigo's finest creations: <http://www.youtube.com/watch?v=jB0vBmiTr6o>

<comment><USER11> In 4K? That's obscene! There's link in the video notes to a description of how it was created which makes for an interesting read: [http://www.iquilezles.org/www/material/function2009/function...](http://www.iquilezles.org/www/material/function2009/function2009.pdf)

<comment><USER12> iq is very well known in the demoscene. He's one of the greatest and most creative coders that there's ever been.

</comment></comment></comment></comment><comment><USER13> I remember being impressed by a friend at University who would do:-

copy CON: reboot.com

and then enter 8 or 9 bytes (some via ALT+keypad) all from memory.

(There are ways to do it in just 2 bytes I believe, this isn't about reboot.com golf anyway...)

<comment><USER14> See also the EICAR Standard Anti-Virus Test File[0], which is a valid MS-DOS .com file composed of only printable ASCII characters. Granted, its output isn't nearly as pretty as the one in the video, but it's still a neat trick.

[0]: <https://en.wikipedia.org/wiki/EICAR_test_file>

</comment></comment><comment><USER15> Wow, 32×32 doesn't sound like much to me, but it's actually 1024 pixels. If you had 4 bytes per pixel, that's 4K - you can do quite a lot with that, even in java: <http://www.java4k.com>

<comment><USER16> His image was 9x9 pixels, not 32x32. So 324 bytes.

</comment></comment><comment><USER17> A great reminder that code is data, and data code.

Now I want to see how all my programs look as bitmapped images... brb.

<comment><USER7> Hopefully it will look mostly like random noise, without many patterns. That would indicate compressed information without much repetition. If you see lots of regular patterns, perhaps that means refactoring is in order to maintain DRYness.

Hmm, curious if this visualization would actually work to spot duplicated code.

<comment><USER8> Hopefully it won't actually. Most languages are not designed for compactness of source code, and most forms of factoring will produce fairly noticeable patterns; e.g. lots of funcion declarations.

<comment><USER7> True. One would have to first reduce the natural duplication/patterns that come with the language (i.e. function declarations, etc.) so that only the meaningful user code is left, before such analysis would be useful.

</comment></comment></comment></comment><comment><USER18> "during the last 5 years i've been explaining people that it takes less space to write a 3 minutes HD animated video and music clip than than it takes to store a 32×32 pixel icon."

This sounds so wrong. This sentence makes it sound as if any 3 minutes HD video has smaller filesize than a 32x32 pixel icon. Of course people won't believe you if you use that wording.

I assume what you mean to say is, it is possible to create SOME 3 minute video with music that is smaller than SOME 32x32 pixel icon.

E.g. if you store the 32x32 pixel icon in some XML format that describes every single pixel color component, and the video is plain white with some bleep music :p

<comment><USER19> Except for the next fucking sentence where he explains it's about algorithmic generation not arbitrary compression. He's assuming his readers have a brain. That might be a false assumption.

<comment><USER20> Couldn't you just apply the same techniques to generate 1024 pixels in less than the filesize it takes to generate a video?

If he's having trouble explaining it to people, it's because he's not wording it correctly. And if he's wording it correctly he should use the same, correct, understandable wording to tell us.

<comment><USER21> Yeah. He's not creating a video, he's creating a program that displays a video. If you create a 320x240 program that animation and call it a video, you might as well call every frame an array of 300 16x16 icons.

The point is pretty cool though, algorithmic compression is pretty awesome, especially when you don't have to conform to any particular end result. A fresh Minecraft world is a 240k jar file used as a decompression tool, and the data is a single integer (the seed). In the end the result is some 9 million times the surface area of the Earth.

However, start modifying that world and the data needed to store it balloons. Make a world that accurately mimics the surface of just Iceland and you're going to be looking at a pretty large file.

Accept a world that's a bit of simplex noise and Brownian motion and let yourself be awed. Make a video of rotating around a fractal made from a simple formula - that looks cool. Try and compress a video of your daughter's first steps and you'll get something significantly larger than an icon. Especially an icon that's at least run-length encoded.

<comment><USER22> There's no real computer science distinction between a program which displays a video and a video. You can always create a video format which (optionally) can read some bytecode and run it in a virtual machine. There are Turing complete font formats you know.

</comment></comment></comment></comment></comment><comment><USER23> <http://esolangs.org/wiki/Piet>

<comment><USER24> It's not Piet, though.

But granted, initially I assumed the article would be about that, but the colours give it away that it's not. Well, that, and the description of what he's doing.

<comment><USER23> You're right. I was disappointed when I found out what it was, but I didn't come to complain about it. I just thought people might like to see something a little more in line with the title.

</comment></comment></comment><comment><USER25> I've always been wanting to do this, but never got to it. Never thought of the .raw format without header, which probably makes it much easier. It still looks very impressive though, nice job!

</comment><comment><USER26> I knew this was iq's even before looking at the domain name :) Great spanish talent.

Don't forget checking his productions with RGBA! <http://pouet.net/groups.php?which=697>

</comment><comment><USER27> Pretty awesome. Correct me if I'm wrong but I'm fairly certain this won't work in Windows 7 - 64 Bit as 16-bit COM applications are no longer supported. I've tried to go back and get my simple COM programs from Assembly class at college to work but no luck. It was just really simple to do a very basic program using simple DOS function calls. Anyone know a simple way to do basic assembly programming in 64 Bit windows OSs? I tried was unsuccessful in getting a linker working.

<comment><USER28> You could presumably run it in DOSBox.

</comment></comment><comment><USER29> I'm sure this is very possible. There are only few opcodes for a x86 real mode com to use and if you look at the demoscene and see what those guys can do...this is not even that impressive :) Steve Wozniak wrote BASIC for the Apple computer in binary.

</comment><comment><USER30> This is cool. Could somebody please explain how this works? From what I can currently guess, the .midi image encoding with the 2D array of color values, when changed to an .com executable becomes assembly code that generates graphics? Thanks.

<comment><USER29> Initially is a 2d array but when saved without a image header to give it width and height (and other meta data) it becomes just an array of bytes. A color is encoded in 3 bytes, so with each pixel he can write one, two or three opcodes. If you google opcode tables you'll find plenty of examples of how assembly instructions are encoded in bytes.

For example (this is 16 bit but for the sake of demonstration) byte A1 (10100001) means ADD AX, BX. 101(add)00(ax)001(bx).

[Edit]

Found a cool image showing x86 opcodes. <http://i.imgur.com/69Lli.png>

And even a cooler one with windows exe description (not DOS .com as he used) <http://i.imgur.com/tnUca.jpg> Look at the right side of the image where it sais x86 Assembly where it colors and explains each byte. His .com was only that part since .com didn't need headers and imports and it was just code.

<comment><USER30> Thanks for the explanation and images cthackers:) I guess that the tunnel is an infinite loop from JMPs. I think I'll try to make one.

</comment></comment></comment><comment><USER31> Congratulations, you just gave syntax highlighting a whole new meaning!

</comment><comment><USER32> A little known company had this same idea in the mid 90s. I believe it languished in obscurity and then died after an unfortunate takeover. The company was Macromedia, the product was Flash.

</comment><comment><USER33> final vid needs Doctor Who music! hmm... I wonder how simple a MIDI file you could make to play something like that tune... and what _that_ would look like as a RAW bitmap...

<comment><USER34> You can generate music with algorithms too. I came across this a while ago:

        echo "main(i){for(i=0;;i++)putchar(((i*(i>>8|i>>9)&46&i>>8))^(i&i>>13|i>>6));}" | gcc -x c - && ./a.out | aplay

The generated a.out is 8.5kB for me though.

<comment><USER35> That sounds better than most of the pop music out there. Amusing demonstration of ... something!

<comment><USER36> Demonstration of using very few bytes of data to generate art. The same snippet of code can (very probably) be written as a < 128 byte ELF binary on Linux.

</comment></comment></comment></comment><comment><USER37> Going the other way around is probably more interesting...

</comment><comment><USER38> Absolutely fabulous!

</comment><comment><USER39> I am only an egg.

</comment><comment><USER40> mind blown

</comment><comment><USER41> WOAAOOWW!

</comment><comment><USER42> Fake, it's not hard to select colors based on hex values you're reading from a printouot ... But it does impress some people who think he's actually designing the code that way.

<comment><USER17> > the filling of the pixels with carefully chosen colors

See, to me this means "reading the colors from the printout". It's ridiculous that anyone could get the least significant bits of the color right by just eyeballing it, and I don't think the author ever claimed he was doing that.

<comment><USER42> > It's ridiculous that anyone could get the least significant bits of the > color right by just eyeballing it

If you look at the video carefully, you'll see that the color picker displays numeric RGB values and that it has been sped up. Do you think the code would work if he didn't get the values 100% right?

<comment><USER43> Of course that values have to be right. The colours are picked to build the algorithm.

Off to the right side of the screen (not visible) is probably another image with the colours in that he's picking from.

Maybe it's fake but it's theoretically possible. I don't have a windows pc to try on. He's provided the image though so you could try for yourself.</comment></comment></comment></comment>


Responsive Design is Not About Screen Sizes Any More - <AUTHOR> http://speckyboy.com/2013/09/11/responsive-design-is-not-about-screen-sizes-any-more/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+speckboy-design-magazine+%28Speckyboy+Design+Magazine%29 <comment><USER2> It's worth adding above the fold (ATF) rendering as a technique. It's aim is to deliver pages on mobile within 1 second and requires a fundamental rethink of the way we architect CSS and our reliance on frameworks like Bootstrap. Ilya Grigorik presented the technique at the latest Velocity Conference and Google have now adopted it as recommendation at part of the PageSpeed Insights tool.

[http://www.youtube.com/watch?v=YV1nKLWoARQ](http://www.youtube.com/watch?v=YV1nKLWoARQ) [https://developers.google.com/speed/docs/insights/mobile](https://developers.google.com/speed/docs/insights/mobile)

I'm currently working on a service in beta to help designers and developer address these issues through monitoring the front-end build of a website over time. Measurement and comparison is the first step in establishing a baseline and then rolling out these techniques and understanding the improvement.

[http://speedcurve.com/](http://speedcurve.com/)

I also discovered CDNConnect recently which looks like a great service to help optimize and generate images at a bunch of different sizes and formats like WebP easily.

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

<comment><USER3> Heads up: on speedcurve.com, my browser freezes at signup.php after entering my credentials, and I don't receive a confirmation e-mail.

Using Opera, Ghostery, and Ad Muncher, if it helps.

</comment></comment><comment><USER4> As long as there is an option to view the desktop version of the site on the phone (presuming it is usable at all), I don't really care.

It's very seldom I see a mobile version of a site that is better than the desktop version. Mobile versions usually aren't scrollable, so they're much harder to see in overview and zoom into the interesting bit. They usually don't show as much information overall in the interest of reducing clutter, but this makes them harder to scan and navigate.

Mobile Wikipedia commits both of these crimes, and even more annoyingly, mobile Google redirects WP search results to the mobile version, and there's no way to turn this off.

<comment><USER5> I often want the opposite -- I often prefer the mobile version on the desktop. Especially for news sites like the NY Times and BBC. The pages usually have many fewer distractions.

<comment><USER6> My take is that sometimes mobile sites are often optimised for simplicity (this is bad), sometimes for content (this is better), and occasionally, rarely perhaps.. for both (this is awesome!).

<comment><USER5> Too simple can be bad, but I'll take a page optimized for simplicity over one optimized for ads and the "you might like this related article" nonsense of many desktop pages!

</comment></comment></comment></comment><comment><USER7> Good article!

However, I am curious about the research showing that users will leave a website after 3 seconds. Where was this measured? On desktop, or on a low- end/low-bandwidth device? With low-end devices and/or low bandwidth, most websites will load slowly, and my guess is that performance expectations will be different than on desktop.

<comment><USER8> Source (listed on the link in the article): [http://www.akamai.com/html/about/press/releases/2010/press_0...](http://www.akamai.com/html/about/press/releases/2010/press_061410.html)

There's an option to download the full study but it requires registering.

<comment><USER9> That "study" is bullshit. It's actually a survey asking people after how many seconds they will leave the site. I'm now expecting them to find cure for cancer by popular vote.

<comment><USER10> You're right but let me tell you this: Half of the visits the article got since publishing have bounced off after close to 2 seconds. Coincidence? It´s a shame but I do this too

<comment><USER9> > It´s a shame but I do this too

You do what too? Conflating correlation with causation? We all do that at one point or another :) Speed is no doubt important but it's only a part of the big picture. The site I'm maintaining has roughly 60% bounce rate. If I'm to take the "study" at face value, that means all of those bounces are due to 3+ sec load time. And if I somehow manage to bring that to 0.1 sec (preferably using Akamai's services), the bounce rate will magically go to 0%. Of course, that doesn't happen in the real world.

Btw, great article, thanks for taking the time to write it.

<comment><USER10> Haha touche

</comment></comment></comment></comment></comment></comment><comment><USER11> "To do this, there are heavy tools out there, like WURFL, DeviceAtlas or lighter ones like Browser Gem, that read the user agent string and start from there."

All this time we were told 'browser detection is bad', yet... the only real way to give optimal experiences for mobile is... 'browser detection'.

<comment><USER12> I was under the impression that tracking users by uniquely identifying them by their browser was bad, not merely detecting their browser and its properties? Or did I miss something?

<comment><USER11> No, you didn't miss anything. It's just that... for years, we got "browser detection is bad" thrown at us. I realize I'm conflating things a bit, but personally I never did anything like "if useragent=='mozilla' redirect to 'we only support ie.html'", although many did (back in the day). "browser detection" got a bad rap, and had been "out of favor" for a long time (or appeared to be). Yet... the only way to avoid sending down a 400k of HTML to a mobile device is to... detect the device and send down smaller amounts of stuff.

<comment><USER13> It's "bad" because its very difficult to plan for all of the extreme edge cases found on the net. If UA Sniffing was infalliable, there would be a lot more of it.

</comment></comment></comment></comment><comment><USER14> Responsive design was about (perceived) speed before it was about screen size.

The first time I came across "Responsive design" it was about using threads to make UI's appear faster.

Here is an article from 2001 talking about it:

[http://www.c-sharpcorner.com/UploadFile/hsankar/UIresponsive...](http://www.c-sharpcorner.com/UploadFile/hsankar/UIresponsiveusingThreading11162005054732AM/UIresponsiveusingThreading.aspx)

<comment><USER15> It's a really unfortunate naming convention. "Responsive" is a perfectly good, versatile English word that I can no longer use in the context of websites.

Maybe "flexible design" would've been better. Or something more specific and descriptive.

<comment><USER16> I suppose you could say it has a responsive definition, changing to suit the needs of the people saying it.

</comment></comment></comment><comment><USER17> It is very clear that this method is still in infancy and we should not be expected to be able to fully accommodate everyone right now. We are working towards a solution.

The fact the DOM is parsed regardless is not a massive issue to me, as mobile browser speed increases this will become a non issue. The issue really is the images, there needs to be some way of telling the browser to completely ignore the image on certain media types, or at least defer the load if it is not meant for this media type then load it last.

There will eventually be a standard for responsive web design but at this moment in time people are doing it the best they can with the tools they have

</comment><comment><USER18> I agree that performance is a design feature. The days of the non developing designer are drawing to a close.

I still don't buy this "Design for Mobile First" idea though, for a couple of reasons.

\- Your first media query is no media query

\- This mobile up approach means your responsiveness is dependent on Javascript, which smells funny to me.

\- Most websites don't live that long, and desktop users still account for the lions share of traffic. If you had to pick one, you'd probably pick desktop. So it makes sense to me to start there.

\- I personally find it easier to work backwards towards mobile. But that's just me.

<comment><USER19> > Your first media query is no media query

What don't you like about this?

> This mobile up approach means your responsiveness is dependent on > Javascript, which smells funny to me.

Hm... I don't see how a mobile first approach depends on javascript. In my experience, it's quite the opposite, in fact. Mobile first is all about progressive enhancement and starting small. Granted, many web devs build their sites in a way that doesn't work w/o js, but IMHO, this should be the exception not the rule.

> Most websites don't live that long, and desktop users still account for the > lions share of traffic. If you had to pick one, you'd probably pick desktop. > So it makes sense to me to start there.

If designing mobile first meant "build two websites, and the first one you build should be the mobile one" then I might agree with you. But using RWD means that you only need to have one site, and that it will work across mobile and desktop. Because of the was CSS works, it's just way easier to start with a bare bones style for small screens, and use min-width media queries to progressively add more complex styles for screens with more real estate.

> I personally find it easier to work backwards towards mobile. But that's > just me.

I'm shocked to hear that, but obviously can't argue; your experience is your experience. I teach RWD classes, and without exception, students who have dabbled in RWD have had a really hard time trying to shoehorn a desktop site into a mobile format using RWD principles. It's not impossible but it is really painful. I've worked on responsive sites for some of the biggest publishers in the world and I can't imagine how would could have worked from desktop down to mobile. This is because CSS is much easier to use in an additive fashion, as opposed to subtractive.

Just my two cents.

</comment></comment><comment><USER20> I have an old WinPhone with a weak processor that only loads the current tab. This makes tabbing the browser functionally pointless.

Heavyweight responsive websites are unusable. I have to wait indefinitely for page to load, and there's no way to make it load in the background. In the rare cases where the pages progressively display, scrolling is still agony as elements jump around constantly.

While I realize I should probably get a new phone, I'd wager I'm not an edge- case and a lot of users with older or bargain-bin phones face this kind of frustration.

<comment><USER21> I believe mobile is currently about 18% of web usage market share, and windows phone is about 2% of mobile, so your situation is probably less than half of one percent of users - well below the level where specific support is economically viable, especially since it would probably require a lot of work.

As you said, the solution is for you to get a new phone.

<comment><USER20> I don't mean literally supporting the dead-ended WP7, but the general category of "old/cheap smartphones that scream and fall over dead trying to render your page".

<comment><USER21> Ah, I see what you mean. Yeah, that's a bit obnoxious, especially when it's something as gratuitous as a slideshow or something with CPU-hungry fading eye candy.

</comment></comment></comment></comment><comment><USER22> How does mobile first solve Excess DOM? As soon as you extend it to desktop you will have the same amount of DOM elements. Are you not supposed to use media queries?

<comment><USER23> What if there was a way server-side to look at the CSS and HTML and strip out the elements that won't ever be visible on a specific client device? A bit of HTML and CSS parsing, as well as knowledge about the client, and voila: less HTML (and CSS?) to the device!

This way as a developer you still have one HTML page, but smaller devices don't ever get non-visible DOM elements.

<comment><USER24> You can do it client side with matchMedia.

Instead of setting `display: none` with CSS media queries, make a function to rip out elements with a class like `onlyBig` from the DOM, or better yet, use client side templates and only inject the DOM elements appropriate for that screen to start with.

</comment></comment></comment><comment><USER25> Great article! Images are a huge bandwidth hog. There is absolutely no need to send desktop sized images to mobile users just to be down scaled by browsers. While new markup standards such as srcset (href="[http://www.w3.org/html/wg/drafts/srcset/w3c-srcset](http://www.w3.org/html/wg/drafts/srcset/w3c-srcset)) and the picture element ([http://www.w3.org/community/respimg/](http://www.w3.org/community/respimg/)) are trying to help, they still place an additional and unnecessary workload on designers...and they primarily consider screen resolution and size.

Designers should let the server side start helping them solve front end problems.

We've developed Pixtulate ([http://www.pixtulate.com](http://www.pixtulate.com)) to right size and optimize images on the fly before they are sent over the wire. Each visitor, mobile or not, gets the right image for them.

The author is right though, lazy loading of content is key!

</comment><comment><USER26> Excellent post. My concern with RWD is the page weight. Whilst with the proliferation of 3G and 4G this has somewhat been negated it still leaves a lot to be desired. I dont believe an 'App' is the answer and the original answer, separate mobile sites still feels attractive (both technically, page weight, delivery and recruitment)

<comment><USER27> Doesn't decreasing page weight for non-mobile help?

</comment></comment><comment><USER28> In case you missed steve souders wrote about domain sharding recently - [http://www.stevesouders.com/blog/2013/09/05/domain- sharding-...](http://www.stevesouders.com/blog/2013/09/05/domain-sharding- revisited/). Domain sharding combined along with dns prefetching is also one of the techniques you might want to look into if you have high number of requests. Check out amazon and etsy to see how they are using it :)

Kudos for mentioning inject after load for third party assets. We are a third party monitoring service yourselves ([http://fueldeck.com](http://fueldeck.com)) and we defer loading our script till page load to make sure user experience is not affected. Our customers don't have to worry about that.

</comment><comment><USER24> What are the odds that when we finally settle on a standard of optimizing for bandwidth, 5G or 6G mobile internet would make it all obsolete?

<comment><USER29> That doesn't strike me as too much of a tragedy - a fast site will only get faster on a fat connection. Plus, who knows when bandwidth caps are going away. Maybe never.

</comment></comment><comment><USER30> If you have a big image meant for desktop users only and you hide it with CSS, I'm pretty sure most modern UAs won't download it.

<comment><USER31> I don't think that's right; at least, a quick test on the browser I'm using right now (Chrome 29) suggests otherwise, as do this guy's tests from last year: [http://timkadlec.com/2012/04/media-query-asset- downloading-r...](http://timkadlec.com/2012/04/media-query-asset-downloading- results/)

</comment></comment><comment><USER32> Half-way through the article uses the term 'mdot' and never defines it.

Anyone?

<comment><USER33> A separate website at the "m" subdomain:

m.yourwebsite.com

</comment></comment><comment><USER34> It would also be nice to implement LZMA2 support to content encoding in the browsers, which is much better than GZip.

Firefox started doing it, I think.

[https://wiki.mozilla.org/LZMA2_Compression](https://wiki.mozilla.org/LZMA2_Compression)

<comment><USER35> > which is much better than GZip.

For one value of "better": better compression ratio.

LZMA is also much more expensive than GZip (2x CPU when decompressing, 3x to 6x when decompressing) and uses 2 to 100 times the working memory (when decompressing, the compression is worse). GZip also has more or less constant working memory where LZMA2's depends on compression settings.

LZMA2's use case is thus a bit restricted, mostly pre-compressed static assets (ideally not used on mobile devices)

<comment><USER34> Compression is done on the server, and (hopefully) once per unique response, which is then cached.

Decompression is fast. I don't think memory is an issue when we're talking about decompressing some HTML/CSS/Javascript, considering it only is required for a few milliseconds to do the work.

CPU is barely an issue, considering how powerful modern mobile devices,

New phones seem to have as much power and as much RAM as my 5 year old PC.

<comment><USER35> > Compression is done on the server, and (hopefully) once per unique response, > which is then cached.

Only works for low-dynamicity response. Or fully static assets.

> Decompression is fast.

I quoted numbers. LZMA decompression takes twice as much CPU time as gzip in the best case.

> I don't think memory is an issue when we're talking about decompressing some > HTML/CSS/Javascript

Memory is not a function of payload size in compression algorithms, it's a function of compression parameters. xz -9 will have ~65MB of memory overhead regardless of the payload size (and LZMA is flexible enough that you can craft a single payload requiring gigabytes of working memory, xz's man even warns about it).

> CPU is barely an issue, considering how powerful modern mobile devices

CPU transitions are extremely aggressive on mobiles. The more CPU time has to be spent decompressing payloads the less the CPU can be in deep hibernation state and the more battery you burn through.

Not a tradeoff which makes much sense considering >3G bottlenecks tend to be latency and processing more than bandwidth for "basic" HTML/CSS/JS web content (and really most things outside of video streaming)

> New phones seem to have as much power and as much RAM as my 5 year old PC.

Phones usually can't page out, and aren't tethered to a wall.

Also depends which "new phones" you're looking at, the Firefox OS-based ZTE Open has 256MB RAM and a 1GHz single-core Cortex A5.

<comment><USER36> Twice as tiny is still very small.

In this case, bandwidth is a more scare resource than CPU/RAM.</comment></comment></comment></comment></comment>


Visual Basic Turns 25 - <AUTHOR> https://blogs.msdn.microsoft.com/dotnet/2016/05/20/happy-25th-birthday-vb/ <comment><USER2> Despite much of the hate VB has gotten over the years, it served an insanely important purpose in the rise of internal business software. When I was at MSFT, me and the PM who owned the compilers for VB.NET and C# did a usergroup tour through Florida and I was amazed at how much of their world still runs on VB6 applications. Something like 1/3 of insurance software still does. It was one of the biggest reasons that Microsoft had to keep extending support for XP.

The transition from VB6 to VB.NET was a really sad one as it lost a lot of people - .net is a lot more difficult than 6 was. The result is that an entire group of people simply stopped making software and now we have businesses running on applications that are more than 20 years old that some random person in the company threw together over a week. There's a huge gulf between building a VB6 app and throwing together a web app today and despite much of the progress that has been made, we've taken some big steps back in terms of accessibility.

The difference between VB.NET and C# is pretty superficial, but I sincerely hope that someday people can experience the magic that something like VB6 offered. A lot of people got their start in programming thanks to it (myself included) and it's sad that it fell by the wayside to make way for "real programming."

<comment><USER3> I am a huge fan of the Microsoft ecosystem, and I spent a great many hours developing VB.NET code at the beginning of my career.

VB6 is a scourge. The fact that Joe in HR threw together an application in a weekend in a testament not to its accessibility but to its abject lack of maintainability.

<comment> sjm-lbm I think the important part here is that (in your example), Joe in HR wrote an application that is _important enough to be used_ but _not important enough to be professionally rewritten in a "better" language_. I don't really think that speaks to faults in VB6, but to a sizable and interesting market for a product that allows non-programmers to write simple programs.

<comment><USER4> That's sort of like applauding your neighbor for training his dog to always shit on your lawn

<comment><USER5> Of course it isn't. Some of the stuff people wrote in VB6 was (and still is) enormously productive.

<comment><USER4> Sure, and shit is productive in a biological sense. Doesn't mean I want to work with it.

<comment><USER6> You remind me of programmers who will bill a client $50k for a $2k problem under the guise of it being done "properly"...oh, and keeping it a secret that an "improper" $2k implementation was an option.

People heap scorn on auto mechanics (for example) that pad bills, but many people whose work doesn't get their hands dirty seem to think they are subject to a different moral code.

<comment><USER3> > _many people whose work doesn 't get their hands dirty seem to think they > are subject to a different moral code_

Let's not try to turn this into some "workers unite!" nonsense. I don't think how dirty someone's hands get have anything to do with what we're talking about.

Using your extreme example, the the $2k option is wrapping half a roll of duct tape around a leak. The $50k option is buying warrantied parts directly from the factory (not OEM).

What both you and the parent ignore is that there's usually a perfectly valid $20k option (OEM) that is a fair middle ground.

<comment><USER6> > Using your extreme example, the the $2k option is wrapping half a roll of > duct tape around a leak. The $50k option is buying warrantied parts directly > from the factory (not OEM).

You haven't seen some of the things I have. There are some extremely dishonest people in this industry that would literally be in prison if they pulled financially comparable stunts in an industry that isn't so opaque.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I first learned to program in VB6 when I was 14 in a high school class. I remember being so excited by programming that I flipped to the back of the book and trying to implement the advanced programming problems only a few weeks in. An explanation of Conway's Game of Life caught my eye, and I tried to implement it. Unfortunately, I hadn't yet learned about arrays _or_ loops, so my implementation was just thousands of lines of if statements. It took me hours of copying-pasting and modifying just to get a 5x5 board working, and I remember balking when the book suggested trying to make a 50x50 or 100x100 board. It was at that point I realized all the content in the middle of the textbook might be worth looking at after all!

</comment><comment><USER8> In a few more days I'll be 26. I started programming with Visual Basic 6, since then I have moved on. From time to time though, I can't help but try it out again now and then. I've seen many programmers start out with it and move on through the field into other languages. Many interesting projects have been made in Visual Basic 6 alone. Everything from private server software, to game cheating tools (packet injections), online rpg game engines, and so on and so forth (and throw in malware in there somewhere too). I am grateful for Visual Basic despite having moved from it, I know many despised it, and some of that group once coded in it, but I have to appreciate my roots despite the good or the bad I still learned programming through VB6. Thank you to whoever has ever worked on Visual Basic 6. Happy belated birthday as well.

<comment><USER9> I'm 5 years older. I started in Qbasic and moved to VB4 or 5 pretty soon after that. I've left them behind, but I've got a similar feeling about those languages.

These days, I guess I'd do some TK thing in Python if I was going for speed of development, but that seems a few steps backwards from what I could do (almost) 20 years, in a few ways.

</comment></comment><comment><USER10> Happy b-day VB, you where the node.js of the 90's, the starting point for many successful carers.

<comment><USER11> Would be nice. Sadly node.js shares many of VB's warts, whilst having few of its nicer features.

I'm not the only one who looks at what the industry had in the 1990's and thinks we've gone backwards. All Microsoft had to do was build a non-crappy online update and installation system, and our whole industry could look very different. But MS failed, utterly, in fact they made it worse, and we've ended up with the web - a pale imitation of real software development, but hey, you can deploy it without being hamstrung by a dysfunctional IT department and stuff updates silently.

</comment></comment><comment><USER12> Bill giving the first demo of VB 1.0

[https://www.youtube.com/watch?v=bMz2Mgs7UU0&t=2m8s](https://www.youtube.com/watch?v=bMz2Mgs7UU0&t=2m8s)

</comment><comment><USER13> In 1996 a friend demonstrated to me how to write an calculator in VB 4.0, I was immediately hooked. it opened the GUI world to me. at that time I couldn't read English and all I could was trial-and-error. Couple of weeks later, I coded a traffic simulation and show off to another friend who studied chemistry. Guess what, the guy learnt programming and became CTO of a Chinese internet giant.

<comment><USER14> I am curious, which internet giant?

</comment></comment><comment><USER15> I've actually learned programming when I was 12 with Visual Basic! I had a little book called "programming for kids" and it had a trial version of VB6 attached to it(it was fully functional, except that it couldn't export exes). The book had chapters on how to make a calculator, a simple notepad with save/open functionality and then at the end a gem - pong game made in VB. It was amazing. Now I work as a professional game programmer in C++, but I always think fondly of VB.

</comment><comment><USER16> I quit programming VB 12 years ago after using it for two years. I still vividly remember its syntax, patterns, forms, adodb/dao stuff. It's as if I never stopped coding in it. I've been into many languages since, ending lately with Golang. Nothing felt so easy and accessible as VB. Happy 25th birthday, dear Visual Basic.

<comment><USER17> Try GAMBAS on Linux or AutoIt on Windows.

<comment><USER16> Thanks for the kind reminder. At the same time when the VB was a popular tool, I looked for similar platforms on Linux. Gambas provided very familiar, if not identical syntax, however its Forms editor wasn't as nearly as powerful as VB's. Anyway, I'm glad to hear that Gambas is still around, will certainly play with it.

</comment></comment></comment><comment><USER18> Actually VB is dead. VB.net isn't VB any more than JavaScript is Java, and we shouldn't let Microsoft's marketing team pull the wool over our eyes by pretending there's continuity between the two.

VB.net is (modulo a few unimportant exceptions) just C# transpiled to a more annoying syntax.

<comment><USER19> I must regretfully agree with this.

</comment></comment><comment><USER20> The original Visual Basic was revolutionary. As a long time c programmer, at the time, I saw the custom control market opportunity and jumped in as co- founder of Mabry Software. Life was good, until vb.net.

I also wrote a bit, for example:

[http://www.amazon.com/Visual-Basic-How--Definitive- Problem/d...](http://www.amazon.com/Visual-Basic-How--Definitive- Problem/dp/1878739425/ref=sr_1_7?s=books&ie=UTF8&qid=1464042684&sr=1-7&refinements=p_27%3AZane+Thomas)

<comment><USER20> and:

[http://www.amazon.com/Visual-Basic-4-0-How-Problem- Solver/dp...](http://www.amazon.com/Visual-Basic-4-0-How-Problem- Solver/dp/1571690018)

</comment></comment><comment><USER21> Nowadays it's almost a meme to hate on VB, but I wrote my first desktop application with VB6 when I was in high school, circa 2000.

I knew Basic and a bit of Pascal, but the GUI builder of VB captivated me. It was so easy to create things with it! I quickly embraced it and developed many applications, among which a Scalextric car controller (attached to the voltage of a real car) and a math tutor for kids which got me a grant on my first year of college. It was pretty crappy but I still hold VB6 in my heart :)

</comment><comment><USER22> Its interesting how much hatred there is for visual basic these days. I understand, its the bane of my existence right now replacing thousands of things written with it. But I never stop being amazed at how successful it was. People who had no business programming were able to get stuff done with it. Imagine if MS didn't corner itself and ultimately kill the language by implementing only for windows?

<comment><USER23> > People who had no business programming were able to get stuff done with it.

True, and that was good. But it became bad when businesses made that "stuff" part of business-critical processes.

<comment><USER24> This was often an argument I read in my Systems Analysis textbooks back in that era: "Bob from Accounting threw together this app, now we need to replace it with a staged CMMI-compliant development process that does things properly". IRL: it resulted in an expensive and late waterfall project that Bob, and the rest of his department hate.

I'm sure that the code quality was atrocious, but in many ways, it is the ultimate Agile goal: Bob is solving his own problems, cutting through red tape, and addressing real business needs. It's a pity that the idea was abandoned, instead of finding ways to reduce the ways Bob could shoot himself in the foot.

</comment></comment></comment><comment><USER25> Still use VB6 at work. It says "Valued Microsoft Customer" since they supposedly don't want to run the licensing servers anymore.

<comment><USER26> if you don't mind me asking, how big is the company and what do you do with vb6?

<comment><USER25> Developers? Over a thousand.

There is a migration, though slow, from VB6 to ASP.NET C# stuff.

We use VB6 because of the component-like nature of how it can integrate with other parts of a larger application--and it usually doesn't have catastrophic failure (like a segfault) which can be contained. Another aspect of why it is used is because of the low-memory requirements, which by extension means one server can host more application sessions for more users. (It is easier to upgrade one server's software instance than thousands of individual workstations)

<comment><USER27> It's such a pity that microsoft did not provide a path forward for the applications written in vb6.

Further, at a time when they are open-sourcing so much they still keep vb6 closed source so that no-one else can either.

It's almost sadistic.

<comment><USER28> Microsoft produced several migration tools from VB6 to VB.NET over the years. An "Upgrade Wizard" to do a first pass conversion. Some integration tools to run VB6 COM components in VB.NET applications and vice versa (VB.NET code as VB6 ActiveX components).

VB.NET was always meant to be the path forward, and VB.NET, at least, _is_ open source now.

<comment> VB6-Programming The migration tool was next to useless. Even if, after a lot of effort, you migrated your app it would typically run a lot slower than on VB6. The only practical way to "migrate" was a complete re-write, that way you could have something comparable in performance to the original app. And that is why there are still so many VB6 applications around today, the cost of migrating (to an app that was no better than the original) was rarely justified. Now that Microsoft support VB6 until at least 2025 while VB.Net is falling in popularity (only 12% of .Net developers use Vb.Net now) it looks like those staying with VB6 made the right decision.

<comment><USER28> «Now that Microsoft support VB6 until at least 2025»

Microsoft only supports the VB6 _runtime_. The VB6 IDE and editing tools are no longer supported. Building new projects or new builds of VB6 applications is dangerous and unsupported.

«VB.Net is falling in popularity (only 12% of .Net developers»

So what? C# and F# are both good languages, and it makes sense if VB.NET is a good stepping stone to one or the other. VB.NET isn't going anywhere, it's also a good language for those that want to use it.

«those staying with VB6 made the right decision»

Hah. I'm not sure I agree with "right" from your analysis. Those who have stuck with VB6 in spite of all that has happened in language design and platform changes since VB6 was discontinued have certainly decided to be their generation's COBOL programmers. Certainly there will be money to be made there in ridiculous contracting fees for companies that don't know any better, and that's a possible definition of "right decision", I suppose.

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> VB6 was amazing as a first language. When I learned to code for the first time I was an impatient kid and I just wanted to see my programs compile and run on a nice GUI, vb6 gave me that and I wish it was still around for my younger brother to learn how to code with it.

</comment><comment><USER29> I have a lot of fond memories of VB6, as I started using it for an internship in college, when then I got hired full-time after graduation to keep up the app, as the sole developer/IT professional at the company. VB6 had its flaws, certainly, but as a 21 year old kid figuring out how to architect a software system, get projects done, and get the system working on the existing Novell Netware infrastructure, I didn't need to fight with C++ or deal with the vagaries of Delphi. VB6 was a great tool, VB.NET became a different tool, and I wish for the sake of not-really-programmers everywhere, VB7 had existed.

</comment><comment><USER30> I find it quite interesting that 90% of the comments here associate VB to VB6. It's a bit like if 90% of the comments on the anniversary of python would be about python 2 and how people missed it (or not)...

<comment><USER31> This is because a _huge_ community of VB developers built up during the VB1-VB6 era, and then Microsoft blew that community to smithereens with the language and licensing changes that accompanied the move to .NET. VB still exists in the form of VB.NET, but in terms of popularity it never recovered from the diaspora of VB6 users who abandoned the platform and never looked back.

So today you have two groups with an interest in talking about VB: a huge community of VB expats who moved on to other languages when the crack-up came, and a relatively tiny community of VB.NET users who either stuck with the platform or came to it later on.

<comment><USER30> What changed in the licensing? .net is pretty permissive, and has been free for a few years now (with the express editions).

<comment><USER31> They stopped selling licenses for Visual Basic 6 through most channels when VB.NET launched in 2002. Not "warned that they were going to stop selling licenses," just... _stopped._

So you had all these companies who had built up enormous codebases in older versions of VB, the last of which had been released only four years earlier, who suddenly couldn't buy the software all that code depended on anymore. Many of which were huge enterprises that were used to being able to phase out old software extremely slowly; so having the plug pulled on "classic" VB so abruptly was kind of terrifying for them.

Microsoft's official response to these customers was "VB.NET is much better, just use that." But you couldn't take a VB6 code base and run it under VB.NET without at least some modification to bring it in line with the new syntax. And VB.NET felt less like a version of VB than like C# with a coat of VB- colored paint on it, so the developers who would have to make those modifications faced the prospect of having to learn what was more or less a whole new language in a big hurry.

Since demand for client-server software (which is what you used VB to write) was in decline by then anyway, and apps that ran on the Web were the New Hotness, lots of VB developers decided that if they were going to have to learn a new language it may as well be one that let you deploy to the Web. So they didn't bother with VB.NET and moved to platforms like C#, ASP.NET, PHP, Python, Ruby, etc. instead, all of which had a better story for developing Web applications than VB.NET did. (Disclosure: I was one of these.)

Of those developers that didn't flee, most simply did the easy thing, which was to refuse to do anything; they just hung on to their existing VB6 licenses and kept on churning out VB6 code like nothing had changed. All that old VB6 code meant that you could actually make a good living for a surprisingly long time this way, just tending old legacy apps and keeping them running as well as possible.

</comment></comment></comment></comment><comment><USER32> I'm now old.

VB actually got me into Windows development - coming from C & DOS, at the time the message pump was difficult for me to grasp.

For LOB apps, VB1-6 was the most productive language by far.

</comment><comment><USER33> VB 1.0 was a revolution, really. I went on to buy Delphi and Paradox. Delphi was really something but the nod has to go to VB for the massive leap it took. It's not just 25 years for VB, it's 25yrs for all those GUI developers who grew up starting with VB. Now we're on Qt, JavaFX and React but as I write this I can't help but think - VB is more productive than React ;-)

</comment><comment><USER34> I had the most amazing experience learning how to program in VB6. It is, to this day, still the most amazing experience of creating desktop applications I ever had. Partially because I had a really awesome high school professor at that time, but still...

In my final year of high school, I decided on my own to try using the latest .NET version of Visual Basic for my graduation project. It wasn't hard, it was just a little bit more complicated and a bit disappointing experience when compared to VB6. My project was working, but not perfectly. I felt like I could ace it in VB6, but it felt way too outdated to be usable in the long run (turns out I was right, Microsoft killed XP, my high school switched to Office 365 and Windows 7, therefore, my VB6 project would be unusable now by the school administration).

I still feel the nostalgia whenever I think about how easy was to program in that thing.

</comment><comment><USER35> I work at an investment bank and I have daily contact with VB. It's awful and I wish it had some modern features like try catch blocks, but to automate simple tasks in Excel or Outlook it seems to be the only option.

Though powershell shows promise it doesn't run inside the Excel runtime and its a pain convincing others to use it.

</comment><comment><USER24> I started work at the tail-end of the VB6 (legacy systems were maintained with VB6, new work was done in .NET). We lost a lot of good people in the transition.

Unfortunately, many modern developers (including me) avoid VB, in all its incarnations, and there is a fair amount of technical snobbery in the dev world (there always was-even in the VB6 world). The RAD tools currently on the market demo well, but don't seem to lend themselves to more complex use-cases. In the absence of good evidence to the contrary, draggy-droppy RAD is looked down upon, in favor of markup based approaches, and inappropriate complexity is worn as a badge of honor (gross generalization, but I think valid for a substantial chunk of the business development world).

An Agile development process, coupled with a solid RAD platform should yield interesting results.

</comment><comment><USER36> VB was the Rails of its day.

It wasn't perfect but you could make really useful apps really fast and (relatively speaking) they didn't look like shit.

I guess I should say it was the Rails + Bootstrap of its day.

I got a ton done with VB. It was a nice start to my career. I'm grateful for it.

</comment><comment><USER37> I did a few programs in VB in the early 90's. It was pretty easy to buy components and get data out of our database. It was also quite nice for writing a program that generated lesson plans from a score on the LAP / E-LAP assessments.

I admit I was amazed at the ability to buy VBX components to do so many amazing things. It was really easy to plug them into your programs and get stuff running.

I did cheat a bit and use a module that made the GUI of the programs I wrote look like the NeXTSTEP screen I was using at the time.

</comment><comment><USER38> An INSANE amount of Wall Street software (that moves billions, if not trillions of dollars of money) is build on Visual Basic.

</comment><comment><USER39> While HTML was the first kind of code I ever wrote, I never felt like I was doing much more than I was when I typed up something in Microsoft Works. It wasn't until I used VB when I was 13 or 14 that it hit me that I could actually make computers do what I wanted.

</comment><comment><USER40> I think the major benefit of VB was that they put the UI stuff front and center.

This in that you first placed the button, and then wrote the code "inside" that button.

Most dev tools seems to treat the UI thing as something you do in a parallel track to the code, or create via code.

</comment><comment><USER41> ByVal and ByRef forever haunt me.

</comment><comment><USER42> I loved VB.NET especially LINQ :) The syntax kind of made more sense than C# for me

</comment><comment><USER43> VB6 was magic during those days. VB6 played a great role in making computers useful to small businesses and widespread adoption of computers. It also reduced the cost of software development.

</comment><comment><USER44> Still the same clueless Microsoft PR: picking at scaled over wounds. Well I guess we're all just grandpappies so WGAF.

</comment><comment><USER45> I wonder if some day Microsoft will stop being stubborn, and make Visual Basic 7. A lot of people would be very happy.

<comment><USER27> A lot of the people have moved on from vb and also as vb6 applications have continued to work in every release of windows there is less panic about having to upgrade. However, I have heard that windows 10 is not proving quite as trouble-free as 7 and 8 were.

</comment></comment><comment><USER46> On Error Resume Next

That feature alone was the reason for its strength. And its danger.

</comment><comment><USER47> IIRC Microsoft killed Visual Basic with the introduction of VB.Net back around 2000.

Why are they celebrating its birthday?

<comment><USER8> I honestly wished they would of somehow open sourced Visual Basic 6, it was quite interesting being able to create software rapidly and easily that couldn't be "decompiled" the way .NET / Java applications can be reversed back from bytecode. Unlike Delphi / Pascal which are a bit harder to just pick up and learn by comparison (try just giving a child Delphi, and then give them VB6 and see which one they could work quicker in). I think VB.NET had not much of a point with a language like C# around. Maybe they should of redone some parts of Visual Basic .NET to make it more adaptable by all programmers. Multi-line comments is one thing I wished it had.

<comment><USER48> There is Gambas, which while not a clone in the way FreeBASIC is of QuickBASIC, is at least intended to provide a similar experience. [https://en.wikipedia.org/wiki/Gambas](https://en.wikipedia.org/wiki/Gambas)

</comment></comment></comment><comment><USER49> I look back on Visual Basic with a mixture of trepidation and fondness. If you were a programmer who had experience of building well structured applications in C++, Python etc. then you could get a lot of stuff done and built on Windows. If you inherited a bad application, however....it was really bad. You can't deny its importance to desktop applications though.

The switch to VB.Net was the first time that you couldn't simply take your existing code and recompile it in a new version and carry on adding new features. That's where VB.Net, and .Net in general, simply didn't take off. Most people found out they simply didn't need or even want the complexity of full object oriented development either.

What Microsoft should have done was built a rapid development environment on top of .Net, distinct from programming in C#, that allowed you to take classic VB code and simply recompile it. The switch to .Net has never really happened for Microsoft and if anyone has been rewriting applications they are as web applications or mobile apps - which Microsoft are not a part of. It will be seen as a pivotal moment where Microsoft simply lost developers. You see it now with pandering to bringing Bash to Windows, amongst other things. No one cares about Windows development.</comment>


Eike Batista: Rich Man. Richest Man? - BusinessWeek - <AUTHOR> http://www.businessweek.com/magazine/content/10_08/b4167014984348.htm <comment><USER2> Hmm, not sure this is a great story of engineering-can-make-you-rich or anything of that sort. Officially he "got his start in gold", but as the article also notes, he's the son of one of Brazil's prominent industrialists, who also happens to be a high-level government minister (nice combination). He's making a fortune in being an industrialist. One suspects he may not be an entirely self-made man...

</comment><comment><USER3> A solid business article. but see if you can spot the exact point it becomes a HN article:

>"In the last 20 years you have focused too much on banking and finance. The best students went to banks or law firms. Where are the engineers?"

</comment><comment><USER4> I like the disdain when he derides Americans for not driving electric cars. He's right ... America has some serious systemic failures, despite being founded on great ideas.

No wonder he's a billionaire. Also, finding that fool-proof un-mechanized goldmine helped I'm sure... I learned that lesson at a poker table... don't play with experts, play with rich scrubs.

</comment><comment><USER5> Nice article. Batista: a name I hadn't heard, specifically. I knew about a lot of change in Brazil, but it's amazing how much influence and opportunity can still be had in the world. His comments about the US, political gridlock and the need for engineers is insightful.

Charlie Rose is a great interviewer, too.

<comment><AUTHOR> The whole interview can be found on <http://www.charlierose.com/view/interview/10851>

</comment></comment><comment><USER6> Is he related to Fulgencio Batista, former dictator of Cuba?

Wikipedia for once failed to enlighten me.

<comment><AUTHOR> Not at all. Ba(p)tista is a pretty common name.</comment></comment>


ArnoldC – Arnold Schwarzenegger based programming language - <AUTHOR> https://github.com/lhartikk/ArnoldC <comment><USER2> Needs a Who is your daddy? and What does he Do... maybe in a switch statement? or if/then? use case like in rails.

</comment><comment><USER3> Cool! But let's get classy too:

[http://shakespearelang.sourceforge.net/report/shakespeare/](http://shakespearelang.sourceforge.net/report/shakespeare/)

</comment><comment><USER4> THIS IS ALL BULLSHIT, ALL OF IT!

Thank you, that was a bizarre bit of fun.

(maybe the above should throw an exception??? what to use for try/catch?)

<comment><USER4> I like how "Arnold" is in all caps, too.

</comment></comment><comment><USER5> Return should be "Get to the Chopper"

and "I'll be back" should be a while loop - other than that I love this.

</comment><comment><USER6> The fizz buzz implementation in the wiki had me in tears. [https://gist.github.com/georg/9224355](https://gist.github.com/georg/9224355)

</comment><comment><USER7> Someone should make a text to speech version of this that spits out the original voice

</comment><comment><USER8> That's rad... love it when talented people spend their time doing silly things.

</comment><comment><USER9> I can think of some more --

NULL = NOW JUST PLAIN ZERO

Memory fault = THERE IS NO BATHROOM</comment>


A Real World 'Star Trek' Replicator Is Now Possible Thanks to New Breakthrough - <AUTHOR> https://www.forbes.com/sites/ericmack/2018/03/09/carbon-nanotube-membrane-breakthrough-is-real-world-star-trek-replicator-mattershift/#37a3575d520f <comment><USER2> "Using our tech, I think we'll be able to produce carbon-zero gasoline, diesel, and jet fuels that are cheaper than fossil fuels."

Goodbye oil fields. And we get to keep our ICE cars and trucks!</comment>


Kottke.org is 20 years old today - <AUTHOR> https://kottke.org/18/03/twenty <comment><USER2> I still remember the way I found his blog -- back then designing a website meant pulling out photoshop to lay things out and using non-websafe fonts in images. Pixel fonts were common in designs and I found Silkscreen, which linked back to kottke.org in the readme :D

<comment> 52-6F-62 Ah I remember those days

[http://kottke.org/03/10/some-nice-free-pixel- fonts](http://kottke.org/03/10/some-nice-free-pixel-fonts)

<comment><USER3> Thanks, I'll use this for my new personal site :)

</comment></comment></comment><comment><USER4> In the last 18 years or so I've been reading kottke.org, I don't think a single day has gone by without finding something delightful or fascinating.

It's the best site on the internet.

</comment><comment><USER5> I used to really like the site but to be honest I stopped quite a few years ago when it became just a set of links with minimal commentary.

Most of the things were stuff I already saw elsewhere. It felt like I was just watching someone else browse the web which seems pretty pointless.

<comment><USER6> This is my experience as well. I respect Kottke as a blog/media/internet pioneer. But content is lackluster - a collection of links. And the commentary is almost nonexistent.

</comment></comment><comment><USER7> You know what is so great about Jason's project? He himself publishes it. He has survived blogging, social media, instagram, Facebook and is still actually interesting. There were so many publishers in the early days when he got started, but so few still publish. In fact, my heart aches for a return to the originality that we had an individual publishing at the time when the site got started.

I'm not being nostalgic. I genuinely, and passionately want to have that specific energy back on the Internet, and believe it will happen eventually as the pendulum swings the other way. There will come a time when people read discover the joy of writing and connecting individually via that writing. So much of the value of the Internet has been supplanted by platforms, to the point where meaning has been lost in interpersonal communications because it has been monetized and in many ways obliterated. Eventually these companies will come back into balance, for users will abandon them because there is no meaning. I suppose, being a student of Roman history, that I could be wrong.

I have been a fan from day one, and I appreciate publishing it. Congratulations.

</comment><comment><USER8> > _I was 24 years old and dumb as a brick. Oh sure, I'd had lots of book > learning and was quick with ideas, but I knew shockingly little_

Take note, fledglings! That was him, me, and with any luck, future you speaking.

<comment><USER9> So far, that's been me at every n+5 years or so.

</comment></comment><comment><USER10> I am sorry this is Off Topic:

Kottke.org is one of the best site, maintained by someone doing it for their interest. And has kept going for twenty years. While I dont visit the site daily, I have kept it on my RSS feeds ( Probably since Pre Google Reader days ), so every once in a while I do read up something interesting, like this post, which has some history worth reading.

I discovered the Ads wasn't appearing. I thought this should be white listed on Ad Block, and it still wasn't appearing. Turns out the Do Not Track privacy features in Firefox stop the ads from showing up. Kottke deserve every bit of ads on the site, and it is only ONE, just one ads!

While i rarely click on ads ( Do they still do CPM? or is it only clicks nowadays? ). I think the Web, Ads, Tracking and Privacy is totally broken. Do we have alternative where ads are generated on Server or Adblock only showing 1 Ads per site. What middle ground solution are there?

<comment><USER11> The ad I see on the website is an ad from the Carbon Ad network. The ads are clearly targeted, which can only be done if I was tracked. Allowing ads on this site, with the G Suite ad I see right now, creates requests to servedby- buysellads [dot] com, then ad [dot] doubleclick [dot] net.

I personally have no problem seeing an ad for something on a page, as long as it is out of the way, which is the case with this website. The problem I have is the amount of tracking done by this ad. Now both Google and some other company I do not recognize knows that I visited this website.

While it seems that Carbon's ad code does not allow for running arbitrary javascript, but I have no idea, nor do I want to spend the time researching if Carbon's ads do have that capability. The last thing I want when I visit a website is a random bit of javascript running on the page. As we have already seen, companies have been abusing that capability by running cryptocurrency miners (which I have a serious objection to as that is a waste of my electricity and computer resources), plus it has been possible to exploit security vulnerabilities such as Spectre.

</comment></comment><comment><USER12> Anyone remember the old Buzzfeed links that were on the kottke front page? They were there before "Buzzfeed" was "Buzzfeed". I always thought that was strange since back then the day they mostly just re-posted Reddit content.

<comment><USER13> I very well may be wrong, but I believe Jason helped start buzzfeed in some way.

</comment></comment><comment><USER14> I learned CSS by reading the source code of kottke.org and trying/failing to rebuild the nested boxes layout it once had. Love the memories. Thank you, Jason Kottke.

</comment><comment><USER13> I'm pretty sure ive been reading it for at least 19 of those 20 years. Frequently I'll be trying to tell someone about something I saw on there to go searching and find that I read about it a decade ago. I can't think of any other site I have visited practically every day for that long.

</comment><comment><USER15> Twenty years of writing in public boggles the mind. The sum total of the body of work is humbling and impressive at the same time. Sometimes I imagine myself doing something like this, although the fantasy quickly passes, as I have nothing interesting to say. Perhaps what we see here is another plane of existence that is inaccessible to most.

<comment><USER16> It's a matter of "Just Do It." I started my blog on December 4, 1999 [1] and now I find myself going "Oh, I wrote about that already! It was _that_ long ago? Eeek!". [2]

[1] [http://boston.conman.org/1999/12/04.1](http://boston.conman.org/1999/12/04.1)

[2] [http://boston.conman.org/2018/03/06.1](http://boston.conman.org/2018/03/06.1)

Edit: added additional link

</comment></comment><comment><USER17> I killed my blog 10 years ago and recently brought it back to life on Medium, thanks to the Internet Archive. I applaud Kottke for keeping it up this long. It's not easy. Good luck for the next 10 years :)

</comment><comment><USER18> Still not the website of Leo Kottke, don't care :(

</comment><comment><USER19> Not related to [http://leokottke.com/](http://leokottke.com/)</comment>


Paris bans half of all cars from the road over pollution fears - <AUTHOR> http://www.independent.co.uk/news/world/europe/paris-bans-half-of-all-cars-from-the-road-over-pollution-fears-9195307.html <comment><USER2> As an emergency measure it's not a bad idea. But it just shows the shortcomings of the transport policies. They have to think of smarter ways in the future. Outright ban old gasoil cars without particulate filters, congestion charge, selectively lowering the speed limit, better road design to accomodate for bicycles...

</comment><comment><USER3> this is a dramatic title for an old policy.

[http://en.wikipedia.org/wiki/Road_space_rationing](http://en.wikipedia.org/wiki/Road_space_rationing)

</comment><comment><USER4> Good. Tesla, you know where to focus next.</comment>


Saturated fat does not clog the arteries - <AUTHOR> http://bjsm.bmj.com/content/early/2017/03/31/bjsports-2016-097285 <comment><USER2> TLDR; Less stress and a little bit of exercise. Also watch TC to HDL ratio instead of LDL.

Another blow against the diet-heart hypothesis. Also love the graph.</comment>


One simple regulation could end surveillance capitalism in the EU - <AUTHOR> https://ar.al/2018/11/29/gdmr-this-one-simple-regulation-could-end-surveillance-capitalism-in-the-eu/ <comment><USER2> What about the surveillance state? Can we end that, first?

<comment><USER3> Both are not mutually exclusive and can be stopped independently from one another.

<comment><USER2> I feel like one should remove the plank from their own eye before trying to remove the sliver from another's.

<comment><USER4> Personally I trust my government far more than a corporation. Corporations often have very poor control of their data and corporate security clearances and the rest are pretty slack compared to spy agency level ones.</comment></comment></comment></comment>


Anil Dash: Your April Fool's Joke Sucks. - <AUTHOR> http://www.dashes.com/anil/2006/03/your-april-fool.html <comment><USER2> I propose we assemble a committee and have several meetings to formalize the design of the perfect april fools joke.

Any naysayers will be taken out back and shot.

<comment><USER3> Two peanuts were walking down the street and one was assaulted...peanut.

April Fools!

</comment></comment><comment><USER4> I've never found these web April Fools jokes all that interesting. Usually Google does something that the world geeks out over while I sit bored.

April Fools, they ROCK!

No, April Fools again, they're dull. Really.

<comment><USER5> I thought the gmail announcement was pretty good - everyone's first reaction was that it was fake.

Of course, actually fooling people is significantly harder than putting something absurd at the top of your blog.

See also: <http://news.ycombinator.com/item?id=152361>

</comment></comment><comment><USER6> I think someone takes themselves way too seriously.

</comment><comment><USER7> Whoever sent me the Microsoft recruitment letter today...bad taste.

</comment><comment><USER8> But does anyone else find themselves really, really, wishing the Google/Virgin Mars mission announcement was true?</comment>


Status – A Mobile Ethereum OS - <AUTHOR> https://status.im/ <comment><USER2> I hate to sound so critical, it sure looks like an interesting project, but could developers of such applications/websites _please_ stop putting everything on their web page in marketing speech? Why do so many FOSS developers imitate the worst aspects of the proprietary, commercial software world?

I looked at the feature descriptions and they are full of meaningless buzzwords like "crowd sourced wisdom". So you've lost a potential user. K.I.S.S.

<comment><USER3> >> marketing speech

>> FOSS developers

I don't think it has something to do with FOSS but rather with blockchain developers. Most projects have nice landing pages but very vague messages.

<comment><USER4> Agreed. While you're not paying for using the product by buying a software license, you're often required to buy tokens (get it?) in order to use the product. The developers benefit from the increase in token price, because they often own a lot of those tokens.

Not that this is necessarily unethical, but it's good to know the incentives behind this.

<comment><USER5> wouldn't that be considered illegal market manipulation if they were somehow doing the same thing with US currency?

</comment></comment></comment></comment><comment><USER6> This app uses re-natal, a wrapper of React Native for ClojureScript. It also uses a ClojureScript framework called "re-frame" for data flow and "reagent" for wrapping React.

It's a pleasure to work with (most of the time, there are hiccups here and there) and you can develop for iOS and Android simultaneously. I highly recommend checking it out.

[https://github.com/drapanjanas/re-natal](https://github.com/drapanjanas/re- natal)

[https://github.com/status-im/status-react/](https://github.com/status- im/status-react/)

<comment><USER7> Seconded! re-frame/reagent/re-natal are great. Really fun to use.

</comment></comment><comment><USER8> Remarkably similar to Token from Coinbase, which launched just yesterday: [https://www.tokenbrowser.com](https://www.tokenbrowser.com) (and which is available in the iOS app store)

<comment><USER9> Coinbase are nice people, and I hope Token is a success. If you'd like to compare the two products please do check out the tech stack - Status is completely decentralized, so doesn't rely on any centralised servers :)

<comment><USER10> Is status.im using whisper for messaging? Is there end to end crypto between users?

</comment></comment></comment><comment><USER11> You can find a comprehensive list of dapps here: [http://dapps.ethercasts.com](http://dapps.ethercasts.com)

Developer activity in Ethereum is increasing at a very fast pace. This is only supposed to accelerate after the upcoming metropolis upgrade hard fork.

</comment><comment><USER12> I haven't followed Ethereum since the whole DAO debacle. I was very excited about the technology but the way the whole hard fork/Ethereum Classic thing was handled really turned me off. Has progress been made on formally verifying contracts or anything like that? And why aren't more people bothered by the whole hard fork thing?

<comment><USER8> I think the current Bitcoin situation is really showing that rapid, organized hard forks when problems occur is an extremely good thing. Bitcoin is currently frozen in time, since there are two major competing clients, and neither dare make any incompatible changes for fear of creating a fork, and right now neither has a majority.

A decentralized cryptocurrency is a lovely ideal, but in the dirty real world, Ethereum and its ilk will win out.

<comment><USER13> The problem is not with forking to develop the protocol. Certainly, that is a good thing, and BitCoin's inability to do so is a serious issue.

The problem is forking _to undo a specific transaction_. That should never happen. The fact that so many people over-invested in a risky experimental project that they felt they had to sabotage the protocol to protect themselves reflects very poorly on the community.

<comment><USER14> Technically, no transactions were undone, but the fork agreed to new rules set in the future. The users of the new version also had a choice if they wanted to support the fork or not, the majority went with the fork.

This is a screenshot of the choice everyone was asked when starting up their wallet: [https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Et...](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Ethereum- Wallet_and_Mist_Beta_with_Hard_Fork_choice_0.8.1.png/1113px-Ethereum- Wallet_and_Mist_Beta_with_Hard_Fork_choice_0.8.1.png)

Ability for a community to set and agree to new rules is healthy for a blockchain and it makes it more likely that Ethereum can evolve and successfully hardfork to Proof of Stake (PoS) mining in the future.

<comment><USER15> Nice whitewashing. While you are technically correct that no transactions were undone, in practice a theft was (largely) reverted. You are also misrepresenting "users' choice" with regards to supporting the fork. If you make a transaction and everyone moves onto a different chain in order to effectively cancel your transaction, that's censorship of transactions. Censorship was a good choice in this case, but let's not pretend it's something it wasn't.

<comment><USER16> > If you make a transaction and everyone moves onto a different chain in order > to effectively cancel your transaction, that's censorship of transactions.

If you don't like what NYT says, and you cancel your subscription and subscribe to WSJ (and let's just say that millions of people do the same thing, possibly due to some event), have you effectively censored NYT then?

The fact is, censorship has a meaning, and the way you're using the language, abuses that. We didn't censor Ubuntu when because of their unity decision lots of people moved to Linux Mint or to other distros.

We didn't censor Digg when it lost a huge traffic to Reddit after the v3 changes.

Uber wasn't censored when after the controversial immigration changes by Trump, people started to delete uber app and ride Lyft.

Censorship is when an organization forces your speech from all effective expression.

Will ETC be invoking censorship when they hard fork to eliminate the upcoming Ice Age baked into the Ethereum protocol?

<comment><USER12> Your analogy breaks down because we don't trade newspapers as currency, we consume them for information.

<comment><USER16> And until 2016 nobody used the phrase 'censorship of transactions'.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Worst name ever. It will be very hard for people to search about this (not to mention the SEO problems)

</comment><comment><USER18> Amazing project, and great landing page btw. It seems the Ethereum ecosystem is becomming more and more mature, that's great !

<comment><USER19> I actually thought this was a Stripe product when I first saw the landing page - and I mean that as a compliment, because Stripe's web pages are always beautiful. (My only slight criticism of this one is that the bits which load in progressively as you scroll down have slightly too much of a delay.)

</comment></comment><comment><USER20> This looks great, but the only thing stopping me from integrating something like this into my apps is the fact that there isn't any native (Objective-C) client/library support, so far.

Its one thing to have a prototype built with JS. Its another thing entirely to integrate into apps which use native technologies.

</comment><comment><USER21> Whenever there is an article on crypto currencies, I see a subset of accounts come out of the woodwork to praise them.

Whether you've invested in Ethereum should be mentioned.

</comment><comment><USER22> Man, this is a great idea.

EDIT: Hey, you can actually download it right now if you join the beta.

<comment><USER9> Thanks so much for trying it out! We're also completely open source so contributors are most welcome ([https://wiki.status.im/contributing/development/introduction...](https://wiki.status.im/contributing/development/introduction/)) - also feel free to come say Hi on our Slack ([http://slack.status.im/](http://slack.status.im/)), we're friendly people :)

</comment></comment><comment><USER23> Great idea, and the landing page is incredibly beautiful. Well done.

</comment><comment><USER24> But what's it for?

<comment><USER25> web3

<comment><USER26> Could they call it anything less self-explanatory?

<comment><USER27> Well, the other option is to explain how it's like existing methods of delivering online functionality, but decentralised - a thing that nobody really values - plus also incredibly slow, fairly complex, and you have to pay for everything that happens, and also the entire ecosystem is centred around a volatile speculation-rife currency and an approach to financial transactions which has been full of real and significant security problems - including the theft of millions of dollars from the flagship implementation right under the noses of many of the core devs, despite paying corrupt levels of money to other core boosters of the platform for completely hopeless security reviews...

<comment><USER28> Totally with you here. The blockchain is an awesome experiment and prototype of what a good decentralized, verifiable system could look like, but it has several significant flaws, some of which are obvious even in the limited context of a worldwide ledger (bitcoin).

In particular, throwing away 47 zetaflops/s of computing power (the current compute power of the bitcoin network [0]) and all of the electricity required to generate it in order to verify the transactions of the tiny quantity of people currently using bitcoin is obscene, and the mechanism that encourages this should be recognized as the unscalable disaster that it is. Basing "Web 3.0" on such mechanisms is, frankly, a ridiculous proposition.

And all of this "decentralization" is thrown out the window by virtually everyone, because to store a full copy of the blockchain on your local disk, you need -- let's see --

        $ du -sh /mnt/apps_syn/dot_bitcoin/
        118G    /mnt/apps_syn/dot_bitcoin/

120 gigabytes of space. So you end up just trusting Coinbase or whoever you have your wallet from anyway, no different than trusting your bank.

If Coinbase had an Ethereum moment, they could fork the chain that all of their wallets use, and with their MtGox-like domination of the market, any resistance to their fork would seriously damage Bitcoin overall. I imagine most miners would go along with it because they don't want their btc to drop to 0.

Consider also that there is virtually no transparency into the actual miner operations. The biggest miners are behind "pools" \-- relays -- and though the idea is that pools are made up of tens of thousands of independently- controlled computers, I suspect that if we could see through to which machines were _actually_ doing most of the work, bitcoin would suddenly seem a lot less "decentralized".

This is not to mention that miners behind pools are totally at the pool's mercy, or that 5 pools hold over 50% of the network's hashrate, and that these pool operators have been in one room together to decide on blockchain policy (re blocksize, which miners are incentivized to oppose, since smaller blocksize == higher transaction fees). That is little different than big banks meeting under the auspices of the Federal Reserve to control monetary policy.

It's very sad that people saw bitcoin and thought it was a good idea to expand its flawed model out, instead of accepting it for the forward-thinking prototype it was and thinking about how to improve it before jumping all in.

[0] per [https://bitcoinwatch.com](https://bitcoinwatch.com)

<comment><USER29> I work full time on Ethereum development, and I don't have any kind of maximalistic opinions about decentralization, the evils of banks, or whatever.

It's just a very interesting technology with a really great momentum. But everything is flawed under the sun. There is no perfect technology that can completely decentralize authority with no resource demands.

Or maybe Satoshi's reincarnation will come and deliver a new mind-blowing concept that makes blockchains completely deprecated. That would be pretty cool. But until then, you know.

By the way, Ethereum's roadmap includes switching away from proof of work towards proof of stake, which doesn't waste electricity. This model has been used successfully, for example by Bitshares.

It also includes a light client protocol so mobile nodes don't need much disk space or processing power.

[As always, Hacker News is full of critics...]

<comment><USER28> This isn't a nitpick about how the blockchain isn't perfect. IPv4 is imperfect, HTTP is imperfect, etc. The blockchain is ill-conceived and impractical.

At this point, I only check in on the bitcoin community casually, so I'm not familiar with proof of stake, but I'm glad to hear work is underway to resolve that glaring issue in Ethereum. I'll definitely read up on it. Thanks for the pointer.

>[As always, Hacker News is full of critics...]

Indeed. We come here to discuss, which will involve some criticism. Working on Ethereum is not really an indictment, so don't worry. :)

<comment><USER29> That's what I mean, you're not familiar with what's happening, yet you comfortably dismiss the whole idea of blockchain as ill-conceived and impractical.

So both of your major criticisms are being actively addressed by very smart people who plan to have them solved in the near to medium term future.

Does that in any way change your view of blockchain? Maybe it could possibly work? Or, no, it's just a hopeless dumb idea that will surely crash?

<comment><USER28> >That's what I mean, you're not familiar with what's happening, yet you comfortably dismiss the whole idea of blockchain as ill-conceived and impractical.

It's not "the blockchain" anymore if they've changed the fundamental mechanisms of its operation (e.g., eliminating miners, which the sibling commenter indicated as a goal).

It may be _a_ blockchain, if we want to use "blockchain" as a generic descriptor for a chain of cryptographic signatures, or a blockchain-inspired / blockchain-derived concept, but "the" blockchain, as in the blockchain concept developed for use with bitcoin, is fundamentally dependent on mining for its validity. Change that, and it's not really "blockchain" anymore, at least not as used in the current vernacular. And that's fine -- bitcoin quickly outgrew its britches and needs revision.

>So both of your major criticisms are being actively addressed by very smart people who plan to have them solved in the near to medium term future.

Yes, that's awesome. I'm glad that some people are now deciding that these issues deserve a response instead of continuing headlong into the hype abyss. Why should this mean that people can't complain? If I hadn't, I wouldn't have known that Ethereum is working on a solution. :)

>Does that in any way change your view of blockchain? Maybe it could possibly work? Or, no, it's just a hopeless dumb idea that will surely crash?

Again, I haven't reviewed it yet, but sure, changing the mechanisms of operation could potentially make a thing called "blockchain" workable. "A rose by any other name..." and all that.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER30> Is the intention here to run mini react-native apps (Dapps?) within a bigger app (status app itself)?

</comment><comment><USER31> So awesome to see these dapps get to the next level!

</comment><comment><USER32> People have been using daps for a while now. Could someone explain what this allows you to do that you couldn't do before?

</comment><comment><USER25> If Apple would allow this in AppStore, it would be uuuge.

<comment><USER33> Near enough this exact idea is in the App Store in the form of another app called "Token".

</comment></comment><comment><USER34> Does Status use SPV?

</comment><comment><USER35> Nice one from Singapore ;-)</comment>