HN user

tylerlarson

71 karma
Posts2
Comments24
View on HN

The reason I used Firefox daily many years ago was because of the Firebug debugger. The more complicated pages became the more important it was to have an excellent debugger/browser combination. Chrome launched with a solid solution and has kept pushing but it isn't nearly as good as debuggers in other platforms. All the browsers are all pretty bad at debugging the lower level stuff like graphics. What is the GPU doing? Why was rendering this last frame slow? What is happening inside of this WASM blob? Is transferring information in and out of this worker the problem or was it the worker itself?

If Firefox had an amazing debugger I would use it every day. I focus on graphics so this is where my mind is at but there are plenty of things that would benefit everyone like a better memory profiler or maybe being better about explaining to users how to fix issues. Chrome's Lighthouse might focus on how google works but it will also provide solid tips for how to make most websites better. Sure it might be wrong if you really know your stuff but it is also a great place to learn if you don't think you know it all.

I work for PaperlessPost.com, and for our Flyer product we export mp4s from ffmpeg compiled to WASM, which is similar to ffmpeg.js but optimized for our use case which sounds similar. We have this WebAssembly method working well but iOS 15 (and the other major browsers) now support MediaExporter which might be a better way to go if you have something else to convert these files. This becomes and issue because you can't control the format MediaRecorder is recording to but the management of memory, the image quality, the compression, the performance hit will be more ideal than these other methods. OMGgif is very slow and will produce large files or very bad looking ones. Keep in mind that GIFs limit the colors so something that looks nice on the screen might not look the same after it is saved. The other thing to look out for is the WebCodecs APIs which should be the ultimate way to handle all of this in the future but it is only working in Chrome I think https://github.com/w3c/webcodecs

I have no interest in telling you what to do as an individual but this thread and all of the people that seem on board with this is what drives me crazy about most of the places I've worked.

I have the hardest time getting anything done because of the sea of people trying to find ways not to do any work. Is this not abuse of privilege? Do you all not hear the stories of people working multiple jobs and still not being able to pay their bills. Is this entitlement?

There are actual problems in the world, sure most of them you are able to effect might be small but what a complete waist of time to be stuck in a job for 8 hours a day and be actively choosing not to contribute solutions to the problems you are faced with. Sure not everything along the way is going to be interesting but if these problems don't excite you there are other jobs that should and if all of that fails go start a company because you are only on this planet for so long and waisting these hours making it look like you are doing work pails in comparison to actually making any impact on the people and things around you. You will be missing out on shared relationships of successes and failures as you resign yourself to this void.

It doesn't feel good to deceive people, it doesn't feel good to take money from people for work you haven't done.

There are people in this world that would literally give anything to have the jobs you have all listed but they can't even apply because they were not born in the right country or their parents didn't have the money to send them to the right school or their accent or skin color made that same interview that you passed impossible to even get.

This whole thread feels so wrong to me and I'm really amazed this community is okay with propagating it. It goes completely against the idea of progress and works against any form of entrepreneurial spirit. Companies fail because of this mentality and world as a whole is worse off because of it. Sure everyone has moments of these feelings but to encourage this as an ok path through of life, I just don't understand.

Any format that is uncompressed like this is huge. 8bits per channel (RGB/A) times width times height. Many image formats have animated versions of them that allow basic arrays of data.

I've created renderers that do this. You can render out data as fast as your hard drive can write the data but yes these files are often ginormous. RGBA at 1000x1000 at 30FPS is about 7.2Gb per min.

There are raw file formats but because the files are so large they are normally thought of as streaming formats that you would pipe to another process like ffmpeg or gstreamer. If you actually want something saved to disk that other things can read your options are normally MJPEG, APNG, WebM or GIF. Some of the older video formats like AVI or MPEG might also work.

Personally I think animated PNG files are the cleanest simplest format internally, there are arrays of RGBA pixels that are gzipped plus the header data. Because the pixel data is compressed the files are smaller but still huge in comparison to a normal video file.

The answer to your question is also pretty complicated because most of these formats have many different formats that they internally allow, for instance MPEG, AVI and other video formats can be saved with pixel data in different formats. The problem is the specs for these things are often not fully supported by all of the players. To get useable files you will need to be specific about what you are trying to target. The formats that I normally target need to work in a web browser but if you just need it to work on your computer VLC can play almost anything.

Sure everyone will talk about art and food and all of that but culture in my mind comes from something deeper. I live in Brooklyn where I can walk outside and meet people from every corner of the world without leaving my block. The philosophical perspectives that people come from hits you with every interaction you have. The longer you live around it the more you learn about their back stories and why these different groups of people carry themselves differently than you might or dress differently, work differently, eat differently, make love differently and so on. Often times these interactions are small but still impacting, other times they are intense and moving like hearing first hand explanations what it was like to live through atrocities from around the world and what it takes to escape but they all hold meaning and a life lived only surrounded by large groups of the same often leads to everyone eating the same things, enjoying the same art and music and missing out on, or even understanding the things outside of your own bubble. Sure you don't need to fit the mold of the place you live but in a place overflowing with influences it is clear that there is always more to soak. So as a working class joe I can still find myself experiencing things that I would have never sought out myself simply by walking out my front door and having a conversation with a neighbor.

