Open Side Menu Go to the Top
Register
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** ** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

03-06-2014 , 12:09 AM
Quote:
Originally Posted by Grue
So 2 years ago today I hadn't written a line of code in anything since high school on a TI-85 and hadn't had a job of any sort in 8 years.

Today I accepted a position with a title of "Senior Software Engineer" at a fortune 100 company.
Congrats - good luck and stay hungry.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-06-2014 , 11:38 AM
Wow – I'm not hundred percent sure I believe this – but apparently the creator of bitcoin was found living near me – and he's 64 years old: http://www.cnbc.com/id/101469309

Maybe you can do this **** until you die and I don't have to become a middle manager at some point. Yay.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-06-2014 , 03:12 PM
Quote:
Originally Posted by jjshabado
This prof should be fired.
iirc the all take a MouseEvent and are called something like mouseClicked, pressed, released and...entered, exited or something confusing

Common knowledge imo :P

Edit....Boom 100%

But seriously...that is a silly question
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-06-2014 , 03:23 PM
I think structurally the "not teaching inheritance" and "don't teach PHP" arguments are very similar.

Thinking back at when I first learned OOP-stuff reminds me quite a lot of the first time I picked up an HTML book.
The result was one of these horror early WWW times websites and the OOP counterpart was code that used every shiny new concept

Quote:
Originally Posted by Grue
So 2 years ago today I hadn't written a line of code in anything since high school on a TI-85 and hadn't had a job of any sort in 8 years.

Today I accepted a position with a title of "Senior Software Engineer" at a fortune 100 company.

#bootstrapz


Very nice

Last edited by clowntable; 03-06-2014 at 03:30 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-06-2014 , 05:42 PM
Quote:
Originally Posted by clowntable
I think structurally the "not teaching inheritance" and "don't teach PHP" arguments are very similar.
I'm not sure I understand.

PHP is a specific language for a fairly specific purpose. Its pretty easy to go through life not needing to know anything about it. Inheritance is a concept that has some general purpose usefulness (ignoring completely the argument of if its the *most* useful concept in any specific setting or if there are specific settings where its worse than nothing) and it would be almost impossible to go through life not using a language that has inheritance baked into it in one way or another.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-06-2014 , 06:15 PM
Was just doing some research and realized google analytics premium is $150k/ year, and is a completely different tool entirely. Must be awesome, anyone here have used it before?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-07-2014 , 03:25 AM
The argument is that...if used right both are useful but if you're exposed to them in the wrong way they do a lot more harm than good.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-07-2014 , 06:25 AM
Quote:
Originally Posted by clowntable
The argument is that...if used right both are useful but if you're exposed to them in the wrong way they do a lot more harm than good.
Ah, gotcha.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-07-2014 , 12:28 PM
I think I realized that I'd rather build cool interfaces using heavy javascript than writing backend code. I definitely used to be more interested in the backend side of things. Just signed a contract to build an app on behalf of my little consulting company. Someone is providing me all the APIs to consume with angular, and I only have to make a small rails app to store some changes/results from the interface.

Looking forward to building this.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-07-2014 , 11:37 PM
Quote:
Originally Posted by e i pi
you disgusting unethical pig

congrats!
Score +1 for unethical resumes.

Score -1 for ethical resumes.

The data is undeniable: you have a 100% better chance if you lie.

Congrats Grue. Nice work.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-07-2014 , 11:58 PM
Quote:
Originally Posted by candybar
Not following this - what does this have to do with processor architectures evolving? Generally new CPU features and more complex CPU architectures increase the gap between low-level and high-level languages in terms of performance. I guess if you're saying since everything's getting fast enough, performance matters less, I agree of course.

What's going to help dynamic languages perform faster is improvements in compilers, but there haven't really been much of a knowledge breakthrough since the 90's. At this point most of the challenges are in making appropriate trade-offs and managing the staggering complexity that's inherent in applying a long list of optimizations. Don't forget that we had very fast Common Lisp and scheme implementations way back in the 90's and 00's.

