Until yesterday I was using a Lenovo Thinkpad Carbon X1 running Ubuntu 22.04. It was an awful combination (microphone didn't work, nubbin stopped working, touchpad had to be replaced, keyboard had dodgy keys, battery life was bad, Chrome wouldn't start unless you added some mystery command-line options, etc, etc, etc.)
Yesterday I got a new ASUS Zenbook running Windows 11 (and I added Ubuntu in WSL2). So far so good, it seems like I can do my coding stuff on the linux subsystem but then have desktop apps and peripherals on the windows side that just work. This is the first time I've had my personal computer be a Windows machine in like 20 years, so we'll see how it goes.
I used to work as a SWE at Google, and we sometimes "joked" that the process ("here's a list of computer science topics, we expect you to know all of them, take as long as you want to prepare") was designed to identify insecure overachievers.
I regret using the word "person." luv too be nitpicked on HN
The better version of my argument is "the product is not the same because it was not appropriately transferred between operators."
Of course this is all squishy and grey, since I don't believe DataTau filed a trademark claim, but moving forward with an identically-named product is still poor taste.
The underlying library is called "pytorch-pretrained-BERT" because initially it just contained an implementation of BERT, but now it contains implementations of several models so they backronym-ed it to "Big-&-Extending-Repository-of-Transformers". :)
AllenNLP dev here. We're going to do a "PyTorch 1.0" release of AllenNLP next week, and then after that we're planning to investigate how to incorporate the new "production" aspects.
Could you guys elaborate on the relationship between PyText, torchtext, and AllenNLP? I've briefly used the latter two, but with how quickly things are moving it'd be nice to have a quick answer from the devs themselves.
PyText dev here, Torchtext provides a set of data-abstractions that helps reading and processing raw text data into PyTorch tensors, at the moment we use Torchtext in PyText for training-time data reading and preprocessing.
AllenNLP is a great NLP modeling library that is aimed at providing reference implementations and prebuilt state-of-the-art models, and make it easy to iterate on and research with models for different NLP tasks.
We've built PyText to be a rich NLP modeling library (along the lines of AllenNLP) but with production capabilities baked in the design from day 1.
Examples are:
- We provide interfaces to make sure data preprocessing can be consistent between training and runtime
- The model interfaces are compatible with ONNX and torch.jit
- A core goal for us in the next few month is to be able to run models trained in PyText on mobile.
Among other differences like supporting distributed training and multi-task learning.
That being said, so far our library of models has been mostly influenced by our current production use-cases, we are actively working on enriching this library with more models and tasks while keeping production capabilities and inference speed in mind.
You can find people pushing back against this in America. My daughter, for instance, attends a Sudbury School, where the kids make the rules and decide how to spend their own time:
She loves the school, and in my opinion it's been great for her. But almost everyone I describe the school to finds it terrifically weird and frightening.
The biggest reason people think this kind of thing is scary? They're remembering back to highschool when they had to march through math while being taught by people who barely understood it. They know they never would have done it without having been forced, and that idea kind of leaks backwards to early education.
There's a mythical "self-driven and exploratory" math education out there, but the cold reality is while essentially anyone would be able to supervise a journey through colors and counting only very few have even seen what's good about math. (Moreover, what small fraction of them would be willing to teach teenagers?)
I went through this same thought process a few years ago. I basically gave myself a crash course in CS and engineering and "reinvented" / positioned myself as a software engineer.
I left my data science job and spent a couple of years as a "pure" software engineer and now am a "research engineer" which is basically a software engineer who understands machine learning and deep learning.
By and large I'm very happy with the move (other than that the company I quit as a data scientist got acquired and I would have made more $$$ if I'd stayed).
When I read your username I was a little taken aback. I have your python data science book and just assumed you were always a ML Software Engineer. I didn't realize you were a data scientist who transitioned into a more engineering focused role by teaching yourself CS.
I'm trying to do this myself, but it's mostly the road of failures with success somewhere out there. Seeing you did it gives me hope that I'll get there one day. Thanks!
That sounds like an interesting direction to go in.
Do you have any advice on making the transition? Did you stay within the same company, or move? What did you dp to demonstrate the ability to work as a software engineer?
I interviewed at Amazon (bad experience), got rejected (long story), and then TWO MONTHS LATER got contacted by an Amazon recruiter: "We need people like you!"
Yeah, I made it about 5 days in this year and then quit because I wasn't having fun.
Too many of the problems had the structure:
* here's Part A
* submit solution for Part A
* OK, now here's Part B
* Part B is just different enough that you have to do a not-fun refactoring of your Part A code (that wouldn't be necessary if you'd just been asked to also design for Part B up front)
It was too much like working with an awful PM who can't decide what they want, and it mostly just made me angry.
I didn't get that far either, as I got too busy, but that's the part I liked the most about it: did I write my code well enough for part A that I didn't need to do a lot of work for part B? What could I have done differently to make the code resilient to requirements changes?
One way to look at it is that the part-2 problems are un-fun retreads of the part-1 problem.
The other (better, I think!) way of looking at it is that the part-2 problems are incentive for you to think carefully about your part-1 solution, so that it generalizes.
Norvig's keypad is a perfect example. Norvig's solution of a sentinel character generalizes, as would a solution based on a simple graph structure. But I plowed into it with a flat array of integers and the modulo operator, and had to rewrite for part-2; my solution was, in the context of the contest, inferior to Norvig's.
I made a graph and it adapted nicely to part 2. An advantage of the graph is that it would have handled the keypad becoming 3 dimensional or some other change that stopped it working as a simple grid. A big disadvantage is I made several errors while building the graph in both parts which took a while to track down.
Yesterday I got a new ASUS Zenbook running Windows 11 (and I added Ubuntu in WSL2). So far so good, it seems like I can do my coding stuff on the linux subsystem but then have desktop apps and peripherals on the windows side that just work. This is the first time I've had my personal computer be a Windows machine in like 20 years, so we'll see how it goes.