If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: blog.openframeworks.cc - openFrameworks, a C++ toolkit .

site address: blog.openframeworks.cc redirected to: blog.openframeworks.cc

site title: openFrameworks, a C++ toolkit for creative coding

Our opinion (on Saturday 31 October 2026 7:45:36 UTC):

GREEN status (no comments) - no comments
After content analysis of this website we propose the following hashtags:



Meta tags:
keywords=openframeworks,donations,diversity,financial support,glm;

Headings (most frequently used words):

opengl, android, new, features, events, functions, support, openframeworks, ofthreadchannel, and, multi, window, donations, documentation, infrastructure, diversity, more, sustainable, model, to, donate, glm, mathematics, refactoring, add, application, initialization, code, customizing, the, activity, transform, feedback, gl, debug, callback, custom, materials, extensions, ofeventlistener, key, lambda, utf8, string, manipulation, oftruetypefont, alphabets, ofxgui, color, picker, text, fields, 2015, 2016, community, survey, utf, ofsoundbuffer, ofmainloop, namespace, not, methods, warning, type, strictness, constants, multiplication, order,

Text of the page (most frequently used words):
the (225), and (90), you (69), for (56), that (49), this (47), glm (43), can (32), with (30), #openframeworks (29), using (24), like (23), are (22), when (22), but (22), activity (21), more (20), class (20), now (19), key (19), which (18), will (17), event (16), there (16), vec3 (16), use (15), instead (15), from (15), new (15), work (15), example (15), them (15), has (15), vector (15), one (14), also (14), some (14), all (13), not (13), settings (13), need (13), circlemovingwithmouse (13), project (13), add (12), code (12), mouse (12), would (12), call (12), support (11), any (11), different (11), ofalphabet (11), draw (11), length (11), events (11), mail (10), tweet (10), facebook (10), open (10), app (10), opengl (10), have (10), your (10), first (10), listener (10), part (9), want (9), get (9), functions (9), ofapp (9), won (9), copy (9), cpp (8), overview (8), out (8), people (8), load (8), text (8), should (8), since (8), ofevents (8), listen (8), canvas (8), classes (8), donations (8), notes (7), don (7), drawing (7), way (7), http (7), survey (7), community (7), 2018 (7), color (7), characters (7), type (7), something (7), been (7), ofeventlistener (7), destroyed (7), without (7), int (7), objects (7), function (7), shader (7), called (7), android (7), ofactivity (7), documentation (7), application (6), main (6), goo (6), forms (6), void (6), utf8 (6), only (6), was (6), having (6), doing (6), newlistener (6), myclass (6), method (6), modifier (6), time (6), keys (6), even (6), mousemoved (6), object (6), memory (6), error (6), then (6), allows (6), activities (6), ofandroidlifecycle (6), created (6), initialization (6), float (6), than (5), window (5), multi (5), changes (5), continue (5), who (5), our (5), apr (5), gui (5), save (5), true (5), default (5), listeners (5), into (5), original (5), until (5), help (5), still (5), working (5), try (5), setup (5), ttf (5), other (5), because (5), methods (5), used (5), public (5), able (5), hasmodifier (5), happens (5), ofkeyeventargs (5), returns (5), mousemovedevent (5), move (5), list (5), circle (5), debug (5), vertex (5), order (5), allow (5), math (5), vec2 (5), contributions (5), keep (4), several (4), ofthreadchannel (4), once (4), most (4), about (4), how (4), ofxgui (4), arturo (4), creating (4), return (4), doesn (4), much (4), create (4), features (4), japanese (4), unicode (4), range (4), system (4), str (4), string (4), make (4), ofaddlistener (4), again (4), mousepressed (4), just (4), position (4), codepoint (4), pressed (4), before (4), expect (4), every (4), circles (4), fragment (4), glsl (4), buffer (4), multiple (4), side (4), however (4), model (4), old (4), namespace (4), sustainable (4), these (4), areas (4), contribute (4), 2015 (3), supports (3), ofmainloop (3), utf (3), useful (3), process (3), task (3), usually (3), note (3), thanks (3), free (3), years (3), information (3), panel (3), custom (3), parameter (3), button (3), ofparameter (3), looks (3), very (3), missing (3), alphabets (3), arabic (3), each (3), set (3), addranges (3), font (3), those (3), regular (3), iterate (3), over (3), pos (3), might (3), where (3), finally (3), ofremovelistener (3), private (3), std (3), instances (3), receive (3), of_key_control (3), same (3), case (3), equal (3), see (3), point (3), may (3), non (3), modifiers (3), core (3), crash (3), another (3), around (3), cause (3), elements (3), circlemovingwtihmouse (3), back (3), really (3), above (3), put (3), push_back (3), itself (3), instance (3), listening (3), problem (3), constructor (3), well (3), rule (3), anymore (3), available (3), specify (3), while (3), message (3), transform (3), feedback (3), their (3), geometry (3), calling (3), single (3), ofandroidactivityinit (3), cases (3), many (3), constants (3), things (3), static (3), ofvec (3), financial (3), opening (3), page (3), contributors (3), enough (3), services (3), long (3), term (3), codebase (3), next (2), nov (2), 17th (2), reading (2), windows (2), per (2), major (2), threading (2), intensive (2), thread (2), provides (2), allowing (2), background (2), complete (2), result (2), 2016 (2), team (2), languages (2), feel (2), helpful (2), development (2), json (2), addlistener (2), mark (2), attended (2), group (2), input (2), field (2), right (2), based (2), better (2), ofxinputfield (2), picker (2), could (2), done (2), individual (2), release (2), short (2), figure (2), let (2), know (2), emoji (2), oftruetypefontsettings (2), antialiased (2), dpi (2), direction (2), of_ttf_left_to_right (2), drawstring (2), oftruetypefont (2), uint32_t (2), keypresses (2), chr (2), insert (2), utilities (2), introduced (2), api (2), both (2), automatically (2), lambda (2), specific (2), register (2), ofmouseeventargs (2), simple (2), change (2), check (2), special (2), combo (2), including (2), down (2), editor (2), keycode (2), returned (2), keyboard (2), ascii (2), bool (2), across (2), ofeventlisteners (2), push (2), behaviour (2), contiguous (2), remove (2), random (2), containing (2), forbids (2), deque (2), access (2), emplace_back (2), calls (2), implement (2), constructors (2), prone (2), collection (2), does (2), operator (2), compile (2), run (2), destructor (2), solve (2), runs (2), after (2), soon (2), problems (2), ofmaterial (2), uniforms (2), material (2), ofmaterialsettings (2), vec4 (2), localcolor (2), sometimes (2), final (2), assign (2), version (2), bugs (2), similar (2), breakpoint (2), whenever (2), means (2), macos (2), errors (2), frame (2), mesh (2), certain (2), number (2), sphere (2), shaders (2), store (2), look (2), examples (2), onresume (2), notify (2), initialize (2), achieve (2), splash (2), meaning (2), following (2), cannot (2), currently (2), content (2), ofandroidapplicationinit (2), such (2), graphics (2), projected (2), projection (2), view (2), multiplication (2), oposite (2), matrices (2), double (2), warning (2), porting (2), directly (2), normalize (2), uses (2), prefix (2), mathematics (2), syntax (2), diversity (2), practice (2), diverse (2), relying (2), being (2), paid (2), users (2), think (2), ongoing (2), needs (2), maintaining (2), date (2), isn (2), infrastructure (2), fund (2), take (2), behind (2), confident (2), rely (2), they (2), natively, traditional, entry, interfere, 60fps, quickly, tasks, data, accessed, threaded, applications, common, given, computers, devices, cpu, ofsoundbuffer, jan, 1st, cf7lh7dvkf, 在中国调查, e5zxj6twnf, 日本語での調査, jdht9rqupj, umfrage, auf, deutsch, uv2sh2gs2r, sondage, français, fiwczpbe0h, encuesta, español, tnjxze4egr, english, published, fill, language, choice, results, aggregated, together, hear, everyone, total, beginner, longtime, expert, organizer, programmer, student, etc, opinions, appreciated, filled, past, love, year, too, annual, live, helps, best, 18th, specifying, file, xml, savepressede, loadpressede, apart, buttons, override, behavior, additionally, slider, turned, temporarily, clicking, precise, control, felix, lange, additions, selection, clipboard, manually, fields, lukasz, karluk, adapted, ofxcolorpicker, editing, colors, adjusting, rgb, values, sliders, intuitive, post, series, going, 20th, hiroshi, matoba, his, figuring, couple, alphabet, thing, yet, ligatures, join, combinations, tools, reshape, paste, mpcabd, xyz, python, reshaper, wrong, chinese, korean, devanagari, latin, greek, cyrillic, predefined, pass, preload, texture, faster, installed, name, noto, sans, cjk, 色はにほへど, 散りぬるを, 我が世たれぞ, 常ならむ, 有為の奥山, 今日越えて, 浅き夢見じ, 酔ひもせず, emojisymbols, 100, ofutf8iterator, ofutf8length, ofutf8tostring, ofutf8substring, ofutf8append, ofutf8insert, character, start, ascci, variable, corresponding, ofutf8, already, cleaned, consistent, manipulation, full, manipulate, strings, 23rd, lambdas, reason, unsubscribed, cout, endl, explicitly, applicaiton, started, ofrunapp, callbacks, ones, easily, of_mouse_left, exists, query, keypressed, holds, except, of_key_shift, of_key_, ofconstants, windowing, independent, layout, ofappglfwwindow, value, glfw_key_, glfw3, typically, representation, symbol, physical, always, 0x41, shift, alt, ctrl, raw, scan, hardware, scancode, printable, repeat, isrepeat, arguments, carry, integer, line, effort, mousepressedevent, general, anything, undefined, wrap, smart, pointer, putting, aware, allocates, locations, heap, advantages, lost, avoid, illegal, accesses, limitations, collections, thorough, crreates, dosomething, last, element, added, recommended, difficult, maintain, least, auto, unregister, explicit, compiler, issues, preferred, introducing, member, did, https, wikipedia, org, wiki, rule_of_three_, 2b_programming, address, stored, invalid, likely, segmentation, fault, registerevents, worse, otherwise, ofremvelistener, mainly, tempted, removing, looked, 24th, header, online, docs, site, varyings, additional, setcustomuniform, customuniforms, postfragment, lighting, calculated, receives, modified, internally, program, calculates, phong, shading, lights, enabled, moment, materials, extensions, ofdisablegldebuglog, disable, logging, obscure, buffers, correctly, bound, hard, internal, trace, console, debugging, inside, ofglutils, gl_debug_callback, producing, debugger, stop, stacktrace, triggering, ofenablegldebuglog, extension, promoted, context, callback, resulting, assigned, vbo, drawn, later, calculate, positions, generates, points, setting, draws, modifies, poitns, distribute, along, surface, semi, uniformly, sets, depending, download, linux, includes, explaining, tranformfeedbackexample, steps, generate, expensive, transformations, gpu, calculations, ofvbomesh, deforms, vertices, noise, ofvbo, relatively, feature, present, output, tessellation, 30th, tal, lavi, artem, pyatishev, reference, detailed, folder, androidmultiofactivityexample, oncreate, glcreate, glresume, onpause, glpause, ondestroy, gldestroy, resumed, setactivity, init, false, postpone, objectives, yourself, complicated, scenarios, initializing, inheriting, appcompatactivity, shows, inherit, supplies, base, conditions, suits, customizing, due, current, architectural, constraints, share, switch, hold, signal, shown, perform, update, initialized, notice, second, top, recycled, ofactivites, indeed, implementation, instantiates, needed, completely, native, distinguish, between, two, nothing, apps, composed, derives, fits, refactoring, 3rd, ofvec3, ofvec3f, multiply, little, bit, weird, comes, fact, defined, templated, strict, autoconvert, ofvectormath, strictness, modern, compilers, show, mostly, form, included, easy, what, dimensions, correct, dimension, exceptions, operators, arithmetic, operations, vectors, quaternions, operate, files, import, beginning, either, openfrmaeworks, library, although, projects, minimal, starting, recomend, become, defacto, standard, latest, mimics, makes, easier, almost, 7th, personal, represent, studio, company, financially, please, link, below, donate, step, outline, broader, institutional, level, funding, meantime, immensely, moving, quicker, towards, goals, offloading, onto, higher, quality, documented, releases, had, come, realize, factors, wages, inequality, harder, women, living, developing, countries, pay, overcome, barrier, increase, contributing, shaping, future, making, accessible, big, goal, improve, significant, contribution, lot, related, forum, updating, fixing, servers, breaks, keeping, systems, unpaid, amount, requires, grown, wide, running, distributed, build, continuous, integration, break, tool, compiling, libraries, platforms, apothecary, individuals, companies, institutions, sure, provide, good, tutorials, organized, sprints, begin, drift, sync, area, active, believe, approach, rest, unclear, forward, workflow, worked, fairly, growth, limited, particular, interests, meant, fallen, often, discover, benefiting, whole, developed, through, voluntary, world, today, archive, toolkit, creative, coding,


