Image Image Image Image Image
Scroll to Top

To Top

News Articles

16

Nov
2018

News Articles

Permalink

By admin404

Designing Data

November 16, 2018 - News Articles

When ERA404 first hung out its shingle, we quickly found ourselves entrenched in a world of marketing and promotion. Clients would approach us about viral marketing campaigns to spread the word on their new novels, transforming sales spaces to better draw shoppers to their new products, and create cohesive printed collateral material to promote their new businesses. Our designers predominately worked with these businesses’ sales forces with the simple goal of creating an authentic connection with their customers.


There’s certainly nothing wrong with this. In fact, a portion of the design work we do – and will always do – is sales. We, ourselves, design with this goal in mind. You might say that’s even the basis for this newsletter.

However, scrolling chronologically through our portfolio, you’ll begin to notice a shift in focus. Over the last few years, more and more clients have approached us to create workflows and processes to increase understanding beyond just converting browsers to buyers.

They have data. They’ve done research. They’ve collected feedback and information. They’ve aggregated content from multiple sources. They’ve accrued statistics, documents, measurements, and reports which could change the course of their business, their lives, and the world. If only they had a way to make it more understandable.

Mobile App Design and Development

ERA404 Mobile App Design and Development Read More »

We soon found ourselves working with a vast array of data sets. A grant allowed us to map the magnitude of crimes and justice, broken down by city block in New York City. Another allowed us to create data visualizations of media assets across a span of cloud services. There were spring graphs of ancestral photos in family trees, analysis of frequency of words (and non-words) in Tweets, labor and overtime records compiled from a dozen disparate worksites, timelines of important biological dates and events, folksonomy contributed ratings of solicited vs. unsolicited email, pie charts and donut graphs matching color chips to current moods, arrays of network nodes and software manifests, geographical and financial charts of bankrupt businesses and outstanding assets and liabilities. ERA404 designers evolved from organizing messaging to data visualizing. And, while the fundamental center of design is always communication, the content had changed drastically.

We’ve grown to love data. Not just designing it, but using it to communicate as well. Each data set has a problem to solve, a story to tell, a lesson to learn, and a way for us to understand each other better.

If you have your own data, have found it to be unwieldy and unrefined, are struggling to extract meaningful feedback, hope to use it to forecast the direction of your business or confirm assumptions you’ve been making, endeavor to harness its power to drive your decisions, strive to simplify, clarify, visualize, translate, and/or interpret its meaning, or just want to make it work for you, then please drop us a line. Maybe we can help you love data, too.

Tags | ancestral photos, assets and liabilities, bankrupt businesses, biological dates and events, business bankruptcies, cloud services, collateral material, data sets, data visualizations, data visualizing, donut graph, draw shoppers, financial charts, folksonomy, geographical charts, labor and overtime records, marketing, marketing campaign, media assets, network nodes, new business, new novel, new products, organizing data, pantone moods, pie chart, printed collateral, process, promotion, sales force, sales spaces, shipping manifests, software manifests, solicited vs. unsolicited email, spread the word, transform, viral marketing, workflow

04

Apr
2018

News Articles

Permalink

By admin404

Mobile App Design & Development

April 4, 2018 - News Articles

Happy 4/04! Despite our name being a terrible, archaic geek joke, many people don’t know that when ERA404 first started in April 2002, we strictly provided traditional print and identity design. But as the internet grew, more and more clients began to ask us for UI/UX design and web development.Read More

Tags | adobe air, android, apple store, bulc club, bulcclub, cordova, diss 'n' gauges, dissngauges, emma donoghue, facebook, google play store, hoboken girl, hobokengirl.com, iphone, java, joshua ferris, money as you grow, objective c, phonegap, react, react native, room, sketch something daily, swift, the unnamed

03

Jul
2017

News Articles

Permalink

By admin404

FileChecker WordPress Plugin

July 3, 2017 - News Articles

Those who attempt to seize control of WordPress sites often do so by burying obfuscated code in the PHP scripts of plugins, themes or the WordPress core. This is done through various exploits in improperly secured PHP, less-restricted file system permissions, or server counter-measures.Read More

Tags | base64_decode, eval, filechecker, fwrite, grep, gzinflate, malicious code, plug-in, plugin, protect, protection, secure, security, str_rot13, virus, word press, wordpress, wp

04

Apr
2015

News Articles

Permalink

By admin404

CropRefine WordPress Plugin

April 4, 2015 - News Articles

When an article is published in WordPress, it could likely appear across several of the internal templates, besides just the single post page. For example, you may see “Recent Articles” on the home page sidebar or footer, “Related Articles” at the bottom of other posts, and “Search Results” may show excerpts with thumbnails to help readers to quickly find relevant results. These other applications of featured images not only direct readers to the freshest content, but they also notify search indexers of changes to a WordPress sitemap. This boosts the credibility of the site and its author by showing that the site is maintained and current, and offering cross-links to promote relevance.Read More

Tags | blog, croprefine, distort, era404, featured image, fix, limitation, plugin, recrop, refine, shortcoming, thumbnail, upload, wordpress

27

May
2014

News Articles

Permalink

By admin404

Mobile Apps and Chunk Uploads

May 27, 2014 - News Articles

