Why designed a front-end programming language from scratch

Today’s programming languages have traditionally been created by the tech giants. These languages are made up of millions of lines of code, so the tech giants only invest in incremental, non-breaking changes that address their business concerns. This is why innovation in popular languages like C, Java, and JavaScript is depressingly slow.

Open-source languages like Python and Ruby gained widespread industrial use by solving backend problems at startup scale. Without the constraints of legacy code and committee politics, language designers are free to explore meaningful language innovation. And with compile-to-VM languages, it has become cheap enough for individuals and startups to create the future of programming languages themselves.

Open-source language innovation has not yet disrupted front-end programming. We still use the same object-oriented model that took over the industry in the 1980s. The tech giants are heavily committed to this approach, but open-source has made it possible to pursue drastically different methods.

Two years ago, I began to rethink front-end programming from scratch. I quickly found myself refining a then-obscure academic idea called Functional Reactive Programming. This developed into Elm, a language that compiles to JavaScript and makes it much easier to create highly interactive programs.

Since the advent of Elm, a lively and friendly community has sprung up, made up of everyone from professional developers to academics to beginners who have never tried functional programming before. This diversity of voices and experiences has been a huge help in guiding Elm towards viability as a production-ready language.

The community has already created a bunch of high quality contributions that are shaping the future of Elm and are aiming to shape the future of front-end programming.

Dev tools

Early on, I made it a priority to let people write, compile, and use Elm programs directly from their browser. No install, no downloads. This interactive editor made it easy for beginners and experts alike to learn Elm and start using it immediately.

In-browser compilation triggered lots of discussion, ideas, and ultimately contributions. Mads Flensted-Urech added in-line documentation for all standard libraries. Put your cursor over a function, and you get the type, prose explanation, and link to the library it comes from. Laszlo Pandy took charge of debugging tools. He is focusing on visualizing the state of an Elm program as time passes, even going so far as pausing, rewinding, and replaying events.


I designed Elm to work nicely with concurrency. Unfortunately, JavaScript’s concurrency support is quite poor with questionable prospects for improvement. I decided to save the apparent implementation quagmire for later, but John P. Mayer decided to make it happen. He now has a version of the runtime that can automatically multiplex tasks across many threads, all implemented in JavaScript.

Common to all of these cases are driven individuals who knew they could do it better. This is how Elm got started and how it caught the attention of Prezi, a company also not content to accept JavaScript as the one and only answer for front-end development. I have since joined the company for the express purpose of furthering work on Elm.

We do not need to sit and hope that the tech giants will someday do an okay job. We can create the future of front-end programming ourselves, and we can do it now.


Official feedback on OpenGL 4.4 thread

 SIGGRAPH – Anaheim, CA – The Khronos™ Group today announced the immediate release of the OpenGL® 4.4 specification,bringing the very latest graphics functionality to the most advanced and widely adopted cross-platform 2D and 3D graphics API (application programming interface). OpenGL 4.4 unlocks capabilities of today’s leading-edge graphics hardware while maintaining full backwards compatibility, enabling applications to incrementally use new features while portably accessing state-of-the-art graphics processing units (GPUs) across diverse operating systems and platforms. Also, OpenGL 4.4 defines new functionality to streamline the porting of applications and titles from other platforms and APIs. The full specification and reference materials are available for immediate download at http://www.opengl.org/registry.

In addition to the OpenGL 4.4 specification, the OpenGL ARB (Architecture Review Board) Working Group at Khronos has created the first set of formal OpenGL conformance tests since OpenGL 2.0. Khronos will offer certification of drivers from version 3.3, and full certification is mandatory for OpenGL 4.4 and onwards. This will help reduce differences between multiple vendors’ OpenGL drivers, resulting in enhanced portability for developers.

New functionality in the OpenGL 4.4 specification includes:

Buffer Placement Control (GL_ARB_buffer_storage)
Significantly enhances memory flexibility and efficiency through explicit control over the position of buffers in the graphics and system memory, together with cache behavior control – including the ability of the CPU to map a buffer for direct use by a GPU.

Efficient Asynchronous Queries
Buffer objects can be the direct target of a query to avoid the CPU waiting for the result and stalling the graphics pipeline. This provides significantly boosted performance for applications that intend to subsequently use the results of queries on the GPU, such as dynamic quality reduction strategies based on performance metrics.

Shader Variable Layout (GL_ARB_enhanced_layouts)
Detailed control over placement of shader interface variables, including the ability to pack vectors efficiently with scalar types. Includes full control over variable layout inside uniform blocks and enables shaders to specify transform feedback variables and buffer layout.

Efficient Multiple Object Binding (GL_ARB_multi_bind)
New commands which enable an application to bind or unbind sets of objects with one API call instead of separate commands for each bind operation, amortizing the function call, name space lookup, and potential locking overhead. The core rendering loop of many graphics applications frequently bind different sets of textures, samplers, images, vertex buffers, and uniform buffers and so this can significantly reduce CPU overhead and improve performance.