Text of the page (random words):
uted build system continuous integration services ci that allow us to check that changes don t break the codebase and a tool for compiling all the libraries for the many different platforms of supports apothecary there is also a lot of work that needs to be done not directly related to using of itself like maintaining the forum updating the ci or fixing the multiple servers we use when something breaks as well as keeping them up to date maintaining these services and development systems is something we ve been doing up until now unpaid but the amount of time it requires isn t sustainable to continue in the long term diversity making openframeworks more accessible and the community of users more diverse is another big goal of the project that we think we can really improve if we have a significant and ongoing financial contribution until now we ve been relying on a community of contributors who had enough free time to work on the project but we ve come to realize that because of very different factors like for example wages inequality it is much harder for some people like women people of color or people living in developing countries to work without being paid in their free time by being able to pay for some contributions we expect to help overcome that barrier and increase range of people contributing and shaping the future of openframeworks a more sustainable model opening up the donations page is only a first step we are currently working on the outline for a more sustainable model for openframeworks which would allow the project to get broader institutional level funding individual donations in the meantime will help immensely with us moving quicker towards our goals offloading work onto a more diverse group of contributors and help achieve more regular higher quality and better documented releases to donate if you have used openframeworks in your personal practice or you represent a studio or company that has used openframeworks in your work and you would like to financially support the project please do so now at the donations link below thanks for your support openframeworks donations diversity financial support may 7th 2018 3 notes open in app facebook tweet mail glm opengl mathematics opengl mathematics glm has become the defacto standard for graphics vector math in c in the latest years it s syntax mimics that of glsl so working with it while working with opengl shaders makes things easier cause the syntax is almost the same across the different languages openfrmaeworks since version 0 10 uses glm as it s default vector math library in the core and although old projects using ofvec classes should work with minimal changes if you are starting a new project we recomend to use glm instead namespace glm classes and functions are in the glm namespace so to use them you need to either prefix them with glm glm vec3 v 2 f 2 f 2 f float l glm length v or in your cpp files import the glm namespace at the very beginning using namespace glm and then use the classes and functions without prefix vec3 v 2 f 2 f 2 f float l length v functions not methods glm classes like vectors matrices or quaternions don t have methods instead glm uses functions to operate on those classes so if you want to for example normalize a vector you would do glm vec3 v 2 f 2 f 2 f glm vec3 n glm normalize v the only exceptions to this rule are operators which you don t use directly but instead allow to do arithmetic operations so you can do things like glm vec3 v1 1 f 1 f 1 f glm vec3 v2 2 f 2 f 2 f glm vec3 v3 v1 v2 warning glm vector have a static length function which returns the dimension of the vector type so glm vec2 length returns 2 glm vec3 length returns 3 because c allows to call static methods on instances of that class you can make the error of calling glm vec3 v 2 f 2 f 2 f float length v length to try and get the length of the vector instead of the number of dimensions of the type the correct way of doing that would be glm vec3 v 2 f 2 f 2 f float length glm length v mostly when porting old code form ofvec to glm because ofvec included such a method it s easy to try and call that function which will compile without errors but won t do what you expect when doing that most modern compilers should show a warning because of calling a static method on an instance instead of a class so be on the look for those when porting old code to glm type strictness glm has a strict type system similar to how things work in glsl meaning that you can t autoconvert from one type to another automatically as it was the case with ofvectormath for example glm vec2 v2 2 f 2 f glm vec3 v3 v2 won t work anymore you need to do now glm vec3 v3 glm vec3 v2 0 f or in the oposite case glm vec3 v3 2 f 2 f 2 f glm vec2 v2 glm vec2 v3 or even glm vec2 v2 v3 constants glm has some useful constants but the way to use them might be a little bit weird at first the main problem comes from the fact that this constants are defined as templated functions so to call them you need to specify the type as in float p glm pi float double dp glm pi double multiplication order finally if you are used to the old openframeworks vector math classes you would multiply vector and matrices like ofvec3 v ofvec3f projected v model view projection with glm as in glsl the multiplication order is the oposite so now you would do glm vec3 v glm vec3 projected projection view model v openframeworks glm graphics vector math math opengl may 3rd 2018 6 notes open in app facebook tweet mail android refactoring many openframeworks android apps are composed from a single activity which derives from ofactivity and allow you to draw gl content in a canvas this fits most cases however sometimes you need multiple activities some with gl drawing and some without openframeworks android supports such cases add application initialization code we can distinguish between application initialization and gl initialization there are two methods in main cpp one for each in most cases there s nothing to do in ofandroidapplicationinit and in ofandroidactivityinit we initialize the ofapp class ofandroidapplicationinit allow you to do some initialization when the cpp side is created even if the first activity is not a gl activity for example a completely native splash activity ofandroidactivityinit is called when the gl canvas is initialized this happens when the first ofactivity is created notice that if a second ofactivity is created on top of it the canvas is recycled and this initialization code is not called again however if all ofactivites are destroyed the canvas is indeed destroyed so when a new ofactivity is created ofandroidactivityinit will be called again the default implementation for this method instantiates the ofapp class but you can add more code to it as needed note that due to current architectural constraints all activities share a single ofapp class and a single canvas you cannot switch to different ofapp classes for drawing different activities as openframeworks cannot currently hold multiple instances of the ofapp class in memory it is up to you to signal the cpp side when a different activity is shown when onresume is called on that activity and perform different update draw code to draw different content on the canvas customizing the android activity openframeworks supplies a base activity called ofactivity when the following conditions suits the project 1 the first activity is this activity meaning the first activity in the application shows a gl canvas 2 you want your activity to inherit from regular android activity class however openframeworks allows for more complicated scenarios like having the first activity initializing the cpp side but not the gl drawing the first activity doesn t draw gl at all for example a simple splash activity or inheriting your activities from other classes for example appcompatactivity in order to achieve one or both the objectives above you need to notify openframeworks yourself on certain events just like the original ofactivity does it in any activity in the application 1 whenever any activity is created or resumed you need to notify openframeworks about it by calling ofandroidlifecycle setactivity with this activity 2 on the first activity created you need to call ofandroidlifecycle init in order to initialize the cpp side if this activity should not draw gl you should call it with the parameter false in order to postpone canvas initialization in gl drawing activities 1 in oncreate call ofandroidlifecycle glcreate 2 in onresume call ofandroidlifecycle glresume 3 in onpause call ofandroidlifecycle glpause 4 in ondestroy call ofandroidlifecycle gldestroy you can look at the original ofactivity as a reference and there s also a detailed example with multiple activities in the android examples folder called androidmultiofactivityexample tal lavi artem pyatishev openframeworks android apr 30th 2018 4 notes open in app facebook tweet mail opengl new features transform feedback transform feedback is a relatively new feature in opengl present since 4 3 and so not available in macos it allows to store the output of a vertex geometry or tessellation shader into a buffer object for example we can draw a sphere in an ofvbomesh draw it using a vertex shader that deforms the vertices using a noise function and get the result in a new buffer then we can assign that buffer to an ofvbo for drawing this allows to do expensive transformations in the gpu only once store them and then draw them instead of having to do the calculations every frame it also allows to do several steps of vertex shaders for example or to generate geometry with a geometry shader and then use a different vertex shader to draw the download for 0 10 0 for windows and linux includes an example explaining how to use it in gl tranformfeedbackexample that example generates a mesh with a certain number of points but without setting them at all then draws the mesh using a shader with a transform feedback which modifies the poitns to distribute them along the surface of a semi sphere uniformly and sets each vertex color depending on their position the resulting buffer is assigned to a vbo and drawn later in the draw function without having to calculate the positions every frame gl debug callback opengl provides an extension promoted to core in 4 3 which again means it won t work in macos that allows to debug the context for errors in of 0 10 0 you can now call ofenablegldebuglog and if any error or any other internal message happens you ll get a debug trace in the console you can even set a breakpoint while debugging inside ofglutils cpp in the function gl_debug_callback to know which call is producing the message once the breakpoint is set the debugger will stop whenever a message happens and you can see in the stacktrace the original in your code that is triggering it this is useful to debug obscure gl bugs like buffers not correctly bound or similar problems which are really hard to debug usually to disable the logging you can call ofdisablegldebuglog custom materials extensions ofmaterial when used with opengl version 3 or more runs internally a glsl program that calculates the phong shading per fragment using all the lights enabled at that moment sometimes we want to change the behaviour of that shader to do so since 0 10 0 you can setup a material using ofmaterialsettings and there specify a function which will be called after the lighting has been calculated it receives the final color of the fragment as parameter and returns the modified color which will be the final color assign to that fragment vec4 postfragment vec4 localcolor return localcolor that function has access to all the uniforms and varyings available in the fragment shader but we can also specify additional uniforms by using customuniforms in ofmaterialsettings and then setcustomuniform while we use the material there s more information in the header of ofmaterial and soon in the online docs in the of site arturo apr 24th 2018 open in app facebook tweet mail events ofeventlistener up until now listening to an event in of looked something like ofaddlistener ofevents mousemovedevent this myclass mousemoved and removing the listener ofremovelistener ofevents mousemovedevent this myclass mousemoved that has several problems mainly if we want to add a class to listen to a mouse event we would be tempted to do something like class circlemovingwithmouse public circlemovingwithmouse ofaddlistener ofevents mousemovedevent this circlemovingwithmouse mousemoved circlemovingwithmouse ofremvelistener ofevents mouse this circlemovingwtihmouse mousemoved so when creating an instance of that class it would listen to the mouse and when the object is destroyed it ll remove itself as a listener so there s no calls once the object has been destroyed otherwise we would get a crash the problem with this is if we do something like void ofapp setup circlemovingwithmouse circle circles push_back circle the circle won t receive the events anymore cause the copy won t be listening to events anymore and the original will be destroyed as soon as we go out of setup even worse if we try to put this class in a vector as before but register the event after we add it like void ofapp setup for int i 0 i 10 i circlemovingwithmouse circle circles push_back circle circles back registerevents the vector will move it s objects in memory when it runs out of contiguous memory which will make the address for our objects stored in the event invalid so we will likely get a segmentation fault and the application will crash by the rule of 3 the rule of 5 since c 11 https en wikipedia org wiki rule_of_three_ c 2b 2b_programming when we add a destructor as we did above we should also implement a copy constructor and equal operator doing so would solve our problem if in the copy constructor we re add the new copy as a listener as well but introducing a copy constructor is error prone since from now on we ll need to copy every new member we add to the class to solve this issues in 0 10 we ve introduced a new way to listen to events ofeventlistener now to listen to an event the preferred method is something like class circlemovingwithmouse private ofeventlistener listener public circlemovingwithmouse listener ofevents mousemovedevent newlistener this circlemovingwithmouse mousemoved the listener will now auto unregister itself when the object is destroyed so there s no need for a explicit destructor also ofeventlistener forbids to copy or even move an instance of a class containing it so if you now try to put a class listening to an event into a vector you ll get a compiler error you can still work around it by creating your copy move constructors and equal operator but at least the error happens at compile instead of at run time it s still not recommended to implement copy constructors since it s really error prone and difficult to maintain instead if you want for example a collection...
Thumbnail images (randomly selected): * Images may be subject to copyright.GREEN status (no comments)

