05/14/2014

For the past year, as I mentioned in my previous blog post (which was published a long time ago), I’ve been working on Autodesk InfraWorks; specifically, in a new REST API that allows third-party applications to access model data from a published AIW model. With the 2015 release cycle, the REST API has moved to a technology preview state, and we want to open access to the preview to all developers out there interested in integrating InfraWorks Web-Services with their applications.

Augusto Goncalves has published a very nice post to get everyone started. Augusto is also coordinating access to the preview, so you should contact him directly (he is so nice, that he has posted his e-mail in the article) or your A.D.N. representative inquiring about the program. The requirements are simple. All we want is a brief description of how you intend to integrate the service. You should read Augusto’s article and watch his presentation, but before you go and do that, I want to explain what this new API is all about and which opportunities opens for Autodesk, InfraWorks, and third-party applications.

It doesn’t take much to get excited about Autodesk InfraWorks after you have seen a demo of the product or tried it your-self. To say that it is one of the coolest applications I’ve seen in many years, might be a bit of an understatement. The way the product has been evolving and the myriad of new features that have been introduced in the past year make it a serious contender against any Infrastructure product out there. But the secret behind the product is its data. InfraWorks is as good as the data you feed it. The better the data is; the better it gets.

InfraWorks is a data driven application.The workflows and tools it provides are targeted to rapidly aggregate data from many sources to create the initial models. As the user interacts with the application, more data is aggregated to enable user to rapidly create conceptual designs. Once the initial concepts are added, the data can be tweaked to make it more accurate. In InfraWorks, everything is about the data.

The initial goal of the InfraWorks REST API is to enable third-party applications and services to access the data users are creating and publishing with InfraWorks. Third-party applications can build on top of this API and evolve the user experience providing new ways in which the data is consumed, analyzed, or reported. All of this without being bound to a specific platform or technology; not even bound to a specific version of InfraWorks. The InfraWorks Web-Services REST API, at least in its initial release, is all about the data.

The REST API provides new means of integration creating opportunities for collaboration, mobility, virtual reality, or any other application you can imagine. The world of technology is changing, and it is changing at a faster pace than we perceive. What we though impossible just a few years ago, today is a reality, and the InfraWorks REST API enables InfraWorks and third-party applications to become part of that future.

Like with any new technology, there is still a long way to go, and many things we still need to learn. That is why we are releasing this technology preview. We want you to start using it, to start building the future, and to provide us with feedback, so we can make it even better. Now go ahead and check Augusto’s presentation, contact him with your great idea, and request access to the API; and when you build the next cool product, let us know about it. Of course, let us know about any bumps on the road you might find, so we can smooth them for others coming behind.

12/16/2013

I can’t believe we are the tail end of 2013. With a couple of weeks to go, I look back, and I can say it has been a very interesting year. It was a year ago when one of my then bosses, Jim, approached me to talk about my role for the upcoming year. We talked about different possibilities, but there was one option that really excited me. He offered me to take the position of Product Owner of the InfraWorks API.

Our group, and pretty much every group in the Company, was transitioning or had been transitioned to use an Agile development approach. With the change, new roles and responsibilities were defined, so now you can hear about Product Owners and Scrum Masters, and there is a myriad of Scrum Teams within each organization. I’ve been following the Agile movement for quite some time, and there were many things that attracted me in it. During the years I worked in the Civil 3D API, we took baby steps into becoming more Agile, and the results were highly satisfactory.

There were two thing that really excited me about the new role. The first one was to have the opportunity to start a new team that will focus in Agile development. Transitioning an existing team can be done, but it takes a lot longer if you want to maintain the team’s productivity. When you start from scratch, you still need some time to adapt depending on the team’s experience, but the transition is smoother; especially, if everyone in the team is on-board with the new process.

The second thing that excited me was the opportunity to work on InfraWorks. I had seen many demos of the product, and it looked so fresh and interesting that I was very happy to be part of it. As I learned more about the product’s roadmap and the future vision for the technology, I became more and more excited to be part of it.

I started the year with great ambitions. I was completely energized with my new role, and I had the plan to keep up with the Civil 3D API even when I wasn’t going to be part of the team. I had many plans for this blog and plenty of ideas for articles that explained the functionality released with the 2014 version.

Then reality set in. I’ve learned that Agile really means fast. Working on an Agile environment leaves very little time for distractions. Your focus is on completing each sprint successfully and when you are starting something new, there is a lot of work to be done. Unfortunately, this meant I had to put aside some of my plans. This blog has suffered because I didn’t have time to talk about what we did in the Civil 3D API, and I couldn’t write about the project I was working on. I also had to set aside my plans to keep up with what was happening in the Civil 3D API world and concentrate my focus on the new project.

Still, it has been a very interesting year for me, and I can say I had a lot of fun working on this new project. I’ve learned quite a few things, and I cannot wait to start sharing those experiences with you. I hope to see you around, and I’m looking forward to the new challenges for the new year.

P.S. It was great to see many of you at AU 2013. This past AU was one of the best for me, and I had the opportunity to attend many interesting sessions and have long conversations with many of you. The trip was really worth it, and I cannot wait to go back next year.

12/01/2013

I’m writing this post on my way to AU 2013, and hopefully, it will be posted before I get to my first layover in Chicago. Although your flying experience will vary depending on airline and destination, this particular flight has on-board WiFi and so does my next one to Las Vegas.

