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

09-05-2012 , 08:41 AM
What the guy says isn't new or revolutionary. The whole second half of chapter 3 in SICP (1985 and 1995) discuss these issues with concurrency, and that book frowned upon mutability as well. In that perspective, perhaps there never was a time for object and time states?

SICP is even-handed with its attitude though. They show deference to queues over locks and actors, streams over mutation, but they refuse to say that these are better theoretical solutions because the end-result doesn't change and sort of concludes that while streams and queues are easier to manage, there is no reason to believe this is the correct answer. Maybe some papers and experience has "proven" one perspective is better than another, but I don't know yet. Regardless, for all his talk against actors, locks, and OO, one can't help but present Erlang as an antithesis. Maybe Erlang works better because its not a general purpose language, but I don't know.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 11:42 AM
I'm kind of happy and mad that I watched some of these talks. It's hard not to be interested in something when you agree with someone so much.

I really want to dive head first into clojure now.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 12:13 PM
Quote:
Originally Posted by clowntable
You don't get my point. Yes it's possible to be a good developer on Windows, yes it's possible to build nice things with PHP.

It's simpler (and probably easier, too) with better tools and it's way more likely that a good programmer will run Linux, BSD or MacOS. In the same vain, it's also more likely that a good programmer will not work in PHP.
Hi clowntable,

I get what you're saying in regards to PHP, but I don't get the comparison to Windows. We're not in the 90's anymore and Windows is an amazing development platform. And out of the major software vendors, Microsoft seems to be the only one that focuses on pushing the limits of developer productivity. Visual Studio blows away anything available on Linux or MacOS. MacOS and Linux don't even have a canonical managed code framework and API (Windows has .NET) and the best available - JVM - is technically inferior to .NET, not to mention unsupported natively. C# is also superior to Java in most respects. Support for better JVM languages like Scala and Clojure is uneven, whereas F# is fully supported in Visual Studio, with code samples in API documentation.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 01:11 PM
Quote:
Originally Posted by candybar
Hi clowntable,

I get what you're saying in regards to PHP, but I don't get the comparison to Windows. We're not in the 90's anymore and Windows is an amazing development platform. And out of the major software vendors, Microsoft seems to be the only one that focuses on pushing the limits of developer productivity. Visual Studio blows away anything available on Linux or MacOS. MacOS and Linux don't even have a canonical managed code framework and API (Windows has .NET) and the best available - JVM - is technically inferior to .NET, not to mention unsupported natively. C# is also superior to Java in most respects. Support for better JVM languages like Scala and Clojure is uneven, whereas F# is fully supported in Visual Studio, with code samples in API documentation.
If I were writing a bot for trolling programmers I hope it would sound like this post. Seems to have the perfect combination of true statements, partially-true statements, personal opinion passed off as fact, and outright lies.

Masterfully down programmer of candybar.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 01:44 PM
A canonical managed code framework!

Heh.

Yeah, not biting. Not biting.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:02 PM
Quote:
Originally Posted by mburke05
i just started a new job w/ a comm. real estate firm in financial analysis.

the big first project i'm working on is kind of a mega-unwieldy model that the guy before me made that is super unorganized, hard to run, and unbelievably inefficient.

i'm experienced with messing with inputs in models and getting the correct #s and assumptions, but i'm not as familiar with the programming language behind excel (more advanced vlookup commands than simple arrays, and only really basic macros/the most simplistic of vba).

i'm being tasked to spend my first 3-4 months before our analytical work for our client (a bank) to remake this model, in a more efficient manner.

i'm honestly a little overwhelmed, and while i'm confident i can figure it out i have no idea where to begin. can anybody offer any advice? feel free to ask questions, and i'll divulge as much as i can without breaching my NDA.

i think i could pickup more efficient programming with time and diligence, which it sounds like this will require. just not sure where to start. everything right now is excel derived, taken from inputs we get from a commercial real estate accounting software yardi.
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.

Last edited by Chips Ahoy; 09-05-2012 at 02:09 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:10 PM
Quote:
Originally Posted by ballin4life
mburke, I had a project once where I was turning a big Excel model into Java code. Most of the calculations were in the Excel cells themselves (there was a bit of VBA used but it was pretty minor). Still it was really hard at first to figure out where the values were coming from for each cell since the formula within each cell was often like 500 characters long. Sound similar?

