RSSAmplifier

Blog

Blog - Edison Wang

​What's this?

edison.wangRSS feed ↗20 posts

Latest posts

Token is time.

Pre-context (skippable): I have not written here for around 8 years — a lot of had to do switching to a management career where topics are much more sensitive to discuss and the proliferation of LinkedIn posts has both drive traffic away from “blog posts” and makes one not want to be grouped with the self promotion groups. However, lately one topic just keeps coming back to me as I have came back…

Snap Map Launched!

Been working on this for the last year. I will write some technical details on client side soon after I get clearance. But for now: http://www.refinery29.com/2017/06/160113/snapchat-snap-map-location-update

Media on Android Talk @ DroidCon SF 2016

I was fortunate to give a talk on Video at DroidCon SF 2016 in March, the video is finally up ( Slides ):

Tiny trick: Swap SurfaceTexture between TextureViews.

A SurfaceTexture connects a GLProducer with a GLConsumer on Android, it's easy to swap the producer, since you just disconnect the producer on any thread, and it's easy to swap the consumer if you are in control of the thread that originally generated it. So here is the trick to swap out the consumer while preserve the producer connection: Save: SurfaceTexture texture =…

PennStation

It's fun and easy to build an app and launch it, but then it comes maintaining it, and you keep adding features, events, and business logics. You have added teammates and now it's hard to keep track of what's happening, and you need a good way to keep your code sane. Tests are great a great way to start. And you have also added Otto, EventBus, Dagger, Rx, and other frameworks, but it's so hard to…

Simple foreign Android codebase hands on guide (Part 1)

So you just joined a team, or you are working on a part of code that you forgot the file/class names and you want to do a new feature or fix some bugs and not sure where to start. The codebase is huge (millions lines of code)..you have no idea where to start. This is a good flow that I usually follows and tells my mentees to do: Working on a bug: Android Example: I clicked on something on the UI…

Back to the startup world

Though I was not impacted by Twitter's recent house clean (fact: 0 of Vine Engineering was impacted because, I decided it is time for me to get back to the startup world again. I joined almost three years ago Vine when there were only 8 people and no heat in the office. I started working on our Android app with Sara not knowing if Vine will even still be here in a year. Here I am with almost 50…

Reducing build times by adopting buck

Note: I was asked to do a topic discussion at NY Mobile Forum the past weekend at Facebook and I decided to do one on developer productivity hacks, the content of this article was used to ignite the conversation. This is part of Vine 's Engineering Blog series. Since we started working on Vine for Android, we have used the following tools for development: Android Studio (Intellij before Android…

Droidcon NYC 2014

Thanks everyone for coming to the talk! The slides are now up for download .

Vine Loop Counter View

Recently Vine has launched Loops, and one of the fun parts that I took on was building loop animation that shows as Loops and thought I'd share it as part of Vine's open source efforts: CounterView.java Usage setKnownCount() where you can give it the current count, the time the current count is obtained, and a velocity that the count should be increasing at. setExtraCount() where you can give it…

Allocating Camera memory faster on Android Part Two

Part 1 Part 2 In Part 1, I talked about how to avoid the GCs so you can get reasonable speeds when using the frames from Android Camera's onPreviewFrame method and process them without losing any, it was basically as follows: (let's call this Method A) 1. Get faster memory allocation with tricks mentioned for small pieces of memories (bytes[]). The number of byte[] needed for the slowest device is…

Allocating Camera memory faster on Android Part One

Part 1 Part 2 One thing that was learned while building the capturing part of Vine for Android was dealing with all the raw buffers in order to satisfy the stop motion requirements. (According to Instagram, they were able to use the native MediaRecorder with 700ms+ delay on start time and a minimum duration, but Vine can't afford that in order to do stop motion) And because we can't use…

Is Android fragmentation an issue?

For consumers? No. Consumers want the best phone they can afford. Android does exactly that by providing lots of options in a the entire price range. Do they really care if the phone have 512MB of RAM, 1.4Ghz Duo CPU, or another phone with 1GB RAM and a 1.9Ghz? They can't really tell the real benefits provided by the different phones. And they certainly don't care of a specific app is not on a…

Within 10 weeks, Vine for Android was made from scratch

After joining Vine for just 10 weeks and starting the app from scratch with @pandemona and help from the rest of the team, Vine for Android is now on Google Play Store. ​Vine for Android splash page.

How to make in page margin animations smooth for ViewPager pages

tl;dr modify the setOffScreenLimit dynamically. ​ In order to keep a constant length ViewPager scrolls smooth, setOffScreenLimit(page.length)​ will keep all the views in memory. However, this poses a problem for any animations that involves calling View.requestLayout function (e.g. any animation that involves making changes to the margin or bounds). It makes them really slow ( as per Romain Guy )…

Cooper is far from dead

Yesterday, Cooper Union's administration has ​announced that Cooper will no longer offer 100% free scholarship starting with the incoming freshman in fall 2014 . It will still be need-blind admission, but it will charge those who can afford it up to 50% of the full price (around $20,000). Within one hour, my Facebook feed has blown up with almost every classmate of mine posting something related…

Becoming a better programming

I think I'm going through different phases of becoming a better programmer these days and the feeling is really good. Sources to improvement: 1. School: CS background, knowing how to break a problem down and analyze the strategy to solve it. 2. Working on side projects for fun in school: free learning, time management, experience the joy. This source also get you the most rewards. 3. Working with…

Endroid's local comm done. :)

Since school has ended for me last month, I started on Endroid, an experimental project for me to build a self-ware robot ( project plan ). So far, the easy mechanical parts are done: The Vex 2-wire motors can be controlled via Arduino fairly easy with Vex Microcontroller 29 which turns Arduino's PWM (pulse width modulated signals) into DC signals so you can plug them directly into the PWM analog…

Looking forward

2012 is almost over. Many key life events has happened to me, graduation from college, finding my first full time job (Squarespace), getting funded for my startup (NYU to SleepBot), and ended with a death of a close family member. It was a very busy year and I certainly hope it had ended better. Looking forward to 2013, I will try to make the best of it with Jane, together. Now that I am done with…

Can't live without git any more

Thanks Linus for writing the stupid content tracker [1] for the 1 millionth time. ​Just pinned down the exact line that were committed into the repo from two weeks ago within an hour that may take hundreds of hours of work if it was not version controlled using git. (even if it was using SVN will use 2-5x the hour) :) ​[1] try "man git" on a POSIX system.