|
'ello
Aug 14, 2006 18:37:14 GMT -5
Post by jaeksmith on Aug 14, 2006 18:37:14 GMT -5
Hello! I'm a social phobic software engineer... Given my detachment from physical society I've had a strange seemingly alternate experience / viewpoint on my work - so much that I've never even met the box that the normals seem to suggest thinking outside of. I struggled throughout highschool wondering and searching for why I was different... this actually extended all the way up into college, until - at one mind opening point - I came across the notion of social anxiety. (I was also marked as slow at one point... I sure hope school employees are more educated about social anxeity these days - but I'm guessing not). In the last several years I've had to become more involved with society and... dang... it's had it's effect. (Now I'm a ~35 year old grumpy old man). Recently I moved from the home I grew up in (near Buffalo, NY) to UT. This may be the biggest change for me... or may not. I'm actually warfing much social experience off of my youngest brother (who is much less shy) - we moved here and will share an appartment. Last we left our hero, he was trying to raise courage enough to go see a barber about his developing bush problem...
|
|
|
'ello
Aug 18, 2006 23:00:09 GMT -5
Post by Stranger on Aug 18, 2006 23:00:09 GMT -5
I'm a social phobic software engineer... Me too. Let's play! ;D Given my detachment from physical society I've had a strange seemingly alternate experience / viewpoint on my work - so much that I've never even met the box that the normals seem to suggest thinking outside of. Not sure what you mean. I'm intrigued, though... I struggled throughout highschool wondering and searching for why I was different... this actually extended all the way up into college, until - at one mind opening point - I came across the notion of social anxiety. (I was also marked as slow at one point... I sure hope school employees are more educated about social anxeity these days - but I'm guessing not). I sure feel slow a lot, and I'm sure I appear that way to many. It really sucks, because I hate slowing people down in a conversation to ask them to explain something again, especially if there's more than one other person. So I often don't bother, which is probably worse. If it's one of those things where I really have to keep up, then I can ask for clarification 3 or 4 times and still not get it (by which time even I'm usually laughing at myself... ;D). It could be just as much the speaker's fault, but I feel really stupid nonetheless. In the last several years I've had to become more involved with society and... dang... it's had it's effect. (Now I'm a ~35 year old grumpy old man). Recently I moved from the home I grew up in (near Buffalo, NY) to UT. This may be the biggest change for me... or may not. I'm actually warfing much social experience off of my youngest brother (who is much less shy) - we moved here and will share an appartment. Hey that's cool - change can be good! I think it can help lift you out of the routine of just putting the fearful things off. Moving interstate would be quite a rush I reckon, and its when you're on these highs that I think the anxiety can start becoming dwarfed a little. In my experience, anyway. Last we left our hero, he was trying to raise courage enough to go see a barber about his developing bush problem... Must be some barber if he can take care of the Bush problem... ;D I hope you enjoy your stay at SU.
|
|
|
'ello
Aug 19, 2006 0:05:46 GMT -5
Post by jaeksmith on Aug 19, 2006 0:05:46 GMT -5
Sweet! What types of stuff do you do? For income I act as a miled manner programmer/software-engineer ( resume). During free time I do various side project - with a particular (wannabe) interest in game-dev. Not sure what you mean. I'm intrigued, though... Partially joking, partially serious- my programming skills are mainly a result of my own personal studies / experience. (College was helpful for learning standards, history, and getting a feel for others, but I'm not a college made developer...) Thus, my views and skills tend to be a bit different... A fun little saying of mine: [glow=red,2,300]Code is the medium by which I twist and shape the virtual domain.[/glow] I see the domain created by computers as a virtual space that can be formed into anything we wish (virtually speaking) - including a living system (code being part of that virtual space - thus code also being a mutable / formable element itself). (Sad thing, of course, is that corporate / professional work tends to change coding into glue we slap bewteen components, as you've probably experienced). I sure feel slow a lot, and I'm sure I appear that way to many. It really sucks, because I hate slowing people down in a conversation to ask them to explain something again, especially if there's more than one other person. So I often don't bother, which is probably worse. Same here... I prefer email communications - it's asynchronous, it can be reviewed, and I can take the time to respond properly. Funny thing, the main guy I communicate with at one of my client offices has trouble dealing with written communications. Luckily we're good friends from college... Hey that's cool - change can be good! I think it can help lift you out of the routine of just putting the fearful things off. Moving interstate would be quite a rush I reckon, and its when you're on these highs that I think the anxiety can start becoming dwarfed a little. In my experience, anyway. It's been pretty good so far - I know more about Utah Valley than the Buffalo area already...
|
|
|
'ello
Aug 19, 2006 11:17:18 GMT -5
Post by Stranger on Aug 19, 2006 11:17:18 GMT -5
Sweet! What types of stuff do you do? For income I act as a miled manner programmer/software-engineer ( resume). During free time I do various side project - with a particular (wannabe) interest in game-dev. Me two!! My day job for now is webby stuff. Ruby mostly, which is cool because it's my favorite langy. It's completely swallowed my time lately, though, so my hobby projects are being tragically neglected. I've been trying to refactor my lil' game in between tormenting SU with my psychotic raving. Oh, and squashing bugs at work - my boss interrupted my Saturday evening so I didn't get back to you sooner... Partially joking, partially serious- my programming skills are mainly a result of my own personal studies / experience. (College was helpful for learning standards, history, and getting a feel for others, but I'm not a college made developer...) Thus, my views and skills tend to be a bit different... A fun little saying of mine: [glow=red,2,300]Code is the medium by which I twist and shape the virtual domain.[/glow] I see the domain created by computers as a virtual space that can be formed into anything we wish (virtually speaking) - including a living system (code being part of that virtual space - thus code also being a mutable / formable element itself). (Sad thing, of course, is that corporate / professional work tends to change coding into glue we slap bewteen components, as you've probably experienced). Hmmm, I pretty much agree with that view I think. How do you suppose most people view this "domain"? Do you have any particular thing in mind with the "code modifying code" idea? Or are you referring to metaprogramming techniques as a whole? Or just "bits == bits == bits" in general? Yeah I do know what you mean about the gluey remark. When I started out where I'm at now, I was excited because we were building all these new systems. But even here, our freedom to design them is often constrained by our legacy muck, so our new stuff has to be both a glueball that sticks these things together, and be a well designed system on its own. Of course, we've been really rushed, so now it's neither... A fun little saying of mine: If it's left my brain, it's public domain. It has nothing to do with anything. ;D
|
|
|
'ello
Aug 19, 2006 17:38:01 GMT -5
Post by jaeksmith on Aug 19, 2006 17:38:01 GMT -5
Me two!! Very cool! My day job for now is webby stuff. Ruby mostly, which is cool because it's my favorite langy. Cool. For my one client (the bank) I do mainly web work. For the other client (the bookstore / online marketplace) I do a mixture of architecture and back-end business logic. I've been planning to check out Ruby, but haven't had a chance yet. (So much to learn and almost no time). For several years now, my professional work has been mainly in Java. I'd worked with C/C++ for several years, but not too many professional project required it. It's completely swallowed my time lately, though, so my hobby projects are being tragically neglected. I similarly tend to get consumed by work - it's been a long time since I've really had much time to put into work. Today, I'm actually trying to dig out some protocol code I started months ago to see if I can't get it moving again... Hmmm, I pretty much agree with that view I think. How do you suppose most people view this "domain"? Heh, sometimes I wish I could look into people's heads and see what they're thinking. From my experience, I believe that few developers actually realize the nature (power) of the medium they are working within. Do you have any particular thing in mind with the "code modifying code" idea? Or are you referring to metaprogramming techniques as a whole? Or just "bits == bits == bits" in general? It's really the basic notion that, given a virtual domain where you are in control of shaping (structuring and filling data) and defining the interpretion (executing that data), you have an extreme amount of freedom and capability. Metaprogramming is a resulting capability - but it's really the comprehension of the capability that the space gives. (ie. you can create "life", where "life" is defined as an active living system). As an engineer we work with a particular set of primitives in order to construct a solution appropriate to the problem. With computers we can (theoretically) easily form our own primitives and constructs. From what I can tell - many developers don't even seem to comprehend this capability. <TANGENT> For a long while now, I've wanted to work on a language (call it 'Constructable') that is a bit more virtual in nature (not specifying the programmer interaction UI by default) that would allow new primitives and constructs to be defined / used. The implementation of the constructs could be done via other primitives/constructs in the language - or (on a given implementation platform) the VM could provide implementations for primitives/constructs that it can optimize really well. This would allow primitives/constructs defined that are targeted toward the particular problem domain and/or execution environment. (In a given project, a domain/platform architect(?) could define primitives/constructs that the business logic programmers would then use to implement their tasks - helping them to focus more on their tasks). </TANGENT> <EDIT> A good example of the application of the comprehension of this virutal power is multithreading (not so much (physical) multiprocessing - but creating virtual threads of execution). I did some research once about threads that could cross process boundaries. I was happy to see that research (and actual experimental implementations had actually already occurred). I was a bit less happy to find that the optimization of our current CPU architectures makes this less efficient (due to caching of thread info being based on process boundaries, etc - and the fact that we optimize our processors for speed instead of (more than) exploring new architectures). </EDIT> A fun little saying of mine: If it's left my brain, it's public domain. It has nothing to do with anything. ;D Nice Actually, I wish we could apply that rule to intellectual property in general. (The notion of invention being unique is a bit messed up - there's nothing like being able to think up an idea that someone else owns).
|
|
|
'ello
Aug 20, 2006 8:04:07 GMT -5
Post by Stranger on Aug 20, 2006 8:04:07 GMT -5
Cool. For my one client (the bank) I do mainly web work. For the other client (the bookstore / online marketplace) I do a mixture of architecture and back-end business logic. I've been planning to check out Ruby, but haven't had a chance yet. (So much to learn and almost no time). For several years now, my professional work has been mainly in Java. I'd worked with C/C++ for several years, but not too many professional project required it. If you ever get around to trying ruby, give this a go. I question it's value as a tutorial, but it's certainly an entertaining read! I've yet to enter the world of those big bulky MS and Java frameworks. And from what I keep hearing about them, I don't want to. Heh, sometimes I wish I could look into people's heads and see what they're thinking. I think that goes for pretty much all areas of life. It's really the basic notion that, given a virtual domain where you are in control of shaping (structuring and filling data) and defining the interpretion (executing that data), you have an extreme amount of freedom and capability. Metaprogramming is a resulting capability - but it's really the comprehension of the capability that the space gives. (ie. you can create "life", where "life" is defined as an active living system). As an engineer we work with a particular set of primitives in order to construct a solution appropriate to the problem. With computers we can (theoretically) easily form our own primitives and constructs. From what I can tell - many developers don't even seem to comprehend this capability. <TANGENT> For a long while now, I've wanted to work on a language (call it 'Constructable') that is a bit more virtual in nature (not specifying the programmer interaction UI by default) that would allow new primitives and constructs to be defined / used. The implementation of the constructs could be done via other primitives/constructs in the language - or (on a given implementation platform) the VM could provide implementations for primitives/constructs that it can optimize really well. This would allow primitives/constructs defined that are targeted toward the particular problem domain and/or execution environment. (In a given project, a domain/platform architect(?) could define primitives/constructs that the business logic programmers would then use to implement their tasks - helping them to focus more on their tasks). </TANGENT> <EDIT> A good example of the application of the comprehension of this virutal power is multithreading (not so much (physical) multiprocessing - but creating virtual threads of execution). I did some research once about threads that could cross process boundaries. I was happy to see that research (and actual experimental implementations had actually already occurred). I was a bit less happy to find that the optimization of our current CPU architectures makes this less efficient (due to caching of thread info being based on process boundaries, etc - and the fact that we optimize our processors for speed instead of (more than) exploring new architectures). </EDIT> Sounds very much like the notion of a "domain specific language". And "Constructable" sounds a lot like Lisp. (Or as I call it, Lithp... ;D) Using lisp macros, you can define your own constructs thereby creating "primitives" to match your domain. You may have something else in mind with the platform-specific optimizations and/or cross-process threads, though. "Programmer interaction UI" == API ? It's quite interesting. While dynamic languages undoubtedly exhibit a flexibility that can't be matched by more static ones, I find they can sometimes be too amorphous for their own good. For example, when the list of methods of classes are fixed at a "compile time", not only is it easier to grasp these units conceptually, but things like documentation and static analysis for smart IDEs become much easier. I keep hearing interesting things about how smalltalk deals with this, but have yet to investigate it. One day... Nice Actually, I wish we could apply that rule to intellectual property in general. (The notion of invention being unique is a bit messed up - there's nothing like being able to think up an idea that someone else owns). Heh. It's more of a personal choice to me, though. I don't really have a problem with the basic idea of IP legislation, even for software (i.e., I'm not a GNU hippie...). I do detest, however, the way the big corps blatantly sit on ridiculous patents to threaten/bully everyone else. IP laws were created to encourage innovation. What they're doing is stifling it. For their own greed. Would it really be so hard to formulate a few laws to stop this nonsense?
|
|
|
'ello
Aug 21, 2006 4:33:28 GMT -5
Post by jaeksmith on Aug 21, 2006 4:33:28 GMT -5
I've yet to enter the world of those big bulky MS and Java frameworks. And from what I keep hearing about them, I don't want to. Jake momentarily ages hundreds of years, grows a longish grey beard, and grows a staff out of his hand... Youngin, if you listen, you'll find good and bad things said about all language domains. If you pre-suppose that one side of these things said is true, then you are just limiting yourself... Sounds very much like the notion of a "domain specific language". You could, ideally, form (and limit to) a domain specific set of primitives/constructs - yes. But - no - the language would definately not be domain specific. And "Constructable" sounds a lot like Lisp. I believe not - unless I'm missing something major. (Note: I worked with LISP in college for a bit). In any language you can form structurings to represent data and form operations that work on those structurings. I keep hearing that LISP is somehow more capable than other languages at such, but I've never experienced (seen) it. (Note: When working with LISP I was the only one in my class that got the whole exec thing, etc). I always thought Prolog was one of the more unique (divergent) languages. But everyone was all hopped up on LISP. One thing I should note is that my idea of constructs crosses the bounds of things like program flow (conditionals, loops, calls, etc fall into this category) - I'm not just talking about syntax or data-structuring. You may have something else in mind with the platform-specific optimizations and/or cross-process threads, though. This part really is a tangent - just the sense that you could tailor optimizations (at the primitive/construct level) for a given environment in order to improve things as needed. (This ideally creates a point of optimization that can be domain specific while not bending business logic code to do so). "Programmer interaction UI" == API ? Not something I was presenting - but an interesting (separate) idea... (Interestingly, my ideas for a language abstractly present the ability to create constructs that would be hard to represent in various mediums - ex: text is a big pain, generally forcing us into hierarchical programming). While dynamic languages undoubtedly exhibit a flexibility that can't be matched by more static ones, I find they can sometimes be too amorphous for their own good. For example, when the list of methods of classes are fixed at a "compile time", not only is it easier to grasp these units conceptually, but things like documentation and static analysis for smart IDEs become much easier. At this point, I'm pretty sure you're misinterpreting my idea as more of the scripting language genre. The basic notion is not about being able to write and run code at runtime (though there is little reason not to support that in most environments for the most dynamic needs (see shaders or runtime linear algorithm optimizations (whatever they are called), etc)). The notion is about reducing the difference between coding form and domain needs that occur while programming. As an interesting example, using hierarchy as a structuring paradigm for code limits how we can traverse from one deep branch to another location in the code - yet there is no inherent limitation in the underlying platform (ie. the generalized CPU execute graph-like flows naturally). I keep hearing interesting things about how smalltalk deals with this, but have yet to investigate it. One day... Smalltalk is another one that is overhyped. It presents some very unique ideas - but more so, I would suggest, in it's underlying architecture. (Objects are persistent entities, for example - not something you have to read/write if you want to store). <TANGENT> Interestingly, I have a beef with Alan Kay's definition of OOP. (As you probably know, Alan Kay is often considered the father of OOP, and the creator of Smalltalk). His definition is actually very implementation oriented - which means that it's not very general - which means that, were we to actually adopt his version, we might as well throw it away since implementations are specific designs and, thus, are not generally useful (beyond their domain). </TANGENT> Heh. It's more of a personal choice to me, though. I agree - if someone wants to make their software free, that's cool. If someone wants to licences their software, that's fine. They did the work, they make the choice. IP laws were created to encourage innovation. I keep hearing that, but it sounds more and more like an excuse everytime I hear it repeated. In my opinion, if it limits progress, then toss it until it is fixed - not the other way around. (In my real opinion, just toss is, more below). I do detest, however, the way the big corps blatantly sit on ridiculous patents to threaten/bully everyone else. What they're doing is stifling it. For their own greed. Would it really be so hard to formulate a few laws to stop this nonsense? My biggest problems is that patents are being allowed on elements that are basically engineering results. That is, things that anyone can / may come up with if presented with the problem. A teen indie game-developer from England remarked on a mailing list (paraphrased): "You mean, if in the middle of programming, I think up of some solution and program it, and someone has a patent... I can't use it / havee to pay for it?". I, myself, latched onto programming because of the freedom I had to create (and speed at which I could create). It's ridiculous to have to worry. It's ridiculous not to be free to use the things you think up. I bought a copy of a patent and carried it around for a while. It was impressive - it basically read like Network programming 101. I don't believe I've ever come across a software patent that made sense... On the other hand, the guy who invented the Centrifugal Baby Birther can keep his idea.
|
|
|
'ello
Aug 22, 2006 13:50:13 GMT -5
Post by gSteve on Aug 22, 2006 13:50:13 GMT -5
ello
|
|
|
'ello
Aug 26, 2006 11:10:15 GMT -5
Post by Stranger on Aug 26, 2006 11:10:15 GMT -5
Jake momentarily ages hundreds of years, grows a longish grey beard, and grows a staff out of his hand... Youngin, if you listen, you'll find good and bad things said about all language domains. If you pre-suppose that one side of these things said is true, then you are just limiting yourself... True, but (and although you may be saying that in jest) I do feel you have to draw the line somewhere. There's an infinity of things to learn. The above just seems like one of the less likely that I'd find fulfilling. So down the list it goes. For now, at least. You could, ideally, form (and limit to) a domain specific set of primitives/constructs - yes. But - no - the language would definately not be domain specific. No, your language itself wouldn't, but a specific use of it sounds like it'd involve creating one in it. (Which is how the term DSL seems to get tossed about in my boxed-up little world at least.) I must admit, calling DSLs "languages" often feels like a bit of a stretch for me; it often seems to refer to a set of declarationy things, but the concept, as I understand it, refers to a concise representation of the needs of your application without writing a parser/interpreter/compiler/some-combination-thereof from scratch. Indeed, usually with particular ease. Which sounded to me like what your idea was largely about. In any language you can form structurings to represent data and form operations that work on those structurings. I keep hearing that LISP is somehow more capable than other languages at such, but I've never experienced (seen) it. Not necessarily more capable, but I think it often seems more elegant, and more "natural" (i.e., is a more well-ingrained practice, is more widely exploited, supported, documented, etc.). Or in other words, although it may be within the language's capabilities, it may not be within its culture. And I think there's value in that. (I won't comment on whether or not lithp is "more capable"; I don't have enough exthperienth.) One thing I should note is that my idea of constructs crosses the bounds of things like program flow (conditionals, loops, calls, etc fall into this category) - I'm not just talking about syntax or data-structuring. Ah. I think that was a crucial missing piece of the puzzle for me. I still can't say that I'm much more enlightened yet, however; only more curious. I don't suppose you have some linkage that explains the idea in more concrete terms (ideally with large, colorful illustrations for young children, preferrably in crayon... ;D). At this point, I'm pretty sure you're misinterpreting my idea as more of the scripting language genre. The basic notion is not about being able to write and run code at runtime (though there is little reason not to support that in most environments for the most dynamic needs (see shaders or runtime linear algorithm optimizations (whatever they are called), etc)). Uhhh... that was a bit of a tangent of mine. As clearly delimited by invisible "TANGENT" markup... ;D Never mind. My biggest problems is that patents are being allowed on elements that are basically engineering results. That is, things that anyone can / may come up with if presented with the problem. A teen indie game-developer from England remarked on a mailing list (paraphrased): "You mean, if in the middle of programming, I think up of some solution and program it, and someone has a patent... I can't use it / havee to pay for it?". I, myself, latched onto programming because of the freedom I had to create (and speed at which I could create). It's ridiculous to have to worry. It's ridiculous not to be free to use the things you think up. Hmm, that's not only a very good point, but I don't know why that didn't occur to me when I wrote what's above, because I have thought - and agreed with - that exact thought before. I can only guess I was somehow intermushing the concepts of patents and freedom of distribution, which would at least explain the GNU hippie remark, which AFAIK, mainly applies to those who are exceedingly passionate about the latter. So I think it's non-free licensing that I don't have a problem with. At least, until you remind me what opinion I have that I just don't remember right now. Hmmm... I suck. Hehe. I've seen that before I think; won an Ig Nobel one year if I'm not mistaken.
|
|
|
'ello
Aug 28, 2006 4:27:39 GMT -5
Post by jaeksmith on Aug 28, 2006 4:27:39 GMT -5
True, but (and although you may be saying that in jest) I do feel you have to draw the line somewhere. There's an infinity of things to learn. The above just seems like one of the less likely that I'd find fulfilling. So down the list it goes. For now, at least. I did have to pick slightly, because you did unabashedly bash capable and proven languages / tools... By the way, I've picked-up / started-reading a book on Ruby. I can feel the effects of both Smalltalk and Perl in it's design. So far, nothing new - but I'm looking forward to reading about things like mixins. (I complain like a banshee that other languages weren't forward thinking enough to adopt such things...). No, your language itself wouldn't, but a specific use of it sounds like it'd involve creating one in it. The result could be highly targeted indeed. Which sounded to me like what your idea was largely about. Really it's about being able to form the language to your needs. Modern languages change quickly with time - but the changes are still the domain of a centralized group which has to select things that make sense in general. As developers we then sit one layer up, forming language bound constructs in order to implement our designs. Often, however, the generalized nature of the language leaves things too loose. (Take any framework built in any language and you'll often find rules that specify things you have to do or are not supposed to do - but, yet, aren't bound into the coding situation - thus leaving holes for mistakes, etc). - - - As an architectural developer, I provide constructs for other developers - but, yet, most of them spend little time paying attention to detail and end up playing dirty tricks with code or just making mistakes out of mis-knowledge, etc. Much of the problem often comes because they have an unbounded set of tools on hand (some of which shouldn't be used in some situations), etc. As well, many of the mistakes come because of lack of stamina and tolerance for what must be done in hard situations, etc (many of which come because of the language does not provide constructs to make those tasks simpler - allowing one to focus on business logic). - - - A generalized language with pre-solidified constructs can't provide for clear / direct expression in every situation. Thus, were one able to create primitives and constructs for expressing certain patterns that appear in any given software system, it would, thus, be much easy to express. (Not unlike how creating a set of functional primitives helps to implement any process - but this just ideally takes it into the language level). Not necessarily more capable, but I think it often seems more elegant, and more "natural" (i.e., is a more well-ingrained practice, is more widely exploited, supported, documented, etc.). I could see the 'more widely exploited' point - but I would disagree with more elegant... (As hinted at above, languages tend to have limited expression capability that becomes ugly outside their constructual bounds). Or in other words, although it may be within the language's capabilities, it may not be within its culture. And I think there's value in that. Interestingly, this goes back to my suggestion that most programmers never get near to comprehending the raw power of the virtual environment they work within... I'd suggest this is a general issue - and would not just be a divergence between language domains ... though weeker programmers will tend to select "easier" languages - that are actually less expressive / less dynamic. Ah. I think that was a crucial missing piece of the puzzle for me. I still can't say that I'm much more enlightened yet, however; only more curious. I don't suppose you have some linkage that explains the idea in more concrete terms (ideally with large, colorful illustrations for young children, preferrably in crayon... ;D). Heh... One of the big problems is I have absolutely no time to work-on / research the topic further. And, thus, the other problem is that my ideas are quite theoretical. (The reasoning is very concreate, by experience, but the end product may be too ideal - though, I'm sure, could produce a bunch of good experimental toys). My biggest problems is that patents are being allowed on elements that are basically engineering results. That is, things that anyone can / may come up with if presented with the problem. Did you catch this article (which appeared after the above)? Patent Law Ruling Threatens FOSS In particular: A recent Federal Circuit Court of Appeals decision required that even the most obvious incremental advances can be patented unless it can be proved that someone else suggested it prior to the patent being filed.
|
|