Powerful Concepts for Understanding the World - <AUTHOR> https://threadreaderapp.com/thread/1225561131122597896.html <comment><USER2> > Condorcet Paradox: a special instance of Simpson's paradox applied to > elections, in which a populace prefers candidate A to candidate B, candidate > B to C, and yet candidate C to A. This occurs because the majority that > favors C is misleadingly divided among different groups.

I found this really interesting because I have never thought of a Condorcet Loop, or a Smith Set, in the context of Simpson's Paradox before.

I've also enjoyed Judea Pearl's points about how Simpsons Paradox scenarios sometimes don't even _have_ a correct interpretation until you are clear about what your assumptions are and what you are trying to measure.

I've always suspected that the Smith Set might just mean that the electorate isn't ready to decide yet, and that another round of elections might be warranted, but it's interesting to consider that a Smith Set might also give clues on what questions to ask to better determine the winner.

<comment><USER3> A Condorcet loop can happen if different parts of the electorate values different things. E.g. some people value foreign policy experience, other people value integrity, and yet other people value left vs right. Going from a foreign policy experience ranking to an integrity ranking to an economic ranking can take you around the loop.

But how would the electorate come to a conclusion about which issue is most important? The Condorcet loop could be fundamental to the voters' opinions.

</comment></comment><comment><USER4> The inclusion of the "Gurwinder Principle" casts doubt on the other principles listed.

<comment><USER5> is there a principle that a list will always list a bogus principle ?

<comment><USER6> It's basically Peter's Principle, you keep listing principles until you get to your lowest acceptable one, which will be of low quality.

</comment></comment></comment><comment><USER7> Those are interesting points to start understanding a gist of trend in how the world works, but more importantly would be to use these concepts to help us break out of them.

For instance, the Belief Bias can easily apply to any one of us. How can we use the awareness that we are subject to such bias to break out of it?

I mean in retrospect, when for instance I read old comments of mine I get really this odd feeling that someone else completely wrote that. How could I force break out of this?

</comment><comment><USER8> Wonderful essay, one of the best such compilations I've read. I see myself engaging in many of these thought patterns.

I'll add one in the spirit of "none of us are perfect"...

>..neurons creating consciousness...

Is an example of something I see frequently - otherwise very smart people who assume that consciousness is just an emergent property of physical matter and who ignore the hard problem of consciousness.

<comment><USER9> This is one of the most ridiculous comments I've ever read on HN. There are at least a dozen things to address there, but, for one, going by this and the rest of your post history, it seems that smart people are only smart when they believe things you believe (i.e. mysticism over materialism).

<comment><USER8> I think that I am not a mystic if by mysticism you mean something like "forsaking logic and science for delusion".

I am a mystic, however, in the sense that while I have enormous respect for logic and scientific method, and I am usually one of the most scientific- minded and skeptical people in whatever environment I am in, I do not assume that science is capable of solving all mysteries of reality.

I see no contradiction between physics, on the one hand, and thinking that consciousness may be irreducible to physics, on the other hand.

There is no reason to assume that the nature of consciousness is in principle accessible to scientific investigation.

It may be that there is some fundamental limit that prevents us conscious beings from grasping the nature of consciousness - and that's if there is anything to grasp in the first place. Maybe consciousness is essentially axiomatic and irreducible.

I have loved science since I was young, but to assume that everything about reality is accessible to scientific inquiry and/or physical explanation is dogmatic, unscientific.

<comment><USER9> You've made multiple comments saying "otherwise smart people" are revealed to be momentarily non-smart when it comes to believing in materialism and that, oh well, "none of us are perfect". Even if you disagree with materialism, calling a material view of consciousness "dumb" and incompatible with intelligent thinking just seems petty, obstinate, and extremely arrogant.

You said that emergence of consciousness ignores the hard problem of consciousness, which isn't necessarily true at all. Consciousness could be an emergent property of physical matter and there could still be a hard problem of consciousness. Some believe there is no real hard problem of consciousness, but that's another matter.

You said that "otherwise very smart people who assume that consciousness is just an emergent property of physical matter", as if this is something they haven't thought about very carefully for decades, and as if this is at all a settled problem. No one on Earth knows exactly how consciousness comes about; not you or them. Acting with certainty that it must be immaterial is just as bad as the inverse.

In science, the burden of proof is on the claim-maker. The logic that "it's dumb to assume that what we currently know about the universe can be responsible for anything we see in the universe" is backwards. The onus is on you or others to suggest what else there may be beyond the physical universe. Otherwise, yes, we _should_ assume that consciousness is an emergent property as a default position, until we learn about some other mechanism which it could possibly result from.

>It may be that there is some fundamental limit that prevents us conscious beings from grasping the nature of consciousness - and that's if there is anything to grasp in the first place. Maybe consciousness is essentially axiomatic and irreducible.

It may be. Or it may not be. What is your evidence for, or theory of, how it may not be? Also, even if it were essentially axiomatic and irreducible, how would that necessarily make it incompatible with physics and a material, physical universe? Both could be true.

>to assume that everything about reality is accessible to scientific inquiry and/or physical explanation is dogmatic, unscientific

I think this is using the wrong language. It's not a matter of "assume", but a matter of abiding by the scientific method. No, I don't assume that science can explain absolutely everything in the universe, _but if you think it can 't_, there needs to be a theory or evidence of why. If there is no reason to think you can't, then the onus is on you to come up with reasons. Instead of saying "assume", you should say the null hypothesis. At this time, the null hypothesis is that everything in the universe, including animal consciousness, is entirely physical in nature. The null hypothesis may be beaten by an alternative hypothesis at some point, but so far, there are no testable alternative hypotheses that I know of.

You could say "to assume that scientific inquiry can accurately say anything about the existence of ghosts is dogmatic and unscientific". You could say it about God or ESP as well. But, again, it's reverse logic. What's scientific is following the scientific method: coming up with testable hypotheses, and testing them. If you aren't doing that, or can't, then you're the one acting unscientifically. You shouldn't assume that science can say anything about these things, but until you provide theories or evidence that 1) these things may exist, and 2) science can't say anything about them, then you shouldn't assume the opposite, either. You should remain completely agnostic, but _default_ to the null hypothesis. Defaulting to the null hypothesis isn't the same thing as assuming the null hypothesis is true. Maybe for some philosophical definition of the word "assume", but not the way we use it in typical day-to-day activity.

As for the actual claim itself: at this time, there is much evidence pointing in the direction that it's likely emergent, and zero evidence pointing in the direction of any sort of non-material explanation for consciousness or anything else in the universe. There is currently zero evidence of any sort of non-materialness to any aspect of the universe, and no testable theory for finding any. Believing with certainty or near-certainty that materialism _must_ be false, or that belief in materialism is ridiculous, with no alternative theory proposed or evidence presented, is unscientific.

If your posts on the matter were simply pointing out that the true cause of consciousness is not known and that there are other possible options, that's perfectly fine, but you appear to be treating this as an issue of dogma which only idiots wouldn't accept. I agree that the article should not have listed consciousness as an emergent property as if it were an established matter of fact, but you're basically doing the same thing.

</comment></comment></comment></comment><comment><USER10> > When many simple objects interact with each other, they can form a system > that has qualities that the objects themselves don't. Examples: neurons > creating consciousness

There are no evidence that neurons create consciousness. For all we know neurons are receivers of consciousness.

<comment><USER7> The author did warn first that > Some [concepts] are complex so forgive me for oversimplifying, but the main purpose is to incite curiosity.

You shouldn't pick out these examples, they are supposed to broadly exemplify the concept.

<comment><USER8> That's not really oversimplification though, it's more like making an assumption. But I agree that it's a minor point. I mainly brought it up in my other comment in this thread because the topic of consciousness fascinates me.</comment></comment></comment>


Catfish Programmers - <AUTHOR> https://www.butternotes.com/blog/catfish-programmers <comment><USER3> I spent a few years as a full time contractor and kind of had a chuckle at this.

I worked on a truly awful mess of a codebase. It was the kind of codebase through which many devs had passed, and many generations of best practices. One part was straight JavaScript. Another had some jquery. Another had backbone.js - the perpetrators were all former full time employees. The product had never launched.

