** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
I don't even think my opinions are remotely controversial in the broader community. Remember, I'm not even saying that Windows > Linux on an absolute scale. I'm mostly saying that the same scale that has PHP < other, well-designed languages, should have Windows > Linux. Linux is extremely popular in the web development community, but it overlaps heavily with use of PHP. Cultures also overlap.
I do almost all my hobbyist programming in Linux and split my career so far between a Windows shop and a Unix shop.
Yes I guess if I'd have said "for web based stuff" we could have avoided the entire debate
"Web based programming" is kind of the default association for programming for me. The ERP software I worked on was web based and most random stuff I do is.
"Web based programming" is kind of the default association for programming for me. The ERP software I worked on was web based and most random stuff I do is.
Hi tyler,
I don't even think my opinions are remotely controversial in the broader community. ... I'm mostly saying that the same scale that has PHP < other, well-designed languages, should have Windows > Linux. Linux is extremely popular in the web development community, but it overlaps heavily with use of PHP. Cultures also overlap.
I don't even think my opinions are remotely controversial in the broader community. ... I'm mostly saying that the same scale that has PHP < other, well-designed languages, should have Windows > Linux. Linux is extremely popular in the web development community, but it overlaps heavily with use of PHP. Cultures also overlap.
I dunno much about JVM vs VS details mostly because last time I used C#/.NET was during university.
Powershell is still fairly crappy.
The entire Unixoid userland is way more developer friendly. Package management and automatically setting up a synced up developer environment for N developers is much better on Unixoid systems. Everything's just way more scriptable.
Stuff like ssh, svn/git etc. that I concider essential have always felt natural on Unixoid systems and kind of "second class" on Windows.
Stuff like ssh, svn/git etc. that I concider essential have always felt natural on Unixoid systems and kind of "second class" on Windows.
I'll doubt your claim that the JVM is inferior to .NET though (and even if it is I'd guess it is miniscule).
You say this like it's a bad thing. Contrast this to most of what you'd use in your environement comes from...Microsoft :O
I'll make a highly controversial statement and say that Linux machines manned by programmers tend to be more secure, too.
Also since I'm a Linux person I tend to belive the Open Source toolkit chain is best for developers (for starters they can read the source code).
too easy for anyone to just claim "troll" whenever their opinion is challenged
whether the person is a troll or not is irrelevant, only the quality of the discussion is what matters.
I was just pointing out that his definition of troll isn't right. And as we all know, programmers love pointing out when they think other people aren't right.
Anyway, I'll let the troll conversation go. Although I'm still pretty amused by my bot joke.
I'm not sure why, then, you feel comfortable judging Windows for web development. And you did not qualify your original statement for web development.
whereas you have to go through a lot of hoops to use better JVM languages like Clojure and Scala.
Didn't we go over this for PHP? Most linux web servers run PHP. It's odd to talk about how much better Linux people are at this or that, and how much worse PHP people are at this or that, when most Linux people are PHP people and vice versa.
Isn't most of security really about how the people who own the computer/server manage it?
You have a system you don't understand. The thought crosses your mind maybe you could build something better starting from scratch.
My rule: You must understand the existing system completely before trying to replace it.
The reason... you don't know how much of the existing complexity is the original author not understanding the problem domain, not understanding the programming design, poor construction, bit rot, etc. You don't know how well you understand the problem domain, you not understanding programming design, you not constructing well, etc.
You have something that 'works' in some fashion. A working system is a real asset. When you make changes on a working system, you can test to see if it still works. When you don't have a working system, you're flying blind and have a horrible integration problem at the end when you try to turn it on. (See the many books on test driven development for one solution to the integration problem -- building tools as you go so you know everything you write works.)
Once you've done the work to understand the existing system inside & out, then you can replace it if you still want to.
---
VBA is a powerful language. It has types, auto complete (ctrl + space), a useful debugger, it can make & use COM libraries and windows APIs. Most of your likely coding requirements can be efficiently met entirely within VBA. If you really need multi-threading of your own code, it's not a good tool for that.
COM is powerful stuff though. It's easy to manipulate excel using COM from other Windows languages. So if some other tool (say C#) makes sense, you don't have to throw away excel.
---
Questions you need to answer:
1. Where does your input come from? Is it typed, clicked, pulled from files, pulled from web, pasted?
2. How many different questions are you trying to answer? Is there flexibility in the questions? The more general and unknown the questions, the better to stick to a tool that excel that already knows how to answer anything. You don't want to be writing your own query language.
3. What format output is useful for your users? What do they expect?
It's not clear from your question what sort of problem it is. You want to minimize the scope to some natural boundaries. As features increase, complexity goes N^2. Solve their problem, not every problem.
---
References:
If there's lots of code, this book describes how to tame it:
http://www.amazon.com/Working-Effect.../dp/0131177052
VBA in a nutshell has a brief description of the language and all the keywords. Better signal/noise than googling everything:
http://www.amazon.com/VBA-Nutshell-L...4&keywords=vba
There are many vba in excel books. I've never used one, so you are on your own there.
---
I think you should live in Excel & VBA. Focus on figuring out exactly what problems you are trying to solve. The solution to performance problems is design, not tools.
My rule: You must understand the existing system completely before trying to replace it.
The reason... you don't know how much of the existing complexity is the original author not understanding the problem domain, not understanding the programming design, poor construction, bit rot, etc. You don't know how well you understand the problem domain, you not understanding programming design, you not constructing well, etc.
You have something that 'works' in some fashion. A working system is a real asset. When you make changes on a working system, you can test to see if it still works. When you don't have a working system, you're flying blind and have a horrible integration problem at the end when you try to turn it on. (See the many books on test driven development for one solution to the integration problem -- building tools as you go so you know everything you write works.)
Once you've done the work to understand the existing system inside & out, then you can replace it if you still want to.
---
VBA is a powerful language. It has types, auto complete (ctrl + space), a useful debugger, it can make & use COM libraries and windows APIs. Most of your likely coding requirements can be efficiently met entirely within VBA. If you really need multi-threading of your own code, it's not a good tool for that.
COM is powerful stuff though. It's easy to manipulate excel using COM from other Windows languages. So if some other tool (say C#) makes sense, you don't have to throw away excel.
---
Questions you need to answer:
1. Where does your input come from? Is it typed, clicked, pulled from files, pulled from web, pasted?
2. How many different questions are you trying to answer? Is there flexibility in the questions? The more general and unknown the questions, the better to stick to a tool that excel that already knows how to answer anything. You don't want to be writing your own query language.
3. What format output is useful for your users? What do they expect?
It's not clear from your question what sort of problem it is. You want to minimize the scope to some natural boundaries. As features increase, complexity goes N^2. Solve their problem, not every problem.
---
References:
If there's lots of code, this book describes how to tame it:
http://www.amazon.com/Working-Effect.../dp/0131177052
VBA in a nutshell has a brief description of the language and all the keywords. Better signal/noise than googling everything:
http://www.amazon.com/VBA-Nutshell-L...4&keywords=vba
There are many vba in excel books. I've never used one, so you are on your own there.
---
I think you should live in Excel & VBA. Focus on figuring out exactly what problems you are trying to solve. The solution to performance problems is design, not tools.
the honest answer is i don't understand the framework in which he built the model, except in the most simple sense. i also don't know where to look for inefficiencies because i have never had to deal with a model this cumbersome. there's a ton of concatanates/indexes etc that i'm really not used to using, that aren't really rooted in financial logic, more in programming logic.
i'll be working with our current model for 1-2 months to get a handle on what he was doing and trying to understand and note on inefficiencies. the next 2 months i've been tasked with remaking it behind the scenes correcting those inefficiencies, working new version due by january 1st. all the while i'll be using the model to send updates until my new version is ready by then.
i'll take a look at your books, look like good ideas.
as for your questions:
1. Where does your input come from? Is it typed, clicked, pulled from files, pulled from web, pasted?
pulled from the web through a raw (pretty dirty) excel file. understanding is not totally complete, but i believe they have a page or two they use for these raw outputs which is then copy and pasted into some region on a sheet where required, then it's fed into a bunch of different worksheets (40-50+) which is serviced by arrays, indexes, vlookups, etc.
there's a bunch of linked sheets between different reports. and i think that's one of the biggest leaks in the reporting.
2. How many different questions are you trying to answer? Is there flexibility in the questions? The more general and unknown the questions, the better to stick to a tool that excel that already knows how to answer anything. You don't want to be writing your own query language.
sorry i dont follow this could you go more into what you mean by it? the outputs are just monthly or biweekly updates of specific property financials or metrics (vacancy rates, gross potential rent, NOI, etc.).
3. What format output is useful for your users? What do they expect?
hm unsure again what you mean here. basically the end user is one of three people:
a) CEO/c-level execs at our country who would just glance at the top/bottom line numbers
b) property managers who would look at very granular details, and in some cases be prompted to add forecasts to add to the projections of our models (they will input their new expected occupancy rates, expected utilities budget required, capex required, etc., very granular numbers but their actual work is very simple for our model)
c) asset managers like me and my team, who will update projections, evaluate our portfolio, think of new analytics, etc
Isn't most of security really about how the people who own the computer/server manage it?
There's only so much you can do if updates only come bundled on super Tuesdays and so forth. And obviously security also depends on the underlying OS and certain design decisions. Linux is certainly not a shining beacon of security (imo) but it's still a better default than Windows.
windows has certainly taken great steps with user account control to encourage people to run as a limited user instead of admin
Clowntable. Just use leinengen for Clojure install and setup. Saves a ton of headache, has a better repl, and its what everyone uses anyways.
For trivial standalone projects, this is easy. The problem is integration, support and documentation when you interoperate with the rest of the JVM ecosystem (say, with Eclipse, Maven, Java class library, Java web frameworks, etc).
thanks for posting that long version of the rich hickey talk.
i noticed he had that one line about driving by banging against guard rails as a dig against TDD.
is TDD something that's not done in the Clojure community, or was he bashing specifically the idea that tests can guide you 100% and you never have to actually understand your program?
i've been a build engineer for 10 years and: lol no. lolol.
dave,
thanks for posting that long version of the rich hickey talk.
i noticed he had that one line about driving by banging against guard rails as a dig against TDD.
is TDD something that's not done in the Clojure community, or was he bashing specifically the idea that tests can guide you 100% and you never have to actually understand your program?
thanks for posting that long version of the rich hickey talk.
i noticed he had that one line about driving by banging against guard rails as a dig against TDD.
is TDD something that's not done in the Clojure community, or was he bashing specifically the idea that tests can guide you 100% and you never have to actually understand your program?
Also I'm not a Clojure programmer only meddled with it a bit but I have a feeling I won't be able to resist the call much longer so ...dave put your support hat on your desk just in case :P
The problem is integration, support and documentation when you interoperate with the rest of the JVM ecosystem
Support meh can't say much about that since I've never really needed support for a programming language or editor (outside of community support i.e. search engine stuff). Dunno what you mean regarding integration.
The issue is that you assume Microsoft stuff and thus conclude that Windows is really good. Yeah Windows is really good when you're working on C# stuff or F# stuff. I'd guess OSX is really good when you work on Objective-C stuff, too (I dunno guessing).
My claim is that if you work on OS agnostic stuff (i.e. web) Linux is the better platform. On a related note i don't think C# (given my limited knowledge) or JAVA are particularly excellent for web development but that is an entirely different discussion.
Also I'll say it again. I'm very aware that this is opinions and not facts. Basically cliffnotes...
1) PHP sucks, the language philosophy/mindset whatever you want to call it is just wrong
2) Windows sucks for non Windows specific development tasks...for lack of a better word because you're kind of working in what I'd describe as a "straightjacket" environment
And I guess the stuff that pisses people off...I think that people who don't agree with these two statements are less likely to be good programmers. For lack of a better description I think good programmers have a natural instinct for "elegance" and PHP and Windows are less elegant than other options.
I don't buy the thought that the rest of the JVM languages don't have something similar. Complete non issue.
I'm still going to learn Clojure but I don't think I'm going to really get into it. The tooling on the jvm is really good but the web libs just don't seem to be there yet.
Nodejs has Express which is really awesome to use.
Ruby has Sinatra which is what Express is inspired from.
Clojure has Noir which is similar but seems like it's light years behind Express and way way more opinionated. Then it has Ring which isn't opinionated enough.
I wonder if there's something in between. To be fair I only looked for like an hour. I think I might just read more into functional programming and apply the philosophies to Javascript. JS has first class functions so a lot of the thought processes should be able to be ported over to JS.
Nodejs has Express which is really awesome to use.
Ruby has Sinatra which is what Express is inspired from.
Clojure has Noir which is similar but seems like it's light years behind Express and way way more opinionated. Then it has Ring which isn't opinionated enough.
I wonder if there's something in between. To be fair I only looked for like an hour. I think I might just read more into functional programming and apply the philosophies to Javascript. JS has first class functions so a lot of the thought processes should be able to be ported over to JS.
yeah me too. i feel like i'm returning to my roots, as LISP was what we learned when i was getting my masters in stats like 12 years ago
Yeah Hickey himself said that he isn't really interested in web stuff and doesn't see Clojure as particularly awesome in that regard (from memory). My guess is that I'll wait untill LightTable is released and then I'll have a good reason to play with it
i'm now super annoyed that there is nothing like light table for ruby, and want to make some sort of ghetto version of it with vert split in vim, where the right pane executes the left pane file (or a test file associated with it) and insta-displays the results in the right pane every time you :w. or something like that....
TFS/WWF seems better designed than a random mix of build solutions ranging from make to ant to maven to roll-your-own in unix userland. In practice, things may be different - the difficulties with build systems often have to do with interoperating with ad hoc processes and tools that are already in place - but in practice PHP is quite useful and is the language behind the most successful startup of the last 10 years.
https://dl.dropbox.com/u/35498822/fr...-weakness.html
What keeps coming up is tooling, ide, documentation.
You also didn't address the documentation issue. Microsoft shows sample code for F# in its .NET API documentation. F# works out of the box in Visual Studio. Microsoft even added serious functional features inspired by F# to C# and .NET API, making interoperability substantially easier than say, between Java and Clojure.
Setting up Clojure is a major hassle involving a bunch of choices that the beginner is obviously not equipped to make.
Clojure works fine in Windows as well, btw.
Do you use Clojure in production?
What keeps coming up is tooling, ide, documentation.
Bootstraping a working environement.
A standard toolchain. You basically have to try all the libs out to figure out which suits you best atm.
tooling
Install process followed up by confusing error messages.
Frameworks and libraries are still young, many have only one maintainer and die out, others are "pre-alpha" quality. Many libraries and frameworks are VERY promising and quite usable though, and I'm sure that things will stabilise over time.
Memory use, Android, limitations of JVM, stacktraces, debugger story,
1.2.0 vs 1.3.0 vs 1.4.0 and the associated library wrangling
Documentation of Clojure itself and many (most) libraries. clojure.org is just shame. Instead clojure/core spends a ton of time on esoteric stuff like core.unify.
At the micro level: I've had a tough time finding a local/available mentor; at the macro level: IDE support still seems tough to come by, tough to set up.
It's difficult to get everything setup.
The ecosystem - the answer the the question: which lib to use.
Tools. I love emacs and have been using it for more than 20 years. I think the emacs/clojure integration is the best option available now, but given that, developing in emacs/vim is simply not a compelling solution. There has to a strong emphasis on productive/extensible developer environments - paredit style structural editing, clojure-specific refactors, tight repl integration, strong debugging support. I see some of this happening now, but so far everything (including my current choice) really is hardly anything more than a toy environment. If I wanted to spend a year customizing emacs for a perfect experience, I'm sure I'd feel relatively happy, until I moved to another project or team and those inflexible personalizations break in a new environment.
Clojure is HARD to get started using in any serious way due to the lack of a good and easy to use IDE unless you are an Emacs user (which I am not).
lack of standard interactive debugger and out of the box complete development system
Ramp up time. Getting started with something like ruby or python is a ton easier than with clojure. It seems to take forever to figure out how to get everything installed (and figure out what to install), what tool chain to use, etc. Not sure exactly why but that's been the hardest thing so far in my efforts to learn clojure.
You also didn't address the documentation issue. Microsoft shows sample code for F# in its .NET API documentation. F# works out of the box in Visual Studio. Microsoft even added serious functional features inspired by F# to C# and .NET API, making interoperability substantially easier than say, between Java and Clojure.
Setting up Clojure is a major hassle involving a bunch of choices that the beginner is obviously not equipped to make.
Clojure works fine in Windows as well, btw.
I don't buy the thought that the rest of the JVM languages don't have something similar. Complete non issue.
I dunno Visual Studio is pretty hard to set up on Linux, too.
The programming language I work in requires me to install cygwin on Windows which isn't exactly beginner friendly, either.
The programming language I work in requires me to install cygwin on Windows which isn't exactly beginner friendly, either.
My claim is that if you work on OS agnostic stuff (i.e. web) Linux is the better platform.
On a related note i don't think C# (given my limited knowledge) or JAVA are particularly excellent for web development but that is an entirely different discussion.
http://w3techs.com/technologies/hist...mming_language
At this point I have to think you're confusing what's hip in some circles with suitability.
1) PHP sucks, the language philosophy/mindset whatever you want to call it is just wrong
2) Windows sucks for non Windows specific development tasks...for lack of a better word because you're kind of working in what I'd describe as a "straightjacket" environment
2) Windows sucks for non Windows specific development tasks...for lack of a better word because you're kind of working in what I'd describe as a "straightjacket" environment
And I guess the stuff that pisses people off...I think that people who don't agree with these two statements are less likely to be good programmers. For lack of a better description I think good programmers have a natural instinct for "elegance" and PHP and Windows are less elegant than other options.
There are a lot of practical reasons to prefer using Linux over Visual Studio in Windows (or Android over iOS) but elegance of experience is not one of them.
Edit: I also have a hard time finding a more elegant development environment than vim. And I've seen some amazingly elegant emacs set ups from co-workers too.
Feedback is used for internal purposes. LEARN MORE