Streamlined Porting of Direct3D applications

A number of core functions contribute to easier porting of applications and games written in Direct3D including GL_ARB_buffer_storage for buffer placement control, GL_ARB_vertex_type_10f_11f_11f_rev which creates a vertex data type that packs three components in a 32 bit value that provides a performance improvement for lower precision vertices and is a format used by Direct3D, and GL_ARB_texture_mirror_clamp_to_edge that provides a texture clamping mode also used by Direct3D.Extensions released alongside the OpenGL 4.4 specification include:

Bindless Texture Extension (GL_ARB_bindless_texture)
Shaders can now access an effectively unlimited number of texture and image resources directly by virtual addresses. This bindless texture approach avoids the application overhead due to explicitly binding a small window of accessible textures. Ray tracing and global illumination algorithms are faster and simpler with unfettered access to a virtual world’s entire texture set.

Sparse Texture Extension (GL_ARB_sparse_texture)
Enables handling of huge textures that are much larger than the GPUs physical memory by allowing an

Mozilla Releases Firefox 22 with Support 3D Game, Video Call, and File Sharing

Mozilla has just released Firefox 22 browser with integrated support for 3D gaming, video calls, and file sharing. Thus, application developers can create applications that can run in the browser without the need to use third party plugins.
Firefox has aged 15 years, and according to vice president of Firefox Engineering, Johnathan Nightingale, the browser has changed in terms of how people use it. Browser applications have been the key to connect to the internet and used to locate information and software, and therefore the present browser must be built for the needs of people and how they use them more quickly.
Firefox 22 to wear a subset of JavaScript called asm.js through OdinMonkey to run 3D applications and processors directly from web.Untuk chat foro, Firefox 22 is added Web Real-Time Communications (WebRTC), which can be used both video calling application developers from PC or mobile browser. Mozilla has been expressed at the MWC in 2013 and this technology can be integrated seamlessly with mobile phones so that users can make voice calls and file sharing file. In addition to Firefox, Google also integrate it in the Chrome browser since October 2012 last year. One service that supports WebRTC is Tokbox.
To highlight the potential of this feature, Mozilla has made ​​a 3D game called BananaBread. This game utilizing WebRTC, asm.js, WebGL, and Emscripten.
via The Next Web

Google Release Android 4.3 with New Features

After a long awaited, Google finally released the latest Android operating system version 4.3, which still carries the code name Jelly Bean, Wednesday (07/24/2013). Android 4.3 comes with several new features.

As quoted from The Verge, Google adds multi-user settings in Android 4.3. It is useful to restrict the use and application of a profile feature.

Director of Product Management at Android, Hugo Barra explained, parents can set their children can not open content not suitable for children.

Additionally, Google adds Bluetooth Smart claimed could save battery consumption. Android 4.3 also supports OpenGL ES 3.0 that improves the quality of the graphics for gaming, including 3D.

Starting today, Android 4.3 can be downloaded over-the-air by the users of the Samsung Galaxy Nexus, LG Nexus 4, Nexus 7 Asus tablet is also the first generation and Samsung Nexus 10.

Google Chromecast Announced, Change Ordinary So Smart TV

In addition to announcing second-generation Nexus 7 and Android 4.3 Jelly Bean, Google today also announced the existence of which is a smart Chromecast shaped dongle instead Nexus Q. Chromecast shaped stick that utilizes an HDMI port on the television to run Chrome OS version is simple and will integrate several Google services such as YouTube, Google Play Music, Play Video, and Google Chrome both applications in mobile, tablet or laptop.
Chromecast works like a second screen. If someone such as looking at a YouTube video on your phone, laptop, or tablet and then touch the button Chromecast available in the Chrome browser, it is a television that has been installed sticks Chromecast will play the video as it is displayed on the phone screen. In addition Chromecast can also accept input from a variety of devices that will be played simultaneously turns, for example, from cell phones and play video from laptop playing a movie. Besides Google Play Music and Video, Netflix app (in the U.S.) are also supported by this Chromecast.
Chromecast control can be done from the phone, for example, adjust the volume or change the video played. Chromecast also allows playback of video ‘removed’ from the phone to the tablet and will be passed from the last time the video is played.
Google Chromecast also able to play music like a DJ. This service can access Google Play Music and Pandora. In addition it can also display tabs Chromecast Chrome on television to view photos or videos on Google+ or Vimeo for example. Chromecast also create opportunities through Google Cast application development SDK for Android, iOS and Chrome. To run Chromecast, the television must have an HDMI port plugs plus a blank as a resource for Chromecast mealui microUSB.
Chromecast can be purchased at a price of just USD 35 and is now becoming available in the United States. In addition Chromecast can also be purchased from the Play Store, Amazon.com and BestBuy.com. Currently no information when this gadget will be available in Indonesia.