I generally worked 8 hours and signed off promptly to work on my own projects. I did quality work. I viewed myself as a hired gun who was paid to do a job. In the end I was at the company longer than any of their actual full time employees (who left because they didn't like working on the crappy code or were stressed because of company politics) and was the only developer left to take the product to launch.

Employees and employers often think that contractors are vampires, and many are, but you'll find the good ones are practically immune to whatever skeletons you've got in the closet and will get the job done.

<comment><USER4> In rewriting projects, I often find that as I rewrite them, I can knock out requested features along the way. I've taken this approach when fixing up some of my old personal codebases. It's a two birds one stone approach; it takes me just as long to fix code in the old framework as it does to rewrite the code in the new framework without the buggy behavior, so where possible I do that.

We had a similar practice in the restaurant world before I found work as a programmer, and we called it "clean as you go." I think it's quite appropriate. The bug reports will always be there, the feature requests mountainous, and yet the messes don't clean themselves. There must be balance.

Do what needs to be done, but make a point to improve your codebase with every new change. Prefer consistency over new hotness, and ease of maintenance over unreadable micro-optimizations. Be a positive force in your codebase, and future developers, especially including yourself, will appreciate your efforts.

<comment><USER5> I agree with "clean as you go", but I'm very cautious. Rewrites are scary and risky in legacy code. Usually I'll add a few unit tests to increase coverage and de-risk the change I just made.

<comment><USER6> I think this epic rant against rewrites still is mostly valid 17 years later:

[https://www.joelonsoftware.com/2000/04/06/things-you- should-...](https://www.joelonsoftware.com/2000/04/06/things-you-should-never- do-part-i/)

<comment><USER7> It was wrong then and it is still wrong.

First of all Netscape had the problem of incorporating opaque blobs from other sources. When they went open source, they couldn't keep those so ripped them out. Then the code didn't even compile.

Secondly that Netscape release that he mocked? That was the start of Mozilla, Firefox, and so on.

Third, how did Netscape survive? My impression from the sidelines is that it was a negotiation ploy from AOL. When their IE contract was up, they needed a viable alternative. In the end Microsoft let them continue using IE, PAID THEM MONEY, and had them shut down Netscape. They were laughing about this all of the way to the bank. And then Mozilla ate IE's lunch.

There have been a lot of rewrites. Some succeed, some fail. But it isn't always a bad idea to do one. And Netscape was a necessary one that succeeded in every measure that it was supposed to.

<comment><USER8> You are being charitable to Mozilla (the application suite). That was a bloated, buggy mess for years. I recall 2001-2003 was a really bleak time to be a Mozilla user. Firefox launched as a response to Mozilla and was more lean, but it wasn't until 2007 or 2008 that HTML5 features started trickling in and Firefox started to gain marketshare and developer mindshare for the advanced features it could offer.

And that was when Chrome showed up. So from 1998-2008, Mozilla had an open season to gain ground on IE, and their marketshare only ever got as high as 30%. It was 2011 or 2012 that Chrome was stable enough and Google started their upgrade-to-Chrome adverts on google.com. And then Firefox faded back into it's 10% niche. I'm a developer, and my peers look at me like I'm a weirdo because I favor Firefox and do my primary development on it. That shouldn't have happened, Firefox should not be niche given the time they had to work.

It is inspiring to me that the Mozilla project didn't fail and got so much love, but starting with that original Netscape codebase and the Gecko and XPCOM designs really hindered them. Mozilla missed out on offering a competing engine for Node.JS because their JS engine is so tightly coupled with the rest of the browser(?) - that's just one huge opportunity missed. Offering a competitive mobile OS at the advent of smartphones in the vein of WebOS is another, albeit less egregious, miss. The codebase just wasn't clean nor adaptable enough to break free of the desktop.

<comment><USER9> It wasn't until 2007 that HTML5 features began trickling in _anywhere_...

<comment><USER8> Right, and what I was alluding to in that point was, why should any user switch from IE if it has feature parity with Firefox or any other browser?

Firefox had developer tools in Firebug, so it was already getting a geek user base, but when Firefox got some legitimate new features like Canvas that other advanced browsers like Safari had, regular users began to dabble. With the occasional news report that honestly reported the security nightmare that IE was, I found that between 2006-2009, Firefox was an easy sell to regular users.

The way I see history, Mozilla floundered between 1998 and 2005 and had almost no marketshare. All the Netscape rewrites that came before were a shitshow and the AOL thing must have been a huge (but necessary for funding) distraction. Probably the only fair interpretation of history is that, of course, the codebase was a mess given the development practices back in the day.

That said, I recall the Gecko rewrite was a long and painful one. Was it unnecessarily so? I believe it had a lot of dumb component architecture concepts and I would love to understand what the drivers were there. Did they believe that components were the best way to organize a huge open source project? Woulda, coulda, shoulda thinking about Mozilla makes me really sad sometimes.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I expected this to be using "catfish" in the same sense as the online dating world; i.e. the "catfish programmer" is one who puts all sorts of programming languages on their resume but can't actually answer any questions about what they've done in that language.

</comment><comment><USER11> I tend to land on that position. But when I'm at the very bottom of the mud and I found the spot, I rarely rewrite a piece to make it in-your-face-clear. Sometimes I do, but more often than not I just edit few characters that are wrong.

I can remember at least one case (probably had few more, just don't remember them) when, to fix a bug, I changed just one character, after few hours of reading and understanding all the bad ideas people before me implemented there, first seeing them as complete nonsense and gradually realizing, that what they wrote does what was intended, almost.

It kind of feels good for me. I hate building though, because I'm painfully aware, how stuff looks once it's built. It's never good.

<comment><USER12> I had a similar case a year ago where about two days of work resulted in a pull request that changed only one word: [https://github.com/docker/distribution/pull/1578](https://github.com/docker/distribution/pull/1578)

</comment></comment><comment><USER13> I don't know if I'm a catfish programmer, but lately I've been completely disinterested in offices with the sorts of perks that I used to go crazy for years ago. I don't care much about free lunches or extremely nice desks or chairs or ping pong tables or whatever. That stuff is distracting. I care much more about buying my own lunch and fun.

<comment><USER14> In my experience as someone who has been in-house counsel and now outside counsel for a variety of tech startups and software development shops, and has watched this happen in the careers of a lot of people around me (usually while being the sole 'suit' in the room), the transition you are describing usually happens in the late twenties or early thirties.

It is basically the transition away from the last vestiges of a "school-like" mindset to a "career" mindset.

In the "school" mindset, your primary form of social rewards are from the people you spend your _day_ with - when you are a kid, your friends are all at school, and even though you go to school to do schoolwork, it is still where you see your friends. In the "career" mindset, your primary social rewards are the people you spend your _nights_ with - which are friends who you do not work with, and, importantly, your family.

In other words, as a young 20something, it is easy to still be in the mindset that the 'fun' time is when you go to the place you spend all day at and do so with a bunch of cool people. A lot of jobs, as a result, try to recreate that 'school' experience with a gym, scheduled fun activities, playtime, etc. Howev er, when you are in your late 20s, even if you don't necessarily have a family or are an introvert, the appeal of this lessens dramatically, as you naturally spend more effort trying to carve out time for your own interests - <USER2> they be your family, your hobbies, or even just solitude and meditative peace. Accordingly, it is really just far less important that work have a bunch of perks that require that you actually _be there_ , than for work be a professional environment that respects your time and is financially and intellectually rewarding enough to be "worth it."

<comment><USER13> damn that is exactly my situation! it happened a little earlier for me though; i'd say around 27-28. it accelerated after working for google that short bit I did

</comment></comment></comment><comment><USER15> Note that the "Catfish" urban legend originally meant something else. In the movie the catfish term is introduced like this: "They used to tank cod from Alaska all the way to China. They'd keep them in vats in the ship. By the time the codfish reached China, the flesh was mush and tasteless. So this guy came up with the idea that if you put these cods in these big vats, put some catfish in with them and the catfish will keep the cod agile. And there are those people who are catfish in life. And they keep you on your toes. They keep you guessing, they keep you thinking, they keep you fresh. And I thank god for the catfish because we would be droll, boring and dull if we didn't have somebody nipping at our fin."

So it's indeed a bottom grundler, but with an important impact on the fish in the sunlight. Without the catfish the sunny fish would all die. The catfish keeps them agile.

</comment><comment><USER16> Some of this rings true. OK a lot of it.

Metaprogramming is often witchcraft. As is so much futureproofing. Layers upon layers of indirection because one day it might be useful.

Mighty fine framework you have there, someday you do have to write the actual code...

<comment><USER17> > _Metaprogramming is often witchcraft._

This is an advice I frequently see, and I disagree with it strongly. For some reason, people are irrationally afraid of metaprogramming, as if it was a _different_ kind of programming. It isn't. It's regular programming, following the very same rules, except that you're automating your own work now.

I don't know; maybe it's because mainstream languages _absolutely suck_ at metaprogramming (if they allow it at all), so people are not used to it?

I mean, it's like someone calling algebra "witchcraft". It's not witchcraft, they just never bothered to learn it.

(Related, I see this approach of lowest-common-denominator programming being popular, and I believe it's very hurtful to everyone. Programming is a profession. If you don't understand some piece of code because it uses weird language features, suck it up and _learn stuff_ , like a real professional.)

<comment><USER18> The problem isn't with writing or reading metaprogramming. It's in debugging issues in the program that the metaprogram writes. You have to then figure out what both the meta-code and the code does and how they interact to have a good understanding of the problem.

There's also some very powerful advantages to avoiding metaprogramming. Like, "grepping for the name of a token shows all instances where said token is relevant". This is an _incredibly_ powerful tool, and you _really_ miss it when poking around in new codebases with lots of magic.

</comment></comment></comment><comment><USER19> This speaks to me. I learned how to program in a professional environment by doing exactly this. I can play the design patterns game and I can write pretty beautiful code, but what I can really do is cut through the bullshit and all the lessons that people have learned without understanding the reasoning behind them, and get shit done fast. I love it.

</comment><comment><USER20> Oddly enough this doesn't really resonate with me. I've done contracting for 5 years and 90% of the work was focused on new development with the opportunity to get hired after the contract was up. Now this was a few years ago and my experience was strictly in the Midwest but I never saw myself as the bottom- feeder. If anything it was a good way to work at a company you liked where you didn't know anyone on the inside to recommend you. The experience was actually rather interesting and enjoyable.

<comment><USER21> I don't think the author of the article claims that all contractors are bottom feeders.

Some of us have done this kind of work where we were intended to fix a set of bugs on a foreign code base. Whether or not the programmer is a contractor of FTE is not relevant, the experience of being a catfish programmer is.

</comment></comment><comment><USER22> "In the catfish world, code speaks, money changes hands, and friendships are evanescent"

:( friendships are important to everyone, this sounds like a really unhappy way to live.

<comment><USER23> By the time you reach this point you have long steady relationships and are less fascinated by the churn of strivers looking for that one 'connection' that will make them rich.

<comment><USER24> haha i wonder to what extent people in this forum are looking for that 'one connection' (i know i feel like i am a lot)

</comment></comment></comment><comment><USER25> I think I might be a catfish programmer. Have been contracting for several years and on daily basis have to sift through legacy spaghetti codebases originally created by full time employees or outsourced to some digital agency, fix bugs / add features in very short time (on average I stay 6 months on a contract).

</comment><comment><USER26> If we don't change the culture in Silicon Valley soon, these "invasive catfish" are going to hold the rest of us back, like Who Killed the Electric Car [https://www.youtube.com/watch?v=vRnUY6V2Knk](https://www.youtube.com/watch?v=vRnUY6V2Knk) . They were good at first, but then they realized big changes threatened their stagnant skillset. Rather than learn more, they utilize their power to keep things the same.

<comment><USER27> I think the automation of middle management positions will eliminate these archaic modes of thinking.

</comment></comment><comment><USER28> Having been a contractor for a short while (~1 year) and having worked with many different contractors over the years I've never seen a situation where management has been like "this part of the codebase is too much of a mess for us to handle, we need to hire a contractor to sort it out". Does that ever happen? Surely a contractor would be even less prepared than a permie to handle such a situation because they won't be familiar with the codebase?

In my experience contractors are mainly hired for development of new projects or features when they'd like to get some more hands on deck to speed up development. Or because the company would like to hire a permie but can't for whatever reason (not sure they will have enough work in the long run, can't find the right person etc.).

Also I've never seen a contractor that who's day-to-day functions were any different from that of a permanent employee. Where are these companies that let permies play ping pong for hours but have the contractors chained to their desk churning out features and reducing technical debt?

<comment><USER29> In my 6 years experience I've never seen this either. Here in Germany maybe it's a little different - contractors are very common at large companies, because it can be very hard to fire people once they've passed their trial period (3-6 months). So companies can be more reluctant to make permanent hires. Another reason is that a department might have a strict limit on their head-count (of internals), but not their budget, so they can still increase their workforce by hiring contractors (don't ask me why, just big company politics).

At the two large companies I worked for, around half the team members were external. In both cases there were 3 types of worker:

1\. Internal

2\. External contractor & a permanent employee of a contracting ("body- leasing") company

3\. External contractor & a freelancer / self-employed

In terms of the tasks and technical responsibilities you have in these roles, I didn't notice much difference. The main difference in case 3 is that you get significantly more money (like 1.5-2x more), in exchange for worse job security. Given how easy jobs are to find in the current climate, I don't understand why more people don't opt for this. In case 2 in particular, the contracting company is taking up to a 50% cut of the hourly-rate, it's kinda crazy.

<comment><USER30> Doing 2 in Germany.

Because when one gets sick for long periods, needs to take care of kids or close family, only gets offers in the other side of Germany for a given tech, life is way easier with 2 than 3.

</comment></comment></comment><comment><USER31> As as contractor I take pride in my code and work to leave it better than when I got there. Some good points, in the essay, for sure. But overall pretty cynical.

<comment> le-mark > leave it better than when I got there

This can be a frightening statement depending on what 'better' means to anyone in particular. If 'better' means Enterprise Fizzbuzz, then no thanks, if 'better' means simplify and untangle spaghetti, or unwinding Enterprise Fizzbuzz then great!

<comment><USER31> Good point. The (your) latter.

</comment></comment></comment><comment><USER32> I'm a catfish. And I love it. The messier the code, the more rewarding the challenge.

<comment><USER33> Not sure I understand this motivation.

If I smashed up a lego tower, would you have more fun patching up _my_ tower, or instead you can create a "better" new one all by yourself?

<comment><USER34> Building a new thing from scratch means there's no guarantee anyone will ever use your code. The idea could be crap, the need not there, etc.

There's satisfaction in taking a page that was taking 10secs to load and making it load in 43ms. You know you've had a big impact on the thousands, 10s of thousands, etc. people who are using it.

And building a new system tends to go to the crap programmers because people are price sensitive. It's not until they start seeing the problems that expensive programmers turn up.

I met this game Dev contractor once in his 40s, he was complaining how he never gets allowed to make a game, they get the inexpensive graduates to make the game, then parachute him in at the 11th hour to "optimize" it, which is basically tidying up the pile of shit the inexperienced Devs made.

<comment><USER33> Yes but I would have more fun coming up with it in 43ms in the first place. No need to artificially benchmark yourself against an old version of code. The market is the real benchmark - without the baggage of recode.

re crap programmers - I don't doubt that this kind of behavior exists, and certainly with the success of the games industry and the extremely low barriers to entry (unity/unreal/steam/app store etc), this behavior may even be commonplace.

If I was you I would have advised the senior dev to find another job. A company that operates like that is looking for code monkeys, not professional software engineers, and any such professional software engineers won't hang around for long.

</comment></comment></comment></comment><comment><USER35> > _but the summoning of the demons from the 7th layer of hell and release a > Stephen_

> _King blood-fest on the planet._

I was expecting it to be Wolfram on that second line :|

</comment><comment><USER36> I am currently a catfish programmer and not enjoying it. I now feel like a garbageman because I see lots of garbage and rarely given new code to write. I now spend more time reading garbage code and trying to figure out how it works in a matter of hours. It all started last year October when I took a contracting job.

</comment><comment><USER37> _Why is my system slow?_

 _$ grep -R "map" _*

 _reduce(filter even? (apply (_ 3) (map inc (i for i in (filter even? collection)))))*

What's with the dissing on map? Awkward code like that can be written in lots of ways... (rewrite it with transducers, friend catfish, rewrite it with transducers!)

<comment><AUTHOR> <3

Searching "map" was an entry into the larger joke, but not sure if it came across on the psuedocode.

<comment><USER38> Was it a 'functional programmers know the value of everything and the cost of nothing' kind of joke?

<comment><AUTHOR> It filters for even.

Increments each element to odd.

Multiplies each number by 3 (each number is still odd)

Filters for evens then sums them.

Always returns zero.

<comment><USER38> but not one side effect!

</comment></comment></comment></comment></comment><comment><USER39> Oh, this hits close to home. _Warning: Venting through wall of text follows._

My first professional programming experience was in the early 2000's fixing and maintaining a Perl code from the mid-1990's. I wasn't a contractor, but the original author was no longer available, and there was little-to-no comprehensive knowledge about the code base in the company. We had plenty of people that could dive in and learn and fix, but as often as not, the answer to "how does that go about doing that" was "I guess we'll find out".

Later, I went to work for a local IT consultancy, and occasionally did short term and long term contractual software engineering. The majority of the horror stories I have are from this period.

I worked on a Payday loan company's code base where the original author was one of the owners, but was largely absent by the time I was working on it, due to personality and substance abuse issues. Once when making a change to the portion of the system that generated the ACH deposit file that was submitted to deliver money to customers, I noticed a commented out line that added another row, all statically defined, to put a couple thousand in a specific account. The comment above it said something to the effect "XXX's vacation allowance", where XXX was the absent owner and original author.

I worked on extending open source call center software which was essentially a bunch of multi-thousand line Perl scripts run through Aseterisk. Unfortunately, the original authors either didn't know about use strict, didn't know what scope was, and didn't know how to pass arguments to functions, or it was all an elaborate way to generate consulting feels for the original authors. Every function call was preceded by setting global variables which were then used within the function. If multiple SQL queries were needed, it was always "$stmtA = .." then "$stmtB = ". Prepared statements and variable binding? You wish. Generally, about 20%-80% of the code of any particular script (of well over 30) was generally shared with 2-5 other scripts, with no abstraction to a shared module, making the possiblity of changing one spot but not others likely, and corruption of the SQL data controlling the state of the system _likely_. The SQL schema itself wasn't exactly a dream to work with either...

I worked on fixing an implementation of a financial services company's rating algorithm implemented purely in SQL. The original IT employee responsible had disappeared one Thursday, and I'm not sure if they ever figured out what happened to him. The general vibe I got from them was that he probably took off on a vacation and decided not to come back. The code wasn't horrible, but making fixes to page-length dense SQL statements based on vague directions that certain stocks don't _quite_ match the output for the Excel formula the owner developed years before is nerve wracking, when the entire business is generating reports based off this formula and selling access, and they need changes to this formula yesterday, and have little in the way of formal verification of the output.

Finally, a story to somewhat temper the WTF stories above. When returning a decade later to the company of first job, I ended up doing most the heavy work on the ancient mid-1990's code that ran their custom CRM, having had experience with it when working on it in the early 2000's. This software was always baffling, because the original author, who while to my understanding was somewhat of a Perl novice when he began the project had made the _extremely odd_ decision to forego functions for a large set of twenty or so chained GOTO statements for each "route" (action param, in this case), instead of a simple cascaded if statement to function calls for each route, which is not only easier but much more likely to be the first choice for a novice (IMO). I finally determined the reason for this when making a larger structural change to fix this. The code was meant to (and did) run through mod_perl. Mod_perl speeds up Perl by taking the script, and essentially wrapping the content in a function, and persisting it. Unfortunately, if you have a bunch of functions defined in another function and they happen to use even just a couple "global" variables (not so global now, since they are defined in the outer function), you get closures, and data persisting between HTTP requests that should not. Using GOTO statements was a somewhat crazy, but definitely functional, way around this. Sometimes the WTF you've just encountered has justification, and it takes a deep dive to understand the code enough to know why.

Oh, that feels better. It's nice to vent every once in a while.

<comment><USER40> > Sometimes the WTF you've just encountered has justification, and it takes a > deep dive to understand the code enough to know why.

God forbid some documentation. At a previous employer I was consistently baffled at how nearly all information about the mission critical application (and the business) was distributed through random verbal conversation, with the remainder coming from those deep dives into the code (at least until I could no longer hold my breath). There was literally zero documentation for an application with 1 million lines in the source tree and another million in SQL stored procedures (!!!). The size of the project alone was shocking considering it was a fairly standard line of business app, albeit with inventory, HR and customer interaction all rolled into one, but the experience was just about as bad as it gets for development and organizational practices.

</comment></comment><comment><USER41> I'd imagine that the real catfish aren't posting to HN. They're coding.

</comment><comment><USER42> And here I was thinking that this was going to devolve into a series of Betcha I Can / Hold My Beer anecdotes.

</comment><comment> FLUX-YOU >The code that makes it into The Daily WTF[1] has no peer to many things a catfish programmer sees on an hourly basis.

Hah. Although as someone who did contribute to Daily WTF from my recent job, a lot of the code was much better than the piece I found.

God help you if you don't have a really smart IDE though.

</comment><comment><USER43> I understand the analogy and I like how the reality of the job is described. But I prefer the term 'mercenary' to 'catfish'... much less depressing!

</comment><comment><USER44> Large catfish are actually very active predators. In most of the United States, blue and flathead catfish get up to around 100 pounds. Gotta hunt to do that.

<comment><USER45> Tell that to a manatee! ;-)

</comment></comment><comment><USER46> I did not get the bit about "invasive species"

<comment><USER44> Blue and Flathead catfish despite being native to a good portion of the United States are considered invasive in some places (parts of Florida as well as further north in the Chesapeake Bay) where they have been illegally introduced.

There are also some tropical catfish that made it into Southern Florida that are also considered invasive.

That said, I really don't get what the author meant either.

<comment><USER47> I think he was talking about hypothetical slackers that work as FTEs. If not for their fuck ups, The spaghetti code wouldn't exist and neither would the job of cleaning it up.

</comment></comment></comment><comment><USER48> Plot twist: We're all catfish programmers...

<comment><USER49> Thank you! It's like everyone has missed the point of the story here...

</comment></comment><comment><USER50> Yup. Me to a tee. Really glad I read this.

</comment><comment><USER51> I've found contract work tends to increase technical debt rather than decrease it. Contractors never say no. It's not their fault. They're not paid to say no. It doesn't matter if the work is "remove this emissions counter when x occurs," they just do what they're told. No push back. Push back means no contract.

If my PM asks me to hard code something, I understand the business well enough to know when it's a bad idea and when it's okay. Sometimes I say no, that's a 3 month project. They run out, get a contractor, who says yes, 1 week. Now I'm stuck with a 12 month repair job instead, because it has to be fixed in production.

I don't play ping pong or chat around the coffee maker either. I'm too busy cleaning up messes and trying to set things right so the server doesn't catch fire and force me to come in on my weekend.

Some days, I hate programming full time. I wish I was a contractor who would say "Sure, 1 week." I'd get all the glory. "Wow, that was fast. What a brilliant programmer." I'd hate myself for what I did to other programmers though. Bottom feeders, indeed.

<comment><USER52> > Contractors never say no. It's not their fault. They're not paid to say no.

I'm a contractor, working for a consulting firm, and we say no all the time. Sometimes it's not a hard no, but more of a gentle nudge in a better direction. But we often advise our clients away from certain requests because that's what we're paid for. We're the experts and they value our expertise, that's why they hired us.

I know for a fact that what you describe exists, because about a quarter of our jobs involve cleaning up after someone like that, but I wouldn't say it's a feature of contractors in general but of cheap contractors.

<comment><USER53> You said a key word here. "Consultant". I would say you, too, are a consultant, by dint of working for a consulting firm.

A consulting firm, at least, a good one, cares about reputation. There's also a huge level of buy in from the business. You said it, -you're the expert-. That's a fact the business hiring you recognizes, and is why they're paying consulting fees. So yes, you're empowered to say no.

A standalone contractor, however, was not hired for his/her expertise, but to instead be slotted in to an existing project to churn out features, or fix things. The company hiring them has invested far less, sought out far less, stands to both gain and lose far less if things sour, and will have no qualms terminating them if so inclined.

I've seen it firsthand, over and over again. Contractors are second class citizens to employees. But employees are second class citizens to consultants.

</comment></comment></comment><comment><USER54> I love this. The catfish moniker is weird but I have definitely learned these lessons. I write very simple code because I've seen the hotshot stuff go bad, not because I don't understand the hotshot stuff.

But, this way of working involves little glory or reward besides the money. You'll never be the genius that created the beautiful new thing, you'll always be the janitor who's stuck with fixing all the mistakes of the "genius". So just know that.

One time a coworker said to me, you know, your stuff always just works and I never run into problems with it. That's about the extent of praise you'll get when you work like this. So know that too.

<comment><USER31> As a contractor, that's fine. Because I do not seek glory in the office. I seek glory 2 miles up on a Tuesday morning hike while all the zombies are at the office. Also, there's no traffic so, :).

EDIT: 'miles up'

<comment><USER33> I think that is depressing. I'm not saying don't go for a bike ride, but why not seek glory in something you spend 1/3 (+) of your life doing?

<comment><USER55> Why not seek glory in what you want to seek glory in and stop judging others based on what they want to seek glory in?

<comment><USER33> Jeeze... To call what I said a judgement is a bit over the top. It is an opinion, not a criticism, as there is nothing personal in my statement. Don't be too precious.

<comment><USER55> Fair maybe "judge" was too harsh a word, but you reply like this and you're calling me precious?

</comment></comment></comment></comment></comment></comment><comment><USER56> _> Taking breaks to play games, chat around coffee, or taking a few minutes to walk around the office is a non-existent element of life. An 8 hour work day is exactly that: 8 hours of pure work. _

I don't understand how some programmers can supposedly work for 8 hours straight. I often have to take breaks to think about how I want to best implement the next thing, or what exactly I should be working on.

<comment><USER57> Writing code is different than reading code, it suits different work patterns. One is dealing with software architecture and the other is doing software archaeology.

In the described catfish role, you don't get to spend any meaningful amount of time thinking about how to best implement the next thing; sure, you do some of that, but almost all the time gets spent trying to understand how the heck that thing was implemented (and why) (and why??????), and that means that (a) you don't really get progress unless you're looking at or touching that artifact, and (b) you _really_ want to avoid context switching; if you've spent three hours building up a vague picture in your mind about what something large and weird is supposed to mean, then you'll have to repeat half of that if you take a lunch break and talk about other matters. When you _do_ figure that out, though, the fix or rewrite generally is quick, easy and routine.

<comment><USER58> This is maybe one of the greatest advantages I have gained in my years of experience at one company. When I started, I was inheriting the code of other people, with all the baggage of trying to understand it and keep the mental model intact when I needed to make changes. Over time, I've largely rewritten all of the products that are still current, as requirements and dependencies have changed. I'm reminded of the probably apocryphal story of Nikola Tesla and Henry Ford[1]

[1] [http://www.snopes.com/business/genius/where.asp](http://www.snopes.com/business/genius/where.asp)

</comment></comment></comment><comment><USER59> This is incredibly confusing choice of terminology, because "catfish" means to pretend to be something better, online, (or an entirely different person) than you are in person. [1]

(I bet 80%+ of American readers understand this to be the definition.)

So I thought the article would be about somehow crafting a linkedin and github profile that makes you seem like you're worth $250K, whereas in fact you are an actual imposter -- a junior programmer, for example, with less than 2 years of coding experience and in only one or two languages. Or someone who's just not a good coder and gets fired from everywhere due to not being a good coder.

I found the article interesting, but I don't like the fact that it chose a term that pretty much means the opposite of what it intended.

Really confusing.

[1] [http://www.urbandictionary.com/define.php?term=catfish](http://www.urbandictionary.com/define.php?term=catfish)

<comment><AUTHOR> I wasn't aware of that term until about a year ago. Never saw the TV show, and using that terminology didn't benefit the article.

As pointed out in other posts, the article is a tad cynical, but I draw the line at outright bashing people or making assumptions about their character (every statement would have a caveat with "some, not all").

I think with that terminology, it would be an obvious angle that would force the article into an "everyone knows this" rant, which would take away from the attempted humor and alternative viewpoint. I left a lot unsaid, but it was an antidote to saccharine posts while hopefully not coming across overly bitter (because I'm not at all).

<comment><USER59> I liked the rest of the article :)</comment></comment></comment>


Yahoo acquires Astrid - <AUTHOR> http://blog.astrid.com/blog/2013/05/01/yahoo-acquires-astrid/

<comment><USER2> I don't want to take anything away from Astrid.

I keeps dismissing my ideas as trivial and already done. When I think I have a new idea, my friends would dismiss it as trivial and already done. Take astrid's todo list or task sharing for example. My initial and only thought would be 'does the world need another todo app', 'another list making app' really? If I take the idea to my friends, they would bombard me with companies who do exactly the same thing. And yet here we are with Astrid being acquired. It seems to have some angel investment/funding even. The founders may not be millionaires but they definitely made more money than I did.

Note to self: do something. anything. and get acquired.

</comment><comment><USER3> Already discussed here:

<https://news.ycombinator.com/item?id=5641288>

</comment><comment><USER4> Good for them. Astrid is best todo/task app I've ever tried...and I've tried many. In fact, testing out todo/task apps is a great way to procrastinate.</comment>


The Next Neil Armstrong May Be Chinese as Moon Race Intensifies - <AUTHOR> https://www.bloomberg.com/graphics/2019-us-vs-china-moon-race/ <comment><USER2> I hate to be that guy, but Neil Armstrong is Neil Armstrong because he was the first person to set foot on the moon... ever. The next person to set foot on the moon will be #13 and likely not particularly remembered by history.

The first person to set foot on Mars, however, will be notable.

</comment><comment><USER3> It'll likely be just like the last "space race".

The US reacts instead of leading because we are wrapped up in making everything 'safe' vs accepting some risks and actually getting things done.

</comment><comment><USER4> Wait a minute... The US has failing bridges all over, can we fix those first before getting into another trip to the moon? The only man mission that I will support is if we sent Donald Trump to the moon. Sad!</comment>


Oracle considering acquiring Accenture - <AUTHOR> https://www.theregister.co.uk/2017/03/28/oracle_doing_due_diligence_on_accenture_yep_you_heard_that_right/ <comment><USER2> So they hired consultant to tell them if they should hire consultants?

</comment><comment><USER3> Wonder what is going to happen with Avanade if this goes through. I guess they will try to sell the majority share back to Microsoft.

</comment><comment><USER4> Maybe they will destroy each other and leave the world a much better place.</comment>


Lunchtime hack: My cycling routes - <AUTHOR> http://www.lshift.net/blog/2014/08/28/lunchtime-hack-my-cycling-routes <comment><USER2> Wola, didn't know about this feature of Google. Creepy.</comment>


The Placebo Effect - <AUTHOR> http://www.skeptic.com/eskeptic/09-05-20#feature <comment><USER2> "So far the evidence for objective placebo effects is weak. Another hypothesis is that the placebo effect is only subjective, but that these subjective effects can indirectly lead to objectively measurable effects. For example, if you are in pain and the placebo effect decreases your perception of that pain, you might expect your pulse and blood pressure to drop. If you are asthmatic and are wheezing, any psychological factor that reduces your anxiety level or helps you relax might indirectly ease your breathing symptoms and even allow your constricted bronchi to dilate. In this view, the placebo effect doesn't really cause objective effects, it allows you to have a different experience of your symptoms and it is that different experience that indirectly affects your physiology. Semantic quibbling, perhaps."

An interesting article by a medical doctor about various lines of research on placebo effects. The comments to the submitted article on the original site are interesting too.</comment>


Intel says 8th-gen Coffee Lake chips will get 30% performance boost - <AUTHOR> https://arstechnica.co.uk/gadgets/2017/05/intel-coffee-lake-performance/ <comment><USER2> Though there are some major footnotes attached... At least this is a more appealing upgrade than Kaby Lake. Obviously, we're at a point where continuing to chase smaller silicon transistors is merely delaying the inevitable. We need to be looking at new ways to innovate.</comment>


Tezos founders push for legal bailout from Swiss foundation - <AUTHOR> https://www.reuters.com/article/us-bitcoin-tezos-lawsuits-exclusive/exclusive-tezos-founders-push-for-legal-bailout-from-swiss-foundation-idUSKBN1DV4K0 <comment><USER2> 1\. ICO founders are getting a quick education in the fact that "anyone can sue anyone at any time" \-- no matter what paperwork you have folks sign.

2\. What are the damages if they just give the money/coins back? That's the easiest solution for these ICOs: a 100 days buy back/escrow period?

3\. Another easy solution is to have these ICOs hold the proceeds in escrow and release of funds quarterly for five years to the startups/projects and giving the investors the ability to refund half or 75% of their remaining commitment (i.e. a 25-50% penalty for leaving the project early).

had the founder on recently [https://youtu.be/rdRSUJkvmxM](https://youtu.be/rdRSUJkvmxM) \-- seems like people who invested knew what they were doing going in.

<comment><USER3> Not fun for them, but nevertheless a very interesting lawsuit. What I am interested in is the fact they used a Swiss foundation that they don't actually control.

What happens when a US judge allocates damages for certain actions? They declare personal bankruptcy? US judgements are also not always enforceable abroad, so is it imaginable the foundation gets to keep the money regardless of the outcome of any lawsuit? I would guess so.

<comment><USER4> Ethereum was the first cryptocurrency to form a foundation in Zug, and its a popular structure. Generally the code and system are open sourced, and a nonprofit foundation controls the money raised in the ICO.

[https://www.swissinfo.ch/eng/500-million-business_crypto- pig...](https://www.swissinfo.ch/eng/500-million-business_crypto-piggybank- foundations-proliferate-in-zug/43494680)

<comment><USER5> All those Zug-incorporated ICOs exploiting loopholes in civil law:

1\. Tokenizing non-profit foundations (stiftungs), while traditional "stiftung foundation has no shares or members" [1]

2\. Pretending that token allocations are unrelated to donations/contributions.

3\. Using nonprofit foundations for clearly for-profit speculative activity.

[1] [https://en.wikipedia.org/wiki/Stiftung](https://en.wikipedia.org/wiki/Stiftung)

<comment><USER6> As a Swiss, I'm saddened that my country seems to have found yet another way to get involved in shady financial dealings.

<comment><USER7> The problem is not that setting up such a structure is possible, the problem is the lack of suitable alternative legal structures that are better suited for the job. For that, regulation needs to be relaxed.

</comment></comment></comment></comment></comment></comment><comment><USER8> Tezos, the Theranos of ICOs.

When you know enough rich people, you can raise a lot of money on a PDF of promises.

With all the money Tezos has, they're probably going to do what Theranos did with Walgreens: pay their way into a fancy big partnership that gives the impression that there's something actually going on.

<comment><USER9> That's an easy but lazy reduction, and not accurate.

\- They raised from the public

\- Founder comp tied to release of a product that works

\- They are focused on making a product that works, not on optical theatrics (in fact one of their biggest weaknesses is they've been horrible at optics)

<comment><USER10> > _\- They raised from the public_

Not quite right. They raised from their own investors _and_ the public, which may be part of the problem.

If their own investors bought into their own ICO to "seed" it, which tricked the public into thinking there was genuine demand, that might constitute fraud.

<comment><USER11> Ummm doesn't a regular VC founded startup that IPOs does the exact same thing?

Some of them without even making money... actually loosing money!

<comment><USER12> If a startup never finds any paying customers, it will never IPO. The IPO is a separate step from the initial investment, governed by rules intended to protect the public. ICOs don't seem to represent anything of intrinsic value (e.g. a successful business) so the public probably faces greater danger from unscrupulous behavior.

<comment><USER8> In the biotech / pharma world, it's common for startups to IPO years before they have a single paying customer.

The difference between a biotech startup and many ICOs is that the former typically has years of validated and peer-reviewed scientific research backing up the hope of eventually having a product.

<comment><USER13> In that case, the "customers" are other scientists and drug companies that _consume_ the research, will pay for partnerships, will pay for research to be done by that lab, etc.. ICOs on the other hand don't have an acclaimed lab or anything special other than a PDF with some buzz-bullshit.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> In other words, they tried to be clever in their structuring and now it's biting them in the ass. Hoisted by their own petard.

</comment><comment><USER15> So what exactly happened here? There was an ICO for a big new smart-contract blockchain with some cool features, and the blockchain never materialized?

<comment><USER9> It was a project that was and continues to be promising from a development and utility standpoint, but that has been marred by terrible governance, internal politics, and amateurish management

<comment><USER16> And worst of all, their product is about improving governance. Not a promising start.

<comment><USER17> In fairness, the foundation arm of the token's development _appears_ to be operating in a reasonable and pragmatic way along their planned roadmap. It is a related company, helmed by the previous "frontpeople" for the project that has run into significant bumps and legal jeopardy.

Whether or not that means that the project will ultimately release, I have no idea (nor vested interest in).

<comment><USER18> >the foundation arm of the token's development appears to be operating in a reasonable and pragmatic way along their planned roadmap

Oh, yes? What have they done?

</comment></comment></comment></comment></comment><comment><USER19> The Bitcoin Uncensored interview with Arthur Breitman is interesting to watch: [https://www.youtube.com/watch?v=gsY5wXj4Xm8](https://www.youtube.com/watch?v=gsY5wXj4Xm8)

<comment><USER20> It was a very interesting interview, mostly for the parts that weren't about Tezos. Breitman explains the use case for Turing complete smart contracts: Spending limits.

Everything else can be implemented by m-of-n multisig and off-chain oracles. This is something anyone about to invest in smart contract technology should think long and hard about.

<comment><USER21> > Breitman explains the use case for Turing complete smart contracts: Spending > limits.

Does he have a good explanation for this? Because I fail to see how something as simple as spending limits requires Turing completeness.

</comment></comment></comment><comment><USER22> Can someone explain briefly the Tezos unique features and why would someone want it?

In my understanding it is just a Bitcoin copy that has a voting feature to decide protocol changes.

<comment><USER23> In addition to on-chain governance you mention (i.e. the built-in voting features to decide protocol changes and avoid the civil war that's going on in Bitcoin world), they use a functional programming language that is supposed to be much safer and easier to code than the Ethereum language.

<comment><USER24> Why not just write a compiler for that functional language (I think OCaml) that outputs EVM bytecode? Seems very doable from afar...

<comment><USER25> No one's yet figured out how to ICO a compiler.

<comment><USER22> ahahahah

</comment></comment></comment></comment></comment><comment><USER26> $257 million? Who are the morons keeping this hamster wheel spinning?

<comment><USER27> That's pre Bitcoin inflation. Its probably valued over a billion USD now, assuming they kept a decent chunk of the BTC in BTC.

</comment></comment><comment><USER28> So what's the likelihood my pre-sale in tezos ever gets returned or turned into a viable coin?

</comment><comment><USER29> If you like the idea of Tezos, have a look at Cardano. It has on-chain governance voting, formal verification, and the ability to upgrade the protocol without the need for hard forks. Basically, all the stuff that got me interested in the Tezos project.

[https://www.cardanohub.org/en/what-is- cardano/](https://www.cardanohub.org/en/what-is-cardano/)

In the interest of full disclosure, I do own some Cardano.

<comment><USER30> Thanks for the full disclosure. Good luck with your investment but the comments section for this article is probably not a good place to pump coins.

<comment><USER29> I don't think that letting people who are interested in Tezos know about a coin with very similar features is "pumping" the currency. Tezos has some really interesting features, but they have stumbled with the ICO and delayed their release. As someone who was waiting for Tezos to launch I was excited to hear about Cardano and I'm sure there are other Tezos enthusiasts here who are happy to learn about the existence of similar coin. To say that I'm "pumping" the coin implies that I will dump the coin, when I'm really just interested in the Tezos technology, which is also present in Cardano.

</comment></comment></comment><comment><USER31> I know that ICOs get a lot of negativity on HN. Sure, a lot of them deserve it, but not all ICOs are started for the sole purpose of raising cash that they otherwise wouldn't be able to raise. ICOs as a form of funding are equally likely to be manipulated as traditional VC funding following trends and hypes (one might argue that they ICO investors are even more gullible to dishonest founders since they are generally less experienced than VCs).

However, certain ICOs are actually bringing products to market that would never otherwise exist. Some of them are trying to fundamentally change how some industries operate. Others are fundamentally improving blockchain technology. But in order for their products to operate they need enough stakeholders to make them viable. And this is where ICOs come in. There were many of us who believed that Tezos was one of those ICOs. Their product could still be greatly useful if executed correctly. Given that they have raised more money then they could ever have hoped for, it is incredible that they are being silly enough to embark on a public dispute between themselves and get involved in lawsuits with their investors. Just getting back to work and executing their initial vision (which they can do many times over with that amount of funds) seems like an obvious thing to do. They would lose a lot more money (or worse) by continuing on this trajectory. It is incredible how short- term greedy they seem from the outside.

Or maybe I am missing some information that would explain this stupidity. I would love to know more.

<comment><USER22> I can't remember a single ICO that has brought anything useful to the market yet.

You can say Ethereum, but it wasn't an ICO properly speaking. Even if it was, a single good example in hundreds isn't enough.

Ripple didn't have an ICO, Bitcoin Cash didn't, Zcash didn't, Monero didn't, Stellar didn't.

<comment><USER32> Why wasn't Ethereum an ICO?

Arguably that was the model for all other ICOs and the platform for the vast majority.

<comment><USER33> Ethereum had an ICO, back in 2014:

[https://blog.ethereum.org/2014/07/22/launching-the-ether- sal...](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/)</comment></comment></comment></comment>


Sorry, Tesla: The world's fastest electric car is made in Croatia? - <AUTHOR> http://mashable.com/2016/02/24/worlds-fastest-electric-car/ <comment><USER2> Any Croatioans here?

I heard Mate Rimac (the kid) got seed money for the business from his dad who was a local mobster. It was a huge controversy and apparently all over the local press when it happened.

Somebody have more news on this?

<comment><USER3> I didn't know about it, quick googling shows that his dad is not a mobster. He was however arrested and charged in a high scale corruption case and fraud [1] five years back and was also charged with tax fraud in Germany before that. Since then he was released on bail and in 2014 sentenced to three years an ten months of prison [2].

Mate said in an interview that is planning to return the loan he received from his dad [3]. Also that should not impair Mate's achievements.

[1] [http://www.vecernji.hr/crna-kronika/ivan-rimac-opet-na- sudu-...](http://www.vecernji.hr/crna-kronika/ivan-rimac-opet-na-sudu- zamaglili-333-mil-kuna-tvrtke-slavonija-di-318377) [2] [http://www.vecernji.hr/hrvatska/afera-sibinj-svi- proglaseni-...](http://www.vecernji.hr/hrvatska/afera-sibinj-svi-proglaseni- krivima-kruljac-dobio-godinu-i-pol-dana-zatvora-930061) [3] [http://www.vecernji.hr/automobili/mate-rimac-posudeni- novac-...](http://www.vecernji.hr/automobili/mate-rimac-posudeni-novac-vracam- ocevoj-tvrtki-s-kamatama-niti-kunu-nisam-dobio-na-poklon-995095)

</comment></comment><comment><USER4> Does it really count as "production" if you build only eight?</comment>


So I finally tried Wave... - <AUTHOR> http://paulbuchheit.blogspot.com/2009/11/so-i-finally-tried-wave.html

<comment><USER2> I love this guy:

 _If you want to learn more about Wave, I would start there and skip this post_

His point that the product must be in a very early stage of development because it apparently hasn't gone though the process where marginal features are winnowed is fantastic orthogonal thinking.

<comment><USER3> It's also surprising when you realize how rarely that assumption holds true. Far too many applications ship several versions without ever getting rid of the features that should never have been there in the first place. It's a testament to Google's reputation for quality (and long betas) that we feel we can safely assume that the marginal features will be removed or improved in a timely fashion.

<comment><USER4> Is there some history of this actually happening at Google? I can't recall any big products that have shed features. My recollection is obviously limited, but I'd love to hear of some examples. Shuttering whole products/services doesn't count to me.

<comment><USER5> Well, for one, the man himself gave Gmail as example.

<comment><USER6> It didn't sound like Gmail was made public with the features. Sounded like they were removed before it went public.

</comment></comment></comment></comment></comment><comment><USER7> My impression from Wave was the same: the hierarchical structure turns "waves" into an unmaintainable mess too easily and too quickly. I find the user interface a bit counter-intuitive and cluttered too.

Whatever Paul feels about Wave, he actually makes a couple of clever suggestions Wave's team, I think, should listen to: make it (optionally?) linear and also build the wave-to-email gate. These two things are more important for Wave at the moment than anything else.

If Paul built Wave it'd probably be in a more usable state now, wouldn't it?

</comment><comment><USER8> Most insightful and original bit is at the end: _I don't know what Google has planned for Wave or Gmail, but if I were them I would continue improving Wave, and then once it's ready for the whole world to use, integrate it into Gmail. Moving Wave into Gmail would give it a huge userbase, and partially address the "email is universal" problem. They could use MIME multi-part to send both a non-Wave, HTML version of the message, and the Wave version. Wave-enabled mail readers would display the live Wave, while older mailers would show the static version along with a link to the live Wave._

<comment><USER9> That's not insightful. You can't use Wave like that. It's technically an impossibility. Guy has no clue what he's talking about, just like every other armchair reviewer of Wave.

</comment></comment><comment><USER10> I like his response.

re: Wave itself: I am more enthusiastic about Wave as a platform (custom robots for back end processing, gadgets) for software development.

</comment><comment><USER11> _I'm not sure if this is because I have an obligation to try all new products, or because my views on the longevity of email will seem hopelessly naive once I try Wave, but either way, I mustn't disappoint the good people of TechCrunch :)_

I think what's implied is much worse than that actually... namely that Paul would rather not have Google Wave eclipse GMail. And for that reason, he didn't even want to look at it.

<comment><USER12> I don't think that Google Wave will replace GMail for a while.

For on thing, it contradicts the theory of "do the simplest thing that possibly works." Google Wave is great for collaboration and group work and game playing. However, when it comes to replacing email it is too bloated I think. Of course they will probably speed it up and simplify as it develops.

Also there will always be a market for a simple email client, if only for the simple reason that not everyone wants the entire world to see that they can't type very well.

It is more professional to send a completed email then to have the recipient see you typing in realtime complete with misspellings, clumsy typing, and grammar errors.

That is the main impression that I have with Google Wave. Everyone watching a wave can see me type so I have to be more careful rather than just typing then looking it over before hitting "Reply".

<comment><USER13> The "see me type" thing is a feature you can turn off.

<comment><USER12> Thanks for telling me. I'll have to dig through the settings and find it.

<comment><USER14> It's not in the settings, it's the "draft" tick box at the bottom of the textbox.

<comment><USER15> That "draft" tick box has been grayed out for me since I got into Wave.

</comment></comment></comment></comment></comment></comment><comment><USER16> Definitely not a ringing endorsement..

I do like his idea at the end but I think it would make more sense for Gmail to be integrated into Wave instead of vice-versa.. Integrating back into Gmail seems awkward at best..

</comment><comment><USER17> I'm a little confused about his description of linear vs nonlinear. Maybe it's because I haven't tried Wave yet.

P.S. If anyone has any invites available, my email is in my profile ;)

<comment><USER18> Sent you one. I have a few more if anyone else wants one - send me an email

<comment><USER19> btw - i think you won't receive the invite until the next "wave" of users. i'm guessing they're staggering users with product iteration.

almost everyone i talk to says: this is cool, but none of my friends are on it. maybe google is addressing this with different circles of folks, but from where i'm standing it seems like they could have forced a better distribution of invites.

<comment><USER12> Actually invites are going out quite quickly at least from what I have seen. I received one about two weeks ago, only about a day after it was requested for me by another user.

</comment></comment></comment></comment><comment><USER19> nice response. i didn't realize there were bloggers out there who could be calm and informative.</comment>


Quadruped Robot Using Jetson Nano - <AUTHOR> https://github.com/chinmaynehate/Venom <comment><USER2> Very cool work.

The Jetson Nano is an underappreciated tool in this space, I've been doing some work with it as well and when the tooling around it becomes more adequate I think we'll see it more in use.</comment>


The Hidden Costs of Being an Uber Driver - <AUTHOR> http://www.washingtonpost.com/news/get-there/wp/2015/02/20/the-hidden-costs-of-being-an-uber-driver/ <comment><USER2> This article struck me as illogical and out of touch.

 _...a more recent study commissioned by Uber reported that the typical Uber X and Uber Black drivers make about $19 an hour after paying Uber's 20 percent commission ... yet that hasn't diminished the appeal of driving for Uber._

Does the author really not realize that $19 an hour would be appealing to a very large proportion of the population?

The author also doesn't show how the federal income tax is fundamentally different to what an employee would pay, and yet the tone of the article suggests that the amount of income tax paid is a special burden for Uber drivers, e.g. _...there can be a big difference between the fares from driving for Uber, say $62,000, and what's left over after paying Uber's commission, your gas, car maintenance, health and car insurance expenses, and your federal income and self-employment taxes, or about $27,600. And you may still have to pay state and local income taxes, which might add up to another thousand dollars or so._ I thought only the crazy libertarian right talked about "what's left over after federal (and state and local!) taxes".

Finally the author makes a ridiculous comparison with actual employees of Uber: _Things would be different if you worked for Uber Technologies. You would receive a 401(k) plan, gym reimbursement, nine paid company holidays, full medical /dental/visions package and an unlimited vacation policy. You might even get snacks in Uber's lunchroom._ How is this relevant? Is the author going to get the Uber drivers jobs as professors at GWU, since the mean tech nerds won't pay them software engineer salaries?

<comment><USER3> > The author also doesn't show how the federal income tax is fundamentally > different to what an employee would pay

Not disagreeing. For anyone wondering what the fundamental differences are:

1) As an independent contractor you are responsible for 100% of your FICA tax (social security and medicare tax). For most people the tax due is 15% of your income. This is in addition to your income tax. In an employee/employer relationship the employer pays for half of this. It can be a big shock to people who are hit with this for the first time.

2) If you're an employee, your employer is automatically withholding your income tax payments for you and sending them in to the IRS at a regular interval. As an independent contractor you need to be doing this yourself. If you wait until the end of the year and pay as one lump sum you'll likely be penalized.

<comment><USER4> >If you wait until the end of the year and pay as one lump sum you'll likely be penalized.

In general, you don't have to pay estimated quarterly taxes in your first year of earning self-employment income. And after you file taxes for your first year, the IRS will inform you that you need to start paying estimated taxes. So it's not super-easy to accidentally get a penalty for this.

</comment></comment></comment><comment><USER5> I don't particularly care for Uber as a company, but reading this it seems to me that the "bad guy" is the US government. Making things like paying taxes more straightforward and automated, and providing a better health insurance structure to its citizens are 2 things that would allow people to partake in things like driving for Uber without most of the drawbacks exposed in this post. That's the kind of stuff really needed to enable a country built on entrepreneurship (things like a national "day of code" or White House hackathons are cute, but rank lower on the list of priorities)

<comment><USER6> US taxes are _ridiculously_ complicated, but trying to change any of it is basically impossible - at the slightest hint of any one sector having to increase taxes, it's game over, as the US public gets _very_ loud when that happens.

About 20 years ago here in Australia, the sales tax was simplified. It used to be that you'd pay 0, 11, 22, or 33% tax on goods if they were classed as staples, luxuries, or something in-between. They scrapped this and replaced it with a flat 10% tax nationally, except for staple foods. My mother was a bookseller, which was previously tax-free (so it wasn't good for her business), but she said that other vendors were over the moon at the much greater ease of compliance. If you ran a mixed business, it was a pain to track which items were 11% versus one of the others.

Then I look at the US system and... shudder. Sales taxes can come from several different levels, and then be chargeable depending on where the seller is and also where the buyer is. It's ridiculously complex. But fixing it means that some people will have to pay a little more (never going to happen) and some entities will lose political power to someone further up the chain (also never going to happen).

On the other hand, the US economy is ridiculously powerful, so perhaps they can afford to waste money on process, keeping armies of accountants employed :)

</comment></comment><comment><USER7> This article should be another argument in favor of calling this "The 1099 economy" instead of "The Sharing Economy".

In the end, that 1099 will be much more salient to your everyday life than the notion of 'sharing'

<comment><USER8> Uber isn't sharing at all. It's CSR service. ZipCar, Car2Go are sharing.

</comment></comment><comment><USER9> I truly despise the term 'sharing economy', as used in the article. This is not sharing, none of these companies are sharing. It is renting, or selling, just like any company in the boring old normal economy.

When you share something with others, you don't charge people for it.

</comment><comment><USER10> Other hidden costs:

* Driving around when you'd normally be at home, to be in a position for fares

* Driving only to have ride cancelled

* Bottled water/mints/etc (I've seen these in a few Ubers)

* Toll tags (though I've had an Uber detour when the most direct route directed them through a toll road)

* Most drivers seem to prefer dedicated GPS to one built into Uber app, so there's that cost if they choose to take it on.

* Uber drivers tend to keep car cleaner than usual driver, so time/money for that.

</comment><comment><USER11>
        > unlimited vacation policy

I could not work for a company like that, as I would feel guilty taking each and every day. Much better to just give a generous allowance - how about the 4-5 weeks you'd get in Europe?

<comment><USER12> I have and that was the exact feeling most of the non-management employees got. It didn't feel like a "perk" at all.

<comment><USER13> Agree as well - IME 'unlimited vacation policy' means 'policy: no vacation'.

<comment><USER12> or policy: "sure, just hold off until this _next_ launch and we'll make it worth it!"

</comment></comment></comment></comment><comment><USER14> Uber's driver income numbers have been wildly deceptive. They don't include the cost of the car, or of operating it.

<comment><USER15> Uber is a pretty good option for people who _already have_ a suitable car, especially people who already have one they've previously been using to run a limo service.

To call ignoring the cost of the car "deceptive" seems a bit like calling it "deceptive" to say software engineers can earn 6 figures because you haven't factored in the cost of getting a computer science degree.

</comment></comment><comment><USER16> this article points out several important aspects of uber's 'unfair advantage,' which in the labor market almost completely boils down to structural forms of tax avoidance that regulated incumbents are unable to match, but neglects to mention some of the longer-term benefits that 'real' employment brings.

for example, having a W-2 job in the united states typically means contributing to social security, which helps people build up to qualifying for certain benefits in retirement. not so with uber.

especially over a typical worker's lifetime, comments about $x/hour dramatically oversimplify and abstract away the NPV of these endeavors for employee-like participants. NPV for employee-like participants is considerably lower than many reasonable-sounding discussions would have you believe because a lot of the discounts that uber captures as profits are not as cleanly captured in $x/hr numbers....social security is one of many.

<comment><USER17> Wrong, as a self employed person you are absolutely required to pay in to social security. Heck, the article even spells that out...

</comment></comment><comment><USER18> My only problem with Uber is this clause;

"Vehicle requirements are subject to change"

The list of approved cars didn't make much sense when I looked into it. I have a feeling there's a bunch of people who went into debt buying a four door Uber approved car--and are now saving up for bankruptcy?

</comment><comment><USER19> Could someone explain why Uber doesn't have an Android app for their drivers? It looks to me like they are trying to skim a little extra from those without iPhones. Surely they can afford the engineering costs associated with an Android version?

<comment><USER20> You underestimate how much engineering would cost for an Android port.

From my friends who have maintained both iPhone and Android versions of the same product, the Android dev costs were roughly 4x that of the iPhone, and that continues with QA for every single new feature released, assuming you want feature parity.

</comment></comment><comment><USER21> The Uber claim is about the bay area/sf only.

Then the counter study is about the USA average for Uber.

Based on that, I can't say who tells the truth - but I can certainly say that I don't believe anything from this article either.

</comment><comment><USER22> The article should be called "the (not so hidden) cost of being an independent worker".

Yes, you're making a big mistake if you compare the amount you would make as an independent worker vs being employed.

</comment><comment><USER23> Clickbait-y article. Hidden costs? How are these hidden? You live in the US and expect to NOT pay taxes or something? I expected to read about some surprising cost, but insurance, gas, taxes, car maintenance, uber's cut, etc., are all straightforward.

<comment><USER23> ...and downvoted why? ;-)

marincounty's comment here represents a potential hidden cost. The article's contents don't.</comment></comment>


Ask HN: How do I build upon what HN did for OldGeekJobs.com? - <AUTHOR> Here's my story:
1. Last Wednesday, I read Tim Bray's post "Old Geek" and it resonated with me because of experiences I've had.
https://www.tbray.org/ongoing/When/201x/2016/09/14/Old-Geek
2. I immediately created an MVP with a static site and Google Form.
http://imgur.com/a/kTJK9
3. It made HackerNews and got a tremendous response:
https://news.ycombinator.com/item?id=12506232
4. Over the next 2 days, I built out a more robust version of the site with Flask and Postgres.
Quartz then picked up the story:
5. http://qz.com/784118/someone-created-a-tech-job-board-for-people-over-30/
and now Inc.
6. http://www.inc.com/suzanne-lucas/how-to-get-a-tech-job-when-youre-really-old-like-35.html
Now I'm iterating on PMF. I'd love to know what you think of the idea and how I can keep the momentum going. <comment><USER2> I'd suggest you start blogging often, now, while you figure out the rest.

Think in terms of shattering myths and prejudices, and if you can find some, case studies of cool 55 year olds happy to be at a startup surrounded by 25 year olds, or expert in a new hot tech. You can poke fun at, well discuss, the whole recruitment process and the remember algoritms on a whiteboard or how many piano tuners in Seattle questions. Then there's the recruiters and the blinkers of ageism, youngism, sexism, and seeking "like us". You've material for a few thousand posts! It'll create something of a knowledgebase and become google food for incoming searches.

Some companies believe that old programmers are expensive, or won't put up with hours bullshit.

 _Recruiters and HR_ often believe they're no good, inflexible, unhappy to be around young people, and all the other cliches. I've found that if you can get past these to the people who actually matter the age matters far less.

I'd try getting to talk to senior folks at agencies when you can - get past the layer of 20 year old sales to management who are probably older, and probably more sympathetic.

<comment><AUTHOR> This is awesome advice. Thank you.

</comment></comment><comment><AUTHOR> Hi Everyone. Maker of [https://OldGeekJobs.com](https://OldGeekJobs.com) here. I'm not sure if I'm allowed to post a redundant comment but the text post won't render links.

1\. Last Wednesday, I read Tim Bray's post "Old Geek" and it resonated with me because of experiences I've had.

[https://www.tbray.org/ongoing/When/201x/2016/09/14/Old- Geek](https://www.tbray.org/ongoing/When/201x/2016/09/14/Old-Geek)

2\. I immediately created an MVP with a static site and Google Form.

[http://imgur.com/a/kTJK9](http://imgur.com/a/kTJK9)

3\. It made HackerNews and got a tremendous response:

[https://news.ycombinator.com/item?id=12506232](https://news.ycombinator.com/item?id=12506232)

4\. Over the next 2 days, I built out a more robust version of the site with Flask and Postgres.

Quartz then picked up the story:

5\. [http://qz.com/784118/someone-created-a-tech-job-board-for- pe...](http://qz.com/784118/someone-created-a-tech-job-board-for-people- over-30/)

and now Inc.

6\. [http://www.inc.com/suzanne-lucas/how-to-get-a-tech-job- when-...](http://www.inc.com/suzanne-lucas/how-to-get-a-tech-job-when-youre- really-old-like-35.html)

Now I'm iterating on PMF. I'd love to know what you think of the idea and how I can keep the momentum going.

</comment><comment><USER3> First, I think you have to understand your own motivations - are you interested in pursuing this as a serious side project and/or startup?

You found something interesting, a real or perceived market imbalance. If there really is a shortage of talent, and a shortage of jobs for people over 30, you could provide a curated pipeline.

Now you have to find the other side - a job board is a two-sided marketplace, and those are hard.

I'd talk with recruiters and HR people. Also with people that have been involved with job boards. I'd try to find a mentor among those.

As a 35-year-old myself, something that you would have to address is prejudices on both sides of the equation: companies that believe that "old" programmers are no good, and developers that believe that company X is a "bullshit" job (most older developers will be pickier).

<comment><AUTHOR> Yes - this is solid advice. Thank you.

<comment><USER3> I just remembered that Y Combinator has accepted several job boards in the past.

Maybe you can contact the founders of TheMuse, for example? ([https://www.themuse.com/](https://www.themuse.com/))

<comment><AUTHOR> [https://twitter.com/oldgeekjobs/status/778359329518780417](https://twitter.com/oldgeekjobs/status/778359329518780417)

<comment><USER3> Well done :) I hope they answer !

</comment></comment></comment></comment></comment><comment><USER4> When I (age 26) was looking for a job, I remember needing to know if the company sponsored visas (US->UK for me) and seeing that lots of other folks had the same question. Naively, I would have said that older folks are more settled and less interested in that. Upon actually reflecting on that, it might just be an unjustified ageist assumption.

</comment><comment><USER5> Frankly, I'd make it part of a non profit group to advocate for age blind hiring. Get donations, pay yourself a reasonable salary, have the job board be part of it.

<comment><AUTHOR> Why?</comment></comment>


Healthcare IT Thesis – 8VC - <AUTHOR> https://medium.com/8vc-news/healthcare-it-thesis-9d76ebe5ed8b <comment><USER3> I spent a good number of years working on the Health IT side of things - <USER2> Technology Implementation Manager having built El Camino Hospital, as a Technology Designer for SF General, and in other capacities in building, designing, operational go-live etc for other hospitals....

One thing that I never hear discussed in these areas are the costs of technology sold to hospitals and the cost of consumables over time.

What was the price of aspirin in 1980, 1990, 2000, 2010...

Or gauze, or many many other things?

What was the amount billed for that common thing that has been around for decades?

What is the meaning of a "hospital grade television"? and why is that device as more expensive than its consumer counterpart?

Look at all the technology systems and devices sold to hospitals... Yes I am familiar with the economics of them, and in many cases its BS.

(not all), but many.

Then look at the number of skilled employees that a hospital must employ for it to work - and look at their wages.

So, this article talks about the outcomes, and quality and volume of care, but doesnt ___seem_ __to take into account the inputs of cost that are required for an organization to run.

Then, on top of that - these are companies, seeking to make profits - and the rates for coded services are a huge negotiation issue between insurance and the hospitals. Yet, I don't see any regulation for prices on standard services which is true and meaningful.

If there is one thing that the United States is masterful at doing: its lying to the population about the effectiveness of regulating the cost of a service in any industry, when simply looking at the regulation of service costs in any other comparable developed nation proves that NO regulation of costs is actually meaningfully achieved.

so, yes - tech will be on the upswing - but it has always been on the upswing, that never been a concern. What is NOT on the upswing is actual progress in health costs.</comment>


If 16-bit Windows had a single input queue, how did you debug applications? - <AUTHOR> http://blogs.msdn.com/b/oldnewthing/archive/2014/11/26/10576044.aspx <comment><USER2> "How did you debug applications on it? "

With this bad boy:

[http://en.wikipedia.org/wiki/SoftICE](http://en.wikipedia.org/wiki/SoftICE)

<comment><USER3> We used SoftICE extensively for driver debugging. I seem to remember a pushbutton that slid into the ISA slot to trigger a NMI but now I'm not quite sure anymore if it was SoftICE or Periscope that had that.

<comment><USER4> I used to trigger NMI by shorting the first two pins on an empty ISA slot with a screwdriver (conveniently NMI and GND); stopped when the screwdriver slipped once. Thankfully nothing died on that day, but the cascade of sparks convinced me to install a proper button. ;)

</comment></comment></comment><comment><USER5> Sounds much more complicated than I remember it. I wrote a game called MVP Backgammon in 1991 using Borland C++ (5.x) and their integrated debugger, and do not recall any specific issues related to input queue deadlocks. You set up your PeekMessage loop or whatever and hung a breakpoint on the switch statement for the message type you needed to debug, and followed it down from there. I assume the debugger was smart enough to run its own PeekMessage loop while waiting for commands.

<comment><USER3> Did you use OWL with BC++? That was so much better than MFC although the non- standard C++ extension was a little unsavory.

I also remember the BC++ debugger being pretty nice although I preferred CodeView.

<comment><USER6> +1 for OWL. It was my first "real" C++ framework, and it was a great way to start.

Borland had a nice tool suite but somehow just couldn't hang on to market share.

<comment><USER7> I loved Borland's tools. But they got Microsofted just like dozens of other apps, one by one over the years (word proc, spreadsheet, browser, etc.)

<comment><USER8> At the time, the battle over products like Quattro were with competitors like Lotus, and not MS.

And Borland sure did their part. There were a number of great products they acquired and then destroyed. The Brief editor is a near and dear example for us developers, but they also went out of their way, it seems, to destroy dBase and the whole Ashton Tate thing. And Sidekick was a really cool app that they managed not to handle well, too.

<comment><USER9> I think dBase screwed up before they were acquired by Borland.

</comment></comment></comment></comment></comment></comment><comment><USER10> I loved having the debugger separated out onto its own screen, even if it was a monochrome screen showing a bunch of tiled windows drawn with CP437 text- mode characters. To this day I miss the perfection of that setup.

One of the first times I had to use a "modern" 32-bit debugger, one with its own top-level window on the normal desktop, I was trying to find a bug triggered by focus events. Every time I hit a breakpoint, the focus would change to the debugger, dropping another focus event into the event queue, which would naturally trigger the breakpoint again once I stopped single- stepping. Having the debugger embedded in the system you're trying to debug can be very, very annoying.

<comment><USER9> You can still do remote debugging with WinDbg for example.

<comment><USER11> And Visual Studio.

</comment></comment></comment><comment><USER9> [http://blogs.msdn.com/b/matt_pietrek/archive/2005/02/14/3724...](http://blogs.msdn.com/b/matt_pietrek/archive/2005/02/14/372424.aspx)

I am surprised Raymond did not mention it.

</comment><comment><USER12> I was just remembering my first job, where we still developed 16-bit based clients. I was thinking "Wow, I don't remember it being so difficult to debug...", then it dawned on me, everything we were doing was on machines running Win NT 4!! 16bit Delphi 1 was an amazing achievement though, and the 32bit transition was fairly painless for us too.</comment>