HN user

esfandia

461 karma

babak@sce.carleton.ca http://www.sce.carleton.ca/faculty/esfandiari.html

Posts6
Comments218
View on HN

Thought-provoking essay. I can see how responsibility and ownership are important to help identify, motivate and reward the high achievers (and conversely, identify and get rid of the "dead wood"). But I can also see how collaboration and the dilution of responsibility and ownership helps better integrate junior members who might otherwise stay on the sidelines for longer than they should. There's also the issue of personnel turnover: what happens if the one person who is responsible for a major piece of a project leaves the company? A collaborative setting is more resilient to churn. There are trade-offs, and possibly a middle ground to be found.

Java 26 is here 4 months ago

A couple of books were helpful to me, both by Venkat Subramaniam and published by Pragmatic Programmers:

- Functional Programming in Java

- Cruising Along With Java (this covers everything else that is "new" other than functional programming)

I imagine you could use AI as well to create a "squash prompt", but verifying using diff that the "squash commit" results in the same code.

An Update on Heroku 5 months ago

This looks nice! Wish they had a no-credit-card-required version for educational purposes. For the course I teach we use Spring Boot, and life was good with Heroku till they discontinued the no-credit-card version, and then the only choice we had (with support for Spring Boot) was to move over to Azure, which works but is a bit overkill and complicated for our purposes. I guess we could just use Docker and then many more platform would become available, but I'd rather not add one more step to the pipeline if possible.

Yeah, it's a case of "don't let the perfect be the enemy of good". The conservative stance is happy with the status quo. The progressive stance isn't. We probably need a bit of both. Finding the right balance being key.

Looks like he removed the paywall for this article? I was able to read the whole thing, and I'm not subscriber.

Not the OP but I have tried to reduce my sugar intake, I'm walking more than before, and I still basically gain half a pound every year. I'd lose some weight for a few days, and gain it all back on the one day I'm a bad boy. It seems like there's an internal dial that decides what my weight is supposed to be, no matter how much I fight it. And the dial adds half a pound every year. I guess the dial is my metabolism as I age.

"To ascribe beliefs, free will, intentions, consciousness, abilities, or wants to a machine is legitimate when such an ascription expresses the same information about the machine that it expresses about a person. It is useful when the ascription helps us understand the structure of the machine, its past or future behaviour, or how to repair or improve it. It is perhaps never logically required even for humans, but expressing reasonably briefly what is actually known about the state of the machine in a particular situation may require mental qualities or qualities isomorphic to them. Theories of belief, knowledge and wanting can be constructed for machines in a simpler setting than for humans, and later applied to humans. Ascription of mental qualities is most straightforward for machines of known structure such as thermostats and computer operating systems, but is most useful when applied to entities whose structure is incompletely known.” (John McCarthy, 1979) https://www-formal.stanford.edu/jmc/ascribing.pdf

But now it's also apparently larger! I'm sure I'm not the only person hoping for an Apple Watch that is reasonably thin and small.

Python was created in 1991; I imagine the "yield" keyword appeared either right then or not much later!

Also, the refinement at the end of the article: "We arrange an extra function parameter, which is a pointer to a context structure; we declare all our local state, and our coroutine state variable, as elements of that structure." sounds like implementing a closure to me. You make the callee a lambda which would use an outside var/context/state to determine what to do or with what value. Am I understanding this correctly?

The article says: "In many modern operating systems, you could do this using pipes between two processes or two threads. emit() in the decompressor writes to a pipe, and getchar() in the parser reads from the other end of the same pipe. Simple and robust, but also heavyweight and not portable. Typically you don't want to have to divide your program into threads for a task this simple."

I haven't done a re-install, but deleting the cache folder alone doesn't make it go away. Starting Firefox re-creates the folder obviously, and Defender gets triggered again.

Maybe, but the surreal atmosphere when the sun rises, you are surrounded by blue everywhere, you are jetlagged from just having landed half hour ago, and you have a drink in hand is indescribable. I went to other Icelandic baths during my stay but nothing matched that experience.

Coffee in a Can 3 years ago

In Thailand they have these Tao Bin barista coffee machines: https://www.tao-bin.com/en/en

Great UI: there's a countdown to when your order is going to be ready, and while you're waiting the next person can also enter their order.

Yeah, mobile agents were a hot topic back then (mid 90s), and Telescript was one of the early programming languages that enabled this idea of agents roaming around doing stuff on the web. Java coming along around the same time with dynamic loading of code (used in applets for example) gave the idea another boost. Ultimately, I don't think the security issues (agent could attack the host, host could attack the agent, agents could attack each other, etc.) were worth the trouble and the research seemed to fizzle.

I always wondered if message passing between static agents wasn't a functionally equivalent yet safer and simpler alternative to mobile agents.

Definitely, bad diagrams (as opposed to bad diagram notation) give UML a bad name. Your example of the misuse of state diagrams as a glorified flowchart is something I see very often.

Undergraduate students probably don't have the experience and design maturity to fully appreciate when and how to use most UML diagrams. I think you need to get stuck at design problems a few times before you can appreciate the need to capture ideas using the right diagram, and then you might be ready to adopt some standard so you can share your design decisions with others in a way that correctly captures and conveys just the right amount of detail.

It's certainly given too much importance in the curriculum, but the idea of having a common language (with standard semantics) for sharing design decisions is valuable.

I'd argue the issue is that because UML is not seen as valuable, everyone improvises their own dialect when drawing stuff, and so since nobody trusts people following correct diagram semantics (e.g., meaning of different arrow shapes), nobody trusts the resulting diagrams either, further reinforcing the notion that it's useless.

The yearly RoboCup robot soccer championship has been going on for more than 20 years now, and it looks like the objective that they set from the beginning, which was: "By the middle of the 21st century, a team of fully autonomous humanoid robot soccer players shall win a soccer game, complying with the official rules of FIFA, against the winner of the most recent World Cup" is well within reach.

https://robocup.org/objective

There will always be an artisan making the first version of anything.

Until we reach the bootstrap point (the singularity?), i.e. when the GPT-making machine is GPT itself. Or maybe we're still one level behind, and the GPT-making machine will generate the GPT-making machine, as well as all the other machines that will generate everything else.