Categories
3D programming

[github] kosua20/herebedragons

Someone implemented the same 3D scene using different API/frameworks. Interesting from a learning point of view. But as someone commented in HN, some implementations could be made to look the same given enough effort.

This repository contains multiple implementations of the same 3D scene, using different APIs and frameworks on various platforms. The goal is to provide a comparison between multiple rendering methods. This is inherently biased due to the variety of algorithms used and available CPU/GPU configurations, but can hopefully still provide interesting insights on 3D rendering.

[github] kosua20/herebedragons

Categories
programming

Starbucks should really make their APIs public. – Tendigi

See how closed API reverse engineering typically happens.

Now that I was able to sign and fingerprint my login requests, I combined everything into a small Node.js module that allows some basic Starbucks API functions. The good news is that it’s (mostly) hosted here on GitHub!

Voilà! Programmatic coffee.

Source: Starbucks should really make their APIs public. – Tendigi

Categories
programming sysadmin

AWS and Azure in Plain English

If you are not an architect-level user of AWS you will probably be lost in the ever growing list of AWS services. The non-obvious names (Cognito, Athena, anyone?) for the services doesn’t help. Now someone is attempting to provide a – sometimes tongue-in-cheek – explanation of those services. Well, it’s not exactly plain english, but good attempt anyway. An Azure version is also available.

  1. AWS in Plain English
  2. Azure in Plain English
Categories
programming

Programming bug costs Citigroup $7m after legit transactions mistaken for test data for 15 years

Like I always say, all (non-trivial) software have bugs. It’s a matter of when and if they are discovered. If you’re lucky, the bugs may only result in financial loss. In more serious cases, safety and security can be compromised.

When the system was introduced in the mid-1990s, the program code filtered out any transactions that were given three-digit branch codes from 089 to 100 and used those prefixes for testing purposes.

But in 1998, the company started using alphanumeric branch codes as it expanded its business. Among them were the codes 10B, 10C and so on, which the system treated as being within the excluded range, and so their transactions were removed from any reports sent to the SEC.

Source: Programming bug costs Citigroup $7m after legit transactions mistaken for test data for 15 years

Categories
programming

OneCore to rule them all: How Windows Everywhere finally happened

A long-ish article on the history of Windows and a few behind the scenes look at the technology powering the various generations of Windows. The creation of OneCore explains why Microsoft is able to deploy Windows 10 to such a wide range of platforms, from Raspberry Pi, to XBox, to servers and even Hololens.

Microsoft promised developers that Windows would run anywhere. This summer, it finally will.

Source: OneCore to rule them all: How Windows Everywhere finally happened

Categories
programming

Soon We Won’t Program Computers. We’ll Train Them Like Dogs

A sensational title for sure. I, for one, am not convinced that progress in AI will lead to end of code. Techniques like ML will just become another tool, albeit a powerful one, in our toolbox. Formulating the right problem in the first place is something even most humans can’t do very well.

Welcome to the new world of artificial intelligence. Soon, we won’t program computers. We’ll train them. Like dolphins. Or dogs. Or humans.

Source: Soon We Won’t Program Computers. We’ll Train Them Like Dogs

Categories
programming

Oracle deprecates the Java browser plugin, prepares for its demise

It’s been a long time coming. Goodbye Java (plugin). That reminds me of those Java applets that I wrote in a different era. Now if I could only find and convert (rewrite) them to HTML5…

It will be removed some time after the release of Java 9.

Source: Oracle deprecates the Java browser plugin, prepares for its demise

Categories
3D programming

What DirectX 12 means for gamers and developers – PC Gamer

Abstraction is good for developers, right? Why else would you be programming in high-level languages like C++, Go, Python instead of assembly language? Well, it turns out the situation is not so straightforward for game programming.

In terms of graphics programming, after years of high-level graphics API, the trend has been to go as close to metal as possible (Apple’s Metal, OpenGL reborned as Vulkan, and now DX12). This article does a very good explanation of why this is happening.

In a way, this is a manifestation of the break-down of Moore’s law – at least in terms of clock-speed improvements. Games are among the most demanding type of applications in terms of performance, and for years we have been riding along the wave of “free” performance thanks to Moore’s law. In case you haven’t noticed, the party has ended. That, combined with increasing performance of the GPU, means we can no longer get free performance from CPU alone. Someone has to do the work to manage the GPU+CPU dichotomy and ensure that the “pipeline is full” so as to speak. Thankfully game engines are now taking on that role, but the graphics API needs to allow them to have full access to the low level capabilities.

Hint: it’s exciting. Expert Peter “Durante” Thoman takes a technical deep dive into the promising potential of DX12.

Source: What DirectX 12 means for gamers and developers – PC Gamer

Categories
programming security

Cracking JXcore… Again | markhaase.com

JXcore butchered. Twice. Ouch.

Besides being quite easy to reverse engineer, the central flaw here is that they still don’t obfuscate your source code! It’s sitting there in its original form, ready for easy extraction by anybody that you distribute your application to. I mentioned obfuscation in my previous article on JXcore and I’ll repeat that assertion here: obfuscation is the only reasonable protection to defend high level source code from reverse engineering. Nothing can prevent reverse engineering, but good obfuscation can raise the cost substantially.

Source: Cracking JXcore… Again | markhaase.com

Categories
programming

Main is usually a function. So then when is it not?

A break from the usual cybersecurity stories. Here’s a nice one on obfuscated C, if you can call it that.

$ cat test.c
const int main[] = {
-443987883, 440, 113408, -1922629632,
4149, 899584, 84869120, 15544,
266023168, 1818576901, 1461743468, 1684828783,
-1017312735
};
$ gcc test.c -o a.out
$ ./a.out
Hello World!

Yes I tested and it works. Want to know how it works? Here’s the link:
Main is usually a function. So then when is it not?.