Higher camera resolutions, retina pixel densities and broader bandwidth have given us the web with greater, more beautiful detail. And the HTML5 canvas element now gives us the ability to manipulate imagery armed with nothing more than Javascript. But, as with all growth, there are growing pains, and this one can be found in the

Error Code 413:

Request Entity Too Large.

Mozilla’s error code detail says: “Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.”

https://developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes

Essentially, you’re transmitting the decoded pixel information, 4 bytes at a time (1 byte for each, RGB and Alpha). A byte is hardly going to bust the server limits, but for even a 1-megapixel photo (1200×900), this amounts to 4,320,000 bytes. Most digital phone cameras have capabilities much higher, so you can see how this issue might suddenly become a big possibility in your own web or mobile application.

But if you don’t have access to change some of these server directives, and if you’re working with canvas elements and wish to transmit some very high-resolution pixel data, using toDataUrl(), for example, you might be bumping into this grumpy error code often.

With toDataURL, you can pass an optional argument to prepare the canvas pixel data as a JPEG file, which is generally much smaller than the default PNG format. But not all browsers and phones support this enhancement, such as a Samsung Galaxy SIII, so you now you’ve got to plan for this liability.

 

Chunk Uploading

The traditional solution for sending any payload without reaching a limit is to break it down into parts, and transmit in sequence. It’s how space stations, carnivals, and even the Statue of Liberty was transported. In our mobile apps, we can do it with jQuery, just like this:

var can = document.getElementById("canvas");
var imagedata = can.toDataURL("image/jpeg"); //this will still be a PNG on some phones/browsers
var hash = [any unique id here];
//break the image up into chunks
function chunkup(imagedata, hash){
	var chunks = imagedata.match(/.{1,500000}/g); //break the imagedata into manageable parts
	for (part in chunks){
		var islast = ((part-0)+1 >= chunks.length ? 1 : 0);
		chunkupload(part, chunks[part], hash, islast); //send the chunks, one at a time
	}
}
//transmit each, one at a time
function chunkupload(part, chunk, hash, last) {
    var data = {"chunk": chunk, "hash": hash, "part": part, "last": last};
    $.ajax({
        type: "POST",
        url: "http://path/to/your/server/script.php",
        data: data,
        dataType: "JSON",
        timeout: 60 * 1000,
        async: false
    }).done(function (data) {
		return;
    }).fail(function (XMLHttpRequest, textStatus, errorThrown) {
        alert("Error: "+errorThrown);
    });
}

You can run this function synchronously, but you might also be pushing another limit for maximum simultaneous requests. So even if it’s slower, it might be worth your while to perform these uploads in sequence, instead.

On the server side, we’re getting image data “chunks” fired at us, so our script must be smart enough to store these chunks temporarily for later reassembly. PHP is terrific for reading and writing to the file system. So here’s an example of how this is done in PHP:

header('Content-type: application/json');
if(!empty($_POST)){
	if(isset($_POST['chunk']) && isset($_POST['hash']) && isset($_POST['part'])) {
		$hash = (string) trim($_POST['hash']);
		$part = (integer) trim($_POST['part']);
		$last = (boolean) trim($_POST['last']);
		//save the data to temporary sequential files on the filesystem
		$filename = "tmp/chunk/{$hash}.{$part}";
		if($fp = fopen($filename,"w"))
		{	$contents = fwrite($fp, (string) trim($_POST['chunk']));
			fclose($fp);
		}
		//if all of the parts have been received, let’s reassemble
		if($last){
			$composite = ""; $chunk = 0;
			while($chunk <= $part){
				if(file_exists("tmp/chunk/{$hash}.{$chunk}")){
					$composite .= trim(implode("",file("tmp/chunk/{$hash}.{$chunk}")));
					//we don’t need the chunk file anymore
					unlink("tmp/chunk/{$hash}.{$chunk}");
				}
				$chunk+=1;
			}
			$filename = "tmp/{$hash}.jpg";
			//strip out the imagetype header
			preg_match("/data\:image\/([png|jpeg]*)\;base64\,(.*)/", $composite, $img);
			if(count($img)==3){
				$rawdata = imagecreatefromstring(base64_decode($img[2]));
				imagejpeg($rawdata, $filename);
			}
			//send the good news, your image has been transmitted!
			if(file_exists($filename)) die( json_encode( array("filename" => $hash) ));
		}
	}
}
//let AJAX know you got the chunk
die( json_encode( array("1") ));

That’s all there is to it!

There are countless mods (sanitizing, security, accounts, filetype handlers, etc.) that can be worked into this workflow, but now you can concentrate on your customizations and not have to worry about error code 413.

Tags | chunk upload, hi-rez, high resolution, information, javascript, jpeg, jpg, jquery, megabytes, megapixels, mozilla, pixel, png, request entity, retry-after, todataurl

15

Jan
2014

News Articles

Permalink

By admin404

FoundationTables WordPress Plugin

January 15, 2014 - News Articles

Succeeding the popularity of Zurb’s famous framework, FoundationTables is a WordPress plugin written by ERA404 to harness the responsiveness the framework provides, and extend the WordPress page editor with a new toolset to easily insert, edit, style and delete Foundation-ready tables.Read More

Tags | beautiful, blog, clean, foundation, foundationtables, html, layout, plugin, tables, tabular data, wordpress, zurb