First of all, I don't know if the poor fellow was from France -- maybe he was from Canada?
Second of all, I am first generation of European immigrant parents, and Mom had even lower inhibitions about chatting with strangers standing on line than I do. Much, much lower, although I think that babes are given much more latitude than dudes in that respect, even babes that are someone's Mom.
Thirdly, the European way gives professors, even from other departments, high levels of respect, and especially from students, even graduate students. Yeah, I was rude to engage a student in conversation about their work, when they were openly displaying what they were working on in a public non-work venue. In Germany of a generation ago, where Dad was an undergrad, that would be rude behavior in disrespecting a faculty member expressing interest in what you are doing. Nowadays, people can inform me.
Fourthly, I have a nephew doing the exact same thing (research in abstract algebra). Mom would have mentioned the family connection whereas I just STFU about that part. Interestingly, Nephew behaves exactly the same way when I ask him about his work. So is this a "social aspect of people in Abstract Algebra" thing?
I am standing in the queue for free organic-grown vegetables on a college campus. The students doing this are very professional and capable and not like the hippie farmers in Easy Rider, but still, standing in a queue for free organic vegetables is a kind of hippie "share the love" kind of thing not for "uptight" people and squares. Still . . .
The dude standing in front of me is making minor doodles on his spiral-notebook work journal. The notebook entries have some familiarity to me, which I suspect are "adjoint forms" or some mathematician boojum for stuff than engineers notate differently.
"Hi. Couldn't help from noticing what you are working on. Group theory?
(curtly and in a Francophone accent) "No, abstract algebra . .." (yeah, as if there was some difference between the two)
"What is your affiliation on campus?"
"Grad student in mathematics."
"My work is in engineering. You know, there is a lot of interest in the community studying robotics and machine mechanisms in applications of abstract algebra."
(silence)
I have a paper out on using algebraic formal power series expansions to solve for linkage mobility. You do any work with series expansions?
(silence)
(we get closer to the head of the line) Those green tomatoes over there -- you can eat those, they are just a special kind that stays green when they are ripe.
You would think that most of the helium waste has little to do with the party balloon industry and a lot to do with the natural gas industry.
Are there natural gas wells with useful amounts of helium, but the helium is not being recovered because of the price structure. Maybe the price of helium should be propped up so that more natural gas isn't just burned without recovering the helium, but why pick on party balloons?
Do these concerned scientists even know how much He is used in party balloons?
The answer is Eclipse, Java, the JVM, and Swing. Works great on Linux. I even think recent versions of Swing are coded to OpenGL for graphics acceleration.
You know what they say, Write Once and Run Everywhere (meaning Gnome, KDE, XFace, etc).
I think it is a good design rule that if you have a comment describing some inglorious hack, maybe you could rewrite the code to remove the comment along with the hack?
I also think that comments describing interfaces are better than comments describing processes. This is the old thing of "describe what the module does and leave the description of how the module does what it does to reading the actual code." So preambles describing the parameters a function takes and valid ranges on those parameters are most useful.
The other thing about comments is not so much the writing of them but the keeping them up to date. The compiler doesn't check that the comment is still relevant to a function you have changed.
What is this "hackerspace"? It sounds so pseudo-hippie, it is like this bakery that calls itself "Bread Smith."
Or this software company that calls itself Sound Foundry selling a digital audio editor product called Sound Forge. Talk about mixing metaphors. A foundry involves a casting process where you pour liquid metal. A forge is a kind of machining process where you take in some cases cold metal or in other cases metal heated to lower its yield strength, and you pound on it with hammers or with a machine. So foundry, forge, which is it?
Hackerspace. Didn't that used to be called a "machine shop"? This name is so "Whole Foods", which is a kind of hippie-chic deal for people with tons of money imitation of a coop store.
I don't fly much, but I went for the first time through something called a mm-wave scanner (is that an x-ray or something else)?
A TSA chick stood to block my way and told me, "Sir, there was something suspicious on the scan, we are going to have to pat you down."
You have to know, ahem, that in middle age, a lot of us havet the Frank Costanza physique from that Seinfeld "bro" episode. A TSA dude with blue gloves felt my left moob through my clothes and then touched up the middle of my left thigh.
I was going to ask, "Did you find a lump, officer, something where I need to go to the doctor?" I mean if they are doing radiological and physical exams on people, isn't there an ethical responsibility to disclose this? But I just stood there like I was being inducted into the Army and shut-TF-up because I wanted to get on my flight.
Whether a GUI is hard or easy to write and takes up only 3-5% of the code really depends on your application domain.
You might think Swing is the "stuff", but there are a lot of major apps in scientific computing and scientific data display that are using it -- the Figure windows and Command window in Matlab are JFrames.
Let's set aside domain-specific widgets that do fancy graphical stuff. Let's just talk about an app that has a bunch of configuration dialogs.
The dialog has OK-Cancel and maybe some other buttons, radio buttons to make some simple multiple-choice selections, drop lists to make some longer multiple-choice selections, edit boxes where the user enters decimal or integer numeric values over a wide range of possible values, clickers for making a selection from a small range of numeric values, maybe some combination of a clicker with text-entry override. So you are going to have a lot of code simply creating all of the widgets, configuring them, laying them out, and hooking them to event handlers. Yes Swing is verbose, but Windows isn't any better.
Then you have code for data validation and for on-the-fly reconfiguration of the dialog contingent on selections. For example, this drop list is only activated if a particular radio button selection is made. Yeah, yeah, the rules for the data validation and for what happens when you select Cancel are "business logic" and should go into some kind of Model or Controller object rather than being rolled up into the View. So then for every action on a widget, you have an event handler in a GUI portion of the code because event handlers are GUI-specific, a call out to the model to update, and a callback or some response from the model, where you have to do the actual housekeeping of updating widget configurations, again in the GUI-specific code.
So you separate the View and Model, having one module that does all of the GUI configuration and all of the event handling too as event handling is GUI specific and another module handling all of the logic of data validation and keeping track of the modal state of the dialog -- which buttons are pressed and which other widgets need to be grayed out. The Model and the View are tightly coupled in exposing long lists of methods to each other to make this work, which bulks up the code and also goes against modern object-oriented programming practice where objects should be self-contained and "know" how to perform the methods that are invoke on them.
By the time you are done, you have a baroque edifice making use of every Gang-of-Four Design Pattern that puts much of the Swing codebase to shame. And by the time you are done, you say, "Aw, heck, let's just use Java/Swing as the front end where he call into our native app using JNI." And that is what Matlab does -- are those dudes stoopid?
Let's talk about 2), abstract away the UI and OS specific calls into a library, and implement them for each OS. Yes, there are general purposes libraries for this: Swing, wxWindows, Tk, and Qt+, and maybe some other names I am less familiar with.
Yes, a general purpose UI and OS abstraction framework is a non-trivial software development undertaking, and one starts out saying, "My app doesn't need the full feature set of Swing, so I will code a UI and OS abstraction library specific to my problem domain, and that won't be too complicated. Start adding features to your GUI and that sentiment starts to feel like Custer's initial assessment regarding a military engagement of Sitting Bull's fighters being no big undertaking.
I am also saying that if your GUI is below 10 percent of your code, you are working in a problem domain where your GUI doesn't have a high feature count.
I am also proposing method 3) Write your GUI in Swing (or wx, Tk, Qt, . .., but don't reinvent the platform-independent abstraction of the GUI widget set) and keep your legacy "business logic" in native code. That is what Matlab, Maple, and Mathematica do.
"Ah yes, submitting boxes of cards to the operator and waiting for output - those were the days."
I knew turnaround time for jobs was long, but it took days?
We had to enter FORTRAN II code on punch cards, hunched over a hot keypunch machine. To see the scope of our DO loops or IF statements, we had to rifle the punch card decks until our fingers bled . . . and we liked it!
Yeah, yeah, separate the GUI code from the "business logic", but a huge fraction of any GUI app is the GUI. No matter how you slice and dice and refactor your code, a full 50% or more of your modules will have GUI calls in them.
So what do you, create some kind of application-specific but platform-neutral set of GUI calls, and then you write drivers or plug-in modules for each target GUI OS? Instead of rolling your own, you use wxWindows? You program the front-end in Java and using Java Swing (yup, Matlab is a native-code app that does just that?)
Or if you roll your own GUI library that only needs to support widgets specific to your app, yeah, yeah, you don't have to implement the kitchen sink. Or do you? You will need menus and buttons and radio buttons and drop lists and scrollable bitmap canvas plots and vector plots, and pretty soon you are mapping the whole GUI. Which is wx does and also Swing, and those were not trivial apps to develop.
No, I refuse to buy the argument that the GUI logic can be modularized to some small corner of your app that you can rewrite for the different targets. The flavor of your target GUI with respect to the available options and configurations and features will color your entire app.
Even if you breathe out as much as you can, there is still a lot of oxygen in the residual volume of your lungs. Your ability to hold your breath, I am told, is not limited by oxygen but by your ability to toleerate buildup of CO2, which triggers certain reflexes.
Exposed to vacuum, I would think that even your residual lung volume gets vented. A similar thing occurs with asphyxiation with inert gas, say the pure nitrogen atmosphere in the X-15 cockpit outside the pilot's pressure suit. Milton Thompson wrote about how guys would lift their faceplate to scratch their nose, but they held their breath -- breathe in an you are dead. This inert gas asphyxiation danger has taken lives of farmers entering silos, where fermentation displaces the oxygen.
That is also why they train pilots in altitude chambers to give them some measure of the symptoms of oxygen starvation and how to react. Exposure to low pressure is not like retaining your residual lung volume, although the first instinct would be to think otherwise.
I am also told that Project Mercury had a fatal accident in a ground test of a pure nitrogen atmosphere, hence the switch to pure oxygen in the cabin, which in turn created the risk for the Apollo fire.
Now with regard to the passing of consciousness and then life, Stephen Jay Gould wrote about how Lavoisier, if I have this right, was condemned to the guillotine during the Terror of the French Revolution for being a stinkin' aristocrat (Gould suggested that Lavoisier was a stinkin' "tax farmer", i.e., a middle class person who set up shop as a tax collector, where under the King, the tax collector would get a percentage of receipts -- kind of like the hated tax collectors in the Bible). Anyway, Lavoisier was curious how long a person could stay conscious/alive after having their head sliced at the neck, and we worked out some kind of eye-blink code for his last seconds of consciousness, for the good of science as they say.
The recently retold story is that Squad 80 was supposed to respond to the call for help from the security guard dude about the break-in in progress. If Squad 80 pulled up to the Watergate with flashing lights and uniformed cops got out, the lookouts in the Ho Jo's would have tipped off the burglers. Squad 80 was nowhere to be found because the officers, OK, not in a strip club, but they were in some bar. Dispatch had to send a trio of undercover cops in place of the "uniforms." The lookouts call the burgler's on walkie-talkie radios, "Um, guys, what are you wearing?" "Business suits, why?" "Um, some guys who look like hippies are at your location with drawn guns."
I have no ethical problem "scam baiting" or pulling the chain of scammers.
But is this really such a low risk passtime?
The idea is yeah, yeah, 3rd World dimwits, let's see how stupid they are. But I would think that con artists of all cultures might have a certain sophistication about them, and if they lack sophistication, they might have some "muscle" they could apply if you got them angry.
I say, if you really, really know what you are doing, have your fun, but unless I knew these guys couldn't figure out personal info on me, I wouldn't poke them with sticks just to get a reaction.
The Commonwealth of Massuchesetts is going to have a ballot question on whether auto companies have to reveal all of their "codes" so that independent repair shops (and I guess do-it-yourself people) would have access to diagnostics on cars. Some assembly member is attempting legislation to preempt the referendum question, telling the auto companies, "We can do this the easy way, or we can do this the hard way . .."
So, maybe we could get Bay State voters interested in open other things?
Aren't the Web thread denizens who engage in demeaning remarks and personal attacks called Mobys?
The other thing about trolls, is that suppose you have a Wingnut Web site where the host is "for the war" and then you have someone who is Liberal and anti-war posting and getting into a flame war. Is that person a troll? Suppose they were sincere in their belief as many people are sincerely anti-war, and that they get into an argument on the Wingnut Web site because they genuinely believe that the Wingnuts shouldn't live comfortably in their "echo chamber?"
Suppose the person posting is a Conservative but has genuine reservations "about the war" (such as the late Bill Buckley expressing doubts)? Is that person trolling if they get into a heated discussion, maybe more so because they believe themselves to be proper Conservatives and that the folks on the Wingnut Site have it wrong?
I agree with you that a genuine troll is someone who doesn't necessarily believe in the position they are taking, but they are posting, often anonymously or under a handle so as to get satisfaction from disrupting a serious discussion and getting responses out of people. Hence, "don't feed the trolls."
I think we need different names for different types of troublemakers (or perceived troublemakers).
There are some programmers who can craft concise yet lucid code. Others construct baroque edifices of source, using every obscure language construct, that go on and on.
When I read journal articles by mathematicians that intersect engineering, say, numerical solution of differential equations in dynamical solutions, hoo boy are some of these people bad programmers. I mean, a journal article is really a form of source code that gets translated into an internal model by the scientific, engineering, or mathematical reader of the article. As I said, some programmers write concise yet lucid code, others just fill pages with every obscure language construct to do the same thing.
It is Khan Academy, people as the dude is from Middle Asia.
Kahn on the other hand, is more Middle East as Kahn (according to Wikipedia!) is a variant of Cohen as in the Kohanim, who were the priests in Solomon's Temple. To bear the family name Kahn, therefore, is a mark of descent from the Temple Priests.
Um, so he hated Jewish people?
Second of all, I am first generation of European immigrant parents, and Mom had even lower inhibitions about chatting with strangers standing on line than I do. Much, much lower, although I think that babes are given much more latitude than dudes in that respect, even babes that are someone's Mom.
Thirdly, the European way gives professors, even from other departments, high levels of respect, and especially from students, even graduate students. Yeah, I was rude to engage a student in conversation about their work, when they were openly displaying what they were working on in a public non-work venue. In Germany of a generation ago, where Dad was an undergrad, that would be rude behavior in disrespecting a faculty member expressing interest in what you are doing. Nowadays, people can inform me.
Fourthly, I have a nephew doing the exact same thing (research in abstract algebra). Mom would have mentioned the family connection whereas I just STFU about that part. Interestingly, Nephew behaves exactly the same way when I ask him about his work. So is this a "social aspect of people in Abstract Algebra" thing?
I am standing in the queue for free organic-grown vegetables on a college campus. The students doing this are very professional and capable and not like the hippie farmers in Easy Rider, but still, standing in a queue for free organic vegetables is a kind of hippie "share the love" kind of thing not for "uptight" people and squares. Still . . .
The dude standing in front of me is making minor doodles on his spiral-notebook work journal. The notebook entries have some familiarity to me, which I suspect are "adjoint forms" or some mathematician boojum for stuff than engineers notate differently.
"Hi. Couldn't help from noticing what you are working on. Group theory?
(curtly and in a Francophone accent) "No, abstract algebra . . ." (yeah, as if there was some difference between the two)
"What is your affiliation on campus?"
"Grad student in mathematics."
"My work is in engineering. You know, there is a lot of interest in the community studying robotics and machine mechanisms in applications of abstract algebra."
(silence)
I have a paper out on using algebraic formal power series expansions to solve for linkage mobility. You do any work with series expansions?
(silence)
(we get closer to the head of the line) Those green tomatoes over there -- you can eat those, they are just a special kind that stays green when they are ripe.
(silence)
You would think that most of the helium waste has little to do with the party balloon industry and a lot to do with the natural gas industry.
Are there natural gas wells with useful amounts of helium, but the helium is not being recovered because of the price structure. Maybe the price of helium should be propped up so that more natural gas isn't just burned without recovering the helium, but why pick on party balloons?
Do these concerned scientists even know how much He is used in party balloons?
You know what they say, Write Once and Run Everywhere (meaning Gnome, KDE, XFace, etc).
I also think that comments describing interfaces are better than comments describing processes. This is the old thing of "describe what the module does and leave the description of how the module does what it does to reading the actual code." So preambles describing the parameters a function takes and valid ranges on those parameters are most useful.
The other thing about comments is not so much the writing of them but the keeping them up to date. The compiler doesn't check that the comment is still relevant to a function you have changed.
Or this software company that calls itself Sound Foundry selling a digital audio editor product called Sound Forge. Talk about mixing metaphors. A foundry involves a casting process where you pour liquid metal. A forge is a kind of machining process where you take in some cases cold metal or in other cases metal heated to lower its yield strength, and you pound on it with hammers or with a machine. So foundry, forge, which is it?
Hackerspace. Didn't that used to be called a "machine shop"? This name is so "Whole Foods", which is a kind of hippie-chic deal for people with tons of money imitation of a coop store.
To come up with Ecuador?
Like with the Gannett chain of local newspapers?
A TSA chick stood to block my way and told me, "Sir, there was something suspicious on the scan, we are going to have to pat you down."
You have to know, ahem, that in middle age, a lot of us havet the Frank Costanza physique from that Seinfeld "bro" episode. A TSA dude with blue gloves felt my left moob through my clothes and then touched up the middle of my left thigh.
I was going to ask, "Did you find a lump, officer, something where I need to go to the doctor?" I mean if they are doing radiological and physical exams on people, isn't there an ethical responsibility to disclose this? But I just stood there like I was being inducted into the Army and shut-TF-up because I wanted to get on my flight.
C'mon people, has All Your Base Are Belong to Us slipped from the Slashdot lexicon?
So, like, Jefferson didn't write the Declaration of Independence, but, he like, discovered it!
You might think Swing is the "stuff", but there are a lot of major apps in scientific computing and scientific data display that are using it -- the Figure windows and Command window in Matlab are JFrames.
Let's set aside domain-specific widgets that do fancy graphical stuff. Let's just talk about an app that has a bunch of configuration dialogs.
The dialog has OK-Cancel and maybe some other buttons, radio buttons to make some simple multiple-choice selections, drop lists to make some longer multiple-choice selections, edit boxes where the user enters decimal or integer numeric values over a wide range of possible values, clickers for making a selection from a small range of numeric values, maybe some combination of a clicker with text-entry override. So you are going to have a lot of code simply creating all of the widgets, configuring them, laying them out, and hooking them to event handlers. Yes Swing is verbose, but Windows isn't any better.
Then you have code for data validation and for on-the-fly reconfiguration of the dialog contingent on selections. For example, this drop list is only activated if a particular radio button selection is made. Yeah, yeah, the rules for the data validation and for what happens when you select Cancel are "business logic" and should go into some kind of Model or Controller object rather than being rolled up into the View. So then for every action on a widget, you have an event handler in a GUI portion of the code because event handlers are GUI-specific, a call out to the model to update, and a callback or some response from the model, where you have to do the actual housekeeping of updating widget configurations, again in the GUI-specific code.
So you separate the View and Model, having one module that does all of the GUI configuration and all of the event handling too as event handling is GUI specific and another module handling all of the logic of data validation and keeping track of the modal state of the dialog -- which buttons are pressed and which other widgets need to be grayed out. The Model and the View are tightly coupled in exposing long lists of methods to each other to make this work, which bulks up the code and also goes against modern object-oriented programming practice where objects should be self-contained and "know" how to perform the methods that are invoke on them.
By the time you are done, you have a baroque edifice making use of every Gang-of-Four Design Pattern that puts much of the Swing codebase to shame. And by the time you are done, you say, "Aw, heck, let's just use Java/Swing as the front end where he call into our native app using JNI." And that is what Matlab does -- are those dudes stoopid?
Yes, a general purpose UI and OS abstraction framework is a non-trivial software development undertaking, and one starts out saying, "My app doesn't need the full feature set of Swing, so I will code a UI and OS abstraction library specific to my problem domain, and that won't be too complicated. Start adding features to your GUI and that sentiment starts to feel like Custer's initial assessment regarding a military engagement of Sitting Bull's fighters being no big undertaking.
I am also saying that if your GUI is below 10 percent of your code, you are working in a problem domain where your GUI doesn't have a high feature count.
I am also proposing method 3) Write your GUI in Swing (or wx, Tk, Qt, . . ., but don't reinvent the platform-independent abstraction of the GUI widget set) and keep your legacy "business logic" in native code. That is what Matlab, Maple, and Mathematica do.
"Ah yes, submitting boxes of cards to the operator and waiting for output - those were the days." I knew turnaround time for jobs was long, but it took days?
We had to enter FORTRAN II code on punch cards, hunched over a hot keypunch machine. To see the scope of our DO loops or IF statements, we had to rifle the punch card decks until our fingers bled . . . and we liked it!
Yeah, yeah, separate the GUI code from the "business logic", but a huge fraction of any GUI app is the GUI. No matter how you slice and dice and refactor your code, a full 50% or more of your modules will have GUI calls in them.
So what do you, create some kind of application-specific but platform-neutral set of GUI calls, and then you write drivers or plug-in modules for each target GUI OS? Instead of rolling your own, you use wxWindows? You program the front-end in Java and using Java Swing (yup, Matlab is a native-code app that does just that?)
Or if you roll your own GUI library that only needs to support widgets specific to your app, yeah, yeah, you don't have to implement the kitchen sink. Or do you? You will need menus and buttons and radio buttons and drop lists and scrollable bitmap canvas plots and vector plots, and pretty soon you are mapping the whole GUI. Which is wx does and also Swing, and those were not trivial apps to develop.
No, I refuse to buy the argument that the GUI logic can be modularized to some small corner of your app that you can rewrite for the different targets. The flavor of your target GUI with respect to the available options and configurations and features will color your entire app.
Exposed to vacuum, I would think that even your residual lung volume gets vented. A similar thing occurs with asphyxiation with inert gas, say the pure nitrogen atmosphere in the X-15 cockpit outside the pilot's pressure suit. Milton Thompson wrote about how guys would lift their faceplate to scratch their nose, but they held their breath -- breathe in an you are dead. This inert gas asphyxiation danger has taken lives of farmers entering silos, where fermentation displaces the oxygen.
That is also why they train pilots in altitude chambers to give them some measure of the symptoms of oxygen starvation and how to react. Exposure to low pressure is not like retaining your residual lung volume, although the first instinct would be to think otherwise.
I am also told that Project Mercury had a fatal accident in a ground test of a pure nitrogen atmosphere, hence the switch to pure oxygen in the cabin, which in turn created the risk for the Apollo fire.
Now with regard to the passing of consciousness and then life, Stephen Jay Gould wrote about how Lavoisier, if I have this right, was condemned to the guillotine during the Terror of the French Revolution for being a stinkin' aristocrat (Gould suggested that Lavoisier was a stinkin' "tax farmer", i.e., a middle class person who set up shop as a tax collector, where under the King, the tax collector would get a percentage of receipts -- kind of like the hated tax collectors in the Bible). Anyway, Lavoisier was curious how long a person could stay conscious/alive after having their head sliced at the neck, and we worked out some kind of eye-blink code for his last seconds of consciousness, for the good of science as they say.
The recently retold story is that Squad 80 was supposed to respond to the call for help from the security guard dude about the break-in in progress. If Squad 80 pulled up to the Watergate with flashing lights and uniformed cops got out, the lookouts in the Ho Jo's would have tipped off the burglers. Squad 80 was nowhere to be found because the officers, OK, not in a strip club, but they were in some bar. Dispatch had to send a trio of undercover cops in place of the "uniforms." The lookouts call the burgler's on walkie-talkie radios, "Um, guys, what are you wearing?" "Business suits, why?" "Um, some guys who look like hippies are at your location with drawn guns."
OK it's camp, but it is my favorite. The "french-fried brains" look on McCoy's face after using the Teacher helmet: Priceless.
But is this really such a low risk passtime?
The idea is yeah, yeah, 3rd World dimwits, let's see how stupid they are. But I would think that con artists of all cultures might have a certain sophistication about them, and if they lack sophistication, they might have some "muscle" they could apply if you got them angry.
I say, if you really, really know what you are doing, have your fun, but unless I knew these guys couldn't figure out personal info on me, I wouldn't poke them with sticks just to get a reaction.
So, maybe we could get Bay State voters interested in open other things?
The other thing about trolls, is that suppose you have a Wingnut Web site where the host is "for the war" and then you have someone who is Liberal and anti-war posting and getting into a flame war. Is that person a troll? Suppose they were sincere in their belief as many people are sincerely anti-war, and that they get into an argument on the Wingnut Web site because they genuinely believe that the Wingnuts shouldn't live comfortably in their "echo chamber?"
Suppose the person posting is a Conservative but has genuine reservations "about the war" (such as the late Bill Buckley expressing doubts)? Is that person trolling if they get into a heated discussion, maybe more so because they believe themselves to be proper Conservatives and that the folks on the Wingnut Site have it wrong?
I agree with you that a genuine troll is someone who doesn't necessarily believe in the position they are taking, but they are posting, often anonymously or under a handle so as to get satisfaction from disrupting a serious discussion and getting responses out of people. Hence, "don't feed the trolls."
I think we need different names for different types of troublemakers (or perceived troublemakers).
When I read journal articles by mathematicians that intersect engineering, say, numerical solution of differential equations in dynamical solutions, hoo boy are some of these people bad programmers. I mean, a journal article is really a form of source code that gets translated into an internal model by the scientific, engineering, or mathematical reader of the article. As I said, some programmers write concise yet lucid code, others just fill pages with every obscure language construct to do the same thing.
Kahn on the other hand, is more Middle East as Kahn (according to Wikipedia!) is a variant of Cohen as in the Kohanim, who were the priests in Solomon's Temple. To bear the family name Kahn, therefore, is a mark of descent from the Temple Priests.