Frontend Engineering Position on the Yahoo! Openness Strategy Team

May 26, 2009 at 12:32 pm by Eric Miraglia | In Frontend Engineering Jobs at Yahoo | No Comments

We noted a few frontend engineering positions available at Yahoo! last week, and we have another one to share with you today. This position is a senior F2E role focusing on Yahoo!’s platforms for developers — our “Openness Strategy,” or YOS.

About YOS

The Yahoo! Openness Strategy Team is building the next generation of open platforms and integrating them into every part of Yahoo!. From platforms that add a social element to every aspect of Yahoo!, to an applications platform and developer-focused offerings, the YOS team is tasked with transforming the way Yahoo! works. In building out all the components of YOS, the team is focused on implementing distributed systems that are highly scalable and performant so they can reliably serve hundreds of millions of Yahoo! users and developers every day.

Job Responsibilities

You will be part of the engineering team that focuses on Yahoo! application platform (YAP), which enables developers to build web applications that are available throughout Yahoo! — the largest audience in the world. You will contribute to the architecture, design and implementation of innovative features and services for this platform. You will work closely with the rest of the engineering team, product managers, QA engineers and external partners who build applications on this platform.

Minimum Qualifications

  1. 7+ years of industry experience working directly with the full web technology stack: browsers, web servers and databases
  2. Strong command of browser-side client technologies including Ajax, XHTML, DHTML, CSS, JavaScript, DOM JSON, cross-browser compatibility issues, optimization techniques and internationalization issues
  3. Experience with application development using Java or PHP
  4. Strong command of client/server programming with AJAX
  5. Excellent written and verbal communication skills
  6. Extensive experience with object-oriented design and development techniques
  7. Familiarity with software development life cycle and best practices
  8. BS in Computer Science or equivalent. MS in Computer Science preferred

Preferred Qualifications

  1. Knowledge of using Javascript toolkits such as YUI or jQuery
  2. Experience with JSP compiler implementation
  3. Experience with Open Social or Shindig implementation

You can view the job posting and apply at the following URL: http://careers.yahoo.com/jdescription.php?oid=22173. Yahoo! Inc. is an equal opportunity employer. For more information or to search all of our openings please visit http://careers.yahoo.com.

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

In the Wild for May 26, 2009

May 26, 2009 at 9:36 am by Eric Miraglia | In In the Wild | 2 Comments

Here’s a recap of news and notes from the YUI world in the past few weeks. Please use the comments below to let us know what we missed.

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

YUI Theater — Todd Kloots: “Developing an Accessible Web 2.0 Widget Framework”

May 22, 2009 at 2:50 pm by Eric Miraglia | In YUI Theater | No Comments

Todd Kloots, Engineer, YUI Team

As we continue to work on YUI 3, we’re thinking hard about accessibility. And no one here is thinking harder about that topic than Todd Kloots, who has authored a variety of blog posts on the subject as well as presenting a comprehensive tech talk on the art and sciense of accessible development.

Todd spoke to Yahoo! frontend engineers recently about the lessons learned in developing the accessibility features for YUI 3, and we’re happy to share that session with you here. For direct techniques to use in your own development, refer to Todd’s previous video; this session will take you into the higher level considerations that guide accessibility strategy in a complex system.

Slides from Todd’s talk are available as a zipped Keynote file here.

The embed from Yahoo Video follows; a higher-resolution version, along with a transcript, is available from the YUI Theater site.


Todd Kloots: "Developing an Accessible Web 2.0 Widget Framework" @ Yahoo! Video

download (m4v)

In Case You Missed…

Some other recent videos from the YUI Theater series:

Subscribing to YUI Theater:

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

Two Frontend Engineering Positions at Yahoo!

May 22, 2009 at 9:41 am by Eric Miraglia | In Frontend Engineering Jobs at Yahoo | No Comments

When we post job announcements at Yahoo!, we often preface them with the following pitch:

Think about impacting 1 out of every 2 people online–in innovative and imaginative ways that are uniquely Yahoo!. We do just that each and every day, and you could too. After all, it’s big thinkers like you who will create the next generation of Internet experiences for consumers and advertisers across the globe. Now’s the time to show the world what you’ve got. Put your ideas to work for over half a billion people.

This pitch is never more true than with positions in frontend engineering/web development at Yahoo!, where products and platforms have a unique reach and impact. And we’re always looking for engineers whose talent and passion is as unique as the opportunity. Here are a couple of positions we’re looking to fill right now — positions building on Yahoo!’s great tradition in the discipline of frontend engineering, using and improving tools like YUI, and helping to make the internet more delightful and powerful for Yahoo!’s half a billion users.

Javascript Platform Developer

Location: Sunnyvale, CA.