Verified site has: 25 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25


The site also has references to the 2 subdomain(s)

  openframeworks.cc  Verify   blog.openframeworks.cc  Verify


Pages verified in the last hours (randomly selected):


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/1.1 301 Moved Permanently
Server nginx
Date Sat, 31 Oct 2026 07:45:35 GMT
Content-Type text/html
Content-Length 162
Connection close
Location htt????/blog.openframeworks.cc/
HTTP/2 200
server nginx
date Sat, 31 Oct 2026 07:45:36 GMT
content-type text/html; charset=utf-8
vary Accept-Encoding
x-rid 4f41ad37168505019a43b10f6cee9658
x-xss-protection 1; mode=block
x-content-type-options nosniff
strict-transport-security max-age=15552001
x-tumblr-user openframeworks-blog
x-tumblr-pixel-0 htt????/px.srvcs.tumblr.com/impixu?T=1793432736&J=eyJ0eXBlIjoidXJsIiwidXJsIjoiaHR0cDovL2Jsb2cub3BlbmZyYW1ld29ya3MuY2MvIiwicmVxdHlwZSI6MCwicm91dGUiOiIvIn0=&U=AFNHIKKBFE&K=f175f08b0e524cf6b16e5f0a582dfe9b590e39f94e99e8cbea67c82e208910a1--htt????/px.srvcs.tumblr.com/impixu?T=1793432736&J=eyJ0eXBlIjoicG9zdCIsInVybCI6Imh0dHA6Ly9ibG9nLm9wZW5mcmFtZXdvcmtzLmNjLyIsInJlcXR5cGUiOjAsInJvdXRlIjoiLyIsInBvc3RzIjpbeyJwb3N0aWQiOiIxNzM2NzIwNzQ4OTkiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQi
x-tumblr-pixel-1 OiIxNzM1NDY3NTk4ODQiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxNzM0NDk0OTY4NTQiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxNzMyNTg4MzAxNzkiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxNzMyMjMyNDA4MjkiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxNzMxMjI1NDMyMTkiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxNzMwNTg0MDA1OTQiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxMzY0MDU2NjkyMzkiLCJibG9naWQiOj
x-tumblr-pixel-2 EzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxMzM0MDQ3Mzg1MTQiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM30seyJwb3N0aWQiOiIxMzM0MDQzMzcyNjQiLCJibG9naWQiOjEzNDE2MDE5NCwic291cmNlIjozM31dfQ==&U=HPJBDDCFEM&K=fbb9cbf64058d0149f502b103239a45d7fde9ad428e934306a2e4becb9078f50
x-tumblr-pixel 3
link <htt????/64.media.tumblr.com/avatar_86d8b00a15f5_128.pnj>; rel=icon
x-ua-compatible IE=Edge,chrome=1
x-ua-device desktop
vary X-UA-Device, Accept
x-nc MISS
x-remembering Eric Binnion <htt????/friendsofericbinnion.wordpress.com/>
content-encoding gzip