I build a slower version of something with the same idea 13-14 years ago in Flash for http://www.makeoversolutions.com which most of these makeup companies licensed back then.

I moved on from that a decade ago but it was a neat project at the time.

But I deployed my first integration of WASM about a month ago for PaperlessPost.com. It is a custom h264 video decoder that renders into a canvas that manages timing relative to other graphics layers over this video. This code works around a series of bugs we've found with the built in video player. It went smoothly enough that we are looking into a few other hot spots in our code that could also be improved with WASM.

One avenue for WASM might be simply polyfilling the features that are not consistently implemented across browsers.

A visual programming languages are often high level and can only take the user so far. If you were to make a programming editor mode that visually shows how programs are structured that understood standard programming languages it would be easier to understand the structure of these programs but the actual edits would likely still be done in the native language. Higher level edits might be very powerful but how often would you be able to do this safely? From a documentation point of view I agree with your assessment, the ability to understand how things work is easier visually at higher levels but we also have other tools to do this like UML. There are also editors like http://staruml.io/ that enable you to convert UML into code but I find this only works when projects are starting when you are trying to find the right high level abstractions. After this is set it is usually best to keep the high level structures that you have in place.

Become an artist. Don't make art based on your expression of your feelings or whatever. Take it on like you would a startup. Create things you think will sell and based on what works iterate quickly. Make lots of work, sell it at cost and increase your price as you refine your process.

You can involve computers in the process of creating work. Things like conceptual art doesn't even have to involve any artistic skill necessarily, but there are many other areas that do if you want to try it out. Paintings from unknown artist can sell for $5K and if you have the energy and space to make sculptures, they can sell for much more.

Always keep in mind who the buyers are, it isn't always directly to customers (galleries, governments, large corporations). Only make work that sells. In the process your pitch will need to be refined. It can't be simply that you want to make money, it has to speak the the audience.

There are many different customers out there looking for different things. Keep in mind there are very few people who devote themselves to this and few of these people have any sense of business, branding, marketing, or even creativity as deep as what is available in technology today. Sure many people can draw or whatever but this isn't want makes a successful artist.

Success comes from all of the same stuff that every other industry focuses on.

R.Mutt QED

There is a difference between the mindset of an employee working for a paycheck and an employee considering the success of themselves being tied to the success of the company.

How much money did the company make because of your contributions? What can you do to make the company worth more?

Are you forming relationships with people outside of the company that will enable the company to hire more qualified people or become better by any metric?

Are you applying your skills in a way that shows others in the company how to do their jobs better?

And so on.

You are not being paid because of your computer programming ability, you are being paid because you can provide worth to the company with this knowledge. If you are unable to find a way to apply these skills the company will keep you on, giving you a chance to find yourself and keep things going but the people that make more money than you are likely the ones that enable the company to make more money.

SVG is many times slower than an optimized graphics library rendered on the canvas tag in 2d or webgl contexts. There are many libraries based on the canvas tag for graphics but not all of them are focused on doing visualizations but people still use them for these use cases all the time.

The most well known WebGL library is https://github.com/mrdoob/three.js/ Which has been used for many examples like this http://armsglobe.chromeexperiments.com/

But you could look at the libraries focused on 2d like these http://paperjs.org/ http://fabricjs.com/ But the larger 2d canvas libraries also have much of the same abilities. http://createjs.com/ - http://codepen.io/ianwhitfield/pen/BKOJmj https://github.com/pixijs/pixi.js - http://anvaka.github.io/ngraph/examples/pixi.js/06%20-%20Pac...

If you are just rendering vectors like an icon image, there is no harm in using SVG. If you want access to nodes on a page with a JavaScript library like jQuery, SVG is still the best option. For everything else SVG is not the most performant and is not able to deliver on many graphics abilities that the Canvas tag is capable of. I respect that in most visualizations it doesn't matter and it might be easier but it doesn't mean SVG is the best thing to use for all graphics.

A few other people have mentioned JavaScript and HTML but in my experience HTML and CSS support varies wildly between platforms and as applications become larger it is difficult to tune the performance of your running application. Also the implementation of the base code for HTML tags and what CSS properties can do are inaccessible to JavaScript making many task much harder than they would be in other environments where you can simply extend or introspect the internals.

But if you want something to run everywhere including web browsers, JavaScript is the only realistic option. So we make do. My current approach is to rely on HTML/CSS and React/React Native for the easy stuff and everything else is rendered in the Canvas tag with lots of JavaScript to bend the platforms into doing what you want.

