In the modern day, myself and many other developers working on libre software have been exposed to a protocol design philosophy that emphasizes safety and correctness. That philosophy can be summarized with these goals:
- Simplicity: the protocol must be simple to implement. It is more important for the protocol to be simple than the backend implementation.
- Correctness: the protocol must be verifiably correct. Incorrect behavior is simply not allowed.
- Safety: the protocol must be designed in a way that is safe. Behavior and functionality which risks safety is considered incorrect.
- Completeness: the protocol must cover as many situations as is practical. All reasonably expected cases must be covered. Simplicity is not a valid excuse to reduce completeness.
Friends, I am now at least in this respect a rare breed: an Elixir programmer who has never written Ruby.
I was never a professional Erlang programmer. I cut my teeth on Python and began working in Python, but Erlang was the language I learned after that and the one that I looked for excuses to write in (in addition to Nim, which would come a little later, but which I would also be able to finagle into production at MakeSpace).
So here was my impression of Elixir for the first several years of my passing acquaintance with it: it’s Erlang with Ruby syntax. I had never ended up writing any Ruby, and I was already happy with Erlang and its syntax. So I had a fairly simplistic understanding of the Elixir language and the roots of its popularity and it didn’t seem that there was anything of value to me.
Over the past decade, many attackers have exploited design weaknesses in the Internet’s global routing system. Most commonly, the Border Gateway Protocol (BGP) is abused to divert gigabytes, or possibly even petabytes, of high-value traffic to ISPs inside Russia or China, sometimes for years at a time, so that the data can be analyzed or manipulated. Other times, attackers have used BGP hijackings more surgically to achieve specific aims, such as stealing cryptocurrency or regaining control of computers monitored in a police investigation.
Late last month came word of a new scheme. In one of the most sophisticated uses of BGP hijacking yet, criminals used the technique to generate $29 million in fraudulent ad revenue, in part by taking control of IP addresses belonging to the US Air Force and other reputable organizations.
In all, “3ve,” as researchers dubbed the ad fraud gang, used BGP attacks to hijack more than 1.5 million IP addresses over a 12-month span beginning in April 2017. The hijacking was notable for the precision and sophistication of the attackers, who clearly had experience with BGP—and a huge amount of patience.
The Internet is the most important tool in our everyday lives. It’s how we consume media, conversate with friends and family, interact with colleagues, learn new skills, and handle our finances. However, the internet that we know and love has flaws. The biggest of those flaws is that the information on it is mostly centralized. This means that the information we access every day is held on servers that are under the control of a central company.
Flutter, Google’s UI toolkit for building mobile Android and iOS applications, hit its version 1.0 release today. In addition, Google also today announced a set of new third-party integrations with the likes of Square and others, as well as a couple of new features that make it easier to integrate Flutter with existing applications.
Sources claim that Microsoft is abandoning EdgeHTML and building a Blink/Chromium based browser. This might be a good business decision for Microsoft but it is a disastrous advancement for the Web. In this short post, I will make a case for why we’re loosing the Web and how in a Blink, all we love about our Web will be owned and controlled by a single entity.
This article focuses on the main similarities and differences between Swift and Kotlin, including implementation, style, syntax and other important details.
Swift and Kotlin have taken the developer community by storm, helping to increase the number of developers for both platforms. Both languages rapidly gained adoption due to their easy syntax, simple way of writing and the modern techniques and features they bring to the table.
At its core, Flutter is a standalone, binary executable; making it a game-changer not only on mobile, but on desktop as well.
Writing once and deploying natively on Android, iOS, Windows, Mac and Linux and additionally sharing all the business logic to the web (using AngularDart) is a big deal.
Let’s explore this idea!
The first area to take a look at is Haiku’s latest feature in its Beta release: packaging.
Packages (but not just packages!)
Reading just ‘packages’ might evoke merely running a package manager on Gnu/Linux, etc. and while Haiku can do that, it’s far more.
As I mentioned in the Haiku Beta review, it was the first official release to feature package management. Best I can give anyone new to Haiku a mental picture of it is this: think of PackageFS of being like (but not the same as) having the old Slax 6 modules system running, along with all the usual ‘package’ tools to go with it.
A recap of it can be summarized in five quick points (versatile command-line packaging tools (as you might expect), the HaikuDepot and software updater, package and/or system states, the PackageFS, (where all packages are mounted seamlessly and mesh at startup), and as a side effect of the FS, a gentle layer of safety to the system.)