|
||||||||
Journal Entries, Week #12
Quick jump to: alio, beowulf, jamesmcd, jkdot, jsegars, lipinski, localguy, othello, rjmorgan, ryanaip, thewang, tjice, wrprice, swong. ----- ALIO
------------------------------------------------------------------------------------------- Status: ·
Things are going well. There is a new wander,
browse, and decisionbuy behavior that are going to
be functional as soon as items and people have some attributes assigned to them · Im currently working with the UI group to add attributes to the form that appears when adding an item to a store. · By next Friday the people and item factories will be updated to include attribute additions to the Entities. What seems to be working · The examples for the Pocket PC are looking good. Hopefully soon we will move beyond a proof of concept and start exchanging data between the server and Pocket PC (good luck TJ and Theo). · Communication is extremely good. People are making their needs known and the other groups are doing good work to accommodate. What seems to not be working ·
Having to use multiple computers to run the
project is cumbersome. Though it is a little late it would be cool to be able
to run everything using less computing power. Looking ahead ·
Lots to do but nothing that seems to be
insurmountable, just time consuming. So lots and lots of coding parties!! Good luck to everyone and see you in the lab. Nice journal. -----
BEOWULF -----------------------------------------------------------------------------------
Nice
journal. -----
JAMESMCD ---------------------------------------------------------------------------------
Nice
journal. ----- JKDOT
---------------------------------------------------------------------------------------- Milestone: Continuous work with Brian and Jeff on refining the functionality of the GUI. More work on client/server interaction and general information updating in the model. Gains Made: This week, I mostly worked with Brain on giving
the UI the ability to add products dynamically (in the actual application
window). We then made the changes update
in the view. The next step is to pass
the new product information (price, stock, etc.) to the model. As a group, we decided that users could add
items from a pre-defined list. Even
though this is not specifically what the customer wanted, it will be more
realistic because we can have behaviors defined for the products in the
list. Since there is not much time left,
we really didnt think we could pull off functionality that allowed users to
add any item they wished (would not be standardized). Obstacles encountered: While working in the client code, we encountered exceptions
that were not caught or handled very well.
This came up mainly when the Net Hub failed because the client
closed. It was also tedious to open a
new server each time we wanted to test something with the client (client couldnt
open and function because the connection between the two was not set up). I guess it was mostly in the AR code. Solutions proposed: Better error checking/handling would help a lot. Things are fine now, but there are a lot of
steps to remember to do so that the application doesnt crash
inadvertently. Also, Development Process: What seems to be working:
What doesnt seem to be working:
Proposal for change: With the time crunch and the looming deadline, it will be very
hard to pull something off cleanly unless we start putting everything together
and doing some final testing. We
shouldnt leave that for the last minute. Nice journal. -----
JSEGARS
------------------------------------------------------------------------------------- Gains Made I spent
this week testing and refining some aspects of the GUI. The IMallAdapter
implemented in the last milestone has now been tested much more extensively and
appears to work as expected. Many GUI
updating functions that were shared between the server and the client have been
moved to external files, to reduce code repetition, and Ive changed the
controls to only update when theyre clicked on. This isnt the end desired behavior, but it
better than the annoying constant refresh we used to have. Obstacles The
main obstacle I encountered this week was trying to figure out an intelligent
way to update our controls, rather than doing it on every timer tick. Many Windows controls support data binding,
but the ListViews that we were using extensively do
not. Ive found an article discussing
how to implement this functionality in VB and Im going to spend some time
converting the code into C#. Development Process What's Working It
appears that PocketPC development is coming along much better than I
expected. I had some doubts about
whether I thought there was enough time to get things running on a new
platform, but it looks like well be able to get something running. What's Not Working / Change A couple
journals ago, many people talked about the need to determine what would and
would not be accomplished by the end of the project. While this probably went on informally within
the groups, it might be nice for each
group to get something up about what they plan to get done and what they dont
see being feasible. At this stage,
one group cant waste time working on something to complement functionality
that another group wont be able to deliver in the end. Nice
journal. -----
LIPINSKI ------------------------------------------------------------------------------------- Milestone:
· Configuring the model and GUI to run in separate processes, communicating through the NetHub. (E.g., write controllers for them.) (100%) · Make the factories run as an application used to launch stores. (50%) · Figure out which new adapters are needed for the PocketPC and implement them (work the AR group on this). (80%) · Implement MallClientAdapter if theres time, but the PocketPC functionality is the priority. (0%) Gains Made: Ryan and I did a lot of work on Wednesday. We retooled the factories and integrated them with the wizards. We also redid the interfaces to allow complete separation, as Theo requested. We still have to work on IEntityAdapter, because were not sure if that is completely up to what Theo suggested, but we will have that done shortly as well. Obstacles Encountered: · We ran into testing issues with the wizard setup, because we havent added a way for the mall to add people to itself. Solutions Proposed: We started making the mall
autonomous in adding people to itself. It wont help for specific testing, but
it will be the functionality we require. Development ProcessWhats Working: Finally shedding the test UI. Whats not Working: TJ, I only see him
in the lab 23 out of every 24 hours.
Hes obviously not committing enough time to the project. Lack of pizza meetings, or general morale
lifting events. To Change: As the project is coming to a close there isnt much I can say about the process, at least nothing that can possibly have any effect on the project. This week went really smoothly. It was beneficial to get people together and actually do coding. Then we could ask someone for advice, or what such and such did. It was a lot easier then just trying to code something, and realizing I have no clue what the UI is doing at that point. It was nice to grab TJ and yell at him. Maybe try and organized programming parties, with pizza etc. where we can all get together and actually program, not just talk like in class. Nice
journal. -----
LOCALGUY
--------------------------------------------------------------------------------- Milestone:
Development Process:
How long
does a break need to be? Perhaps just
an hour frolicking in the sun is enough.
Dont underestimate the importance of such breaks. Nice
journal. -----
OTHELLO ----------------------------------------------------------------------------------- ·
Milestone Status: o Gains: My milestone for the next couple of weeks is
kind of general, to help the UI group and Model group work with the Web
Services framework layer that we are going to support. In the attempt to figure out how to implement a Web Services host,
I researched and fooled around with Remoting via
HTML/XML-SOAP. It turned out to be
amazingly simple, once I figured it out. Thats
the problem with most Microsoft frameworks that Im feeling its easy to
reproduce once you figure it out, but its not very intuitive to finding out
with nothing to start. Ive coded up a test server thats a Windows GUI app, available in
binaries, or the entire solution directory, in zip format. The binary .exe is at: http://www.owlnet.rice.edu/~othello/comp410/binaries/RemotingWebService.exe It requires the following DLL file, at: http://www.owlnet.rice.edu/~othello/comp410/binaries/TextHolder.dll Also, a number of test clients are available in the same binaries
directory. Theres a Remoting
test client (console app), that also requires the TextHolder.dll file, and
theres a Web Services test client, that doesnt require the DLL, since it uses
a WSDL generated proxy class. All of the
aforementioned binaries / solutions are developed in VS .NET 2002. More interestingly, Ive also coded up a Pocket PC client, using
VS .NET 2003 ( http://www.owlnet.rice.edu/~othello/comp410/pocketpc-cabs/ The CAB file for the Pocket PCs distributed to the Comp410 class
(well, everyone except for Will :-P) is at the following URL: http://www.owlnet.rice.edu/~othello/comp410/pocketpc-cabs/PocketClient_PPC.ARM.CAB I tested this out pretty extensively on my machine, and also using
a client from my machine while hosting on Exciton (the reason why its
interesting is that my apartment machines are on a NAT firewall so that we
dont have to pay extra for our hi-speed internet access). A screenshot for the server GUI while running
on Exciton follows.
You run it by opening the app, picking a port, and hitting the Start button, simple as that. If all goes well, it disables the port entry field and start button, which is a sign that you are now serving up live. If nothing happens, theres something invalid (your port is not a valid unsigned 16-bit integer, you dont have permissions to start on that port, or its being used). After the server starts, the text box labeled Exposed Text: is now live on the net, and can be accessed via Web Services (or Remoting, if the client uses HTTP/XML-SOAP). Heres how it looks like from the Pocket
PC side:
The most noticeable thing at first is
the lag when you first make the call to the Web Service. This might be a one-time web service
initialization cost, or maybe the cost of The Pocket PC GUI is the most sophisticated
client out of the all the provided clients, since this was the case that we
were concerned about. However, once the
first call goes through, successive calls after that are much faster. The GUI also has a configurable polling
timer, so you can set how fast you want to take a snapshot of the textbox. The time necessary to pass this is dependent
on the RTT (network Round Trip Time) between the client and the server, and
also on the amount of data being transmitted (which is dependant upon the amount
of contents in the text box). This is a rewrite of the client I
mentioned earlier in class today, to add the polling feature Dr. Wong
suggested, and to also incorporate the input panel that Will mentioned, since
prior to this afternoon I didnt know how to actually populate text fields on a
Pocket PC GUI. :-P All of this is done bypassing IIS and the ASP.NET
architecture. ASP.NET is mainly a means
of hosting a Web Service in IIS, and with a HTML centric mentality (HTML, not
HTTP or SOAP, which are both used in all forms of Web Services, such as Remoting or ASP.NET).
The demos from the first week of class, and most other online demos try
to use ASP.NET, but I think theyre considerably harder to deploy, and require
the users to have IIS running (and configurable), aside from the .NET
framework. In addition to the Web Services / Remoting
interactions that Ive been researching, Ive been in correspondence with Ryan
/ TJ / Jim about adapting their code to cooperate with Web Services. I hope it works, but Im not 100%
positive. Well have to test it soon. o Obstacles: Microsoft again, makes it hard to search
through their materials and books, and find pertinent data. I had to glean the process for doing this
from sections on both ASP.NET and Remoting Web
Services; there isnt really a tutorial on how to hook both of them together,
which is exactly what we need. o Proposed solution: I think we could make a contribution to the . ·
Development Process: Whats working: Microsoft Press
books are better than nothing, and Im finally getting used to which parts of
the .NET SDK Documentation are relevant to coding, and Ive finally gotten
used to the VS designer interface. Ive
been reading up a lot on C# constructs. o Whats not working: I feel like Im carrying a disproportionate load. I didnt really ask for it, and I tried to
enlist some help today in class, but to no avail. I dont think that everyone else is just
sitting around, but I often feel like I take on a task just as a proof of
concept (especially when it defies other peer opinions), and then end up
spending an inordinate amount of effort showing why I was right. o Proposals for change: Maybe I should suggest the
wrong pathways, and then not do a cursory follow-through, knowing that itll
fail, so that I cant spend too much effort on it. Just kidding.
Im not sure exactly what to do, I mean, there are only 2 more weeks of
class, though I do need to make sure that I dont fail my CAAM355 class
(and hence not end up graduating). Very nice
journal. -----
RJMORGAN
-------------------------------------------------------------------------------- ·
Status of the student's milestones o
Gains made The AR group made significant progress in identifying a workable
solution for Pocket PCs this week. I
completed my tasking of creating an ASP. o
Obstacles encountered I initially had
problems creating an ASP.NET web service on my local machine running Windows
Server 2003 RC1. I resolved access
denied issues by running as Administrator, but I still was not able create the
web service due to webpath-to-filesystem transIation issues (I suspect the filesystem
path is being truncated). Once I finally
created a web service on exciton, I was unable to get
the Application or Session state facilities to work across web method requests. Also I ran into problems using instance
variables in classes. o
Solutions proposed As for the first problem, I should install RC2 or confine my web
service work to Exciton. As for the
other problems, I may not have the WebMethod
attributes configured correctly to allow me to utilize the ASP. ·
Analysis of development process o
What seems to be working The AR group met a few times this week to determine the
feasibility of different solutions for the Pocket PC. Theos web service via remoting
looks like the most viable option since it avoids IIS and it is relatively easy
to set up. o
What seems to not be working We had some early problems
figuring out how our solution would tie in with the model and UI groups. It was not until we actually talked with
members of the groups that we were able to relay what we can do, given what we
expect them to do. It sounds silly, but
we basically didnt know how we would work together until we actually worked
together. Theres a very important
lesson here, folks. o
Proposals for change Id like to suggest that we
create a test team that attempts to use our product in as many scenarios as
possible, so that we can hammer out any small issues that we may not have run
into with our simple testing. If were going to
release this product, we definitely need to make sure it works and identify
limitations in the product manual. ABSOLUTELY!!! Nice
journal. -----
RYANAIP
------------------------------------------------------------------------------------ Development StatusWeve made a lot of progress this week, so I think that well have little problem getting the milestone completed. (Which means that we might actually finish the project!) We refactored the adapter structure so that the basic functionality (the stuff we need for the PocketPC) was isolated in one place look at the SpaceAdapter class. We also created the necessary interfaces so that we can
connect remote GUIs to a store running on a separate computer, with all of the
functionality exposed. Since were using
NetHub and IConnections for
the remote connections, we cant currently get through firewalls. We need to explore how to get around this,
which may involve using the same solution that we create for the PocketPC to
get remote access to our spaces. Process AnalysisCommunications are more important than ever as we finish up. The lines between the different groups are blurring, and we need to get our inter-group communication up to the level that weve developed within each group. I think were doing well in this, but we need to be sure to keep moving. Basically, what remains is to keep doing what were
doing. We need to keep moving in little
steps and keeping everyone informed when we make progress. Then no one will be left waiting for
something thats already complete. Nice journal. -----
THEWANG
---------------------------------------------------------------------------------- Milestone status: Gains made:
Obstacles encountered:
Solutions proposed:
Development Process:Whats working:
Whats not:
Change:
Nice
journal. ----- TJICE
----------------------------------------------------------------------------------------- ·
Milestone Status: Gains: I cleaned up the wizards. I have made the feature for a person to add
an item at a specific location ( basically pointing at a spot on the layout or
dragging to a spot on the layout. ) I
have tweaked some of the colors on the rendering side. Now in the client wizards, if multiple people
are trying to pick spots for a simulation, taken spots are indicated and cannot
be selected by the user. I have made a
method in the ISpaceLayout interface that takes a
point and returns whether or not it is within a space. I have worked with the Model Group on
decision making in the AI. I have
started on the GUI for the pocket pc implementation. I have made a proof of concept on saving and
loading IMallLayouts in XML format. o Obstacles: There
werent as many obstacles to overcome this time. There was one pain though. I dont like the Wizard that we are using. It was made by someone else ( I never like to
use other peoples code if all of its functionality is not understood. ) It doesnt have the best design in the world
to say the least. Certain issues were a
little tricky to overcome ( making sure that the layouts were marked as
unelectable as people picked spots within the layout. ) Proposed solution: The best
solution is to make a wizard from scratch because hacking was needed to solve
the problem. But do to our time
constraints that is just not feasible. ·
Development Process: o
Whats working: The groups are continuing to talk which is
good. I get a great deal of support from
the likes of Jim, Ryan, and Bryan in the Model Group. o
Whats not working: It doesnt seem like the workload is
being well distributed within groups.
There seems to be miracle men in each group that do a great deal of
work in crunch time to make things work.
These miracle men handle a lot of issues outside of the scopes of
their milestones to actually make this project work. And at the end of this semester I didnt see
this as being fair to them. o Proposals
for change: My proposal
for change would be to just ride out the rest of the semester. There are only a couple of more weeks to go
and we need to get this product in a presentable fashion ( which it is not in
right now. ) Nice
journal. -----
WRPRICE
------------------------------------------------------------------------------------ Milestone 5
Status: Ready & willing to help
Model/UI groups hook PPC to Win32 Gains Made: Much
discussion regarding the interface between PocketPC device GUIs and our largely
remoting-based model simulation. Two design
paths were proposed: one was to make remoting calls
inside a webservice on IIS that would provide
standard web methods to the client, but allow the client to initiate a
connection to any space anywhere on the accessible network (i.e. a single PPC
web service server, not web services on every machine running the model; the
other was to use remoting to emulate (forgive the
term) a web method without IIS the simulation process would host the methods
on each machine and WSDL would generate the PPC class to interface with the web
method-enabled classes of the model. Obstacles Encountered: Persistent state in web methods while
you have a persistent state as long as you hold a reference to the method-providing
class, if you lose network connectivity or lose the reference, you lose all the
state associated with your previous session and it would be difficult to
implement any server-side solution (possible, but very inefficient); web
methods are designed for a short lifetime. The model and current GUI use remoting for their connectivity, which already has one or
two abstraction layers between remoting and the
actual model/gui... and we might be adding more
layers... too many and it might fall over? Haven't had a chance to update NetHub to send a guiEvent to a
particular zone (aka: HubLink)
based on user input to the (soon to be implemented?) system tray icon and an
associated context menu. Solutions Proposed: Theo provided the most elegant solution with an emulated web method (that's not really an emulation) that runs atop the regular Win32 remoting subsystem and the model application, instead of relying on IIS. This gives us persistent state (as long as the model is running) and easy connectivity to the PPC devices using simple, serializable data. All that's needed is a class implementation with simple functions that return serializable data types that contain the information needed by the GUI. We can m |