The Presentation Framework Group is building new frameworks, creating libraries and tools that will allow other developers and editors to build web sites quickly and efficiently. You will be working with product managers and developers to understand the requirements and needs. You will be creating specifications, designing, implementing tools and APIs. You will be using YUI libraries for creating the extensible UI.

Minimum Job Qualifications:

  • JavaScript expert.
  • Proficient in writing standards compliant HTML, CSS, Ajax, DOM
  • 3-4 years of cross browser application development experience
  • Experience with PHP
  • Well versed with XML
  • Experience using YUI
  • Self starter with the ability to work under pressure and handle multiple simultaneous tasks.
  • Strong verbal and written communication skills.

To apply for this position, please click on the following link: http://careers.yahoo.com/jdescription.php?oid=21972.

Yahoo! Inc. is an equal opportunity employer. For more information or to search all of our openings, please visit http://careers.yahoo.com.

Front-End Engineer

Location: Sunnyvale, CA.

Want to work on an application with a user base measured in the millions and not thousands? Are you interested in Maps or Geo Technology? Passionate about Front-End Engineering? If so, then we want to talk with you. We’re looking for a motivated and experienced engineer to join the Yahoo! Maps team. In this role, you would be working on the Maps destination (http://maps.yahoo.com) and helping to support internal maps-related efforts on other Yahoo! properties. The ideal candidate has strong skills in frontend technologies, but is quite comfortable with Shell Scripting
(Perl/Bash) and Apache Configuration. You’re a team player that is focused on great user experiences with a laser sharp eye for detail. Sound like you? Let us hear it!

Minimum Qualifications:

  • BS/MS in Computer Science or equivalent
  • Strong skills in PHP, Javascript/AJAX, CSS and HTML
  • Ability to write clean, concise cross-browser code
  • Previous experience as a Front-End Engineer
  • Comfortable developing in a UNIX environment
  • Solid oral and written communication skills
  • Experience working with XML and/or JSON

Desired:

  • 2-4 years experience in web application development
  • Experience configuring Apache
  • Experience with version control software (CVS or SVN)
  • Experience with Yahoo! APIs (specifically YUI and Maps AJAX API)
  • Knowledge on any of the following is a plus: REST/Web Services, i18n, l10n

To apply for this position, please click on the following link: http://careers.yahoo.com/jdescription.php?oid=21920.

Yahoo! Inc. is an equal opportunity employer. For more information or to search all of our openings, please visit http://careers.yahoo.com.

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

YUI Theater — Satyen Desai: “YUI 3: Design Goals and Architecture”

May 12, 2009 at 1:31 pm by Eric Miraglia | In YUI Theater | No Comments

Satyen Desai, Sr. Engineer, YUI Team

The team here remains hard at work on YUI’s next-generation codeline, YUI 3, which is available as a documented preview release today and which is already powering some of Yahoo’s next-generation projects. As we get closer to the beta release this summer, we’re spending more time talking about YUI 3’s distinguishing characteristics. Satyen Desai, a Sr. Engineer on the YUI team and one of the key YUI 3 developers, gave a talk last week here at Yahoo about the design goals for YUI 3 and the architectural decisions that were driven by those goals. We’re happy to share video from that event here on YUI Theater.

Slides from Satyen’s talk are available as a zipped PowerPoint file here.

The embed from Yahoo Video follows; a higher-resolution version, along with a transcript, is available from the YUI Theater site.


Satyen Desai: "YUI 3: Design Goals and Architecture" @ Yahoo! Video

download (m4v)

In Case You Missed…

Some other recent videos from the YUI Theater series:

Subscribing to YUI Theater:

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

In the Wild for May 11, 2009

May 11, 2009 at 11:43 am by Eric Miraglia | In In the Wild | 2 Comments

News and notes from the YUI community in the past couple of weeks. Please use the comments to let us know what we missed.

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

Draggable DataTable Rows

May 8, 2009 at 2:50 pm by Gonzalo Cordero | In Development | 3 Comments

About the Author: Gonzalo Cordero is a Front-End Engineer on the Yahoo! Flex Force team. He is currently working on the next generation of Yahoo! homepage. He is also a former Juku graduate, where he recently became an instructor as well. In this article he walks us through the process of adding Drag and Drop functionality to a DataTable widget.

Introduction

A recent project of mine required an implementation of DataTable where rows could be moved around with Drag and Drop functionality. After looking through the YUI gallery of examples, I realized that the feature I was trying to implement was a little bit different from the ones I saw. So I decided to implement my own solution. In this article I’ll explain how I combined YUI’s DataTable and Drag and Drop components, some workarounds for the challenges I encountered, and how I was able to improve upon my initial solution by using the new YUI3 codeline (which is currently available in preview mode).

Screenshot of draggable DataTable rows.

Initial considerations and some possible solutions

The first question that came to my mind was how to make each table row draggable and a drop target at the same time in the most efficient way. I also knew that instantiating a Drag and DDTarget object at the same time on an element wasn’t going to work. After reading through the Drag and Drop API documentation I found out that the property isTarget gets set by default to true for every Drag object we create, making that object a drop target as well. So with that, I defined a custom DDRows class to set up the interesting moment handlers and also add some CSS style for the drag proxy object to visually differentiate it from the regular rows. A proxy drag object is just a container that gets displayed once the dragging starts and it serves as a marker/guide for what is being dragged.

YAHOO.example.DDRows = function(id, sGroup, config) {
    YAHOO.example.DDRows.superclass.constructor.call(this, id, sGroup, config);
    Dom.addClass(this.getDragEl(),"type-proxydrag");
};

YAHOO.extend(YAHOO.example.DDRows, YAHOO.util.DDProxy, {
	// Handlers defined here
});

After defining the DDRows class, I listen for the DataTable’s initEvent to set up each row as a DDRows Drag object:

myDataTable.subscribe("initEvent", function() {
    var i, id,
    allRows = this.getTbodyEl().rows;

    for(i=0; i<allRows.length; i++) {
        id = allRows[i].id;

        // Clean up any existing Drag instances
        if (myDTDrags[id]) {
            myDTDrags[id].unreg();
            delete myDTDrags[id];
        }

        // Create a Drag instance for each row
        myDTDrags[id] = new YAHOO.example.DDRows(id);
    }
});

Then instead of using the DDTarget class, I look for the isTarget property of the Drag object to validate the target element. This way we make sure we only move table rows onto other table rows:

onDragDrop: function(e, id) {
    var destDD = YAHOO.util.DragDropMgr.getDDById(id);
    // Only if dropping on a valid target
    if(destDD && destDD.isTarget && this.srcEl) {
            ...
    }
}

An important consideration is that the DOM is repainted each time we move a row, so not only does the Drag object on the original row need to be cleaned up when it is deleted, a new Drag object needs to be created for the row that is created in the new position. Here is the entire onDragDrop function that cleans up and moves a row:

onDragDrop: function(e, id) {
    var destDD = YAHOO.util.DragDropMgr.getDDById(id);
    // Only if dropping on a valid target
    if(destDD && destDD.isTarget && this.srcEl) {
        var	srcEl = this.srcEl,
            srcIndex = srcEl.sectionRowIndex,
        	destEl = Dom.get(id),
        	destIndex = destEl.sectionRowIndex,
            srcData = myDataTable.getRecord(srcEl).getData();

        this.srcEl = null;

        // Cleanup existing Drag instance
        myDTDrags[srcEl.id].unreg();
        delete myDTDrags[srcEl.id];

        // Move the row to its new position
    	myDataTable.deleteRow(srcIndex);
        myDataTable.addRow(srcData, destIndex);
    	YAHOO.util.DragDropMgr.refreshCache();
    }
    }
}