For that project I found the Excel "Trace Dependents" (hotkey is alt T-U-D) and "Trace Precedents" (alt T-U-T) features to be very helpful for figuring out what calculations were going on. These display arrows pointing to all dependent cells (or all preceding cells), which really helped me visualize what was going on in the spreadsheet.
actually i don't think the code is that complicated, thank christ, that sounds insane. it's alot of array and index coding that is pretty slow and clunky. moreover it is very hard to work with and our models require inputs from property managers on a bi-weekly basis that they need to be able to easily look at and enter 4-5 numbers to adjust rent and occupancy projections.

it's biggest problem is that it's highly unorganized and all over the place.

they want me to rebuild this model in the following fashion (in order of importance):

-such that it runs much much faster (meaning, runtime of excel, and the amount of time it takes to save/open, as well as easiness of moving new data inputs from Yardi into it, which will just be an excel dump right now basically we are integrating into our existing excel models)

-all fat is trimmed (unncessary reports, cells, formulas, references, arrays, etc.) - this is kind of a part of the above

-the numbers are easy to be validated with each new data dump (ie. some sort of control file that checks for errors in our reprojs.)

-parts of the report can be made more granular and spliced out with specific details for individual property managers, this should be very simple and easy to input. for use w/ the asset management/senior property management teams.

-moreover, i've got to be able to have a report that is the opposite, a simple wrapup of our NOI, very top-line #s, and available for our CEO/COO to just glance at whenever they feel like it.

-finally, least importantly, aesthics and presentation.

i have the option of starting from scratch with macros, or going about it any way i want really. any idea how i might accomplish such a task? or even more generally speaking, what my options might be?

would moving our data to a SQL database and linking that to excel rather tahn using individual dumps from Yardi be more or less efficient?

would it be hard to construct some sort of web based client that would be very easy for property managers to enter these #s into for aggregation?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:11 PM
thanks so much chips! i'm gonna go to lunch but i'll respond to your post when i get back. i just posted as you were responding it looks like.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:23 PM
I once started a small project in Excel that ended up being too slow for the data we were using. Moving to MS Access made it about 10 times faster and allowed me to reuse a bunch of code.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:25 PM
Quote:
Originally Posted by Chips Ahoy
My rule: You must understand the existing system completely before trying to replace it.
but typically the whole reason one wants to start over is precisely because it would require too much effort and time to understand the existing system.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:36 PM
Quote:
Originally Posted by jjshabado
If I were writing a bot for trolling programmers I hope it would sound like this post. Seems to have the perfect combination of true statements, partially-true statements, personal opinion passed off as fact, and outright lies.

Masterfully down programmer of candybar.
Hi jjshabado,

I'm intrigued. Would you care to elaborate?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:39 PM
Quote:
Originally Posted by gaming_mouse
but typically the whole reason one wants to start over is precisely because it would require too much effort and time to understand the existing system.
Typically the new person doesn't understand the problem domain that well. So they end up building system #2 which gets all the same bugs system #1 already solved in some fashion. Often #2 is just different, not better.

Understanding the existing system is learning about the corner cases of the problem. It's also learning about logic & skills failures from the author. Gotta work enough to know which is which.

Everybody loves a blank sheet of paper. Nobody likes working to understand old crap. Working to understand is better than starting over ignorant.

Those who cannot remember the past are condemned to repeat it.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:43 PM
This just isnt true. Often the problem domain is very easy to understand, and you simply have a system that uses a badly designed framework, or is badly designed itself
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:50 PM
Quote:
Originally Posted by candybar
Hi jjshabado,

I'm intrigued. Would you care to elaborate?
Nope.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 02:52 PM
Chips and GM - I think there are cases where you're both right.

It's not really binary though. You start to understand the system and you continually re-evaluate if its worth spending more time learning the system or if you need to re-write it.

Obviously you can't make a reasonable decision to re-write something without looking at it at all. And obviously there are going to be times where you hit a point where you think you understand the domain enough to know that the current system is way too complicated.

And, of course, there's going to be times where you make the wrong decision.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 03:06 PM
Quote:
Originally Posted by Neil S
A canonical managed code framework!

Heh.

Yeah, not biting. Not biting.
Hi Neil,

This is important because we're comparing development platforms. Linux has Mono, JVM and a bunch of other things like LLVM and what not but support and integration are uneven. From the standpoint of a developer, the fractured low-level developer world that Linux resembles PHP. Not a lot of design and consistency but a hodgepodge of possibilities that lead to a workable tool. There's a sharp contrast with C#/F#/VS development stack, which is much cleaner, much easier to use and can be used to program anything from a mobile app to back-end services.