In the past I have taken similar approaches by using things like Ejecta but the android support for this is lacking and now that WKWebView has addressed many of its issues, using standard WebViews within native containers is fast enough on mobile.

On desktop, Electron, NW or the other things like this can fulfill the same setup.

People will complain about performance which was a really big issues a few years ago but today the difference isn't large enough that it can't be worked around and most of the fear is in people heads. Most environments have web workers, and webgl, and JavaScript that has a JIT, and many new things like Web Assembly and SIMD should be available in the coming years making these platforms even more viable.

I'm 33 now. I was an artist/painter. In about 1998 I started messing with computer animation. I went to art school and found my computer experience was more useful and stopped painting. My animations slowly became scripted with, Director's Lingo, Flash's ActionScript (a flavor of ECMAScript), and Maya's Mel(a flavor of C). Through all of these I learned the basics of programming and I was able to get work far exceeding what I ever dreamed of being possible as an Artist. I was interested in the internet as a place to make creative things and was able to get paid creating for people. I graduated college in 2004, the first real salary position I had was at a large advertising agency I got through a recruiter. I stayed for a few years doing work for huge clients and learning how to program and design better end products. In 2005 I joined an ActionScript user group and later that year started a company with two other friends from this. We learned Ruby on Rails and accepted any work we could find. We never quoted enough, we never agreed on anything, and we all learned a lot before totally failing. Through this I helped build a few MVP's for some startups. When the company folded I jumped from one startup to another building larger and more well crafted applications. Through this time I kept going to meetup groups and all of my work connections have been through relationships with people that I have met at them. I've been at my current startup for 5 years.

Paperless Post - New York, NYC, NY

http://paperlesspost.com/jobs

We are currently looking to fill these positions.

Associate Product Manager

Data Engineer - Insights

Data Engineer Intern

Data Engineer - Site Behavior

Front End Developer

Graphic Designer

iOS Developer

JavaScript Developer

Merchandise Art Director

Operations and Customer Relations Associate

Quality Assurance Engineer

Technical Operations Engineer

Visual Designer

Web Developer

This is a good question that is likely related to how it was made. Last time I heard Gmail was created with GWT that compiles Java into JavaScript.

The libraries will be cached but it means that most of the logic is processed and rendered from JavaScript code and not loaded from the server.

If Google wanted to start over they could pre-render these pages on their massive servers and you could then download these pages without any JavaScript at all. But rewriting is often not the way and really this is a trade off. Do you want to see the content fast or do you want the interactions to be fast when it is ready? If you pre-render everything you either have to rely on new request to get new views or you still have to download all of that JavaScript to do view changes.

They are speeding up JavaScript with Chrome, they are making faster protocols with SPDY and they are doing work in the back ground to make their servers faster. If they didn't do anything to the Gmail code base it would still become faster over time because of these other improvements.

Really the approach that they took is the same one that most Flash projects took because they found that interaction was more important than download time. I would assume they have tested this approach and likely most real users where not bothered by the second or two of progress bar.

Based on the numbers that I see, JavaScript is disliked more than ActionScript. When you take into account people's general dislike for anything flash related and how few people know anything about the language I think it did ok. What would be interesting would be to see a poll of the different versions of ECMAScript proposals and see what the public thinks of the real language differences between each. Classes are coming and structs are proposed and many of the things that ActionScript has had for a while are also leaking into JavaScript like rest arguments, and proxy objects. Overall I think ES6 is clearer and more flexible and I'm cool with omitting types unless you are doing things like types arrays and so on. ActionScript will go away over time and over time JavaScript environments will catch up even if they are still way behind in many respects today.

NYC - http://paperlesspost.com/jobs

Paperless Post is hiring for these jobs below, you can read more about them at the link above.

Growth Product Manager

Business Development Manager

iOS Applications Developer

Analytics Engineer

Web Developer

DBA/Database Operations Engineer

Quality Assurance Engineer

Senior Graphic Designer

Product Manager

Product Designer

Mobile Web Developer

Visual Designer

Front End Developer

Paperless Post in NY and SF is hiring.

http://paperlesspost.com/jobs

Best job I have ever had. I'm a developer, everyone here is awesome and we are working on interesting stuff all the time.

We have many positions open and all of them have...

20 days of paid time off per year, plus 10 holidays

Company-covered health insurance

Pre-tax health and transportation benefits

401(k)

Reimbursement and time off for professional development and conferences

Discounted membership at New York Health & Racquet Club

Happy hours, birthday parties, tech talks, and funtivities

Who cares how many people use these frameworks, most of them are using the same MVC structure and are just stealing features from each other.

Some of the Node people like things small but when applications get bigger putting things into an MVC structure often makes your code more organized. Until someone comes up with a better idea that takes off this is how things will be done and I think it's great that Node has a few choices now to do this.