This post demonstrates why I hate UI programming. The number of unpredictable, niggling little things that can go wrong exceeds my patience for dealing with them. I kind of enjoy thinking through the ways something might fail and writing tests to catch them, but aimlessly clicking around to see if anything breaks feels haphazard and annoying.
Is UI construction inherently that complex, or have we just not found the right programming model yet? Is it unreasonable to wish that sometimes things would just look and work the way I intended on the first try?
This is what design systems are for. You only sand UI when you're initially creating the component. Sometimes you combine components in different ways or need to make a one off. It honestly doesn't take all that long if you know what you're doing. A good design engineer is a specialist for this type of role.
Is not UI programming, it’s designing UIs on top of HTML and CSS. There’s way too many degrees of freedom, while basic things like forms should work well by default.
It is not that complex. The nice ways to describe UI in code do exist. It is a business problem of a zero-sum game, where cross-platform UI is prohibitively expensive when it’s not done on the ugliest UI stack (HTML/CSS/JS).
There were some pretty good platforms in the past where the details were sweated for you by default. But with the web platform—while tolerable for docs—is at the wrong level of abstraction for apps. And so web UI is reinvented every year with new leaky ones.
In this case (web) it’s a result of too low granularity without anything that could help a developer interested in proper ui. Simply too much work to just catch up.
You can see the same in other areas. E.g. if there’s no easy way to send a request or parametrize to a query, people will invent all sorts of half assed ways to do that, even if mindful about it, due to natural pressures.
Web platform is absolutely bleeding edge graphics, but actually dogshit ui. And no one has nerve to admit it and make a change because people believe in the first part and then legacy and complexity of browsers prohibit it. And when you do it as a lib, it’s not “standard”, so nobody cares.
Your argument is that if a paper makes a valuable contribution then it should be accepted even if it's not well written. But the definition of "well written" is that it makes it easy for the reader to understand its value. If a paper is not well written, then reviewers won't understand its value and will reject it.
Well written and rigor aren’t highly correlated. You can have poorly written papers that are very rigorous, and vic versa. Rigor is often another checkbox (does the paper have some quantitative comparisons), especially if the proper rigor is hard to define by the writer or the reader.
My advice to PhD students is to always just focus on subjects where the rigor is straightforward, since that makes writing papers that get in easier. But of course, that is a selfish personal optimization that isn’t really what’s good for society.
Rigor here doesn't have to mean mathematical rigor, it includes qualitative rigor. It's unrigorous to include meaningless comparisons to prior work (which is a credible issue the reviewers raised in this case) and it's also poor writing.
Qualitative rigor isn’t rigor at all, it’s the opposite. Still useful in a good narrative, sometimes it’s the best thing you have to work as evidence in your paper.
Prior work is a mess in any field. The PC will over emphasize the value of their own work, of course, just because of human ego. I’ve been on way too many papers where my coauthors defensively cite work based on who could review the paper. I’m not versed enough about this area to know if prior work was really an issue or not, but I used to do a lot of paper doctoring in fields that I wasn’t very familiar with.
International Research Institute for Climate and Society, Columbia Climate School | Intermediate Software Developer | Palisades, New York (near NYC) | ONSITE | VISA
The IRI Data Library team curates and provides access to data related to the Earth's climate and its effects on human populations, and builds web applications that present such data in forms that are needed by decision makers at government agencies and NGOs worldwide. Most of our current work is related to agriculture and food security in the developing world.
We're looking for an intermediate-level software developer (3-5 years experience) to help with improving the platform as well as developing applications on that platform for specific projects. Experience with linux system administration/devops, scientific/numerical computing in python, GIS programming, and web application development would all be appreciated.
International Research Institute for Climate and Society, Columbia Climate School | Intermediate Software Developer | Palisades, New York (near NYC) | ONSITE | VISA
The IRI Data Library team curates and provides access to data related to the Earth's climate and its effects on human populations, and builds web applications that present such data in forms that are needed by decision makers at government agencies and NGOs worldwide. Most of our current work is related to agriculture and food security in the developing world.
We're looking for an intermediate-level software developer (3-5 years experience) to help with improving the platform as well as developing applications on that platform for specific projects. Experience with linux system administration/devops, scientific/numerical computing in python, GIS programming, and web application development would all be appreciated.
There is CardDAV sync built in to iOS Contacts, but I don't think the person who programmed it actually tried using it. When you create a contact on the iPhone, there's no reasonable UI for putting it in a group (it can be done, but it's ridiculously hard); and only contacts in groups are synced via CardDAV. So in essence you can't create contacts on the phone.
I can very easily, using only built in apps and set up, share a calendar, a todo list, a photo album, a music playlist, a note, an e-mail account etc. with my wife.
But I cannot share a contact list with her without resorting to complicated CardDAV setups.
International Research Institute for Climate and Society, Columbia Climate School | Intermediate Software Developer | Palisades, New York (near NYC) | ONSITE | VISA
The IRI Data Library team curates and provides access to data related to the Earth's climate and its effects on human populations, and builds web applications that present such data in forms that are needed by decision makers at government agencies and NGOs worldwide. Most of our current work is related to agriculture and food security in the developing world.
We're looking for an intermediate-level software developer (3-5 years experience) to help with improving the platform as well as developing applications on that platform for specific projects. Experience with linux system administration/devops, scientific/numerical computing in python, GIS programming, and web application development would all be appreciated.
International Research Institute for Climate and Society, Columbia Climate School| Intermediate Software Developer | Palisades, New York (near NYC) | ONSITE | VISA
The IRI Data Library team curates and provides access to data related to the Earth's climate and its effects on human populations, and builds web applications that present such data in forms that are needed by decision makers at government agencies and NGOs worldwide. Most of our current work is related to agriculture and food security in the developing world.
We're looking for an intermediate-level software developer (3-5 years experience) to help with improving the platform as well as developing applications on that platform for specific projects. Experience with linux system administration/devops, scientific/numerical computing in python, GIS programming, and web application development would all be appreciated.
International Research Institute for Climate and Society (Columbia University) | Palisades, New York | must be US-based currently, ONSITE post-COVID | software developer/scientific programmer
The IRI works with stakeholders in developing countries to use climate science and data to improve human well-being. Applications include crop insurance, and planning interventions to fight malaria and locusts.
The IRI Data Library http://iridl.ldeo.columbia.edu is a 25-year old web application that is at the core of most of the institute's work. It's a quirky application written largely from scratch, and primarily in a homegrown dialect of Forth. Our current focus is bringing the application into the 21st century and integrating it with the burgeoning open source geoscience ecosystem, without interrupting ongoing work that depends on the existing platform.
There is an open position with the title Staff Associate III on the Data Library team. Responsibilities include software development and maintenance of the platform, using the platform to develop applications, and training and supporting users. Post-COVID it will involve travel to Africa and South America to help partners install and use the software. https://pa334.peopleadmin.com/postings/6360
Please apply through the annoying HR website. A real person will read your application in short order, I promise. Although the cover letter is optional according to HR, I strongly encourage you to upload one explaining why you're interested in the position and how your experience is relevant. Mention that you saw this on Hacker News. I welcome questions by email as well.
Could you say more about why ansible is better than shell scripts for one-time configuration? In my mind, ansible's big advantage over shell scripts is that it has good support for making incremental changes to the configuration of existing resources. In a situation like packer, where the configuration script only gets run once, I prefer the conciseness of a shell script.
I see the incremental piece as a dev-time bonus rather than something to try to leverage much in production— it lets you iterate more quickly against an already-there target, but that target is still basically pristine in that any accumulated state is well understood. But that's very much not the case if you're trying to do an Ansible-driven incremental change against a machine that was deployed weeks or months earlier.
Even in the run-once case, though, I think there's a benefit to Ansible's role-based approach to modularization. And again for the dev scenario, it's much easier to run only portions of a playbook than it is to run portions of a shell script.
And finally, the diagnostics and overall failure story are obviously way better for Ansible, too.
Now, all this said, I do still go back and forth. For example, literally right now in another window I'm working a small wrapper that prepares clean environments to build patched Ubuntu kernels in— and it's all just debootstrap, systemd-nspawn, and a bunch of shell script glue.
That's a very good point : I also found that the core feature of configuration management - idempotency - actually becomes mostly useless in this case, as ansible applies a playbook only once.
I still use it as it allows more portability across OS releases and families (as in easier migration), but it also increases the complexity when creating a new task/role/playbook.
In that sense, Dockerfiles with shell-based RUN commands are much easier to manage.
Another advantage of config management over shell might be a better integration with the underlying cloud provider. For instance Ansible supports AWS SSM parameter store, which allows me to use dynamic definitions of some configuration data (RDS database endpoints, for instance) or secrets (no need for Ansible vault)
IRI, Columbia University | Palisades, New York (near NYC) | Staff Associate (software developer and trainer) | ONSITE, full-time
The International Research Institute for Climate and Society (IRI), part of Columbia University's Earth Institute, works with decision makers in developing countries to help them use climate science for the good of their populations, particularly in agriculture and public health (e.g. providing crop insurance, targeting pesticide application to control the spread of locusts). The IRI Data Library is a web application that's used for much of that work. We're looking for a a software developer to help build, maintain, and support the Data Library. There will be travel involved (15%) to install the software and train users in developing countries.
The application is a 25 year old crufty mix of Fortran, C, Perl, JavaScript/jQuery, and a custom dialect of Forth. We're rebuilding it on a new foundation of python/xarray/dask, while continuing to support all the vital work that depends on the existing system.
Minimum qualifications: B.S. and 4 years' experience, web development skills, familiarity with Earth Science datasets.
IRI is located on Columbia's Lamont campus, in a bucolic setting 15 miles up the Hudson River from the city. There's a free shuttle between Lamont and the main campus in Morningside Heights.
As I write this, the opening hasn't been officially posted yet. I'll give an update as soon as it's official. In the meantime, contact me for info.
Is UI construction inherently that complex, or have we just not found the right programming model yet? Is it unreasonable to wish that sometimes things would just look and work the way I intended on the first try?