I'm guessing that the main reasons that Ruby and Python are so slow are that they have some language features that are inherently optimization-unfriendly (possibly including current C module interface) and that the best people are all working on Javascript/Java/C#/C++ for big bucks or statically typed functional languages for research. To learn to optimize dynamically typed languages, you have to understand the nature of (static) types (as program invariants) at a deep, deep level and people with that background are too enamored with static types to be interested in Ruby and Python.
I believe that processor architectures will simply become, for lack of a better term, higher level. CISC type architectures are implemented via microprogramming, hardware design components like FPGAs have started to incorporate embedded micro processors. I just see the underlying machine language scaling up.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-08-2014 , 01:19 AM
Quote:
Originally Posted by adios
I believe that processor architectures will simply become, for lack of a better term, higher level. CISC type architectures are implemented via microprogramming, hardware design components like FPGAs have started to incorporate embedded micro processors. I just see the underlying machine language scaling up.
Are you thinking like Lisp machines or Java bytecode type instruction sets for actual CPUs? The whole CISC via microprogramming is driven by the exact opposite trend. In the 80's and 90's, people used to care much more about elegant, nice instruction sets that are easier for compiler writers to reason about. Then everyone gave up and now it's only about best-case performance, features, compatibility and battery life, which is why we have instruction sets that are too ugly even for the hardware guys to handle. Also, compiler construction has also become significantly more modularized so compiler writers for high-level languages don't even target CPU instructions anymore, which has killed the pipe dream that all-knowing super-smart compilers for high-level languages can one day write better machine code than C compilers because they have more end-to-end context.

Are we then stuck writing C for performance-critical components forever? I think the best hope we have for allowing high-level programming in that situation is code generation. Languages like OCaml and Haskell are excellent for writing code generators. It's getting to a point where for certain types of software that has complex requirements that are difficult to directly code in low-level languages, but has performance requirements that cannot be met otherwise, the best approach may be to write a program in Haskell or OCaml that generates C source code. We don't have good tools for this approach yet, but it's already been done: http://en.wikipedia.org/wiki/FFTW. The challenge, today, is that you have to know know both languages and have a decent background in compiler-writing/code-generation. With some advanced libraries, this could change, and people may be able to routinely write C libraries in Haskell.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-08-2014 , 10:52 PM
Quote:
Originally Posted by candybar
Are you thinking like Lisp machines or Java bytecode type instruction sets for actual CPUs? The whole CISC via microprogramming is driven by the exact opposite trend. In the 80's and 90's, people used to care much more about elegant, nice instruction sets that are easier for compiler writers to reason about. Then everyone gave up and now it's only about best-case performance, features, compatibility and battery life, which is why we have instruction sets that are too ugly even for the hardware guys to handle. Also, compiler construction has also become significantly more modularized so compiler writers for high-level languages don't even target CPU instructions anymore, which has killed the pipe dream that all-knowing super-smart compilers for high-level languages can one day write better machine code than C compilers because they have more end-to-end context.

Are we then stuck writing C for performance-critical components forever? I think the best hope we have for allowing high-level programming in that situation is code generation. Languages like OCaml and Haskell are excellent for writing code generators. It's getting to a point where for certain types of software that has complex requirements that are difficult to directly code in low-level languages, but has performance requirements that cannot be met otherwise, the best approach may be to write a program in Haskell or OCaml that generates C source code. We don't have good tools for this approach yet, but it's already been done: http://en.wikipedia.org/wiki/FFTW. The challenge, today, is that you have to know know both languages and have a decent background in compiler-writing/code-generation. With some advanced libraries, this could change, and people may be able to routinely write C libraries in Haskell.
Not thinking Lisp machines or byte code machines.

The RISC vs CISC "issues" came about due to studies that indicated that vast majority of processor execution time was spent executing a very small subset of available instructions from the set of available CISC instructions. So, to make a long story short, RISC processors came back into vogue actually in the 80s. I think it is fair to say that today ARM architecture processors are dominant in the RISC processor domain. Yes, generally speaking, RISC has less power consumption than CISC although I can tell you for certain that Intel is sinking a lot of $ into managing power consumption on it's x86 based CISC System on Chips (SoCs) and they are having a great deal of success. ARM based SoCs have also reduced their power consumption a lot at the same time.

The complexity you refer to is driven by two things in my view, overcoming the memory bottle neck and the need/desire for computer systems to handle increasingly complex activities. Caching, branch prediction logic, pipelining, multicore chipsets, ever increasing clock speeds etc. are aimed at achieving those goals. I see those trends continuing for a long time to come.

When I see a complete 4 core 64 bit x86 system, including a high speed graphics engine, on a chip that is the size of my thumb nail I am in awe. I think it is fair to say that in software development managing complexity is a significant challenge. The easier it becomes to manage complexity the better and in my view the continuing and constant evolution of programming languages takes direct aim at making managing complexity easier and will facilitate doing even more complex tasks. I see hardware evolving as well to accommodate the software trends. Exactly how? Not sure but I have to believe that the continuous evolution that we've seen in miniaturization and speed will lead to a scaling up so to speak of the underlying "machine language" to accommodate the evolution of programming languages.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 12:07 AM
@candybar,

