A collection of things software developers should know
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Member since 2017-07-15T03:50:57Z. Last seen 2025-01-02T20:05:01Z.
2729 blog posts. 128 comments.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Three and a half years ago, Facebook announced its plan to acquire messaging phenom WhatsApp for $19 billion—a price tag that was a head-snapper at the time, and remains one today. But it was only in January of this year that the WhatsApp team, which has worked out of a succession of Silicon Valley offices, moved onto the Facebook campus in Menlo Park. It occupies a wing of Building 10, where its new workspace sits behind doors with a sign making a request I can’t remember seeing at any other tech company: “Please keep noise to a minimum.” Once you get inside, the message is reinforced with additional library-esque signage such as “Quiet Zone.”
When I ask WhatsApp CEO Jan Koum about the unexpected emphasis on quietude, he tells me that the company has found that its engineers get their best work done in a distraction-free environment. “We’re not a typical bunch,” explains Koum, who cofounded the company with his friend and fellow Yahoo alum Brian Acton in 2009. “We’re a little bit older and a little bit crankier than probably a typical college graduate. So we’ve always preferred to have a very quiet office environment.”
Jan Koum WhatsApp’s space was indeed strikingly tranquil on the day I visited. But the company’s belief in the value of concentrated effort runs far deeper than a mere desire to discourage unnecessary chatter. It’s embraced the mantra “Focus is the new ‘F’ word” and emblazoned it on refrigerator-style magnets that employees have stuck on surfaces throughout the office. And a WhatsApp staffer informs me that a colorful mural by Bay Area artist Ian Ross, which looks pleasantly abstract to me, actually has focus as its theme.
Most important, it’s easy to see how WhatsApp’s dedication to focus is expressed in the app itself, which made its name as a free, approachable alternative to paying a wireless carrier for text messages and has added only a handful of new features—such as voice and video calling—since. “The culture of the company comes from the product we’re building,” says Koum, a focused guy himself who only occasionally takes time out of his schedule to talk to members of the media. “We’ve always wanted to build a product that is simple, utilitarian, really efficient, doesn’t use a lot of bandwidth, doesn’t use a lot of battery on your phone.”
By the time Facebook bought WhatsApp, that straightfoward proposition had already allowed the service to rack up more than 450 million monthly active users. Two years later, that figure hit one billion. Today, it’s reached 1.3 billion monthly users, one billion of whom use it every day. They send 55 billion messages, 4.5 billion photos, and one billion videos daily. (Unusually global in its appeal, the app is available in 60 languages and counts India, Brazil, Indonesia, and Mexico among its biggest countries in terms of users; the U.S. is also in the top 10.)
WhatsApp’s sustained growth is reminiscent of Facebook’s own impressive ability to keep its user base ticking ever upward. But while Facebook has long prided itself on the way its growth team has turned attracting new members into a science, Koum is equally proud of the fact that WhatsApp has not done so. Instead, all of its attention has gone into making the app as simple as possible to get started with—it doesn’t even require you to create a user name or password—and so useful that you’ll tell friends and family about it.
“The important thing for us is that all the growth has been organic,” says Koum. “We’ve never done any kind of growth hacking or anything like that. And we’ve always thought that that’s what makes our network stronger.” All along, he adds, the company’s goal has been “getting every single smartphone user on our network and getting them to use WhatsApp.”
As much as WhatsApp has resonated around the world, it wasn’t a given that it would remain so streamlined once it became part of Facebook. The Facebook service itself, after all, has always erred on the side of trying many things rather than mastering a few. It also spun its Messenger feature out into a standalone app that is itself dense with functionality. Even Instagram, which originally zeroed in on one job—making it easy to beautify and share square photos—is now adding new capabilities as fast as it can build them.
In February of this year, WhatsApp got its only new feature that feels at all like a departure from its core mission: a “Status” tool which, like the “Stories” in Facebook and Instagram and Messenger’s “Day,” allows users to weave images and video clips into shareable multimedia mini-extravaganzas.
Like others at Facebook involved with its variations on the Stories theme, Koum gives Snapchat full credit for the original idea but says that his version isn’t just a bolted-on clone. In fact, he points out that WhatsApp originally centered around text-only status updates and only segued its way into messaging later. “Images tell a much better story than text,” he says. “And videos tell a much better story than images. So we wanted to introduce a richer status into our application, and basically bring our 2009 status into the 2017 world. And that’s what we did.”
The initial rollout of the new Status feature provoked some grumbling among users who missed the old-school text statuses, which WhatsApp swiftly brought back. Still, a critical mass apparently welcomes the new version. In July, the company announced that 250 million people—a quarter of all members—were using it daily, giving it a bigger audience than Snapchat in its entirety.
By introducing the Status feature, WhatsApp has contributed to pan-Facebook efforts to tamp down competition from Snap. But like its fellow acquiree Instagram, the company has retained a generous degree of autonomy when it comes to determining its own future. At the same time that Messenger is ramping up its support for games, for instance, Koum calls out gaming as being insufficently utilitarian to make the cut on his service: “People don’t want to go and play games on WhatsApp—they want to communicate on WhatsApp.”
Instagram CEO Kevin Systrom likes to compare working with Facebook CEO Mark Zuckerberg, COO Sheryl Sandberg, and CTO Mike Schroepfer to having a world-class board of directors. Koum says that WhatsApp has a “fairly similar” relationship with its parent entity, though he adds that he also contributes to Facebook’s overall strategy as a member of its own board: “It gets a little bit recursive if you start thinking about it.”
WhatsApp cofounder Brian Acton WhatsApp is, however, deeply integrated into Facebook when it comes to utilizing its resources and avoiding duplicative effort. For instance, it can use its parent company’s powerful recruiting machine to hire new talent. And rather than having to build its own plumbing to support voice and video calls, it’s been able to construct those features atop infrastructure that Facebook has already created for the purpose.
This sort of piggybacking has helped WhatsApp remain a tiny operation given its vast user base, with fewer than 250 employees, up from 55 at the time of acquisition. (Instagram has gone from 13 people to 500-plus since joining Facebook in 2012; overall, Facebook, Inc. has more than 20,000 staffers.) WhatsApp is still growing, with more than 50 open positions posted at Facebook’s careers site when I checked. But “engineers prefer to work in nimble teams that don’t necessarily have a lot of meetings or a lot of overhead that is not writing code and building product,” believes Koum. “And so our desire has always been to have really small engineering teams.”
Privacy For The Masses
One thing that WhatsApp had long wanted to offer but needed time to implement was seamless end-to-end encryption, so every messaging conversation, voice call, and video session was sealed off from prying eyes, in a way that protected users without requiring them to change their habits. The company began working on the effort in 2013 and completed it in early 2016. “There are a lot of regimes out there that spy on their citizens or want to spy on their citizens,” says Koum, who was born in Ukraine when it was part of the Soviet Union and arrived in the U.S. as a teenager. “That are not very democratic, that try to have really strong censorship, and we’ve always been against that.”
WhatsApp’s implementation of encryption has not been without controversy; it’s led to the app being periodically blocked in Brazil and, more recently, hobbled by China’s Great Firewall. However, Koum—who is careful to share credit with Apple, which has built encryption into its iMessage protocol—says that the fact WhatsApp is securing billions of communications a day in a way that it can’t bypass with a backdoor has helped governments get their heads around the new reality.
“We’ve learned that governments and law enforcement agencies have understood and accepted the fact that end-to-end encryption is here to stay,” he says. “Nobody has come and asked us to turn off end-to-end encryption or disable it, which you actually cannot do mathematically. The moment you provide a backdoor to an end-to-end encrypted product, it’s no longer an end-to-end encrypted product.”
WhatsApp’s “Focus Wall,” by muralist Ian Ross. Getting Down To Business
Facebook has granted WhatsApp the freedom to maintain its focus on building a simple, utilitarian, user-pleasing app without rushing any effort to monetize those 1.3 billion members. Prior to being acquired, the company had a hardline attitude against ads. It still doesn’t show them, making for a sharp contrast with Instagram, which now touts the fact it has more than a million advertisers, making it a significant contributor to Facebook’s overall revenue.
For a while now, WhatsApp has been talking about an alternative business model that Messenger is also developing: serving as an intermediary between consumers and businesses for purposes such as customer service. Koum still isn’t ready to spill the details on anything specific that the company might be building in that area. But he does tell me about instances where it could make sense. If your Lufthansa flight is delayed, he explains, you might appreciate hearing that news via WhatsApp—and then having the chance to rebook it within the app.
It’s possible that Lufthansa might pay for that opportunity, but Koum stresses that WhatsApp isn’t yet concentrating on the financial side of such scenarios. Instead, it’s still working out what the user experience would be like.
“Already, we have businesses who use WhatsApp for their communication with their customers,” he says. “And in a way, it’s kind of like trying to put a round peg in a square hole because the tool is not the right tool for them to use. What we’ve talked about is that our network would be more valuable if we could get businesses to use it appropriately.”
Though designing functionality to let businesses communicate with their customers would be a new frontier for WhatsApp, it would also be very much in the spirit of the success the company has found by offering the world a better alternative to wireless carriers’ text messaging services. “I get alerts from my dentist reminding me for an appointment via SMS, and I have to reply ‘yes’ or ‘no,'” Koum notes. “It’s not a very good user experience.”
After discussing WhatsApp’s present and future with Koum, I wrap up by asking him about its early days. Was there a moment when he knew that he and Acton had created something with the potential to appeal to a meaningful percentage of humanity?
“In Hollywood films, they always make it look like there’s that epiphany you have, that you come up with an idea and you run to the patent office with music playing in the background,” he laughs. But he believes that he and Acton found a winning formula over time because they experimented, leveraged the technologies available to them (such as iOS notifications, which Apple introduced in 2009), and watched how people used their app. Not only is this approach repeatable, he adds, it’s become even more doable as smartphones have reached even more people and matured as a platform.
“Getting to a billion users these days,” he confidently asserts, “is much easier than it was when we started out.”
名采論壇
前行會成員林奮強接受電視台訪問時公然建議香港後生一代離開香港,去越南、印度、墨西哥等地方尋找生活,他認為香港已經「唔係一個會令人開心的地方」,年輕人努力工作,不可能安居樂業,只有去比香港落後的國家與地區,才可以靠雙手養妻活兒。 這是極殘酷的現象,一代人,甚至不止一代人,在自己出生的地方,無論怎樣勤奮工作,都不能依靠個人努力謀求生存。而這個地方,明明每年被評選為亞洲前五大最宜居城巿。那麼,這個城巿究竟適宜甚麼樣的人居住?若本地人在沒有援助之下、依靠個人無法謀求生存,又如何會是宜居城巿? 當一個地方貧富懸殊越來越大,年輕人在這個地方看不到希望、找不到方向,這個地方的政策制訂者、決策者、實施者是有責任反躬自省的。奇怪的是,特區許多高官、前高官往往只是若無其事聳聳肩說,沒能力在此地生活?很簡單,去別的地方好了。而他們建議的別的地方,通常是遠較香港落後的地方。也就是說,變相承認港人治港能力不足,連第三世界領袖及官員的能力都不如。 更奇怪的是,世上有哪個國家或地區的地方官員會公開建議民眾棄國而去?如果愛國的前提是珍惜自己的國人身份,那,這些高官或前高官豈非公然不愛國?
觸發事件是一個大鉤子
觀眾迫不及待想知道劇情重要疑問的答案,因此直到最後一幕的高潮出現時都不會分心。
觸發事件愈快出現愈好,但一定要等到時機成熟······。
每一個故事設定的世界和人物都不同,因此,每一個觸發事件也各不相同,安排出現的時機也不同。
太早出現,可能會讓觀眾迷惑;出現得太晚,或許會讓觀眾慼到無聊。
他的極致簡約,讓他的劇作凌駕其他人之上。他幾乎什麼都不說。
2017-08-31 | Pramod HS
Ryan Dahl is a Software Engineer working at Google Brain. He is the creator of Node.js, JavaScript runtime built on Chrome's V8 JavaScript engine. Currently, he is working on deep learning research projects. His focus is mostly on image-to-image transformations like colorization and super resolution. He has contributed to several open source projects including HTTP Parser, libuv.
Pramod: Hello People. Welcome to mapping the journey. When we hear about Node.js, it's Ryan Dahl. He showed us that we are doing I/O completely wrong and also taught us how to build software using pure async programming model. Today's guest is the man himself Ryan Dahl, hacker, brilliant programmer and creator of Node. I am very excited and honored to have you on the show. Welcome Ryan
Ryan: Hello! Nice to be there... here.
Pramod: Ryan we know you as Creator of Node, tell us about your life before Tech?
Ryan: Sure. I grew up in San Diego, my mom had got an Apple 2C when I was six years old, so I guess I've had kind of early access to computers. I'm 36, by the way. So, I kind of came of age just as the internet was coming out. I went to community college in San Diego and then went to UCSD afterward, where I studied math. Then, I went to grad school for Math, in the University of Rochester. Yeah. There, I studied algebraic topology, which was kind of a very abstract subject, that I found very beautiful for a couple of years, but later I got bored of it because it was not so applicable to real life, it seemed. After grad school, well... so, that was a PhD program, and once I realized that I was not wanting to be a mathematician for the rest of my life, I dropped out of that program, and bought a one-way ticket to South America and went there for a year, where I was kind of in starving student mode, and found a job doing some web sites with this guy, Eric. And that's kind of how my programming career started. It was working on the Ruby on Rails website for a snowboard company.
Pramod: Nice! That must be an experience right to drop out of the Ph.D. program, travel to South America and working as a Web Dev.
Ryan: Yeah. I mean, so... coming from grad school, you're used to dealing with very abstract problems, and working on websites was a very concrete process. But I was really trying to make it into... trying to make it into a beautiful mathematical theory like I was exposed to at grad school. And I think that got me thinking about... I guess I really liked how Ruby made development so much more, I guess, you could express your ideas more clearly in Ruby. And that was really interesting at the time. And I think Rails was really interesting in that. It gave this new structure, and probably, it wasn't totally new, but I think Rails popularized the structure of model view controller. And you know, those two things combined together, really was pretty interesting to me.
Pramod: Yes, building web applications, is very interesting. And Ruby is a perfect tool. Next, you continued working as a freelance web developer in Germany. One of the projects you worked on was Node. And I think you continued working on it for the next six to eight months?
Ryan: Right. So, after South America, I moved with my girlfriend to Germany, because she was German and had to return to university. And I started going to Ruby conferences there, where people were talking about this new paradigm of model view controller. And one of the guys there was Chris Neukirchen, if I'm pronouncing that correctly. And he developed this project called Rack, which was a simplified abstraction of a web server. So, it really turned a web server into a single-function interface, where you get a request, and then you return a response. That, combined with some freelance work that I was doing on Nginx Module, for Engineyard, got me thinking about how... let me step back a second. In Nginx, everything is asynchronous. So, when you build a module for it, you have to be very careful to be non-blocking. And yeah, I think the combination of Chris Neukirchen’s rack plus how Nginx structured its web server with non-blocking IO, led me to start thinking about how those two things could be combined.
Pramod: Now you sort of had the idea with Rack and Nginx. "How did you convince yourself, okay I will spend my next 6 months building framework that can run Javascript on the server side, which may increase the performance a great deal?
Ryan: So, those two pieces that kind of simplified web server interface, which was Rack, and the asynchronous part, which was Nginx, I had been thinking about. And then Chrome was released in December 2008. And along with that was the V8 Javascript interpreter. I shouldn't say, interpreter. It's a jitted run-time. So, when V8 came out, I started poking around with it, and it looked really interesting and clean, and fast, and suddenly, I clicked that: oh! Javascript is actually single-threaded, and everybody is already doing non-blocking. I'm using my fingers to do air quotes, but like in the web browser, people are already doing non-blocking requests when they make AJAX request and stuff. And I thought: oh, wow! I think JavaScript plus asynchronous IO plus some HTTP server stuff would actually be a really cool thing. And I was so excited about that idea that I just worked on it non-stop for the next four years.
Pramod: Yes Javascript plus async i/o worked really well. I believe developers were waiting to see a framework that did that. And Just curious, during this time, was there any mentor or did you ever consult with anyone"? or Was it just you?
Ryan: It was basically just me. I had some programming friends who gave advice, and definitely... I mean, the first bit of it was really just me in my room. But later on, I ended up moving to San Francisco and working at Joyent and meeting lots of really great programming professionals. And yeah, many people mentored and gave ideas that contributed to Node after that.
Pramod: Nice. Take us through the journey you went through with the development of Node. I know it's a long time Ryan since you created Node around 2009.
Ryan: I think at least for myself, there's no greater moment in my life than when I'm like, in the flow, and having an idea that I believe in. And have the time to sit down and really work on it. And I think Node was an idea waiting to happen and had I not done it, somebody else would have. But it just so happened that I was relatively unemployed and had some free time, and could work on it non-stop for months, which is what was required to kind of get an initial product out. So yeah, it was great, it was fun.
Pramod: Great. That's fantastic. You did it really well. Node is built on the idea of "pure async" programming model. How did this idea work out for node?
Ryan: Yeah, I think that's a really interesting question. Now, it's been several years, and I haven't worked on Node myself since like, 2012, or 2013. And Node, of course, is a big project at this point. So, yeah, I think... when it first came out, I went around and gave a bunch of talks, trying to convince people that they should... that maybe we were doing I/O wrong and that maybe if we did everything in a non-blocking way, that we would solve a lot of the difficulties with programming. Like, maybe we could forget about threads entirely and only use process abstractions and serialized communications. But within a single process we could handle many, many requests by being completely asynchronous. I believed strongly in this idea at the time, but over the past couple of years, I think that's probably not the end-all and be-all idea for programming. In particular, when Go came out. Well, I think Go came out a long time ago, but when I first started hearing about Go, which was around 2012, they actually had a very nice runtime that had proper green threads and really easy to use abstractions around that, that I think makes blocking I/O - again, blocking I/O in quotes, because it's all in green threads at the interface of... between Go and the operating system, I think it is actually all non-blocking I/O. But the interface that they present to the user is blocking, and I think that that's a nicer programming model, actually. And you can think through what you're doing in many situations more easily if it's blocking. You know, if you have a bunch of serial actions, it's nice to be able to say: do thing A, wait for a response, maybe error out. Do thing B, wait for a response, error out. And in Node, that's more difficult, because you have to jump into another function call.
Pramod: Yeah, I like the programming model of Go. Using goroutines is so much easy and fun. In fact, we are using at work for building a distributed application.
Ryan: Yeah, I think it's... for a certain class of application, which is like, if you're building a server, I can't imagine using anything other than Go. That said, I think Node's non-blocking paradigm worked out really well for Java Script, where you don't have threads. And I think that a lot of the problems with kind of the call-back soup problem, where you have to jump into many anonymous functions in order to complete what you're doing has been alleviated these days, with the async keyword, the async feature that's in Javascript now. So, kind of the newer versions of Javascript have made this easier. That said, I think Node is not the best system to build a massive server web. I would definitely use Go for that. And honestly, that's basically the reason why I left Node. It was the realization that: oh, actually, this is not the best server side system ever. Yeah. I think where Node has really shined is, weirdly, on the client side. So, doing kind of scripting around building websites. So, browser FI, for example. Kind of bundles up client-side Javascript. So, you can have all this server-side processing of client-side Javascript. And then, you know, maybe little servers to... maybe little development servers, and here and there, maybe some real servers serving live traffic. Node can be useful, or it can be the right choice for it. But if you're building a massively distributed DNS server, I would not choose Node.
Pramod: This should be a good takeaway for all the developers around the world. Choosing a right tool for application is so much important. You are not biased at all with Node. You introduced Node.js to the world in JsConf 2009 Berlin. Were you surprised with the success and traction it suddenly received?
Ryan: Yeah. I mean, I was basically in a continual state of surprise for four years. Because it grew very fast, and people liked it very much. So yeah, definitely.
Pramod: There after you joined Joyant and worked on Node full time and you moved to SF right? How was the experience? Developers loved it and You were the center of it all.
Ryan: Definitely, it was an experience of a lifetime, and I definitely felt in the center of it all, being at conferences and whatnot. At one point, I went to Japan, and people were asking to take their photo with me, and I realized... I don't know, I felt kind of weird about that. Also online, I think around that time, I felt like whenever I commented on something, I would get like, 100 responses from people. And so, I found that I had to choose my words very carefully and how I presented myself because it seems like people were really listening, which was strange. And I didn't like that aspect of it. I mean, I'm a programmer, and I wanna write code and sometimes share my opinion without thinking too carefully about it. And so, I think I'm not one to... yeah. I didn't enjoy that aspect of it so much.
Pramod: You were what, 29, 30, when you introduced Node? And Node made such a massive impact.
Ryan: Yeah. I mean, I was definitely a more of a novice developer at that point.
Pramod: Ok. Ryan, there were many server side javascript projects at the same time. Node was not the only one. What do you attribute the success of Node?
Ryan: Right. So, there were several people, that were trying to get the server side Java Script thing going. I can't even enumerate them anymore, I totally forgot what they are. Well, whatever. The thing is that they were all doing blocking I/O, and that really didn’t jive with how Javascript is structured because you don't have threads. And so, if you're doing blocking I/O, you literally can't serve requests. Like, you're doing one at a time, and that's just never going to work. That, plus the fact that I like, sat down and made the HTTP server work well. So, I had a demo where you could... I had an HTTP server, and then a raw TCP server. And I made those things work well so that people could kind of sit down and build a website without going through too much hassle. And honestly, building a web server is not the easiest thing, and I think a lot of these systems kind of left to their community to build that, and thus, nobody did. Because there is nothing to use the system with. I think it's important that when you release a software framework, or maybe any sort of software, that you have a demo that people can sit down and use immediately. And that was one of the things that went right with Node, it was that people could download it and use the web server immediately.
Pramod: Yes. Good Demos & if people could download, install and use it easily makes a big difference. Also, people knew javascript, they could start coding in no time. When I started working on node, it was that much more easy as I knew javascript well.
Ryan: Yeah. I think we take for granted how easy it is to switch between languages. I mean, even if you know another language, kind of making that context, which is pretty difficult. And there's a lot of people who are very familiar with Javascript. And kind of giving them these tools to be able to use it in other contexts excites people. You suddenly are able to do it a lot more than you were able to do before.
Pramod: Yes. In 2012 node already had a huge developer base. Why did you step away from, turning over the reins to Joyent’s Isaac Schlueter?
Ryan: Yeah. Right. So, I mean, I think it was kind of a combination of a couple of things. So, I think that the main thing was that, at that point, I had been working on Node for four years. And I kind of had gotten to the point where I wanted it. I never wanted Node to be a really massive API. I wanted it to be this kind of small, compact, core that people could build modules on top of. And there was a couple of key things that... key features that I wanted to support. So, extension modules a]was added early on, we kind of got all the networking libraries worked out, HTTP, UDP, TCP, we could access all the file systems. And then, kind of a big chunk, which was maybe a year of work with like, five people, was putting it to Windows and doing that properly. And that we wanted to use Windows abstractions for asynchronous IO, which is their IO completion ports. And so, that required rewriting the core library, which, the result of that was the libuv library. Yeah, but at some point, all of that was done, and we had released on Windows. And you know, it was kind of at the point where it's like: ok. I mean, this is what I had intended to create, and I'm very happy I got the chance to kind of follow through with it. And of course, there's going to be, you know, an infinite amount of bugs to fix for the rest of my life, but... you know, there are enough people involved to that. I don't need to necessarily do that, and I would like to go do other things. So, that plus the fact that Go came out, and I didn't see Node as being the ultimate solution to servers. And then, yeah, also just not wanting to be at the center of attention whenever I made a blog post.
Pramod: Nice. Yes, Some people do not enjoy being in the limelight. When you started working on Node, you definitely had some goals. How is Node.js today stacked up against it?
Ryan: I mean... Node is used by hundreds of thousands, if not millions of people at this point, and I think it's certainly exceeded any expectation of what I thought would happen with it. Yeah, it's cool.
Pramod: Ryan after your wonderful journey with Node, what did you decide to work on?
Ryan: So, after Node, I moved... after I left Joyent and quit the Node project, I moved to New York, and took some time off to work on my own projects. So, I had a bunch of projects. You know, at the time, Instagram had come out and it was new, and it seemed really simple, and everybody was saying: wow, that's so simple, I could have built that. And I couldn't help but think the same thing. So, I had a social network project, I had a build system project for C++, I had another build system project for HTML, which was kind of like, browser FI, which would kind of package up your Javascript and HTML, but in a smarter way. Yeah, I had a bunch of projects, none of which panned out, really, in my mind. Although I think some of them are currently still on the backburner, like my social network project, which I will get back to at some point. Yeah, I was doing that for a while. And then I started reading about... well, I started hearing about convolutional networks and how image classification had been solved, and that got me really interested in machine learning.
Pramod: Also you were part of Google Brain's Residency program. How was that experience?
Ryan: Yeah. So, I just spent a year out in Mountain View. So, stepping back a second. So, TensorFlow has released two years ago now. And with it, they announced this Google Brain residency program, where they invite like, 20 people to come to Google Brain, which is one of Google's machine learning research labs. And people... I think the idea with it was not necessarily people who had really studied machine learning but had some background in Math and programming and were interested in machine learning to like, come and kind of play around with these new ideas. Because machine learning is changing really fast and there is a large body of work that has been done, but now that the community has kind of narrowed in on neural networks as being the most useful algorithm for machine learning, that maybe just bringing in a bunch of people and just playing around with that, and this new ML framework, called TensorFlow, would result in some interesting ideas. So yeah, I spent a year there, basically programming models and writing papers about those models. I worked on mostly image to image transformation problems. So, you know, if you have some input image and you want to predict some output image. I find this problem really interesting, because, for example... let me give some examples. So, the problem of colorization. You can take a black and white photo as input and you can try to predict the colors of the photo as an output. What's cool about this problem is that there's infinite training data. You can take any color photo and de-saturate it, and then that's your input image, right? So, one of the problems of machine learning is that you need lots of data, and with these sort of tasks, that problem is not a problem. And also, there's been a lot of work in generative models recently, that is models that output images. In particular, there's been generative adversarial networks, and pixel CNN, which have demonstrated the ability to kind of learn the manifold of natural images, that is like, really understand what is a real image and what is not a real image, what looks like a real image. So yeah, my idea was to kind of take this recent work in generative models and take this infinite training data and see if we can do some image transformation problems. So, I did some work on super-resolution, which is taking a low-resolution image and increasing the resolution. That's also an image to image transformation problem. And I've done two projects now on colorization.
Pramod: Nice explanation Ryan. Yes, I have read that tensor-flow has been a great platform for many machine learning problems. Image classification, transformation, I really don't get it much but I believe it's very interesting. Are you continuing your work with ML?
Ryan: Right. So now, I'm still at Google, as a software engineer, working on the same sort of problems. Studying generative models and trying to help the researchers build the next generation systems, next generation models.
Pramod: Nice Generative models that's so much different than javascript, node or web-development work you did before.
Ryan: Yeah, I guess so. But I also started in Math, so I have a fairly decent foundation of math knowledge, I guess. And yeah, I guess... I think people like to kind of bend other people into certain areas, and I don't really wanna do that. I don't wanna be a Javascript person, and I don't wanna be a machine learning person. You know, I think people... it's interesting to just explore what's possible. What's exciting is building something new that hasn't been done before that could benefit humanity in some way.
Pramod: Nice. Yes, nice to know that Machine learning requires a good math background. In one of your recent blogs on Optimistic Nihilism, you say that we would be able to someday emulate brains and build a machine that understands and thinks like humans do. How far are we in achieving that?
Ryan: Yeah. I have to be a bit careful about kind of prophesying... I mean, this is really my opinion. We are nowhere near matching human intelligence. I mean, the machine learning systems that we're using are very, very simplistic, and basic don't work at all. In fact, I have a blog post about my residency, in which I kind of enumerate all the difficulties there are with developing these models. I think people who don't work in the field have this idea that you can kind of take this model and push some data through it, and it's just going to work. But that's really not the case. These things are very finicky and not well understood, and it takes many, many months of careful tweaking and experiments to get even the most modest results. So, we are nowhere near it, but that said, I think the foundation... there's really some promising technology that has been developed recently, which is namely that convolutional networks seem to work, and that propagation seems to work. And the fact that these things are based on a model, this neural network model, that is not really brain-like, but it is somehow inspired by the brain, is pretty enticing. We also have GPUs, and we showed how we can train on these and distribute training across GPUs to some extent. So, I think the kind of... the foundations of building bigger, smarter systems is happening. And personally, I'm an atheist, and I believe that there's nothing more in my brain other than the chemicals, and neurons that are the matter of my brain. And I think that my consciousness, all of our consciousnesses are encoded, somehow, in interactions between those neurons. So, I don't see why we wouldn't be able to, someday, with enough research and work in this field, emulate that sort of behavior. It's too far out to predict how long that would be.
Pramod: Great. You have seen it all Ryan and Where do you want to see tech in next 20 years?
Ryan: I mean, I am very excited about machine learning and the possibilities that it brings. I think that even before, like, way before we get to real artificial intelligences, that there's many applications of this technology. I mean, basically, any system where you could... where a smart gas would help you, is going to benefit enormously from this technology. So, there is just uncountable industrial processes that could benefit from this sort of thing, you know. I think recycling centers, with sorting... sorting recycling with computer vision, and what not. I mean, there's just many, many systems that could benefit from simple machine learning systems. And I think that we're going to, more and more, see these systems get applied to different processes. So, I think that's going to affect the technology sector greatly, and all of humanity greatly.
Pramod: Yes machine learning is very exciting. I get so much excited when I see autonomous cars in Mountain View. Someday I would like to sit back and give complete control. Thank you, Ryan, for providing us with this nice framework Node and thanks for being on the show. Also good luck with your future projects. It was wonderful speaking to you
Ryan: Yeah, great. Thanks for having me, it's fun to talk about it.
Pramod: Thank you. That is it, listeners. I really enjoyed speaking to Ryan, such a humble and awesome guy. He has achieved so much in his early years in tech. Such an inspiring story. Bye for now, I will meet you all in 2 weeks time with another interesting journey. Shukriya.
科技發展日新月異,現有的知識和技能轉眼變得落伍。近年不時有公司裁員,政府應幫本地員工提升科技技能,讓他們有機會加入快速發展的數碼經濟,幫助市民掌握新科技,在人工智能、數據經濟之中自我提升,免受淘汰;同時,政府應加強培訓、吸引和挽留科技專才,確保發展創新和科技有足夠科技人才。
LinkedIn的全球十大最渴求的技能榜上,絕大部分與IT相關,包括雲端運算、數據分析、手機程式開發、資訊保安等。國際間最受進修人士歡迎的ICT MOOC課程,現時均不為持續進修基金認可。
改革進修資助
雖然政府於2002年推出持續進修基金,但課程有限、手續繁複,申請人數因而連年下降,香港人持續進修比率低於國際水平。有調查訪問曾進修的青年,六成沒有申請持續進修基金,當中近半人表示修讀課程不屬資助範疇。持續進修基金的資助範疇過時僵化,未有反映互聯網經濟、ICT和數據經濟等最新機會,必須更新與時並進。
新加坡2016年推出SkillsFuture資助計劃,當中最多人修讀ICT相關課程,新興範疇如數據分析大受歡迎。該國自行開辦數據分析遙距網上課程(MOOC),亦邀請STEM教育平台推出認可課程;在資訊科技類別,更有不同程度課程,由網絡基建、項目管理、資訊保安、大數據等均有涵蓋,Udemy的網上自學課程亦適用。
ICT界人才供不應求,從業員期望能提升技能。筆者曾質詢創新及科技局有關靠政府資助修讀ICT課程的人數,並促請政府藉持續進修協助應付新世代職場需要的科技技能,幫助年輕人以ICT開拓發展空間。制訂全面的科技人才培育策略、加強人才及技能培訓制度建設、針對香港高端科技人才荒、研究如何培訓、加速創新及科技產業發展所需的勞動力,是政府責任,目標是要幫助青年向上流動。
跨界別合作培訓人才
金管局金融科技促進辦公室與應科院2016年底推出「金融科技人才培育計劃」,與銀行和大專院校攜手合作,協助業界培育新一代金融科技專才;該計劃反應熱烈,數碼港同樣有類似實習計劃,值得進一步推展至更多行業。
筆者建議政府鼓勵商界與科技公司、專業協會、高等院校合作提供課程、實習機會、獎學金和專業認證,培育軟件工程師、數據分析、資訊保安等科技專才,並資助本地IT畢業生和在職IT從業員修讀短期課程,掌握新的知識和技能,開發更多令香港市民受益的產品和服務。目前IT市場最搶手的人才之一是數據科學家,政府可考慮鼓勵傳統行業與科技業界合作,舉辦更多數據分析和應用的課程,並擴大數據科學相關學科的招生數目。
英國政府近年積極與IT界合作,吸納當地業界的意見,令電腦學科更為切合業界的需要,亦聯同業界推出認證課程,協助IT人學習新技能。紐約市政府於2014年推出Tech Talent Pipeline 計劃,與各級政府及私人公司投放近一億港元,與大型科企合作推出培訓課程,沒有IT背景者亦可報名參加。
筆者建議改革持續進修基金,政府與科技企業可合作提供本地化的科技MOOC課程,並推動市民以MOOC進修,重點增加更多資訊和通訊科技業、電腦科學、數據分析等資助課程,簡化報名和資助程序,協助在職IT人進修和在職人士進修ICT自我增值。
政府亦應主動招募本地和海外科技畢業生,同時加強內部技術培訓,協助政府部門利用科技改善內部運作和電子服務。最後,政府須要重新啟動資訊科技專業資歷認證,提升IT人專業地位,吸引人才入行。
莫乃光_立法會(資訊科技界)議員