Flex Builder 3 (Eclipse) vs. FlashDevelop

I'm relatively new to the Flash/Flex world to be honest. The majority of my experience comes directly from .NET. In other words, I've worked majority with server side technologies -- I'm no artist or master of the "look and feel". That said I feel like its what I want to do later on and I find the work more exciting than moving data around and making time-consuming AJAX monstrosities that no other developer should ever have to touch. Google, I have insane respect for what you've done with Google Analytics and Gmail, but that sort of thing just isn't for me.

So your first step with hardcore development in any new language is to get an IDE that you love. If you ask me, you're going to hate your job regardless of what it is if you just don't like the tools, and one of the cool things about coding for living is a lot of these tools are obviously easy to find (everyone's touting their IDE that's going to save the universe) and a great deal of them are free. I could probably write pages about each individual application I've come across, but I've settled with talking about two now.

Mainly what I've been interested in for ActionScript 3 development are the Flex Builder Plugin (3) for Eclipse and the FlashDevelop plugin. There are certainly quite a few proprietary applications out there (as Flex Builder 3 will be soon) that probably do fantastic, but the fact of the matter is that I haven't seen much more out of the expensive applications than I've seen out of the free ones. In fact, in the case of FDT I had a fit when I couldn't get code completion on "public". With these solutions out there, a free Flex SDK, and tons of bloggers talking about the products, there doesn't seem to be much a reason to purchase products like this unless they come straight from the horse's mouth.

Eclipse and Flex Builder 3

I'd used Flex Builder 2. I have a license (to complain) for it. I'd use Eclipse in the past for a variety of school related projects. Why this product is free is beyond me. The amount of time and work vested in many environments that run in Eclipse is beyond belief. Its hard to believe that the same platform that does ActionScript 3 development can also do PHP, C++, and C effectively. Beyond that Eclipse works on almost any platform you'd actually want to be within ten feet of daily. Adobe made a good choice in developing a solution that would integrate smoothly with the platform and continuing to support that decision.

Flex Builder 3 and the implementation in Eclipse, however, are not as great as competitors. The chief problem I have is with code completion. It frustrates me to no end to not have code completion on simple things like "public" or "class". Why do I need that? Truth is I don't. I can type "class" or "public" fully and given Adobe's extensive list of things that they'd like to accomplish (there's that "taking over the world" idea again), I can see why this would fall to the back burner. That said, I think that simple things like that are why Flash is so popular to begin with. As the phrase goes, "It just works". If we're talking about making an intuitive interface, why can't we make it for developers as well? Visual Studio certainly does it. Its certainly not critical, but its just a little polish that makes a developer love what he/she does that much more.