Here is the full working example using YUI 2.7.0.

Enhancing our example by using YUI 3.0 PR2

On the Yahoo! homepage, we have been using YUI 3 to develop our next-generation experience, and the more I use it, the more I realize how powerful and extensible it is. So I decided to go ahead and check out the Drag and Drop component from the latest YUI 3.0 preview release for this exercise.

It was no surprise when I discovered that with this new version I could take advantage of some of the new properties and methods to make my solution more clean and efficient. For instance, Drag and Drop in YUI 3 provides an efficient way to create the Drag/Target objects we need:

myDTDrags[id] =  new Y.DD.Drag({
    node: "#"+id,
    constrain2node: "#datatable",
    moveOnEnd: false,
    proxy: true,
    target: true
});

We no longer have to define our own subclass or worry about validating the element before swapping rows, as the drophit event will only be triggered when applied to elements we’ve defined as drop targets.

The other great new feature version 3 brings us is custom-event bubbling (which brings the power of DOM-event bubbling to the custom events that drive the library’s API). Thanks to this, we can now to listen for all the Drag and Drop events at the document level using the Drag and Drop Manager, rather than having to attach several events to each individual table row. Our custom-event delegation code looks like this:

Y.DD.DDM.on('drag:start',startDrag);
Y.DD.DDM.on('drag:end',endDrag);
Y.DD.DDM.on('drag:drophit',dragDrop);

Here is the full working example using YUI 3.0 PR2.

Conclusion

I hope you find these examples a useful resource on how to add Drag and Drop functionality to DataTables and on how you easily you can integrate YUI 2.7.0 and YUI 3 components in the same page. It also serves as a quick preview on all the new and exciting features that are coming with the next generation of YUI.

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

Hosted by Yahoo!

Copyright © 2006-2010 Yahoo! Inc. All rights reserved. Privacy Policy - Terms of Service

Powered by WordPress on Yahoo! Web Hosting.