> I think I have a better solution. How about keeping HTML/JS and lose the bidirectional protocols used to track you.
Is it that common for trackers to have Websocket/WebRTC as a requirement? Pretty much any trackers I see in the wild is using regular Ajax calls. And if you're a tracking service, it's not exactly hard to fallback to Ajax if Websockets aren't available...
EDIT: My mistake, I misread the first mention of HTTP as HTML.
> You can be tracked from page to page using your fingerprint
That's not really tracking per se any more than any local stateful data is.
> optionally with server-side checking of referrers and URL parameters
Again, no, this requires sending data to the server (in the URL or as HTTP headers in this case) which is exactly what I am saying would NOT happen in my project.
Saying that fingerprinting is not tracking "per se" is like saying that a series of pictures taken at evenly spaced sub-second intervals is not a movie "per se".
How do you request data from a server without making any contact with the server? The initial page request is sending data to the server. That is unavoidable.
A web browser sends (or doesn't send) lots of HTTP headers all the time. The particular headers sent (User-Agent, Referer[sic], Accept, etc.) or not sent are additional data that can be used to fingerprint, and thus track you (not to mention your request IP address).
Yeah, I already lost three chargers because of my cats. I ended up wrapping the cord with one of those "Cable Organizer" things (I don't know their real name), which also helps with strain relief.
> In particular, Mac OS X don't even run well with only 4GB of RAM anymore
It actually runs great. I'm using a 2011 Air w/2GB (cheapest back then) and El Capitan and it's almost as fast as my 24GB Mac Pro.
I push it a bit with Logic Pro X + drum samples (for my V-Drums), but it handles that without complaints. But for web, videos and programming there isn't much of a difference.
> I've re-implemented Rails functionality, poorly, way too many times.
It's been a looooong time since I last touched Rails, but I never really missed it when using Sinatra, mainly because of plugins/gems... I even wrote a few. (Currently I'm mostly using Go and C#, though).
Honest question, just so I know what I'm missing: what kind of functionality did you have to reimplement yourself?
The biggest thing I missed was separation between routes and controllers. In Sinatra they're combined, it takes a lot of hackery to implement Rails-style routes. But you're gonna need them more and more as your web app increases in complexity.
Rails takes everything involved in web applications, breaks it apart, and figures out how to best implement it, then writes a nice guide to help you navigate the convention. If you learn how Rails does it, you're pretty much learning how to 'best' do it. So you can, for sure, re-implement it in Sinatra, but why? Rails already has a one-liner that will do exactly what you wanted it to do.
Generators is another big win. Once you learn how that system works, and granted, right now it's really hairy and not nice at all, but when you wrap your head around it, you can really turbocharge your webdev workflow, giving you Lisp-like superpowers without having to suffer the pain of debugging your own tools.
The sheer amount of knowledge embedded into StackOverflow is another huge plus. Something not working? Chances are someone has figured it out, and has documented it on SO.
I take pragmatism very seriously as a coder. I don't want to spend hours trying to figure out weird little things. I've got better things I could be doing. Rails gives me superpowers I never even knew I needed. If you've used Sinatra to build anything more complex than a dead-simple API, which is the only thing I would use it for these days, then you've probably worked hard to implement something Rails has already figured out and turned into a one-liner.
I get this spidey-sense when I'm developing in Rails, I'll be like, "surely somebody has done this already" and I'll search around on Google. Sure enough, most times I find the exact code I needed. Rails is the Rome of webdev. All roads lead to it. Just swallow your pride and use it, and you'll have the might of its legions at your back.
Another useful OpenGL macro, at least for me, is this one:
#define GLSL(str) (char*)"#version 330\n" #str
It basically enables you to embed quick snippets of GLSL inside your C code, instead of using concatenated strings. Example:
char* fragShader = GLSL(
in vec3 uv;
out vec4 color;
uniform sampler2DArray tex;
void main()
{
// Comments work too
color = texture(tex, uv);
}
);
In Sublime Text you even get code completion and color highlighting, since GLSL and C look so alike.
I believe it might work for OpenCL Kernels too.
The only downside is that it doesn't add line breaks by itself (hence the "#version 330\n", which requires a line break), so GLSL Compilation errors aren't as useful.
https://www.unrealengine.com/blog/unreal-engine-4-14-release...