The “Cloud” seems to be be available everywhere these days, which is one of the reasons why this year, if you are attending AU in person or on-line, you’ll see there is a myriad of sessions around Autodesk “Cloud” services, and many development classes targeted to Web-Services.

Connectivity is a reality. Even if it is not widely available in your area, it will get there soon. And it will bring all sorts of opportunities for your business and applications.

I admit; I was skeptical. In the past year, I’ve been transitioning to the “Cloud” in most of my personal computing and a big chunk of my professional one. I wanted to experience what all the fuss was about, and I got to say, I’ve never been happier.

There was one thing though, I didn’t fully transition; my work e-mail archive. Years of e-mail were stored locally in a single machine the old Outlook way, and guess what; my laptop died beyond repair, and now I’m hoping IT can rescue all that e-mail. Let me tell you, lesson learned. All my e-mail, including my archives, is now on-line, and I trust my IT department to keep it safe from hardware failures.

I will be writing more about “Cloud” services in the near future. For now, I leave you with this post from the “Clouds” in my way to AU.

09/24/2013

There are many benefits about joining the Autodesk Developer Network (ADN), but one of the coolest ones is to be able to assist and participate in the conferences they organize. This year there are some many good topics prepared for those conference that I will be very disappointed if I cannot assist to at least one of them.

This year, Autodesk DevDays 2013, which is the official conferences name, has selected rEvolution as the topic. They use rEvolution to signify where the Desktop meets the Cloud, and the presentations prepared will demonstrate what Autodesk products have been doing to integrate our usual desktop applications with the increasing number of Cloud services the company is providing. Here is a brief of the official announcement.

“Got great ideas for cloud and mobile apps? Want to learn where Autodesk is taking the convergence of desktop computing and cloud technology?

If you’re an innovator developing on Autodesk platform technology and have not yet attended an Autodesk Developer Network Conference join us for a deep dive as we take an in-depth look at Autodesk’s newest technologies and the next generation of products coming in 2014. The Autodesk Developer Network is holding its annual, worldwide Developer Day Conference and DevLab in cities around the world from November 2013 through February 2014.

Called Autodesk DevDays 2013, the theme for this year’s event is rEvolution – Where Desktop meets the Cloud. Come and learn about upcoming releases of several new web service APIs from Autodesk. You’ll see how these new web services extend the power of the desktop: delivering easy collaboration, limitless compute power and big data – and are platforms that can deliver the same to you and your customers. It’s an opportunity to learn about a range of “360 based” web service APIs delivering you Cloud based platforms for a number of industries - Manufacturing, AEC, Infrastructure and more. And, we will of course also cover what’s new in the next releases of our desktop products (AutoCAD®, Autodesk® Revit®, Autodesk® Inventor®, AutoCAD® Civil 3D® and so on)!

Note that material at Developer Days is forward-looking and highly confidential so ADN membership is required. Maybe you are using ADN Open and forums and would like to attend DevDays? Visit www.autodesk.com/joinadn or send an email to your local ADN representative and let’s talk. We like to hear from — and help — interested parties, innovators and companies just getting started.”

The conference registration page contains more information about the specific dates in your area. Make sure you register, and hopefully, I will see you there.

08/16/2013

Once in a while, we need to deprecate a feature of the API because is confusing. Still, we need to be careful because many of you might be using the feature. The process is to deprecate the feature, so you have time to port the code and then, in a future release, remove the feature. Hopefully, your code is well abstracted so the impact of the changes is well centralized and easy to port.

In our latest release, we had to deprecate the “set” implementation of the ‘DraggedOffset’ property for label objects. We run into many problems with this property during our automation because of the behavior of some of the label objects. We found ourselves having many problems verifying the behavior was correct, and that can only mean that you will run into many problems also, so we decided to make the property read-only and provide a better way to expose the functionality.

The source of the problem is the way certain labels behave when they are dragged. Some labels will change the anchor point (AnchorInfo.Location) when the label is dragged to certain location. How and when this happens is not intuitive nor can be determined, so it becomes very confusing. Let me illustrate the problem.

The following screen-shot shows a point label where we have added a leader so the problem is easier to see:

As you can see, the leader is anchored to the “middle-center” of the point, and the label text is aligned to the “middle-right” of the leader. If you were going to read the ‘DraggedOffset’ property of that label, the result would be a Vector3d with the distance from the center of the point to the middle left of the text.

Let’s say you now drag the label. As you can see in the next screen-shot, the leader is not anchored to the side of the point and the location of the text still aligned to the “middle-right” of the leader.

The real problem here is that if you set the ‘DraggedOffset’, to drag the label, to a value of, let’s say, Vector3d(100, 100, 0), and immediately after you read the value of the property, the returned vector is not guaranteed to be the same because the anchor point has moved.

To fix this issue, we deprecated the “set” method of ‘DraggedOffset’ and provided a ‘LabelLocation’ property, which allows you to set and get an absolute location. Moving the label using this property guarantees its location.

Still, many of you might be using the ‘DraggedOffset’ property to move the label, and you will need to port your code. You have the option to calculate the new location according to the offset value you already have and change the ‘LabelLocation’ property. This may involve repeating the computation in several places in your code, which is not ideal.

A better solution is to use ‘Extension Methods’. This feature of .NET, which has been around for a while, is one of my favorite feature. It allows me to define the interface I want and centralize code and still make client code look like is using native methods in an object. You can define an extension class to the Label class in Civil 3d that does the calculation and use an extension method to replicate the work that ‘DraggedOffset.set’ used to do.