Meta Tags

title="openFrameworks, a C++ toolkit for creative coding"
name="apple-itunes-app" content="app-id=305343404,affiliate-data=at=11l3M5&ct=us.itunes.uni.tumblr.ipdt,app-argument=tumblr://x-callback-url/blog?blogName=openframeworks-blog&referrer=smart-app-banner"
charset="utf-8"
name="Title font" content="Helvetica Neue"
name="Body font" content="Helvetica Neue"
name="Background color" content="#f6f6f6"
name="Title color" content="#444444"
name="Link color" content="#529ecc"
name="Header image" content=""
name="if:Sliding header" content="1"
name="if:Stretch header image" content="1"
name="if:Collapse navigation" content="1"
name="if:Show description" content="1"
name="if:Show title" content="1"
name="if:Show header image" content="1"
name="if:Endless scrolling" content="1"
name="select:Avatar style" content="circle" title="Circle"
name="select:Avatar style" content="square" title="Square"
name="select:Avatar style" content="hidden" title="Hidden"
name="select:Layout" content="regular" title="Regular"
name="select:Layout" content="narrow" title="Narrow"
name="select:Layout" content="grid" title="Grid"
name="text:Disqus shortname" content=""
name="text:Google analytics ID" content=""
name="viewport" content="width=device-width, initial-scale=1.0"
name="apple-mobile-web-app-capable" content="yes"
name="keywords" content="openframeworks,donations,diversity,financial support,glm"
property="fb:app_id" content="48119224995"
property="og:site_name" content="Tumblr"
property="og:title" content="openFrameworks, a C++ toolkit for creative coding"
property="og:url" content="htt????/blog.openframeworks.cc/?og=1"
property="og:description" content=""
property="og:type" content="profile"
property="og:image" content="htt????/64.media.tumblr.com/avatar_86d8b00a15f5_128.pnj"
property="al:ios:url" content="tumblr://x-callback-url/blog?blogName=openframeworks-blog"
property="al:ios:app_name" content="Tumblr"
property="al:ios:app_store_id" content="305343404"
property="al:android:url" content="tumblr://x-callback-url/blog?blogName=openframeworks-blog"
property="al:android:app_name" content="Tumblr"
property="al:android:package" content="com.tumblr"
charset="utf-8"
name="twitter:site" content="tumblr"
name="twitter:card" content="summary"
name="twitter:description" content=""
name="twitter:title" content="openFrameworks, a C++ toolkit for creative coding"
name="twitter:app:name:iphone" content="Tumblr"
name="twitter:app:name:ipad" content="Tumblr"
name="twitter:app:name:googleplay" content="Tumblr"
name="twitter:app:id:iphone" content="305343404"
name="twitter:app:id:ipad" content="305343404"
name="twitter:app:id:googleplay" content="com.tumblr"
name="twitter:app:url:iphone" content="tumblr://x-callback-url/blog?blogName=openframeworks-blog&referrer=twitter-cards"
name="twitter:app:url:ipad" content="tumblr://x-callback-url/blog?blogName=openframeworks-blog&referrer=twitter-cards"
name="twitter:app:url:googleplay" content="tumblr://x-callback-url/blog?blogName=openframeworks-blog&referrer=twitter-cards"

Load Info

page size26103
load time (s)0.906929
redirect count1
speed download28811
server IP 74.114.154.18
* all occurrences of the string "http://" have been changed to "htt???/"