// hello.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "hello.h" #include "hellodlg.h" #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CHelloApp BEGIN_MESSAGE_MAP(CHelloApp, CWinApp) //{{AFX_MSG_MAP(CHelloApp) //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CHelloApp construction CHelloApp::CHelloApp() { } ///////////////////////////////////////////////////////////////////////////// // The one and only CHelloApp object CHelloApp theApp; ///////////////////////////////////////////////////////////////////////////// // CHelloApp initialization BOOL CHelloApp::InitInstance() { // Standard initialization Enable3dControls(); LoadStdProfileSettings(); // Load standard INI file options (including MRU) CHelloDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } // hellodlg.cpp : implementation file // #include "stdafx.h" #include "hello.h" #include "hellodlg.h" #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CHelloDlg dialog CHelloDlg::CHelloDlg(CWnd* pParent /*=NULL*/) : CDialog(CHelloDlg::IDD, pParent) { //{{AFX_DATA_INIT(CHelloDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CHelloDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CHelloDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CHelloDlg, CDialog) //{{AFX_MSG_MAP(CHelloDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CHelloDlg message handlers BOOL CHelloDlg::OnInitDialog() { CDialog::OnInitDialog(); CenterWindow(); // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CHelloDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } HCURSOR CHelloDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } // hello.h : main header file for the HELLO application // #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols ///////////////////////////////////////////////////////////////////////////// // CHelloApp: // See hello.cpp for the implementation of this class // class CHelloApp : public CWinApp { public: CHelloApp(); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CHelloApp) public: virtual BOOL InitInstance(); //}}AFX_VIRTUAL // Implementation //{{AFX_MSG(CHelloApp) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// // hellodlg.h : header file // ///////////////////////////////////////////////////////////////////////////// // CHelloDlg dialog class CHelloDlg : public CDialog { // Construction public: CHelloDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CHelloDlg) enum { IDD = IDD_HELLO_DIALOG }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CHelloDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(CHelloDlg) virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by HELLO.RC // #define IDR_MAINFRAME 128 #define IDD_HELLO_DIALOG 102 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 129 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif //Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "#include ""res\\hello.rc2"" // non-Microsoft Visual C++ edited resources\r\n" "\r\n" "#define _AFX_NO_SPLITTER_RESOURCES\r\n" "#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO_TRACKER_RESOURCES\r\n" "#define _AFX_NO_PROPERTY_RESOURCES\r\n" "#include ""afxres.rc"" // Standard components\r\n" "\0" END ///////////////////////////////////////////////////////////////////////////// #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // IDR_MAINFRAME ICON DISCARDABLE "res\\hello.ico" ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_HELLO_DIALOG DIALOG DISCARDABLE 0, 0, 185, 92 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Jeffrey Palm 472 Commonwealth Ave. #8 Boston, MA, 02215-2736 College of Computer and Information Science Northeastern University 360 Huntington Ave Email: jeff@jeffpalm.com Web: http://jeffpalm.com Objective --------- To pursue summer internships, both in research and development, in the general area of programming languages, while pursuing my Ph.D. Education --------- . Northeastern University, Boston, MA (Sep 2003 -1) Ph.D. Computer Science Emphasis: Programming Languages/Systems, Aspect-Oriented Programming . University of Colorado, Boulder, CO, GPA: 3.91/4.0 (Sep 2001-May 2003) M.S. Computer Science Thesis: On the Relationship Between Object-Oriented Metrics and Software Evolution . University of Florida, Gainesville, FL, GPA: 3.89/4.0 (Sep 1997-May 2000) B.S. Computer Engineering (with highest honors), Minor in Mathematics Thesis: A Programming Language and Hybrid Editor Generation System Industrial Experience --------------------- . IBM Research, Research Staff, Hawthorne, NY, (Aug 2004-present). Working on various aspects of the Concern Manipulation Environment (CME) (http://eclipse.org/cme). Mentors: Peri Tarr and Harold Ossher. . IBM Research, Intern, Hawthorne, NY, (May 2004-Aug 2004). Created a general-purpose framework for adding JSR 45 (debugging information) support to Java systems and integrated this support into parts of the CME; added such support to the Jikes and ANTLR parser generators. Added to the CME with an assembly toolkit based on the Shrike bytecode toolkit, and informant toolkits based on Shrike, EMF, and Microsoft IL assembly. Added to various components of CME including testing tools, documentation tools, and performance-tuning tools. Mentor: Peri Tarr. . NASA Ames Research Center, SSRP Intern, Mountain View, CA, (Jun 2003-Aug 2003) Explored, designed, and implemented a language for quantifying events over programs called The Puffin. Mentor: Bob Filman. . IBM, Extreme Blue Intern, Cambridge, MA, (May 2002-Aug 2002) Enhanced the Jikes RVM to run the Java IDE Eclipse. Implemented the Java Wire Debugging Protocol. Improved the threading and I/O systems, resource management, se rialization, and further libraries to comply with the Java 1.4 specification. Mentor: Julian Dolby. . Xerox PARC, Researcher, Palo Alto, CA, (Aug 2000-Aug 2001) Developer on the programming language AspectJ . Designed and implemented the de bugger (cleanroom jdb), documentation tool (cleanroom javadoc), Jakarta Ant support, and test suite/harness, and build system. Worked additionally on the compiler and support for existing products, such as Forte and Netbeans. Supervisor: Jim Hugunin. . Xerox PARC, Graduate Intern, Palo Alto, CA, (May 2000-Aug 2000) Explored Aspect-Oriented solutions to software engineering problems, including implement ing various tools in AspectJ, such as the debugger. Mentor: Crista Lopes. Academic . Northeastern Univ., Research Assistant, College of Computer Sci., (Sep2003-) experience Working with Karl Lieberherr to unify the ideas in AspectJ and Demeter. Adding funtion ality to the DJ tool in the Demeter tool suite. Academic Experience ------------------- . Northeastern Univ., Instructor, College of Computer Sci., (Jan 2005-May 2005 ) Instructed CSU211, Introduction to Computing. Organized and taught a class of approximately 25 students; managed two teaching assistants. . Northeastern Univ., Teaching Assistant, College of Computer Sci., (Sep 2004-Dec 2004) Assisted in teaching CSU211, Introduction to Computing, by holding lab sessions, o±ce hours, grading work, and helping create assignments and tests. Instructor: Matthias Felleisen. . Northeastern Univ., Teaching Assistant, College of Computer Sci., (Sep 2003-Dec 2003) Assisted in teaching CSU211, Introduction to Computing, by holding lab sessions, o±ce hours, grading work, and helping create assignments and tests. Instructor: Matthias Felleisen. . Univ. of Colorado, Teaching Assistant, Computer Science Dept., (Aug 2002-Dec 2002) Assisted in teaching CSCI 3155 -Programming Languages by holding recitation sessions, office hours, grading homework, and helping create assignments. Instructor: Martin Hirzel. . Univ. of Colorado, Research Assistant, Computer Science Dept., (Aug 2001-May 2002) Explored energy-e±cient compilation techniques over a network by carrying out compilation tasks remotely. Published in LCTES 2002, Berlin, Germany. Advisor: Amer Diwan. . Univ. of Florida, Teaching Assistant, Computer Engineering Dept., (Jan 2000-May 2000) Assisted in teaching COP 5555 -Graduate Programming Languages, by holding o±ce hours and grading homework & tests. Instructor: Beverly Sanders. . Univ. of Florida, Research Assistant, Computer Engineering Dept., (May 1999-May 2000) Designed and implemented a programming language and hybrid editor generator in C++, Perl, and Tcl while working with the Adaptive Image Manager team. Used this system to generate a language for the Image Algebra, helping to quickly evaluate network configura tions while prototyping image manipulation algorithms. Mentor: Joe Wilson. Publications (All papers are available at http://jeffpalm.com/papers) ------------ . Karl J. Lieberherr, Jeffrey Palm, and Ravi Sundaram. Expressiveness and Complexity of Crosscut Languages. Workshop on the Foundations of Aspect Oriented Programming Languages, AOSD 2005, Chicago, IL, USA, 2005. . D. Shepherd, J. Palm and L. Pollock. Fast Prototyping and Evaluation of Aspect Mining Analyses via Timna. Workshop on Aspect Reverse Engineering, Delft University of Technology, the Netherlands, November, 2004. . J. Palm, K. Anderson, and K. Lieberherr. Investigating the Relationship Between Violations of the Law of Demeter and Software Maintainability. Workshop on Software-engineering Properties of Languages for Aspect Technologies, AOSD, Boston, MA, 2003. . J. Palm, H. Lee, A. Diwan, and J. E. B. Moss. When to use a compilation service. Lightweight Compilers and Tools for Embedded Systems, Berlin, Germany, 2002. . G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. Griswold. Getting Started with AspectJ . October 2001 Communications of the ACM. . G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. Griswold. An Overview of AspectJ . Proceedings of the 15th European Conference on Object-Oriented Program ming, Budapest, Hungary, June, 2001. . Jeffrey Palm. A Programming Language and Hybrid Editor Generator. Highest Honors The sis. Department of Computer Science and Selected Projects (All projects are available at http://jeffpalm.com/projects) -------- . JavaPalm (http://javapalm.sourceforge.net) A large suite of Java utilities. . DemeterCop (http://demetercop.sourceforge.net) Looking at the effects of violating the Law of Demeter on software quality . Ajdoc by Reflection (http://reflectajdoc.sourceforge.net) A compiler extension to the documentation tool ajdoc from the AspectJ Project that uses reflection rather than requiring the source code. . Harry Legs (http://jeffpalm.com/harrylegs) My undergraduate thesis was a domain-specific programming language generation system. . Translated (http://jeffpalm.com/im) Before Microsoft patented it, I wrote a translating IM client. . NetTraversals (http://www.ccs.neu.edu/home/jpalm/nettraversals) .NET implementaton of the Adaptive Programming Library from the Demeter Group. " FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,129,6,50,14 PUSHBUTTON "Cancel",IDCANCEL,129,23,50,14 LTEXT "Jeffrey Palm 472 Commonwealth Ave. #8 Boston, MA, 02215-2736 College of Computer and Information Science Northeastern University 360 Huntington Ave Email: jeff@jeffpalm.com Web: http://jeffpalm.com Objective --------- To pursue summer internships, both in research and development, in the general area of programming languages, while pursuing my Ph.D. Education --------- . Northeastern University, Boston, MA (Sep 2003 -1) Ph.D. Computer Science Emphasis: Programming Languages/Systems, Aspect-Oriented Programming . University of Colorado, Boulder, CO, GPA: 3.91/4.0 (Sep 2001-May 2003) M.S. Computer Science Thesis: On the Relationship Between Object-Oriented Metrics and Software Evolution . University of Florida, Gainesville, FL, GPA: 3.89/4.0 (Sep 1997-May 2000) B.S. Computer Engineering (with highest honors), Minor in Mathematics Thesis: A Programming Language and Hybrid Editor Generation System Industrial Experience --------------------- . IBM Research, Research Staff, Hawthorne, NY, (Aug 2004-present). Working on various aspects of the Concern Manipulation Environment (CME) (http://eclipse.org/cme). Mentors: Peri Tarr and Harold Ossher. . IBM Research, Intern, Hawthorne, NY, (May 2004-Aug 2004). Created a general-purpose framework for adding JSR 45 (debugging information) support to Java systems and integrated this support into parts of the CME; added such support to the Jikes and ANTLR parser generators. Added to the CME with an assembly toolkit based on the Shrike bytecode toolkit, and informant toolkits based on Shrike, EMF, and Microsoft IL assembly. Added to various components of CME including testing tools, documentation tools, and performance-tuning tools. Mentor: Peri Tarr. . NASA Ames Research Center, SSRP Intern, Mountain View, CA, (Jun 2003-Aug 2003) Explored, designed, and implemented a language for quantifying events over programs called The Puffin. Mentor: Bob Filman. . IBM, Extreme Blue Intern, Cambridge, MA, (May 2002-Aug 2002) Enhanced the Jikes RVM to run the Java IDE Eclipse. Implemented the Java Wire Debugging Protocol. Improved the threading and I/O systems, resource management, se rialization, and further libraries to comply with the Java 1.4 specification. Mentor: Julian Dolby. . Xerox PARC, Researcher, Palo Alto, CA, (Aug 2000-Aug 2001) Developer on the programming language AspectJ . Designed and implemented the de bugger (cleanroom jdb), documentation tool (cleanroom javadoc), Jakarta Ant support, and test suite/harness, and build system. Worked additionally on the compiler and support for existing products, such as Forte and Netbeans. Supervisor: Jim Hugunin. . Xerox PARC, Graduate Intern, Palo Alto, CA, (May 2000-Aug 2000) Explored Aspect-Oriented solutions to software engineering problems, including implement ing various tools in AspectJ, such as the debugger. Mentor: Crista Lopes. Academic . Northeastern Univ., Research Assistant, College of Computer Sci., (Sep2003-) experience Working with Karl Lieberherr to unify the ideas in AspectJ and Demeter. Adding funtion ality to the DJ tool in the Demeter tool suite. Academic Experience ------------------- . Northeastern Univ., Instructor, College of Computer Sci., (Jan 2005-May 2005 ) Instructed CSU211, Introduction to Computing. Organized and taught a class of approximately 25 students; managed two teaching assistants. . Northeastern Univ., Teaching Assistant, College of Computer Sci., (Sep 2004-Dec 2004) Assisted in teaching CSU211, Introduction to Computing, by holding lab sessions, o±ce hours, grading work, and helping create assignments and tests. Instructor: Matthias Felleisen. . Northeastern Univ., Teaching Assistant, College of Computer Sci., (Sep 2003-Dec 2003) Assisted in teaching CSU211, Introduction to Computing, by holding lab sessions, o±ce hours, grading work, and helping create assignments and tests. Instructor: Matthias Felleisen. . Univ. of Colorado, Teaching Assistant, Computer Science Dept., (Aug 2002-Dec 2002) Assisted in teaching CSCI 3155 -Programming Languages by holding recitation sessions, office hours, grading homework, and helping create assignments. Instructor: Martin Hirzel. . Univ. of Colorado, Research Assistant, Computer Science Dept., (Aug 2001-May 2002) Explored energy-e±cient compilation techniques over a network by carrying out compilation tasks remotely. Published in LCTES 2002, Berlin, Germany. Advisor: Amer Diwan. . Univ. of Florida, Teaching Assistant, Computer Engineering Dept., (Jan 2000-May 2000) Assisted in teaching COP 5555 -Graduate Programming Languages, by holding o±ce hours and grading homework & tests. Instructor: Beverly Sanders. . Univ. of Florida, Research Assistant, Computer Engineering Dept., (May 1999-May 2000) Designed and implemented a programming language and hybrid editor generator in C++, Perl, and Tcl while working with the Adaptive Image Manager team. Used this system to generate a language for the Image Algebra, helping to quickly evaluate network configura tions while prototyping image manipulation algorithms. Mentor: Joe Wilson. Publications (All papers are available at http://jeffpalm.com/papers) ------------ . Karl J. Lieberherr, Jeffrey Palm, and Ravi Sundaram. Expressiveness and Complexity of Crosscut Languages. Workshop on the Foundations of Aspect Oriented Programming Languages, AOSD 2005, Chicago, IL, USA, 2005. . D. Shepherd, J. Palm and L. Pollock. Fast Prototyping and Evaluation of Aspect Mining Analyses via Timna. Workshop on Aspect Reverse Engineering, Delft University of Technology, the Netherlands, November, 2004. . J. Palm, K. Anderson, and K. Lieberherr. Investigating the Relationship Between Violations of the Law of Demeter and Software Maintainability. Workshop on Software-engineering Properties of Languages for Aspect Technologies, AOSD, Boston, MA, 2003. . J. Palm, H. Lee, A. Diwan, and J. E. B. Moss. When to use a compilation service. Lightweight Compilers and Tools for Embedded Systems, Berlin, Germany, 2002. . G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. Griswold. Getting Started with AspectJ . October 2001 Communications of the ACM. . G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. Griswold. An Overview of AspectJ . Proceedings of the 15th European Conference on Object-Oriented Program ming, Budapest, Hungary, June, 2001. . Jeffrey Palm. A Programming Language and Hybrid Editor Generator. Highest Honors The sis. Department of Computer Science and Selected Projects (All projects are available at http://jeffpalm.com/projects) -------- . JavaPalm (http://javapalm.sourceforge.net) A large suite of Java utilities. . DemeterCop (http://demetercop.sourceforge.net) Looking at the effects of violating the Law of Demeter on software quality . Ajdoc by Reflection (http://reflectajdoc.sourceforge.net) A compiler extension to the documentation tool ajdoc from the AspectJ Project that uses reflection rather than requiring the source code. . Harry Legs (http://jeffpalm.com/harrylegs) My undergraduate thesis was a domain-specific programming language generation system. . Translated (http://jeffpalm.com/im) Before Microsoft patented it, I wrote a translating IM client. . NetTraversals (http://www.ccs.neu.edu/home/jpalm/nettraversals) .NET implementaton of the Adaptive Programming Library from the Demeter Group. ",IDC_STATIC,5,34,113,8 END ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904B0" BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "HELLO MFC Application\0" VALUE "FileVersion", "1, 0, 0, 1\0" VALUE "InternalName", "HELLO\0" VALUE "LegalCopyright", "Copyright \251 1996\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "HELLO.EXE\0" VALUE "ProductName", "HELLO Application\0" VALUE "ProductVersion", "1, 0, 0, 1\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE DISCARDABLE BEGIN ID_INDICATOR_EXT "EXT" ID_INDICATOR_CAPS "CAP" ID_INDICATOR_NUM "NUM" ID_INDICATOR_SCRL "SCRL" ID_INDICATOR_OVR "OVR" ID_INDICATOR_REC "REC" END #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // #include "res\hello.rc2" // non-Microsoft Visual C++ edited resources #define _AFX_NO_SPLITTER_RESOURCES #define _AFX_NO_OLE_RESOURCES #define _AFX_NO_TRACKER_RESOURCES #define _AFX_NO_PROPERTY_RESOURCES #include "afxres.rc" // Standard components ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED