HNHacker News
TopNewBestAskShowJobs

williamaadams

119 karma · joined December 19, 2012

williamaadams.wordpress.com
submissionscomments
williamaadams··on QOI: Lossless Image Compression in O(n) Time
I came all the back from my Thanksgiving slumber just to say; really?

I love this library, and have made a C++ friendly version of the same.

What you get for a few hundred lines of code far outweighs any of the shortcomings it might have. It's a great starting point. If someone wants to make a full on format, they'll probably be better off just using the new JPEG XL, rather than trying to shape this thing.

It's a good exploration of what can be done with run-length encoding.

williamaadams··on QOI: Lossless Image Compression in O(n) Time
Just came here to say, good job. I was doing my own run-length encoding thing using the TGA format, but this is nicer. It's good enough that I am able to run a little screencast thing using it.
williamaadams··on The future is in symmetrical, high-speed internet speeds
Depends on the community of course. Sub-Saharan Africa leap-frogged copper and went to 4g/5G. Probably same for broader band.

Not too long ago 10 mbits was ‘broadband’, so, maybe various forms of wireless will be just fine. Certainly more flexible in terms of long term options

williamaadams··on Amanda Gorman's “The Hill We Climb” (Full Text)
And yet, without any analysis, anyone I've talked to was moved by the poem, and thought it was the best part of the inauguration. I think the moment, the black young girl standing at the pulpit of power, the collective relief, the joy of seeing a female (black/asian) as VP, culminated in an emotional uplifting, which the words did not capture at 100%. It had meaning in the context of 4 years of trump, of 400 years of oppression, of a summer of outcry for justice. Reading later will leave you flat I think. I thought it was perfect for the moment.
williamaadams··on Lua 5.4.0 beta
I use it as a way to rapidly prototype stuff related to new C-APIs https://github.com/wiladams

Currently using it to create a tiny Postscript interpreter: https://github.com/wiladams/lj2ps

williamaadams··on Microsoft Attempting to Destroy the Careers of Its Critics
ok, so it is exactly the move of someone trying to kill it all from the inside...

But really, it's something easily judged over time. Everyone will be able to judge how our open source attitude is in coming years.

And hay, look, there's more absorption of Linux into Windows... Is that embrace extend, or recognize reality? Or hold on for dear life? From my perspective, it's evolution, and nothing but good.

williamaadams··on Microsoft Attempting to Destroy the Careers of Its Critics
I've worked for MS for 20 years. I sat in one of those Steve Ballmer meetings where he decried OpenSource. But, more soberingly at the time was that he said "we won't sell on Linux because we simply don't know now", in answer to the question "when will SQL Server be available on Linux"?

Times have changed. I mean look, we bought GitHub. That's not a move of someone that's trying to destroy from the inside. If it were, we would have immediately just slow rolled it, but we're actually making improvements.

I don't think we're collectively smart enough (nor are most orgs) to pull off grand conspiracies. Just a bunch of humans trying to do what's right for the company and customers.

So, I agree with your assessment. Lots of good, still bad actors, modern times have changed.

williamaadams··on 3D Wireframes Using SVG
There was quite a lot of openscad replacement going on in 2011. I even made a lua based alternative.
williamaadams··on Microsoft CTO on the future of software engineering [audio]
Ive worked for Kevin during his tenure at MS. Ads have not been the focus, so I'm not sure the innuendo means much.
williamaadams··on A note to our employees
I work for Microsoft, and the back of my employee badge says: Our Mission; Empower every person and every organization on the planet to achieve more.

To me, this implies that our engineering organizations, and entire company, need to have an appropriate amount of empathy across a broad spectrum of geographies, cultures, experiences, perspectives, and the like. You only get that by having a diversity of talent, and more importantly, inclusion in your engineering practices.

When I talk about diversity, I usually say; "There are two forms of diversity, DNA diversity, the stuff we usually talk about in terms of color, sex, etc, things you can see, and then there's diversity of perspectives and experiences. You need the diversity of experiences and perspectives. In some cases that's conveniently wrapped in some forms of DNA diversity, but is not exclusive to that".

I don't think the question is at all controversial, and we should not be afraid to openly talk about it.

williamaadams··on Frivpn – A multi-threaded OpenVPN client
I think it's more interesting than that. This is a mixture of C and Lua code!

Looking at it, I can imagine redoing it as LuaJIT and using ljsyscall to deal with the system calls on all platforms. Might be even more snappy.

williamaadams··on Outraged about the Google diversity memo?
...and, this guy being fired has nothing to do with political correctness or any of the other inane arguments people are rallying around. It's simple corporate calculation.

He release something that turned into a fire storm. Google no doubt did a law suit calculation and figured firing him was cheaper than the inevitable "hostile work environment" lawsuits they figured would be filed if they didn't take such action.

If the goal was to not get fired, but still have the dialog, he probably could have found a forum to do it. Instead, he blasted into their internal interweb, and here's the outcome.

Most large companies would probably end up doing the same thing, regardless of what they might believe about what was actually written.

williamaadams··on Outraged about the Google diversity memo?
This whole episode leaves me a bit perplexed because in tech we keep missing the mark when it comes to diversity.

I work at Microsoft. The back of my ID badge has our mission statement: Empower every person and every organization on the planet to achieve more.

To me, that mission is a blueprint for how I can easily approach issues of diversity and inclusion. It says "everyone". To me it's a simple matter of gaining empathy for a wider set of customers so that I can more effectively create software for them.

As an engineering manager, I need to somehow be able to include the views, perspectives, and experiences of a wheat farmer in rural Kenya. Same goes for the high speed day trader in Iceland (I've been to neither place, so how do I know what they really need).

I want more women in engineering precisely because they're not me. Nothing about them makes them less capable of writing code, and several of their attributes (grossly generalizing) makes them far better collaborators than most men I know.

So, I'm just shaking my head, and continuing to do my bit to improve things in ways that I believe are useful: http://aka.ms/leapit

williamaadams··on Google Fires Employee Behind Controversial Diversity Memo
"worse before better"... It's all a matter of perspective. For anyone who's been the "minority", things have always been 'worse'. Things can only get better.

If you can truly embrace that perspective, you'll discover a profound truth.

The transition might cause some discomfort for those who've been on the privileged side of things for a while.

williamaadams··on Google Fires Employee Behind Controversial Diversity Memo
"diversity" and "inclusion" often go hand in hand. Throw in some "unconscious bias" training, and you begin marching down a path. I think it's something only time and a diverse gene pool will heal. Relevance to the job is a key thing, as simple as it sounds. You always want "the best", and in tech, that often means "people like me", which necessarily means "not people like them", and we find ourselves where we are today.

It's a journey.

williamaadams··on Google Fires Employee Behind Controversial Diversity Memo
Here's the minority's perspective: 1) Why is it required that there can be no more than 20% women in a tech company? 2) Why is it required to have a minimally diverse company?

If you look at these two questions and just say "hah! that's not the same thing at all!", then that's why.

williamaadams··on Google Fires Employee Behind Controversial Diversity Memo
When I read this manifesto, I thought "well, this is going to generate a lot of news".

What I did when I read it was substitute "woman" for "black", rolled back the clock to Jim Crow south, and read it again.

That might be an instructive exercise for anyone who hasn't actually experienced discrimination, or rather, primarily lives in the dominant side of any culture.

I would rather see this stuff out in the open, rather than hidden behind the glares and glances of colleagues. His firing is unfortunate, but totally understandable. This dialog could have ocured in a much better format.

In the famous words of Bill and Ted, "Be excellent to each other..."

williamaadams··on U.S. Accuses Tech Firm of Bias Against Asian Software Engineers
I'm personally not into diversity for diversity's sake, because I'm not quite sure what that is.

What I am for is equal opportunities. In some instances, giving that "equal" to one set of people requires work because they have been put on an unequal footing for some time. This was true in America for blacks because the origin of blacks was slavery (blacks were considered chattle, nothing more than cows, pigs, and goats). That kind of disadvantage requires some amount of work to overcome. The voting rights act wasn't enacted until 1965, the year after I was born, so that's something to consider.

With respect to tech, it's really easy for me. The back of my employment badge has our company's mission statement: Empower every person and every organization on the planet to achieve more.

I believe we greatly enhance our ability to do that by creating a more inclusive and diverse workforce. It's not simply about DNA diversity (women and 'minorities'), but it's also a diversity of experiences, from around the world. I'm willing to take the math major from Tunisia and teach them to be a great coder so they can contribute their experience to our mission, and help create software that's appropriate for their origin.

So, long answer I guess.

To me, everything is about learning and growth (probably due to my current age). So, I see your experience in Oakland, and say "great, you've gained another perspective on life". Let's see what you can do with it.

williamaadams··on U.S. Accuses Tech Firm of Bias Against Asian Software Engineers
unconscious bias, conscious bias, outright discrimination. What a quagmire of human existence these topics drift into eh?

No secret, I'm a 51 year old black man living in America. I've been in "high tech" all my life (Commodore Pet). I've run my own company, and worked in and around others, and now reside at Microsoft. My current non-tech mission is the promotion of diversity in hiring in core tech jobs http://www.industryexplorers.com

These are complex issues in complex times. I can say one thing though, much of the current set of biases will slowly dissipate as our children get into positions of power. Ethnicity itself is starting to get very blended. My college aged daughter (who is mixed herself) has friends of all stripes. As they form companies, and hire people, they'll hire like themselves, which is to say an eclectic bunch of people.

The next frontier in bias might be economic stratus, or hair color, or which side of the egg you break open.

I think the best we can do is be as aware as possible, and simply strive to find and work with good people, while holding everyone in high esteem and with respect.

williamaadams··on My love-hate relationship with LuaJIT (2015)
heh... I've written a bit about our favorite abandoned language ;-)
williamaadams··on My love-hate relationship with LuaJIT (2015)
It really depends on your use case. I write all my tight loop code in LuaJIT itself, rather than calling out to C. Lots of people use LuaJIT as the glue to highly optimized long lived and proven C code libraries.

The case for doing the glue in Lua is the fact that script is arguably easier to prototype in. So, depends on your particular application space. C can be a lot more error prone, at least when it comes to memory management, but this is a general argument for garbage collected vs not.

williamaadams··on My love-hate relationship with LuaJIT (2015)
I love commentary on LuaJIT, it's like a discussion of the subtleties of an acient game whose practitioners understand and enjoy, and everyone else ignores.

My experience with LuaJIT has similarly been love, not much hate though. My lack of hate stems from the fact that I don't actually use it in production. I've used it as a learning and teaching tool for the past 4 or 5 years.

What I've learned: Co-routines combined with traditional async IO can make for some very fast IO bound programs.

JIT based FFI for interop is the cats meow

The guts of operating systems can be easily explained using such a simple language.

I went as far as creating a collaborative 3D modeling program (ala OpenSCAD) using LuaJIT.

I've created an entire Windows API wrapper (TINN).

I've explored the guts of Linux (using ljsyscall), and done exploration of various bits and pieces (lj2procfs).

I've been able to explore and play with any manner of API from dozens of OpenSource projects and otherwise, simply because LuaJIT (and specifically the FFI) make it possible to quickly wrap them up in such a way that exploration with script is easy.

I never worry about the death of LuaJIT, just like I very rarely look at the guts of my machine that's been running since 2009. The various parts may no longer be supported, but somehow my machines manages to continue to operate. Eventually I'll build another one and move on.

With recent changes to TypeScript, and the emergence of the Chakra engine, I might be tempted to make JavaScript my new thing, but they lack FFI, which I really love. I wish there were a solution for that.

Go has co/goroutines, which I really like, but I don't think their C interop story is particularly compelling, and not quite a scripty thing, which I find to be fairly useful.

I was originally driven to LuaJIT because PUC Lua had a flaw in their OpenGL binding, and it just wasn't robust enough for my needs. I find no value in their current versions, because FFI seems to be the most valuable thing to me I guess.

So, since it's a play thing for me, I find no other language as compelling or useful, for my needs. Some day, I'll use one of the language tool kits to convert my most interesting Lua code to another language, hopefully one with a good FFI. Until then, I'll keep using it.

And, if you've been around the industry long enough, you realize one language won't do it all for all time. I've long since given up on Objective-C (from NeXT days), I no longer write 6502 assembly (although still very popular apparently). I dove into C++ in the past couple of years, and came out with hives! Rust and Go are on the horizon, and who knows what's after that.

williamaadams··on Tech Companies and Diversity Hiring
Well, I suppose this is fun at a certain level, because there are assumptions, and conclusions, built upon assumptions.

I'll try to clarify my position.

The back of my Microsoft badge says something about helping everyone on the planet.

Such a mission is as much about emotional intelligence and an ability to be empathetic as it is about actual application of technology.

Let's imagine the very high IQ'd high scoring person, who grew up in a certain environment has the task of creating software for someone in a rural community they know nothing about, and they will not visit. They are very clever, and they'll come up with something.

Now, let's imagine a child who grows up in that rural community. By standard testing methods, they don't have the same level of skills as the high SAT scoring individual, so they never get hired into tech, they're never consulted about what might help the needs of their community. They are in fact intelligent, just didn't go to a very good school, nor had the various opportunities that the high scoring SAT person did, so they're out of the loop.

So, in my mind, if I have a mission to help such people, it seems the best way I could do that would be to incoroporate them into my dev team in some way. That might include providing them with additional educational opportunities they might not have otherwise had. It might be a temporary contracting or consulting role rather than full employment.

It does not mean total exclusion from the creation process, which is what occurs today based on things like a test score, or a college affiliation.

This is the argument of why diversity matters in tech. All the SAT scores, college graduation rates, and the like, are just the pieces we're moving around to justify our reasoning for remaining fairly homogenous in our hiring practices.

At this point, you don't know me, my history, ethnicity, nor accomplishments in tech. The full reveal might be enlightening.

williamaadams··on Tech Companies and Diversity Hiring
Amen to that. It's a whole pipeline thing that begins before they even interview, and extends at least as far as their first few promotions.

And you do it not just because you want to tick off some numbers, but you do it because a diverse workforce is going to create a more valuable and relevant company.

williamaadams··on Tech Companies and Diversity Hiring
The hilarity is in how this perpetuates the reasons for excluding a class of individuals from participating in the software creation process.

Good in math probably won't give you the empathy and insights into how technology could help rural Kentuckians.

Additionally, software today is very much a 'poke at the frameworks, and mash it together' sort of affair. When I joined MS 17 years ago, knowing how to use WinDbg was probably a big skill to have. Today, it's more about knowing how to use various JavaScript frameworks.

Math specifically comes into play perhaps when talking about data science specifically, but there's an app for that.

If Math is a stand in for an ability to think critically, and apply the scientific method, then biologists, physicists, and even social scientists, might be just as qualified as any engineer.

So, yah, one more exclusionary myth about the qualifications of engineers, and who's best at it (whites and Asians? really?).

williamaadams··on Tech Companies and Diversity Hiring
I was one of the managers in Dare's team when he was hired at Microsoft. A very dynamic guy.

Diversity hiring is challenging. Lots of pitfalls, minefields, and social cruft to get through.

Here's my effort to improve things at Microsoft: http://www.industryexplorers.com

You have to hit the whole pipeline, starting from k-12, and going all the way up through senior promotions. You have to think about which companies you do M&A work on, where you source in the world, and how you're going to engage with HBCUs and others.

Most importantly, you have to take action, and not just talk and write about it.

You have to change internal cultures. You have to recognize the biases and buzzwords such as "we don't want to lower the bar". You have to remind yourself that not too long ago, programming was something that very smart people, trained in many different things, engaged in as a side thing, not as a primary thing, and that's what's built our current industry.

meh, it's a lot of work, and will take many more years of concerted effort.

williamaadams··on Tech Companies and Diversity Hiring
This is hilarious. SAT scores as indicator of competency, rather than merely a measure of how well someone takes a test.
williamaadams··on Moses, utility library for functional programming in Lua
From a casual glance, luafun tries to compose with iterators as much as possible. It looks like Moses is largely table based, which might be more memory intensive.

Also, luafun was designed around optimizations offered in LuaJIT. I doubt the same is true of Moses.

williamaadams··on Mike Pall: Ramblings on languages and architectures
In the case of Adapteva, I think it's helped along because their starting point is fairly standard. Using Arm, Ansi C, Ubuntu, etc. They have an fpga on their board, and then their specialized parallel processing chip. They support OpenCL. I'm not a compiler guy, but it seems to me that various concepts can be injected at different levels of this hardware stack, slowly but surely, without having to create the entire thing from scratch.
williamaadams··on Mike Pall: Ramblings on languages and architectures
How timely that The Adapteva Parallela computer board was just made available as well. Perhaps something interesting can happen at the confluence of that hardware and these compiler thoughts.
Page 1 of 2Next →