what's your background in? how do you know about all this low-level craziness?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 07:42 AM
Since we were talking about CVs recently...anyone with experience "downgrading" their CV? I think after my PhD I could very well see targeting jobs that are very much below my "CV-level" if I decide academia isn't the future.

Maybe I won't need that at all since PhDs are considered useless by many tech companies but I still think I'd get some strange questions if I applied for a junior dev job for example.

Quote:
The complexity you refer to is driven by two things in my view, overcoming the memory bottle neck and the need/desire for computer systems to handle increasingly complex activities. Caching, branch prediction logic, pipelining, multicore chipsets, ever increasing clock speeds etc. are aimed at achieving those goals. I see those trends continuing for a long time to come.
Conversely I think the one "low level" thing every high level programmer should know is how fatal cache misses are. Basically know the typical L1 cache size (currently 32k+32k for i7s iirc) and try to keep your data structures well below that. Cliffnotes version is basically:
1) Do some tests of huge lists that get created during your loops and so forth
2) Iterators FTW :P

Python example (size is in bytes so version one is already >32k)
Code:
>>> sys.getsizeof(range(5000))
40072
>>> sys.getsizeof(xrange(5000))
40

Last edited by clowntable; 03-09-2014 at 07:54 AM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 09:57 AM
Quote:
Originally Posted by clowntable
Since we were talking about CVs recently...anyone with experience "downgrading" their CV? I think after my PhD I could very well see targeting jobs that are very much below my "CV-level" if I decide academia isn't the future.
I don't have any experience with this but I think the answer is in how you write your cover letter/goals/whatever. Talk up why you want a 'lower level' job - experience in a particular industry, writing production code, working at high scale, whatever.

I think the other part is to talk up your PhD experience in the best light for the job. Focus on how your research can help the specific company or focus on the 'practical' aspects of your work.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 01:22 PM
clown,
i think the strategy there is not to undersell yourself, but to find the startup/company that actually values and needs the skills you'd have from the PhD. they certainly exist, it just might make your search harder. also all things being equal (ie, you can demonstrate practical programming skills) i know that a PhD would impress me as someone hiring.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 02:14 PM
Woot, got HTTParty to work with Cucumber to test our Nginx configuration without knowing a lick of Ruby!
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 02:28 PM
I knew what one of those things was.

No, I knew what two of those things were. Hooray
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 03:13 PM
Quote:
Originally Posted by gaming_mouse
@candybar,

what's your background in? how do you know about all this low-level craziness?
I've been programming for a long time (18 years I think) and when I don't know something, I tend to dig in. A standard undergrad CS curriculum does include a lot of this stuff, even if most people forget the material not long after graduation. My background is fairly typical for a CS graduate turned software engineer though I'm a bigger math nerd than most.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 03:58 PM
Quote:
Originally Posted by clowntable
Conversely I think the one "low level" thing every high level programmer should know is how fatal cache misses are. Basically know the typical L1 cache size (currently 32k+32k for i7s iirc) and try to keep your data structures well below that.
Understanding the memory hierarchy is important - see https://gist.github.com/2843375 - but L1 cache misses in particular don't matter for the vast majority of programming work and most programmers will never encounter a problem that they need knowledge of L1 cache to solve. Caches are there so that you don't have to think about them - only worry when there's evidence you need to.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 05:31 PM
candybar,

this kind of stuff is a huge blind spot for me. in what class would you learn about it?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 08:18 PM
That gist is a classic. That timing table is thrown around in a lot in various tech talks.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 08:42 PM
This paper gives a good overview of optimization:
http://www.agner.org/optimize/optimizing_cpp.pdf

This class could also be a starting point:
https://class.coursera.org/hwswinter...ecture/preview

L2 cache misses can be pretty expensive, >100 clock cycles vs <10 for L1/L2 hits. The famed 2+2 evaluator (100+ MB lookup table) is a good example, it performs poorly when looking up random hands because of all the cache misses.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
03-09-2014 , 09:16 PM
I finally broke 200 on stackoverflow. Yesterday, I was at 195 or so and now I'm at 325.

Those moderators are really bad with their suggested edits. I don't want to link to the edit of the post I made last night, but it was astounding how much someone wanted changed, basically destroying the entire meaning of the post and rewriting code to something I think was bad and not strictly relevant to the question at hand. 3 okays and 1 no, so the post stood as it was, though I did edit some of the language after seeing the suggestions.

Been over 3 weeks since I last coded. Decided to post a bit on SO to get out of my funk a bit. Still feels like my brain isn't communicating with the keyboard very well, but I'm going to give it an honest shot tonight (maybe )
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote

      
m