There's a recent article in the local StarPhoenix newspaper that makes me angry. Here is is:http://www.thestarphoenix.com/life/Gormley+column+Halloween+good+time+offended/9081587/story.html
The author lists examples of people getting offended over various things, such as professional nurses being angry over sexualized depictions of their uniform, or people being offended over "Aboriginal, Asian, Mexican, Middle Eastern and gay depictions" in Halloween costumes. The author is saying that there is too much political correctness in the world and it's ruining all the fun.
I'm angry at the author's viewpoint. I'm wondering why this viewpoint is being so aggressive about wanting to protect their "right" to do or say anything they want. They seem to wish that those who are being hurt would just be quiet.
Here's a false assumption in his article: Society was doing just fine, but then all of the sudden, people started getting offended. We are all becoming "super-sensitive crybabies".
Well, I have news for anyone holding this viewpoint. Maybe everything was "just fine" to you, but you're not the one facing racism or sexism every day. There are people who face racism and sexism every day. Please think about that for a moment. There are people who face racism and sexism every day. (or homophobia, or abelism, or other -isms).
When others point out that they are offended, they are
communicating that their world is different than your world. They are pointing out an example of something that is racist or sexist so that you can see it too, because if you are not a woman or if you are a white person, you might not experience these things regularly and you might not know what it feels like. But when someone points out that something you think is fine is actually hurtful to them, then your comfortable day is "interrupted", and maybe this makes you angry.
You could choose to listen, and use your creativity to come up with an unoffensive Halloween costume. You could make a choice to try and make the world less racist, less sexist, less homophobic, (and many other things!). But instead, the author seems to think that his right to do or say anything he wants is more important than letting others have what he has: a world where everything is already "just fine" and the worst thing that could happen is that someone else disrupts his comfortable state of affairs and says that they're offended.
A Computer Scientist's personal research notes Technology, Research, Spirituality
Education literature, frustrations
I am reading the Education literature about things like "assessment for learning". I want to know what are the open questions, what are some issues that researchers have encountered. Where do they wish they had more data? What are some obstacles to developing the theories? What challenges have popped up when implementing theories in the real world classroom?
But I keep finding in the literature that there is lots of prescriptive advice, but not much discussion about where theories fall short. I get things like: "Practical strategies for linking assessment and instruction", "Assessment for teaching", "Designing from outline to teaching"...... But most articles don't identify gaps or challenges or places to pick up for future work. I find this frustrating. UGH!!! But I have to remind myself that this is not a scientific discipline. So I have to be patient and keep reading. (But the literature is busting "how to" information. I don't want advice! I want to know where the gaps are! UGH!)
But I keep finding in the literature that there is lots of prescriptive advice, but not much discussion about where theories fall short. I get things like: "Practical strategies for linking assessment and instruction", "Assessment for teaching", "Designing from outline to teaching"...... But most articles don't identify gaps or challenges or places to pick up for future work. I find this frustrating. UGH!!! But I have to remind myself that this is not a scientific discipline. So I have to be patient and keep reading. (But the literature is busting "how to" information. I don't want advice! I want to know where the gaps are! UGH!)
How to create a new Dynamic Web Project in Eclipse from a Subversion Checkout
Hi, here are the steps to checkout a project from Subversion and get it running in Eclipse using the built-in Tomcat. Thanks to Chris Brooks for encouraging/inspiring me to figure out a better way to set up my development environment after watching me use clunkier habits. ;) Apparently, this style of configuration is called "Hot Code Replacement". Three's a cool name for ya.
1. In Eclipse, choose New -> Dynamic Web Project (might have to dig for this type under "Other -> Web -> Dynamic Web Project")
2. For Project Name, type the project (ex, "myproject") , or, if you want the code deployed into the root of your Tomcat, type "ROOT".
3. For "Source folders on build path", I deleted the "src" that's there by default because we will be getting our own "src" from subversion.
4. For "Context root", I left that as-is (ex. your project name or "ROOT"). For "Content directory", change this from "WebContent" to "web" so as to match the actual folder name in SVN. (This folder will automatically get overwritten when we do the checkout.)
5. Now right-click on your project folder in the Project Explorer and choose Team -> Share Project, then pick SVN, then pick the repo's URL, then choose "Use specified folder name" and surf to the "trunk". *** Eclipse might add an extra folder at the end of the svn URL, so you might need to delete that. You can comment "Initial import". Next you might get a warning saying the specified folder already exists in the repo. Say YES it's ok to check out the folder and connect it to the existing location.
6. After everything is checked out, right click on the new "src" file that has just been created and choose Build Path -> "Use as source folder". Also do this with the "lib" folder.
7. Right click on the project folder and choose Properties. Next go to Java Build Path, then the Libraries tab. Click "Add JARs" and individually add each Jar file that was in your lib folder. Click OK.
8. Right click on the project folder and choose Properties and go into Deployment Assembly. Hopefully it will have automatically mapped "/web" to "/" for you, but if not you can add that manually. (i.e. Source should be "/web" and Deploy Path should be "/")... do this by going Add-> Folder and navigate to "web". This will create a new entry in the little table, then you can double click the cell under the "Deploy Path" column to change it to WEB-INF/classes. Click Apply and OK.
9. Similarly, map "/src" to "WEB-INF/classes". For me, I had to change "/lib" to "WEB-INF/lib" (it was set to WEB-INF/classes for me). I also had to individually map collections of jars in subfolders in the lib, such as "/lib/jerseyclient" to "WEB-INF/lib", and map "lib/log4j" to "WEB-INF/lib", and "lib/mysql" to "WEB-INF/lib".
9.b) We also have to figure out Deployment Assembly stuff for .properties files, context.xml, web.xml etc.. Normally, I keep all my configuration files in a "conf" folder, and I have one sub folder for "dev" and another sub folder for "prod". However, Eclipse doesn't let you map individual files in the Deployment Assembly. This sucks and it's ugly, but we have no choice here but to COPY the properties files in "Dev" into the appropriate folders, i.e. copy context.xml int META-INF, web.xml into WEB-INF, and most other things into WEB-INF/classes. A logical way to think about this is that the "conf" folder with "dev" and "prod" is good for producing war files with ANT. But if you want hot code deployment, you have to develop with the configuration files hardwired into the directory hierarchy.
10. Next go under the Servers tab. If you don't have it, it's under Window ->
Show View -> Servers. Now if you don't have any servers set up yet, you'll see a link to Define a new server from the new server wizard. Click that and choose a Tomcat server, and Browse to whereever you have Tomcat installed. (If you don't have it installed, all you have to do is download and unzip anywhere.) Right click on the Tomcat server and choose "Add and Remove".
11. Next, you can move any of your Dynamic Web Projects from the "Available" column to the "Configured" column. Move your project over to the right and click Finish.
12. Now under Servers you should be able to right-click Tomcat and choose Start. It should show you a familliar Tomcat console as it starts. Next click the little globe icon in the tool bar, "Open Web Browser" and type in http://localhost:8080
13. At step 12 you might actually see your web app. Woo hoo! Or, you might get a blank white screen. Awwwe. I feel your pain and you have my empathy. Here are some things you can try if it's blank.
14. Check the console (it's a tab in Eclipse). If this tab isn't visible for you, call it up with Window --> Show View --> Console. One time, I noticed I was getting a "Class Not Found" error for one of my own classes! This was because the complied Java classes weren't being copied to metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps (in the Eclipse workspace). So, I manually created a mapping in the Deployment Assembly from the "build" folder to WEB-INF/classes. I don't think that should be necessary, but, what can I do, it wasn't working, and this fixed it. :\
15. Right click on the Tomcat under the Servers tab and click Publish. This should copy your files into the Eclipse local tomcat. If you are curious, this is located in your Eclipse workspace folder, under metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps. (Sometimes that tmp0 might be a tmp1 so it's best just to use your Windows Explorer or Mac Finder to search for the folder called "wtpwebapps") Sometimes you have to right click the Tomcat under the Servers tab and click "Restart in Debug". Sometimes you have to right click the Tomcat and click "Clean" or "Stop" or quit Eclipse altogether and go back in. Another thing I did was double-click on the Tomcat Server then at the very bottom click the "Modules" tab (at the bottom), then, you'll see a table where one of the columns is Auto Reload (for your project). Edit this row, then in the popup window un-check "Auto reloading enabled" then Save. Finally, really double check to make sure the lib folder is getting published to WEB-INF/lib and not WEB-INF/classes!!
16. b. Another problem I had was errors popping up in the Problems window, such as "JspWriter cannot be resolved to a type", even though the jar was RIGHT THERE. I solved this one by turning OFF the Jsp validator then turning it back on.
17. Finally you should be able to see your system in the Eclipse browser window. Try changing one of the JSP files and saving it, then push refresh in the Eclipse browser window. Instant feedback!!!
The following resources helped me to create these directions. Huge thanks to those developers!!
1. In Eclipse, choose New -> Dynamic Web Project (might have to dig for this type under "Other -> Web -> Dynamic Web Project")
2. For Project Name, type the project (ex, "myproject") , or, if you want the code deployed into the root of your Tomcat, type "ROOT".
3. For "Source folders on build path", I deleted the "src" that's there by default because we will be getting our own "src" from subversion.
4. For "Context root", I left that as-is (ex. your project name or "ROOT"). For "Content directory", change this from "WebContent" to "web" so as to match the actual folder name in SVN. (This folder will automatically get overwritten when we do the checkout.)
5. Now right-click on your project folder in the Project Explorer and choose Team -> Share Project, then pick SVN, then pick the repo's URL, then choose "Use specified folder name" and surf to the "trunk". *** Eclipse might add an extra folder at the end of the svn URL, so you might need to delete that. You can comment "Initial import". Next you might get a warning saying the specified folder already exists in the repo. Say YES it's ok to check out the folder and connect it to the existing location.
6. After everything is checked out, right click on the new "src" file that has just been created and choose Build Path -> "Use as source folder". Also do this with the "lib" folder.
7. Right click on the project folder and choose Properties. Next go to Java Build Path, then the Libraries tab. Click "Add JARs" and individually add each Jar file that was in your lib folder. Click OK.
8. Right click on the project folder and choose Properties and go into Deployment Assembly. Hopefully it will have automatically mapped "/web" to "/" for you, but if not you can add that manually. (i.e. Source should be "/web" and Deploy Path should be "/")... do this by going Add-> Folder and navigate to "web". This will create a new entry in the little table, then you can double click the cell under the "Deploy Path" column to change it to WEB-INF/classes. Click Apply and OK.
9. Similarly, map "/src" to "WEB-INF/classes". For me, I had to change "/lib" to "WEB-INF/lib" (it was set to WEB-INF/classes for me). I also had to individually map collections of jars in subfolders in the lib, such as "/lib/jerseyclient" to "WEB-INF/lib", and map "lib/log4j" to "WEB-INF/lib", and "lib/mysql" to "WEB-INF/lib".
9.b) We also have to figure out Deployment Assembly stuff for .properties files, context.xml, web.xml etc.. Normally, I keep all my configuration files in a "conf" folder, and I have one sub folder for "dev" and another sub folder for "prod". However, Eclipse doesn't let you map individual files in the Deployment Assembly. This sucks and it's ugly, but we have no choice here but to COPY the properties files in "Dev" into the appropriate folders, i.e. copy context.xml int META-INF, web.xml into WEB-INF, and most other things into WEB-INF/classes. A logical way to think about this is that the "conf" folder with "dev" and "prod" is good for producing war files with ANT. But if you want hot code deployment, you have to develop with the configuration files hardwired into the directory hierarchy.
10. Next go under the Servers tab. If you don't have it, it's under Window ->
Show View -> Servers. Now if you don't have any servers set up yet, you'll see a link to Define a new server from the new server wizard. Click that and choose a Tomcat server, and Browse to whereever you have Tomcat installed. (If you don't have it installed, all you have to do is download and unzip anywhere.) Right click on the Tomcat server and choose "Add and Remove".
11. Next, you can move any of your Dynamic Web Projects from the "Available" column to the "Configured" column. Move your project over to the right and click Finish.
12. Now under Servers you should be able to right-click Tomcat and choose Start. It should show you a familliar Tomcat console as it starts. Next click the little globe icon in the tool bar, "Open Web Browser" and type in http://localhost:8080
13. At step 12 you might actually see your web app. Woo hoo! Or, you might get a blank white screen. Awwwe. I feel your pain and you have my empathy. Here are some things you can try if it's blank.
14. Check the console (it's a tab in Eclipse). If this tab isn't visible for you, call it up with Window --> Show View --> Console. One time, I noticed I was getting a "Class Not Found" error for one of my own classes! This was because the complied Java classes weren't being copied to metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps (in the Eclipse workspace). So, I manually created a mapping in the Deployment Assembly from the "build" folder to WEB-INF/classes. I don't think that should be necessary, but, what can I do, it wasn't working, and this fixed it. :\
15. Right click on the Tomcat under the Servers tab and click Publish. This should copy your files into the Eclipse local tomcat. If you are curious, this is located in your Eclipse workspace folder, under metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps. (Sometimes that tmp0 might be a tmp1 so it's best just to use your Windows Explorer or Mac Finder to search for the folder called "wtpwebapps") Sometimes you have to right click the Tomcat under the Servers tab and click "Restart in Debug". Sometimes you have to right click the Tomcat and click "Clean" or "Stop" or quit Eclipse altogether and go back in. Another thing I did was double-click on the Tomcat Server then at the very bottom click the "Modules" tab (at the bottom), then, you'll see a table where one of the columns is Auto Reload (for your project). Edit this row, then in the popup window un-check "Auto reloading enabled" then Save. Finally, really double check to make sure the lib folder is getting published to WEB-INF/lib and not WEB-INF/classes!!
16. b. Another problem I had was errors popping up in the Problems window, such as "JspWriter cannot be resolved to a type", even though the jar was RIGHT THERE. I solved this one by turning OFF the Jsp validator then turning it back on.
17. Finally you should be able to see your system in the Eclipse browser window. Try changing one of the JSP files and saving it, then push refresh in the Eclipse browser window. Instant feedback!!!
The following resources helped me to create these directions. Huge thanks to those developers!!
- http://blog.redfin.com/devblog/2009/09/how_to_set_up_hot_code_replacement_with_tomcat_and_eclipse.html#.UlWbkyQTGBA
- http://www.ibm.com/developerworks/library/os-eclipse-tomcat/
- http://www.coreservlets.com/Apache-Tomcat-Tutorial/tomcat-7-with-eclipse.html#More-Info
- http://stackoverflow.com/questions/2273548/associating-existing-eclipse-project-with-existing-svn-repository
Labels:
eclipse,
java,
subversion,
tool configuration
First Coursera Course (Recommender systems)
This fall I signed up for Introduction to Recommender Systems on Coursera. I'm really appreciating the review/introduction because my thesis is generally related to the field of recommender systems.
While working on one of the first assignments, I remember feeling anxious because I knew there was a "peer evaluation" component with a specific window of time in which I would have to look at peer assignments. I hunted all around the site and I couldn't find the dates to mark my calendar to remind myself that I would have to pay attention. I concluded that the dates hadn't been announced yet. "Oh well," I thought, "I'm sure they'll send me an email or something." So, I submitted my assignment and I trusted that someone would tell me when I had to come back to do the peer evaluation part. Big mistake! I logged in recently only to discover that I missed the deadline. So, my assignment score was lowered because I did not evaluate any peer assignments. Gah! That is discouraging.
Oh well. I'm not taking the course for credit anyway. ;)
Here are some of my notes on Module 1.
While working on one of the first assignments, I remember feeling anxious because I knew there was a "peer evaluation" component with a specific window of time in which I would have to look at peer assignments. I hunted all around the site and I couldn't find the dates to mark my calendar to remind myself that I would have to pay attention. I concluded that the dates hadn't been announced yet. "Oh well," I thought, "I'm sure they'll send me an email or something." So, I submitted my assignment and I trusted that someone would tell me when I had to come back to do the peer evaluation part. Big mistake! I logged in recently only to discover that I missed the deadline. So, my assignment score was lowered because I did not evaluate any peer assignments. Gah! That is discouraging.
Oh well. I'm not taking the course for credit anyway. ;)
Here are some of my notes on Module 1.
- recommender systems, use of "persistent preferences"
- "information retrieval"
- where content base is relatively static, invest in indexing
- "term frequency inverse document frequency"(weighting measure)
- how often the term appears in a specific document vs. the rest of the corpus
- we don't care about a term if it appears everywhere, while we care a lot about a term if it's rare
- "information filtering"
- preferences are static but the content is dynamic
- invest in creating user models
- "collaborative filtering"
- where preferences are more complex than just keywords
- keywords, annotations, referrals
- recommendation vs. prediction
- one is an actual calculation of something we expect they will like
- vs. an estimate of what their rating would be on a new item. So a prediction will quantify ANY item, even if it looks like they will dislike it a lot; the recommendation has an implication that they will like it.
- "ephemeral personalization" is based on current browsing activity
- explicit vs organic
- refers to the presentation of the items, i.e. "Recommendations for You" (explicit) vs. strategically placed items on the page or adjusted navigation (organic)
- "preferences" are akin to the "user model"
- I haven't been looking at keywords at all -- only annotations, referrals, outcomes. However, I do consider prerequisite relationships.
- When I create a recommendation of sequences, this could either be used explicitly (i.e we suggest first you do this time, then this, then this) vs. organically (here is a trail we have laid ahead, feel free to go in that general direction or not...)
- we did an assignment in Excel where we we calculated "movies that most often occur with a given movie, M" using the "x + y / x" method.
- For example, to calculate the relative occurrence of another movie N, with movie N, just count the number of people who saw BOTH movies and divide by the number of people who saw the first movie.
- gives a number to represent how much the items "occur together".
- banana trap
- what was that again? Making a useless (but correct) recommendation because everyone buys that anyway?
Subscribe to:
Posts (Atom)