Razzmaster is an open source tool to configure a Raspberry Pi over the network. It's built with NodeJS and based on PiFinder.
8 Jun 2016
It’s been roughly 3 years since DDraceNetwork (DDNet) started in the summer of 2013. Last year I wrote a non-technical History of DDNet. Today in this post we will dive into the technical side of what makes DDNet run. For the uninitiated, DDNet is an open-source modification of Teeworlds, a retro multiplayer shooter. DDNet is a game in which you,…
7 Jun 2016
Recently I put the maximum amount of cash into my IRA account. Since stock prices jump up and down all the time, I wondered whether the current price would be the best one to buy the stock at. In particular, I'm not withdrawing money from my IRA for the better part of 40 years, so […]
5 Jun 2016
Introduction to the Introduction (Meta-Introduction) Wikipedia gives us a nice description of metaprogramming: Metaprogramming is the writing of computer programs with the ability to treat programs as their data. It means that a program could be designed to read, generate, analyse and/or transform other programs, and even modify itself while running. In this article we will explore Nim’s metaprogramming capabilities,…
4 Jun 2016
Being an open source software maintainer is hard. The following post is geared towards maintainers and not contributors. If you are a new contributor to open source I would stop reading now because I don’t want you to get the wrong idea or discourage you. Tons of patch requests get merged per day, but this is going to focus on…
3 Jun 2016
The The workshop will be held November 18, 2016 in Seattle. It will be held in conjunction with . (Foundations of Software Engineering ACM conference) If you've done something like We'd like to encourage people new to speaking to apply, as well as those from underrepresented groups in tech. We'd love to hear from some new voices and new companies…
2 Jun 2016
The expectations for IoT expands day by day. Is the Internet ready? It provides little in terms of QoS, reliability, security and availability.
Last week I attended . It was my first time attending a DevOpsDays event and it was quite interesting. It was held at CBC's Glenn Gould studios which is a quick walk from the Toronto Island airport where I landed after an hour flight from Ottawa. This blog post is an overview of some of the talks at the conference.…
1 Jun 2016
Build an IoT smart parking meter that updates vacant spaces and provides automatic billing upon leaving in real time using IBM Bluemix and PubNub.
Open source software Tileserver.php developed by Klokan Technologies helps NOAA pilots to acquire new aerial imagery.
With Java 8 now in the mainstream, Scala and Clojure are no longer the only choices to develop readable, functional code for big data technology on the JVM. In this post we see how SoundCloud is leveraging Apache Crunch and the new Crunch Lambda module to do the high-volume data processing tasks which are essential at early stages in our…
Accessibility is often solely discussed in terms of people with disabilities, but in truth, it's something that benefits the majority (if not all) of your users.
31 May 2016
One more thing… It’s been awhile since we launched a whole new product at Fog Creek Software (the last one was Trello, and that’s doing pretty well).… Read more "Introducing HyperDev"
Ruby was created in 1993 and has come a long way. The preferred style of coding has changed quite a lot and solid best practice has emerged (though, as always, one size does not fit all). At the same time, Ruby's tool support could be better, the language is still too complex. Maybe, the time has come to remove some…
30 May 2016
Double-quoted strings can not only be used with interpolation, #{}, they also support various escape sequences, which are initiated with \. Escape sequences allow you to embed raw byte and codepoint values. Furthermore, there are shortcuts for common formatting and control characters. Byte Sequences There are two basic ways in which you can specify raw bytes to embed: \x00 (hexadecimal)…
This post is a follow up to my previous blog post about word size. Three C/C++ programmers walk into a bar. One argues that sizeof(void*) is equivalent to sizeof(long), one argues that sizeof(void*) is equivalent to sizeof(int), and the third argues it’s sizeof(long long). Simultaneously, they’re all right, but they’re also all wrong (and need a lesson about portable C…
29 May 2016
Ruby has more than one way to access additional information about the most recent regex match, like captured groups. One way is using the special variables $`, $&, $', $1 - $9, $+, and also in the MatchData object $~. They become available after using a method that matched a regex, or when the method supports a block, they are…
28 May 2016
Ruby's big DATA constant does more than you might expect! Everything after the __END__ keyword (at the beginning of the line) is not interpreted as Ruby, but can be retrieved with the big¹ DATA constant.² This is an example big-data.rb script: p DATA.read __END__ big data Big DATA is a File object, which you can read. The example will output…
In this post, we start exploring exceptions. We set up an interrupt descriptor table and add handler functions. At the end of this post, our kernel will be able to catch divide-by-zero faults. As always, the complete source code is on GitHub. Please file issues for any problems, questions, or improvement suggestions. There is also a comment section at the…
27 May 2016
A common myth in SQL is the idea that correlated subqueries are evil and slow. For example, this query here: It “forces” the database engine to run a nested loop of the form (in pseudo code): So, for every actor, collect all the corresponding film_actors and count them. This will produce the number of films … Continue reading Correlated Subqueries…
(I'm omitting the many, many, astroturf posts - "Why X is Better than Twilio", "Why I'm Ditching Twilio for X" - and comments from employees at competitors between 2010 and 2014.) Twilio Raises $12m Series B "Can something like Twilio really become a $100m+ company? I hope so but my ignorance blinkers me to how […]
Ruby supports magic comments (interpreter instructions) at the top of the source file, mostly known for setting a source files' Encoding. This is the most common use case, but there is more you can do. Source File Encoding The default encoding of string literals in a Ruby file is UTF-8: p "".encoding # => #<Encoding:UTF-8> You can change it like…
26 May 2016
Our updated Java SDK has a new architecture (like the iOS v4 SDKs), and can be used on any Java platform including Java SE, Java EE, and Android.
This is the story about an error that caused our tests to fail maybe one out of one hundred builds. Recently we figured out why this happened and deployed code to fix it. The Problem I've been fighting slow test times in Javascript and Sails since pretty much the day I started at Shyp. We […]
Add-on tools are increasingly defining the shape of accountancy firm systems. Find out how cloud-based add-ons are now becoming staple tools for the accountant.
This tutorial shows how to get started with Arduino using Node.js, and prototyping an Internet of Things application using PubNub’s JavaScript APIs.
%a %A %b %B %c %C %d %D %e %F %g %G %h %H %I %j %k %l %L %m %M %n %N %p %P %Q %r %R %s %S %t %T %u %U %v %V %w %W %x %X %y %Y %z %Z %+ %% - _ 0 ^ # : Date and time formatting is traditionally done with…
25 May 2016
We’d like to welcome the latest set of team members to OpenAI (and we’re still hiring!)
How come that Ruby has two ASCII encodings? Encoding.name_list.grep(/ASCII/) # => ["ASCII-8BIT", "US-ASCII"] Which one is the normal one you should use for ASCII? Aliases ASCII-8BIT US-ASCII BINARY ASCII ANSI_X3.4-1968 646 So, US-ASCII is aliased to ASCII, but then what is ASCII-8BIT for? Encodings' RDoc has some help: Encoding::ASCII_8BIT is a special encoding that is usually used for a byte…
How startups to large enterprises, are using serverless to develop and deploy serverless, event-driven architectures on AWS Lambda
24 May 2016
Shyam shows you how to track currency rates in real time with PubNub and CurrencyLayer.
Another of Ruby's idiosyncrasies is equalness. It's not too complicated, but naming is an issue here. Four Concepts of Equalness equal? Object Identity Comparison This one is easy. Two objects should be considered identical. Think: x.object_id == y.object_id == Equality Equality This is the usual method to care about. Two objects should be treated the same. If the class supports…
This is a dummy post with typography
23 May 2016
Similar to metaprogramming, Ruby's type conversion system has evolved over time. While the result functions, it is also a little inconsistent and suffers from poor naming. Let's put things in perspective: Implicit and Explicit Conversion Ruby objects are usually converted to other classes/types using to_* functions. For example, converting the String "42" to a Float is done with to_f: "42".to_f…
At Jane Street, we have always been heavy users of pre-processors, first with camlp4 and now ppx. Pre-processing makes the infrastructure a bit more complex, but it save us a lot of time by taking care of a lot of tedious boilerplate code and in some case makes the code a bit prettier.
22 May 2016
Generated with Ruby 3.2.2, including RubyGems and DidYouMean: Object (Class) ├─ARGF (ARGF.class) ├─ARGV (Array) ├─ArgumentError (Class) ├─Array (Class) ├─BasicObject (Class) │ └─BasicObject → BasicObject ├─Binding (Class) ├─CROSS_COMPILING (NilClass) ├─Class (Class) ├─ClosedQueueError (Class) ├─Comparable (Module) ├─Complex (Class) │ └─I (Complex) ├─ConditionVariable (Class) ├─Data (Class) ├─DidYouMean (Module) │ ├─ClassNameChecker (Class) │ ├─Correctable (Module) │ ├─Formatter (Class) │ ├─Jaro
21 May 2016
It is less common, but similar to methods, constants have a visibility attached to them. You have the choice between private and public, and you can also mark a constant deprecated! Like with methods, the default visibility of a constant is public. Unlike methods, which have a lot of associated methods for metaprogramming, working with constants is easier: Module.methods.grep /const/…
20 May 2016
How many bytes (= ASCII characters) of Ruby code does it take to generate a SHA 256 hash sum of STDIN? 500 Bytes¹ q,z=[3,2].map{|t|i=l=1;(2..330).select{i-1<(l*=i)%i+=1}.map{|e|(e**t**-1*X=2**32).to_i&X-=1}} s=proc{|n,*m|a=0 m.map{|e|a^=n>>e|n<<32-e} a} i=$<.read.b<<128 (i+"\0"*(56.-(w=i.size)%64)+[~-w*8].pack('Q>')).gsub(/.{64}/m){w=$&.unpack'N*' y=z 64.times{|i|i>15&&w[i]=w[i-16]+(s[v=w[i-15],7,18]^v>>3)+w[i-7]+(s[w[i-2],17,19]^w[i-2]>>10)&X f=y[7]+s[u=y[4],6,11,25]+(u&y[5]^~u&y[6])+q[i]+w[i]
19 May 2016
What is Load Testing and Why Should I Care? Somewhere between the disciplines of Dev Operations, Database Management, Software Design and Testing, there’s a Venn diagram where at its crunchy, peanut-butter filled center lies the discipline of performance testing. Herein lies the performant (sic) Which is to say, professional performance testers have a very specific […]
Some words should not be chosen as identifiers for variables, parameters and methods in Ruby, because they clash with core methods or keywords. As long as you do not define a method with the name of a keyword, Ruby will not complain. Still, it is often better to avoid naming things like existing methods. It carries potential for future bugs…
This post for Smashing Magazine looks at one of the most popular image effects, grayscale, to compare its implementation in HTML canvas, SVG, CSS filters, and CSS blend modes.
18 May 2016
If that title left you feeling a bit indignant, this post is just for you. After consulting with my Nth company running a content site and watching them struggle to design, develop, and maintain their own CMS, I think it's time to admit this: I'm not better than WordPress. None
%a %A %b %B %c %d %e %E %f %g %G %i %o %p %s %u %x %X %% 0 $ # + - * space Ruby comes with a structured alternative to classic string interpolation: This episode will explore format strings, also known as the sprintf syntax. Recall the normal way of interpolating variables into a string: v =…
17 May 2016
Ruby was initially designed to be a successor of the Perl programming language, which also means that it inherited a lot of Perl's expressiveness. To celebrate this, the TRIC¹ contest was invented: Write the most Transcendental, Imbroglio Ruby program! Illustrate some of the subtleties (and design issues) of Ruby! Show the robustness and portability of Ruby interpreters! Stabilize the spec…
16 May 2016
I’m just going to jump right into the definitions and rigor, so if you haven’t read the previous post motivating the singular value decomposition, go back and do that first. This post will be theorem, proof, algorithm, data. The data set we test on is a thousand-story CNN news data set. All of the data, code, and examples used in…
Ruby was initially designed to be a successor of the Perl programming language, which also means that it inherited a lot of Perl's expressiveness. To celebrate this, the TRIC¹ contest was invented: Write the most Transcendental, Imbroglio Ruby program! Illustrate some of the subtleties (and design issues) of Ruby! Show the robustness and portability of Ruby interpreters! Stabilize the spec…
15 May 2016
Development is hard. But communication is even harder – especially across departments and continents. Our SI Process Hacks series will highlight a few simple hacks we wish we had known right from the start! The problem We deploy many times a day – bugfixes, feature improvements, new options, changes in user flows etc. As a […]
There is nothing easier than parsing the command-line arguments given to your Ruby program: It is an array found in the special variable $*: $ ruby -e 'p $*' -- some command line --arguments ["some", "command", "line", "--arguments"] That is Too Easy! The trouble begins with supporting common arguments conventions, like GNU's, and combining it with Ruby DSLs. This has…
Recently, there some was some confusion between myself and a coworker over the definition of a “word.” I’m currently working on a blog post about data alignment and figured it would be good to clarify some things now, that we can refer to later. Having studied computer engineering and being quite fond of processor design, when I think of a…
14 May 2016
Today, another snippet from the category don't try at home, might have unforeseeable consequences! Constant assignment¹ is not permanent in Ruby, so it is perfectly valid to do this: module A end class B def initialize p 42 end end A, B = B, A # warning: already initialized constant A # warning: previous definition of A was here #…
13 May 2016
or "How I learned to stop worrying and love all browsers the same as long as they came out kinda recently" Time and time again I've seen companies ignore smaller audiences that use their product because those audiences are not the main/target/primary audience. At a recent job they
About a month ago I set up statistics for the official DDNet servers. My motivations for this are: Monitor the servers more easily Get notified about server problems Have nice graphs to look at The choices for the software used are mainly made to keep resource usage low, a general principle used for DDNet since we run on cheap VPSes…
We're delighted to have Francis Kang and Connor Sheehan join the Mozilla release engineering team as summer interns. Francis is studying at the University of Toronto while Connor attends McMaster University in Hamilton, Ontario. We'll have another intern (Anthony) join us later on in the summer who will be working from our San Francisco office. Francis and Connor will be…
In case you have wondered, what this top-level constant TOPLEVEL_BINDING is all about: It is, as its name suggest, the Binding of your script's main scope: a = 42 p binding.local_variable_defined?(:a) # => true p TOPLEVEL_BINDING.local_variable_defined?(:a) # => true def example_method p binding.local_variable_defined?(:a) # => false p TOPLEVEL_BINDING.local_variable_defined?(:a) # => true end example_method What is a practical use of it?…
We previously introduced new playlist representations. The compact representation returns only the playlist itself without any of the tracks…
12 May 2016
Clever Badges makes it easy for K-2 students to log into applications. As with any new feature, we wanted to understand and address any potential security risks before we launched Clever Badges to our users. If we built Clever Badges without thinking deeply about security, it would have been easy to introduce a vulnerability and […] The post Clever Badges…
Shyam builds an interactive smart traffic system for emergency vehicles using IBM BlueMix and PubNub's DSN
We’re excited to announce another very interesting guest post on the jOOQ Blog by John Mcclean from AOL. AOL is a global digital media and technology company, founded in 1985 and once known as America Online, AOL is now part of the Verizon Group. AOL focuses on four areas – video, mobile, ad technology and … Continue reading Cyclops-react Organises…
Mark Wickersham FCA, the author of 'Effective Pricing for Accountants', shows how accounting firms can make the transition from being paid in arrears to be paid upfront.
What happens when you invoke the Ruby interpreter, even before it executes your first line of code? Actually a lot! A few observations: Initial Load Path These are all locations you can Kernel#require from: $ ruby --disable-all -e 'puts $LOAD_PATH.map{ |path| "- #{path}" }' …/ruby-3.2.0/lib/ruby/site_ruby/3.2.0 …/ruby-3.2.0/lib/ruby/site_ruby/3.2.0/x86_64-linux …/ruby-3.2.0/lib/ruby/site_ruby …/ruby-3.2.0/lib/ruby/vendor_ruby/3.2.0 …/ruby-3.2.0/lib/ruby/vendor_ruby/3.2.0/x86_64-linux …/ruby-3.2.
11 May 2016
At some point when working with Ruby, you come across this mysterious RbConfig constant. A typical scenario is that you want to check which operating system your current program is executed on. You can do this with RbConfig::CONFIG['host_os'] or RbConfig::CONFIG['arch'], see the RubyGems source for an advanced example! The Ruby Configuration is a collection of low-level information about your operating…
10 May 2016
Solutions to common IoT pain points to make prototyping simpler using PubNub data stream network.
This is a quick post to describe how you can use test fixtures, data files on disk, with the Go testing package. Using fixtures with the Go testing package is quite straight forward because of two convenience features built into the go tool. First, when you run go test, for each package in scope, the […]
Ruby's Regexp engine has a powerful feature built in: It can match for Unicode character properties. But what exactly are properties you can match for? The Unicode consortium not only assigns all codepoints, it also publishes additional data about their assigned characters. When searching through a string, Ruby allows you to utilize some of this extra knowledge. Property Regexp Syntax…
9 May 2016
Java 8 introduced JSR-308, which added new annotation capabilities to the Java language. Most importantly: Type annotations. It is now possible to design monsters like the below: The code displayed in that tweet really compiles. Every type can be annotated now, in order to enhance the type system in any custom way. Why, you may … Continue reading JSR-308 and…
When exactly don't you have to :"escape" a Ruby symbol? Because this question is somehow related to the Ruby interpreter's internal usage of symbols, the rules are not the most obvious ones: : + Identifier¹, optionally appended by !, ?, or = (→ methods) :@ + Identifier¹ (→ instance variables) :@@ + Identifier¹ (→ class variables) :$ + Identifier¹ (→…
8 May 2016
A quick reminder that number literals in Ruby can be pretty fancy! Example Evaluates To Class Purpose 0x10 16 Integer Integers in hexadecimal (0-16) format 0o10¹ 8 Integer Integers in octal (0-8) format 0b10 2 Integer Integers in binary (0-1) format 1e1000 Float::INFINITY Float Floats in exponential notation 1i (0+1i)² Complex Shorthand for creating complex numbers 3/6r (1/2)² Rational Shorthand…
7 May 2016
The challenge: Scaling Our dev team has reached a quite impressive size these days! Unfortunately I just don’t scale to this size. I can’t possibly conduct 1:1s, listen to feedback, give feedback and help people grow in a flat team of 12 people. While I don’t code anymore these days, and have assigned most project […]
In general, Ruby's reflection capabilities are pretty powerful, although not always logical. However, when reflecting on a method's (or proc's) usage, you are sometimes stuck with sad methods. Sad methods only work for code, that is written in Ruby itself. And Ruby itself (official MRI) is written in C, which limits such methods' usefulness quite a lot. This is an…
Atom Babel plugin doesn't highlight variables in ES6 (ES2015) template strings. You'll need to add this snippet to your Atom's style.less atom-text-editor::shadow .variable.js { color: #F8F8F2; } In general, you can just inspect stuff in Atom, find out what classes element are using, and then style it via CSS (LESS). Just don't forget to add atom-text-editor::shadow before your rules. If…
6 May 2016
Programming languages have been, and will always be categorized by their typing system. Naturally, large parts of the Ruby community (including myself) have some kind of aversion against static typing. But while Ruby goes down the route of being dynamically typed that does not mean that you are not allowed to use some form of types! 2020 update: Ruby 3.0…
5 May 2016
ERB stands for <%# Embedded Ruby %> and is the templating engine included in the Ruby Standard Library. While there are more recent gems that provide a better templating experience (see tilt for an abstraction, and erubis/erbse for an updated ERB), it is also convenient to have basic support directly in the standard library. However, it does not directly support…
4 May 2016
Moving On As of January I am no longer with Clay. I've learned so much over the past year and a half, more so than I could have ever imagined. Every minute working on Clay was a joy, and without a doubt one of the most fulfilling experiences of my life. As for my next adventure, stay tuned. Lesson 1:…
Is it a hash? Or is it a hash? hash = {"Idiosyncratic" => "Ruby"} hash["Idiosyncratic"] # => "Ruby" hash.compare_by_identity idiosyncratic_in_variable = "Idiosyncratic" hash[idiosyncratic_in_variable] # => nil hash["Idiosyncratic"] # => "Ruby" Hash#compare_by_identity changes the semantics of what is equal in a hash and what not. Only if exact the same object is passed in, the value will be retrieved. Please note:…
New version of the open-source project TileServer-PHP has just been released with many cool new features.
This post will walk you through setting up an accessibility testing dashboard from A to Z. Let's make the Internet more better together.
3 May 2016
A smart network helps build always-on applications by providing a secure reliable real-time way to connect devices for IoT.
I was hired in December 2014 as the sixth engineer at Shyp. Shyp runs Node.js on the server. It's been a pretty frustrating journey, and I wanted to share some of the experiences we've had. There are no hot takes about the learning curve, or "why are there so many frameworks" in this post. Initially […]
RubyGems is bundled with core Ruby since 1.9, which was first released in 2007. As long as you do not run Ruby with the $ ruby --disable-gems flag, it is available to you without having to install anything. This also means that you can use some of RubyGems' support utilities for free! 1) Current Platform Info Gem::Platform.local.os # => "linux"…
This is #3 in a very long series of posts on Stack Overflow’s architecture. Stack Overflow: The Hardware - 2016 Edition We’ve talked about Stack Overflow’s architecture and the hardware behind it. The next most requested topic was Deployment. How do we get code a developer (or some random stranger) writes into production? Let’s break it down. Keep in mind…
2 May 2016
Create real-time graphs without code! With PubNub’s Project EON you can create real-time graphs that update when you publish data over PubNub.
I recently participated in Softwareskills’ Liar’s Dice competition, and since people have expressed interest to hear about how I managed to win, I decided to summarize the process and results. As I prize I got 500SEK at Teknikmagasinet (Swedish store), a USB memory and this nice piece of paper :) Liar’s Dice and the Competition […]
Ruby's syntax is so expressive — it utilizes every printable, non-alphanumeric ASCII character as much as it cans. Sometimes, this can be confusing for beginners. The next sections show 4+ different meanings of every portrayed single character (not counting different meaning as custom string delimiter or meaning within a regex): Question Mark (4 Syntactical Meanings) The question mark is a…
1 May 2016
Containers are all the rage right now. At the very core of containers are the same Linux primitives that are also used to create application sandboxes. The most common sandbox you may be familiar with is the Chrome sandbox. You can read in detail about the Chrome sandbox here: chromium.googlesource.com/chromium/src/+/master/docs/linux_sandboxing.md. The relevant aspect for this article is the fact it…
Introduction This is a bit different from my usual posts (well apart from my write up of hacking at Odessa) in that it is a log of how I managed to get LibBi (Library for Bayesian Inference) to run on my MacBook and then not totally satisfactorily (as you will see if you read on). … Continue reading Fun with…
I remember when I was in university (a long time ago) and learning systems programming, I believed that the only “real” languages were Assembly and C. And Pascal was - how to put it nicely - a very high-level language used by application developers who didn’t want to know what was going on under the hood. Little did I know…
If you don't like errors in your code, you will have to fix them. This handy list of Ruby's errors will hopefully help you do so! (And welcome back for the second season of Idiosyncratic Ruby!) Built-in Exceptions Exception Thrown by core Ruby when Remarks NoMemoryError The Ruby interpreter could not allocate the required memory "Idiosyncratic" * 100_000_000_000 ScriptError -…
29 Apr 2016
We were proud to once again be a sponsor at last week’s JSUnconf in Hamburg. The conference, that centers around the latest and greatest in JavaScript, is truly the “unconference” in both content and overall execution. It’s a completely non-profit conference built for the community, by the community. As the event grows year over year, […]
28 Apr 2016
This Chat App Best Practice Guide includes basic chat features, app UX improvement, as well as secure chat using AES cryptography.
Bugs are great learning opportunities. So how do we make sure we learn as much as possible from the bugs we fix? A method I have used for more than 13 years now is to write down a short description of … Continue reading →
27 Apr 2016
Today we are announcing an important change to our Conversations API service: On April 30, 2017 service will end for Conversations API versions 5.2 and 5.3 By deprecating older versions of our API service, we can refocus our energies on the current and future API services, which we feel offer the most benefits to our […]
We’re releasing the public beta of OpenAI Gym, a toolkit for developing and comparing reinforcement learning (RL) algorithms. It consists of a growing suite of environments (from simulated robots to Atari games), and a site for comparing and reproducing results.
26 Apr 2016
This post is an extract from my presentation at the recent GoCon spring conference in Tokyo, Japan. Errors are just values I’ve spent a lot of time thinking about the best way to handle errors in Go programs. I really wanted there to be a single way to do error handling, something that we could teach all […]
We have two more team updates.
25 Apr 2016
Listicles like these do work – not only do they attract attention, if the content is also valuable (and in this case it is, trust me), the article format can be extremely entertaining. This article will bring you 10 SQL tricks that many of you might not have thought were possible. The article is a … Continue reading 10 SQL…
22 Apr 2016
As an application developer I get to use many third party code to integrate it into my current project. I want to share a checklist of things a user of an SDK really appreciates. Documentation This is the most important part of any SDK, be it open source or closed source. Users don’t need to understand your code, or learn…
21 Apr 2016
D3 is great at data visualizations, but it manipulates the DOM directly to display that data. Rendering DOM elements is where React shines. It uses a virtual representation of the DOM (virtual DOM) and a super performant diffing algorithm in order to determine the fastest way to update the DOM. We want to leverage React’s highly efficient, declarative, and reusable…
A very interesting question was posted to Stack Overflow and reddit just recently about Java generics. Consider the following method: While the unsafe cast seems a bit wonky, and you might guess there’s something wrong here, you can still go ahead and compile the following assignment in Java 8: This is obviously wrong, because Integer … Continue reading The Parameterless…