Additionally, the time spent in general (this isn't specific to Flex Builder) building the workspace and cleaning a project is pretty irritating. Let's just be honest, why should I have to clean the workspace? Eclipse is the one that made the mess! Why should I have to clean things in order for small functionality to work or to validate that something is truly broke? Yes, I could turn the workspace building off, but I enjoy the constant indication of errors rather than going back and compiling by hand to fix many things at once. I'd rather fix them while I'm there thinking about them, but I don't want to have to go get a cup of coffee when I add a comment to an .as file.

On the counter side, there are two things that I like tremendously that are new (to me). Sure, I could click on something and click "go to definition" in some IDE's, but here I can just CTRL + click and suddenly I'm exactly where I'd like to be -- following my "what the heck does this do" path. This is a pretty critical feature that is very useful when dealing with foreign code bases. And generally when I figure out "what it does", I'd like to quickly get back to the code I was originally at. The back hot key is awesome for this.

FlashDevelop

FlashDevelop is certainly a lesser-used IDE for Flex and Flash, despite its clear target. It rides on a C# code base and has gone through several iterations. I find a lot to offer in the product and with a simple download of the Flex SDK, its completely free.

One of the key features I enjoy with it over Eclipse is an incredibly more advanced code completion. Yes, Adobe, I do know that code completion on things like "public" or "class" is relatively minor in the scope of performance, but this truly is something that saves time and often times typos (picture my hands on a tiny, tiny keyboard and think of that problem). Beyond that, if I want to use the Flex 2 SDK over the Flex 3 SDK, all I do is set the SDK in the properties. I also like the auto-generation of code (press ctrl+b once and you'll love it). I love the auto-hiding of panels as well -- I can't stand having portions of the screen being occupied with things that I'm not necessarily using.

That said, there are some things I think FlashDevelop could certainly stand to have. I think that the CTRL+click interface of drilling into methods certainly needs to be present. It would be great to have an easier experience when attempting to develop plugins; I mean, I certainly enjoy the fact that the code is publicly available and there exists one or two examples, but I guess I'm a documentation freak -- it gives the examples context. And again with plug ins, the integration and installation is much more intuitive with Eclipse. I'd also enjoy a customization of hot keys in the system and much more intuitive editing of things like colors or fonts.

I do, however, commend the code base currently available for FlashDevelop 3 (beta 5). I was able to clearly understand and see what was going on with the code base. I feel like its highly commented and seems like at the rate of new betas, we could see an even better product in a few months. Ultimately I opted for FlashDevelop over the Eclipse plug in. I feel like I gave them both a fair shake, but in the end FlashDevelop out performs in a variety of ways for me. I might have a change of opinion when Flex Builder 3 goes gold or an enhanced opinion when FlashDevelop 3 goes gold. Right now, I recommend FlashDevelop 3.

Sunday, February 17th, 2008 10:15 PM  ::  read comments (2)

WHY NOT Windows Update Silverlight!?

In my opinion, to not push Silverlight via a Windows Update has got to be one of the worst moves Microsoft has made in a long time. I can not understand why you would not utilize a target market in order to spread your product. Microsoft did it with Internet Explorer 7, forcing web developers world wide to scramble to make their content passable on that system. Why not with an enhancement?

I'd like to use the technology on new endeavors, but I really can't justify doing that with the current lack of market penetration. To think that there's a solution to a great deal of my Windows Media Player problems and Microsoft is dropping the ball on delivery. I really hope there's a good explanation for this..

Saturday, October 6th, 2007 2:16 PM  ::  read comments (0)

Installation Frustrations

This may seem very basic to most users these days, but don't try to save time by installing multiple applications at once... especially when one of those happens to be IIS. For those people that might EVER be caught in this position in the future, my basic issue was that I tried to install the IIS install that came with my copy of Windows XP and also install any of a few different pieces of software. What ended up happening is that IIS got very close to finishing its process and froze. I found from there on out that every other installation process I ran would freeze as well. I must say, this had me stumped for quite a few hours because I was trying to back track what application during my installation marathon might be causing the issue. I, of course, wanted to point the finger at pre-installed components (virus scanners, ThinkPad software, etc.). After a few hours of randomly killing processes trying to find the culprit, I realized that it had been IIS all along. The process "inetinfo.exe", once restarted, ended up fixing the problem.

Moral of the story: don't be impatient like me; install one thing at a time.

Sunday, September 9th, 2007 2:36 AM  ::  read comments (0)

Silverlight 1.0 and 1.1 Mixtures

Lately I've been debating about the pro's and con's of going with Silverlight 1.0 when in a few bigger projects that have came up. On the one hand, I've got a product that will potentially be released some time this summer, and on the other is my great irrational fear. My fear is that Silverlight 1.0 will end up quite like ASP 1.0 was for ASP.NET in that you can't convert from it and you really can't update well with new technology enhancements that come only a year or so later.

From my standpoint, it seems like the real product to back between the two may very well be Silverlight 1.1. I mean, truthfully, which would you rather spend a lot of time coming in -- JavaScript or C#? Which is going to work better with your existing Class Libraries -- JavaScript or C#? Which are they currently developing control sets for -- JavaScript or C#? My question simply is this: Will they even put some of the features that are going into 1.1 into 1.0?

As of right now I've got a project that for all purposes will probably do two things: serve out a package to thousands of users on the front end and on the back end (the company's end) these packages could be maintained by maybe only twenty people (worst case scenario currently) on the back end. It seems entirely possible to dynamically create XAML that will serve the front end and serve it in JavaScript (the XAML doesn't really change, anyone know of any drastic changes?) and serve this in the product that the masses will probably adopt in the coming months (1.0). On the back end I can develop the much larger Silverlight application in something that I feel can be expanded upon in the future and will probably be update-able, Silverlight 1.1 and ask those, say, 20 people to keep the Alpha or Beta versions of 1.1 installed on their boxes.

Anyone running into this type of decision?

Tuesday, August 28th, 2007 8:48 AM  ::  read comments (0)

PHP, Silverlight and Vista Widgets

With the coming of Silverlight right over the horizon there's been some very confusing talk as to what Silverlight can do and where it can do it. There's one point I think I'd like to stress: it seems entirely possible to take a Silverlight application and integrate it on an existing Apache server to create a Silverlight experience within PHP or any other language that can embed the XAML content. Tim Heuer's post on the subject goes into one element of this confusion, but I must confess this probably isn't the only time I've seen this confused. I'll probably expand this post soon to include a simple Silverlight application in PHP as an example.

As to the Vista Widget Tutorial: Mike Ormond wrote a simple tutorial on the subject -- the ability to do this via Visual Studio makes it really powerful. As soon as I get a new Vista Laptop, I can see creating Widgets that are useful from a business perspective -- System Monitors, Error Handling querying, etc.

Friday, August 24th, 2007 8:49 AM  ::  read comments (1)

Google Patent Site

I have to say... I could probably spend hours on Google's new (to me, at least) Patent Search site. It's like a mix of "how things work" and "obscure inventions" that I can search!

Wednesday, August 22nd, 2007 2:04 PM  ::  read comments (0)

Silverlight Controls In 1.1

There has been a lot of talk about one question: "Will there be controls for Silverlight 1.1 and what will they be?" Company's such as ComponentOne and Infragistics are announcing that they're working on their own toolkit sets. This all despite the fact that Microsoft is announcing their own set of tools which I can only imagine will be developed within the next six months.

Mike Ormond's post on the subject excerpts some slides from presentations given on the subject and further solidify my confusion. It seems to me we should be waiting rather than hoping for faster results from third party sources. Though, things seem to be ramping up as more examples of Silverlight usage seem to be cropping up daily.

Wednesday, August 22nd, 2007 2:03 PM  ::  read comments (0)

iPhone Review

First of all let me point out that I am doing this entry from the iPhone it self. For some reason blogger will not let me just write the blog, i have to just edit the html--hopefully it turns out well.

So I honestly am quite amazed that this thing is in my hands right now. I showed up at the Cingular store about fifteen minutes before they were about to release the thing. There were about 150 people ahead of me in line. One hour later I became the second to last person to receive a four GIG iPhone from that store. At that store alone there had been a few people that had been waiting all day. I feel really bad for the people that had been outside some of these stores for days. Another side note, you do not have to use an upgrade to get this phone at the suggested price.

Anyway, to the phone: I really am impressed with the implementation of the software. I am very much a minor details kind of guy. Things such as the fact that this phone hooks up to my Scion tC; the fading of itunes in and out before and after a call; the seemless integration between google maps and my address book are all just small things that I think really bring a lot of value to this product. I think for the most part they handled the overwhelming amount of features and their creation very well.

That said there are a few minor things I would like to see. Obviously I would like to see flash and 3g support. But beyond the known drawbacks, I would like to see mail improved so that I can mark multiple things as read at the same time or just not have to delete them all by hand. Also, I notice that when I read a gmail piece of mail on the phone, that read status does not get reflected back to the webmail client.

Additionally, I am not sure that the camera really allows you to crop images. I can zoom in sure, but from that state I can not send an image that looks like that zoomed in version. I also have not figured out a way to move my images fromm the camera reel to my images library.

Despite the small software issues (which I think could be resolved with patches), this phone is pretty much a steal for alwayt it can do for the money.

Wednesday, August 22nd, 2007 2:02 PM  ::  read comments (1)

Cursors In T-SQL

Personally I still feel rather inexperienced with database queries and query optimization. That said, there are still times when I have to play with fire. Cursors are something I'm rather inexperienced with in T-SQL, but they seem like to be the thing to use when trying to aggregate several rows of data into one column. The pseudo code -- I'm a huge fan of pseudo code -- goes something like this:

For each object in a subset of objects
For each person associated with the object
Add that person to the string list of people
Add this object and the string list to a temporary table
Inner join this list with the other items you would like to result from the query

This approach could be used to aggregate many things at once, considering each program individually and constructing the temporary table to aggregate names of people and potentially other ideas. Here's an example of the SQL Server 2000 transaction I'd use to implement the idea:

DECLARE @ObjectID INT
DECLARE @Person varchar(50), @allPersons varchar(1000)
DECLARE @get_Person CURSOR
DECLARE @get_Object CURSOR

DECLARE @ObjectPersons TABLE
(
ObjectID int,
Persons varchar(1000)
)

SET @get_Object = CURSOR FOR
select Objectid from Objects
where

OPEN @get_Object

FETCH NEXT FROM @get_Object INTO @ObjectID

WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @get_Person = CURSOR FOR
SELECT LTRIM(RTRIM(FirstName + ' ' + LastName)) FROM client.dbo.Person
INNER JOIN ObjectPerson
ON ObjectPerson.PersonID = Persons.PersonID
WHERE ObjectPerson.ObjectID = @ObjectID

OPEN @get_Person

FETCH NEXT FROM @get_Person INTO @Person
SET @allPersons = ''
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @allPersons = @allPersons + '; ' + @Person
FETCH NEXT FROM @get_Person INTO @Person
END

CLOSE @get_Person

SET @allPersons = RTRIM(SUBSTRING(@allPersons, 3, 999))

INSERT INTO @ObjectPersons (ObjectID, Persons)
SELECT @ObjectID, @allPersons
FETCH NEXT FROM @get_Object INTO @ObjectID
END

DEALLOCATE @get_Person
CLOSE @get_Object
DEALLOCATE @get_Object

SELECT * FROM Objects
INNER JOIN @ObjectPersons as ObjectPersons
ON ObjectPersons.ObjectID = Objects.ObjectID

Wednesday, August 22nd, 2007 2:01 PM  ::  read comments (0)

Simplistic Visual Studio 2005 Macros

As a relatively new developer, I've decided its a good idea to learn how to use and create macros that help me develop faster and more effectively in Visual Studio 2005. As it is often said, it is better to work smarter than harder -- macros are a step in the smarter direction. I hope to eventually start developing plug-ins and the like for Visual Studio 2005 as well as the upcoming "Orcas" project.

As far as I can tell, macro projects seem to be coded specifically in VB.Net. Despite my relative lack of knowledge on the subject I can describe a few key elements that I've found useful:

  • MsgBox("") - Displays a popup to the user. I've found uses for this in displaying error conditions.
  • InputBox("") - If you're familiar with console based system I/O, this works quite the same, calling this asks in a popup form the question specified by the string and returns a text string. Really effective, easy to use and useful for getting data critical to your macro.
  • DTE.ActiveDocument.Selection - This serves to be the full text that you highlight. It includes line breaks and whitespace such as tabs. You can do quite a few things with this and in many ways this can serve as a great way to get input as well. Intellisense doesn't seem to enumerate a lot of the methods this object has.
  • DTE.ActiveDocument.Selection.TopLine - Gets the top line of your selection. This is document relative, meaning if you selected lines 104 through 110 in your document, the top line would be 104.
  • DTE.ActiveDocument.Selection.BottomLine - Similar to the top line method. I'm sure you can determine the difference.
  • DTE.ActiveDocument.Selection.NewLine - Creates a new line at the current line.
  • DTE.ActiveDocument.Selection.GoToLine(int) - You can go to a specific line in the text.
  • DTE.ActiveDocument.Selection.Text - Used to get or set the current selection's text.
  • DTE.ActiveDocument.Selection.SelectLine() - This to me is a bit bizarre. You can select the line within a selection. I've found that you can go to a line, select it and then edit its text without editing the whole selection.

More to come as I delve deeper into what some of these methods do.

Wednesday, August 22nd, 2007 1:59 PM  ::  read comments (1)