You could point to well-designed integrated stacks that can work on top of Linux, but almost all of them also run on Windows.

As for MacOS, well, they don't even provide reasonable server-side development solutions, most of what you would use come from the open source world. And for client apps, aren't you pretty much restricted to Objective-C, if you want good documentation and direct support from Apple?

I love open source software and have been using Linux since 90's, even Slackware, but the reality is that Microsoft has spent far more effort into designing great development platforms than anyone else. No other major platform vendor, certainly not Apple, not even Google, gives full support in their development environment to an advanced functional language like F# (a CAML dialect).

Or if you think being simple, consistent and orthogonal doesn't matter, well-designed programming languages don't matter, and the world is best served by a thousand different ways of doing the same thing, what's wrong with PHP?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 03:20 PM
I believe I said 'Not biting.'
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 03:35 PM
Quote:
Originally Posted by Neil S
I believe I said 'Not biting.'
at least unwrap the foil and take a little nibble
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 04:18 PM
Quote:
Originally Posted by Neil S
I believe I said 'Not biting.'
Do you have a counter argument? If so, I'd love to hear. It's odd that you keep posting, giving this impression that you have some kind of rebuttal in your head that you'd rather not share. If you do have something, in the spirit of open discussion, please share. If you don't want to, you don't have to keep responding. But clearly, part of you does.

That Visual Studio, C#, F#, .NET, etc are largely superior to alternatives supported by major vendors is not a particularly controversial opinion. Most VM experts seem to think CLR is superior to JVM, both in terms of specification and implementation. There are languages that are on par with F# in terms of elegance, expressive power and performance (Scala, SML, Caml, Clojure, Common Lisp, etc) but none of them is supported by a major vendor. The rest are generally looked down upon by programming language researchers for the same reason that PHP is looked down upon here. IDEs are much more a matter of taste, but the major IDEs used under Linux and MacOS are available under Windows anyway. The major exception is XCode, but it's somewhat limited and is a GUI wrapper for mostly open-source dev tools, that are available under Windows.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 05:08 PM
The scary thing is that while I agree with jjshabado, that candybar is hitting all the troll notes... I can absolutely see someone writing all this with deadly earnestness.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 05:15 PM
He's obviously not trolling. He is being polite and making detailing, reasoned arguments. Regardless of what you think of the arguments, it's not trolling.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 05:18 PM
I didn't (and still don't) think he was trolling either. Just that his post is the perfect troll post for the reasons I listed.

candybar - The reason I'm not getting into a discussion with you is that you have a lot of things stated as fact that I don't believe are facts. I have no desire to debate each and everyone of them or to go into a cite war trying to prove them.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 05:52 PM
Quote:
Originally Posted by gaming_mouse
He's obviously not trolling. He is being polite and making detailing, reasoned arguments. Regardless of what you think of the arguments, it's not trolling.
I don't think it's obvious. Single-forum account, low post count, posts pushing buttons...
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 06:06 PM
Quote:
Originally Posted by Neil S
I don't think it's obvious. Single-forum account, low post count, posts pushing buttons...
I don't think it's good for the forum (or any arena) to label anyone with views that you disagree with a troll. By your reasoning, no one with a low-post count is allowed to post anything controversial.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
09-05-2012 , 06:18 PM
Quote:
Originally Posted by jjshabado
I didn't (and still don't) think he was trolling either. Just that his post is the perfect troll post for the reasons I listed.

candybar - The reason I'm not getting into a discussion with you is that you have a lot of things stated as fact that I don't believe are facts.
Hi there,

This is a strange reason *not* to get into a discussion. In most cases, people get into discussions to correct such statements. Almost every post in this thread of some length and content is going to have opinions stated implicitly as facts for style and clarity. At some point some English teacher probably pointed out to you that prefacing every sentence with "I think" or "In my opinion" is redundant.

Quote:
I have no desire to debate each and everyone of them or to go into a cite war trying to prove them.
This is an understandable reason. But why do you feel the need to make accusations (outright lies, trolling, etc) while having no desire to address the content? Is it reasonable, in your opinion, to accuse whole posts of being full of outright lies without addressing them at all? I'm willing to be corrected, but you haven't even attempted to address anything - you've hurled insults.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote

      
m