HCI Researcher & Designer
A portfolio showcasing academic and industry works in games and health.
I completed my MSc in Human-Computer Interaction at the University of Waterloo using research through design to explore solutions to public health issues.
Currently, I am a User Researcher at Ubisoft Montreal working in usability, accessibility, and balancing in a competitive Triple-A title (Rainbow Six Siege).
Chan, T., & Wallace, J. R. (2018). Changing Peer Support Attitudes with Avatar-based Gamification. In Computer Human Interaction. Association for Computing Machinery.
Chan, T., McMurray, J., Wallace, J. R., & Sidahmed, A. (2018). SmartSurveys: Does context influence whether we'll share healthcare experience data with our smartphone? . In ACM Conference on Interactive Surfaces and Spaces 2018. Association for Computing Machinery.
Chan, T., McMurray, J., Levy, A. Marie, Wallace, J. R., & Sveistrup, H. (2020). Post-Hackathon Learning Circles: Supporting Lean Startup Development. In CHI 2020.
As my Masters Thesis project, I created Merlynne which asked players to provide stress management advice to others within a fantasy game environment. Findings from a mixed-methods study suggested that players using stereotypically "helpful-looking" avatars were more motivated to submit empathetic advice.
OCT 2017 - SEPT 2019
As a researcher, I:
The player approaches NPCs in a fantasy map and then provides advice in triggered dialogue boxes.
A breakdown of the UI.
Findings guide design suggestions to motivate more effective advice from users on mental health peer support platforms,.
I designed a mixed-methods, exploratory study, hypothesizing that players using a helpful avatar in Merlynne would have higher usage rates (time, words, players helped), higher use of the CBT format which includes empathy, and a higher change in helping attitudes scores (HAS) than players using an unhelpful avatar.
Merlynne was created in consultation with health groups, ethics boards, HCI experts, and existing literature in HCI and mental health.
I made study decisions to factor in needs of stakeholders:
Iterative design was used.
Above are two iterative prototypes. A puzzle game and a space exploration game.
For my research on avatar influence, two avatar conditions (Monster and Cleric) were created based on media arts literature with feedback from peers studying language in gaming.
A 2 hr in-lab study was held with 36 male participants recruited from a graduate mailing list and posters from the University of Waterloo campus. Participants completed pre-post surveys containing HAS scales before and after a 30-40 minute play session using a random avatar condition, followed by a semi-structured interview.
Peer support responses collected in-game from participants were assessed for adherence to CBT format by myself and two research assitants with whom I achieved high inter-rater reliability with, with the dataset. Data-driven thematic analysis using open and axial coding was used to interpret interviews, supported by inferential statistics with non-parametric tests (Mann Whitney U) of usage data including aforementioned responses coded for CBT format adherence.
*Full paper is currently in submission to CSCW 2020.
Chan, T., & Wallace, J. R. (2018). Changing Peer Support Attitudes with Avatar-based Gamification. In 3rd Symposium on Computing and Mental Health: Understanding, Engaging, and Delighting Users. Massachusetts Institute of Technology.
Chan, T., & Wallace, J. R. (2018). Changing Peer Support Attitudes with Avatar-based Gamification. In International Conference on Persuasive Technologies.
Chan, T. (2018). Designing for Engagement in Peer-to-Peer Support Using Cognitive Behavioural Therapy with Gamification and the Proteus Effect. Inter-University Workshop, 2018. Toronto. Retrieved from https://iuw2018.wordpress.com/session2/#4
Chan, T. (2019). DO FEMALE AVATARS ENCOURAGE MENTAL HEALTH SUPPORT IN GAMIFIED PEER TO PEER (P2P) COGNITIVE BEHAVIOURAL THERAPY (CBT)?. Retrieved from https://uwaterloo.ca/w3-represents/do-female-avatars-encourage-mental-health-support-gamified
Chan, L. Ting. (2019). Leveraging the Proteus Effect to Motivate Emotional Support in a Serious Game for Mental Health. Public Health and Health Systems. Retrieved from https://uwspace.uwaterloo.ca/handle/10012/15199
Specific to technical development, there were many Unity techniques I later learned which would have benefited Merlynne such as linking all text objects to a database (e.g. Firebase, or a spreadsheet) for easier content management, using tags to classify NPCs, and using Scriptable Objects to manage the status of interactive objects.
I would have also stored the incoming data natively to an excel spreadsheet to reduce the risk of losing Google conenctivity or the status of my account if it were to be used by future researchers.
The following questions were identified:
I pitched an idea of a "first aid kit for mental health" and then grew it into a sustainable venture with international sales with the goal of delivering stress management tools to high-stress student populations.
2016 - now
As a product designer, I balanced costs with customer needs to design, resource, and develop products which have been sold worldwide, leading to a profitable business.
*As the company founder, I took on many, many other roles including accounting, sales, web development, HR, and often janitor.
PASS Inc. has since developed more products.
Above is the development process of the PASS kit. Mixed-methods testing revealed that although stress levels of students did not decrease, students who received the PASS kit felt more equipped to deal with stressors than their counterparts.
The PASS kit contains:
Further iterations were based on discussions with customers who shared their needs. Through discussions with customers we learned:
Variations over the years are documented below.
Illuminate is an interactive museum display which emphasized hope in a future with climate change. The project pivoted to a mobile app as COVID-19 led to the closure of the museum exhibition.
OCT 2019 - JUN, 2020
As lead artist, I worked concurrently with the developer and created art assets in Adobe Photoshop for Unity. I also performed user-testing, and designed an art style (ie. line weight, colour) friendly to non-artists tasked with scaling the Illuminate project in the future.
Due to COVID-19 disruptions, the display was pivoted to a mobile app in February 2020. I created all art assets in discussion with climate scientists, and performed user-testing while translating results into concrete changes to the develope.
Adam Leung: Developer
Recurring meetings took place within the production team (writer, developer, artist), and separately within research team (writer, administrative staff, IC3) to support concurrent workflow with competing schedules. Communications were exchanged internally on Slack and externally via email and a shared OneDrive. The management system was consistently used and effectively led to a scalable prototype developed by the time the writing was finalized.
The developer and I (artist) were not scheduled to continue our contracts, thus if new modules were to be added post-January, both the game environment and the art assets must be easily learnable by new members. In the case no new art talent was available, I purposefully used a low-barrier art style. Barriers to artwork were seen as poor art fundamentals such as (1) line control; (2) colour theory; and (3) drawing from memory. Thus, the art style I chose used feathered brushes which did not require precise line weight control, a colour palette was pre-chosen for future art, and realistic proportions were used for future artwork to be produced by tracing photos.
MUSEUM space Game loops were kept short (30 secs to 2 min play), asking players only three questions each landscape scenario, with 3-4 options per question to ensure replayability. A second monitor with a trailer video was also set up to display potential gameplay to passersby to garner interest in interacting.
A finished prototype of one landscape (coastal) was presented as a demo to IC3, with the narrative and artwork of remaining landscapes provided as text and image files. Through email discussions and a working shared spreadsheets file, IC3 provided feedback in writing with relevant sources. Narrative and artwork was updated with their insight.
External to the core team, testing was performed on student volunteers in the Games Institute over lunch on their personal mobile devices. Students were asked to play through scenarios and voice aloud their thoughts and concerns during the playthroughs. Inconsistencies between narrative and art were brought up, as well as minor confusions in UI (e.g. buttons were not obviously leading to intended screens). Changes were applied quickly from testing and tested again internally before launching.
The reasons for the changes were to emphasize the economic cost to climate change mitigation, but also to better support the game with update climate science. Given the extra time for production, more input from climate scientists was also possible.
What I would have done differently I prioritized art assets for the Illuminate interface, but in retrospect the art should have considered the installation concept as a whole from print advertisements to video trailers. The colour schemes and iconography chosen for the gameplay were lighter in colour and storybook-like to appeal to both children (storybook readers) and adults (storybook buyers). Although effective for the visual-novel game interface, the style may not be as attractive to the passerby in a busy public space, especially when compared to previous displays by the Games Institute like Quantum Cats, which has graphics easily translatable to its promotional materials.
In the future I would also use vectors for images for better scaling across different screen sizes and I would be interested in exploring the .psb file setting instead of saving each layer (through batch processing script) to be imported into Unity to enable animations.
We hosted a post-hackathon event inviting seniors with lived experiences to help hackathon winners refine their health 'hacks' for commercialization. Follow-up interviews revealed the strengths of using Learning Circles, an indigenous model of knowledge sharing, in the software development life cycle (SDLC).
APR - DEC, 2019
As a researcher, I performed thematic analysis on interviews with NVivo to interpret and present findings into a case study to publish at an ACM conference, CHI 2020.
NVivo was used for thematic analysis where three researchers independently coded interviews while reflexively journaling. Codes were compared and themes were identified with group discussion.
Post-hackathon Learning Cirles pose as a method to accelerate startup development and has attracted interest from other researchers in the hackathon space for data comparison.
Levy, A. M., McMurray, J., Chan, T., & Wallace, J. R. (2019). Building regional health ecosystem capacity: Post-hackathon learning circles to support early co-design of social isolation solutions for older adults. In 5th Annual AGE-WELL Conference.
Chan, T., McMurray, J., Levy, A. Marie, Wallace, J. R., & Sveistrup, H. (2020). Post-Hackathon Learning Circles: Supporting Lean Startup Development. In CHI 2020.
Chan, T., McMurray, J., Levy, A. Marie, Wallace, J. R., & Sveistrup, H. (2020). Hallman Lecture Series with Jane Philpott. Post-Hackathon Learning Circles: Supporting Lean Startup Development. Waterloo, Canada.
I implemented SmartSurveys, a research tool prompting consumers to provide service feedback via smartphones based on geographic location ('geolocation'). The study goal was to identify addressable barriers that impact the adoption of smartphone technology to gather patient experience data in health care spaces.
APR 2017 - DEC 2018
As a researcher, I wrote provincial grants (OCE) and ethics applications to two university boards (Wilfrid Laurier University (WLU), University of Waterloo (UW)), while creating the SmartSurveys on MetricWire and its onboarding materials with their app developers.
MetricWire is a data collection tool developed in Kitchener-Waterloo by the startup MetricWire Inc., who were also collaborators on the NSERC-Engage grant funding SmartSurveys. In regular meetings with the MetricWire team, I came to discover the limitations and opportunities with their tool concurrently with their startup development.
Participants were recruited online and directed to enroll in the SmartSurveys study on the MetricWire app through a one-page website. The website linked to consent letters and installation guides hosted on Google Drive. When SmartSurveys was installed, participants would complete an intro survey to complete enrollment, then be given surveys through MetricWire every time they dwelled in a geofenced location.
Automatically measured variables included situated usage data such as time spent in a geographic area, time between entering a location and submitting feedback, and between the time of exit and feedback submission. Overall activity data like the number of submissions, and the number of words per submission was also tracked to be compared between locations.
I trained two undergraduate research assistants to collect the geographical coordinates and radial size of service providers in Kitchener-Waterloo based on Google map data.
Four lists of geofences were created, containing 100-150 locations on each list.
* On the WLU or UW campus
** In the Kitchener-Waterloo region
After the locations were programmed into the SmartSurveys tool, we tested the sensitivity of the MetricWire app to geofences on foot using different smartphones and operating systems (iPhone, Android).
There were overlapping geofences due to multi-service buildings with multiple floors with different services. It was difficult to differentiate services leading to the over-triggering of surveys. As a solution, an extra question was asked in multi-service buildings asking participants to indicate where they were in a form field.
Some geofences also did not fire when entered, as Android phones were not registering the geofence as quickly to save battery life. This posed as a study problem as iPhone and Android users would have inconsistent participant experiences. As a short-term fix, I changed the trigger from 'dwelling in an area' to 'exiting an area' to at least ensure all participants received notifications after service provision instead of some during and some after.
Chan, T., McMurray, J., Wallace, J. R., & Sidahmed, A.. (2018). SmartSurveys: Does context influence whether we'll share healthcare experience data with our smartphone? . In ACM Conference on Interactive Surfaces and Spaces 2018. Association for Computing Machinery. Retrieved from https://dl.acm.org/citation.cfm?id=3279912
One major barrier to implementation was the inconsistency of geofences firing for different smartphone users. Despite the investment in tool setup, I would have explored other ways to measure contextual sensitivity.
The study could have sent participants surveys to complete through MetricWire according to a predetermined time schedule. Participants would report where they were and offer feedback if willing. Although less relevant data points may be collected (e.g. if the participant was at home most of the survey times), it would have been independent of GPS error.
LIFEHACK was created by youth at a hackathon in Ulaanbaatar to teach Mongolian students about the effects of daily choices based on the creators' own experiences. I proposed design and development methods to reduce their future costs for commercialization.
SEPT - NOV , 2018
As a researcher, I documented methods and findings for presentation at a local conference, and identified lessons learned which can be applied to future global health projects.
Social media post by LIFEHACK showing their high-fidelity wireframes.
It became known in future meetings that a prototype needed to be developed for LIFEHACK to renew funding from Unicef Mongolia, thus the short runway for development was acknowledged.
In review of the LIFEHACK's vision, resources, and talent, the teams' strengths laid in their lived experiences as youth growing up in Mongolia, connections to experts in Unicef Mongolia, and artistic talent (graphic design, photography, writing).
Through two more video calls, we further understood the vision of LIFEHACK to bring the game into middle school classrooms, and shared our intentions to use concepts from Self-Determination Theory (SDT) and iterative testing in the SDLC to help them develop their project.
All opinions were presented as suggestions in the interest of faster development, and it was made clear that they were to prioritize their vision if they saw conflict in suggestions.
This consultation effort was presented as a poster as an example of global collaboration health research and game development.
Chan, T., Costa, M., Somani, N., Morita, P., & Wallace, J. R. (2018). LIFEHACK - A Serious Game and Simulation by Mongolian Youth to Educate and Motivate Students to make Healthy Choices in Mongolia. Global Health Students and Young Professionals Summit, 2018.
It was assumed that the availability of developers and classrooms in Mongolia were similar to the Canadian environment. If time and opportunity had allowed it, it would have been worthwhile understanding the startup and game development ecosystem (e.g. talent costs) in Ulaanbaatar outside of LIFEHACK's experiences to provide more insightful advice.
I created a series of 3 event posters for the University of Waterloo's Games Institute (GI) Game Jam in hopes of attracting more women+ and non-STEM students to the event. The resulting gender ratio increased compared to previous attendance.
SEPT 2017 - JUNE 2018
As a illustrator, I created character artwork for three posters for three terms consistent to a theme using Adobe Photoshop and Canva.
Senior members of the GI Game Jam committee believed that potential participants felt they are unable to participate because they (1) had little or no knowledge of scripting; and (2) had no team to participate with. These misconceptions were noticeably evident among non-computer science students and non male-identifying individuals.
To address these points, I deliberately designed the posters to attract first-time 'jammers.' The poster listed multiple roles in game development in addition to development roles, such as artists, musicians, and writers to appeal to jammers uninterested in programming or wished to create non-digital table-top games. Both teams and solo-jammers were explicitly welcomed to invite jammers with or without team members, and a clear event definition ('Make a game in 48 hours') was added. To purposefully appeal to those interested in the arts, character art was used on the posters in mimicry of anime, movies, and general pop culture. Character art was illustrated in Photoshop CS5.
I featured a feminine character on the poster with intentions of relating them to young women+ participants. The glasses and haircut choice was based off a previous GI Game Jam poster character, and the pink VR headset was added to promote VR game-making. Feedback was focused on the legibility of the URL and the brightness of the ink when printed.
The colour palette was inspired by Into the Spiderverse, a popular film at the time of event recruitment. Feedback was concerned about the legibility of the small descriptive text over a heavily patterned background as well as the need to add more sponsors later on.
Inspired by recent jokes about overpopulation of Canadian Geese in the Region of Waterloo, Ontario. The theme that term was VR and I wanted to depict VR in a comedic way to reduce intimidation to newcomers.
Although this project encouraged experimenting with designs, I would have liked to have standardized a poster layout (e.g. URL location, title position) to be reused. This choice would have sped up design work, built a more consistent brand, and sped up poster-making for future GI Game Jam teams if design talent was unavailable.
Since this project I have also become much better at design principles such as fonts and composition, if I were to re-do them, I would have improved the focal points and flow of items.
My team Roze, later renamed Roze Labs, were the overall winners of the Hack4Health (H4H) 2.0 hackathon, hosted by MAREP at the Conrad School of Entrepreneurship at the University of Waterloo. We designed and secured funding for a tool for young women newly diagnosed with Multiple Sclerosis (MS).
NOV 2016 - FEB 2018
As a researcher, I reviewed literature, and contributed to grants and ethics applications for research after the hackathon.
Marium Kirmani: UX Design
Rui Su: Clinical Expert
Lori-Ann Williams: Web Development
We returned to literature research to find MS had its highest prevalence in women, with the common age of onset between 25-35 years. For the duration of the hackathon we chose to focus on designing a product which can motivate young women recently diagnosed with MS to manage their fatigue.
Her goals:
Her frustrations:
In considering the persona, we decided the app needed to:
My team member Marium Kirmani created the above mock-ups for our 3 minute pitch showing the partial user flow after group discussion. The name Roze alludes to the feminine name 'Rose', as well as the past tense of rise.
Team photo (minus myself) with Dr. Lisa Loiselle (left) and Dr. Karla Boluk (right).
Following our win, we were given the opportunity to apply for a MS Society grant of $15 000 which we were successful in receiving with Dr. Boluk as our PI. We recognized that Roze's concept was feasible yet it was important to further understand our end-user before designing a solution.
Between 2017-2018, a series of one-on-one interviews with MS experts and young women with MS were conducted after ethics approval with an ethics application lead by Rui and Marium as Roze Labs who wished to take the project further as a entrepreneurial endeavour. At this point, I was no longer actively involved but provided consultation in an advisory role given my qualitative research experience. Results were shared at the MS Society September 2018 in Calgary by Rui and Marium, showing the systemic challenges facing young women with MS, while healthcare professionals acknowledged the need for more holistic tools for patients with MS.
The Roze Labs project delivered:
The technology use patterns of women with MS should be adequately explored independent of MS. In retrospect, inclusion of questions about attitudes towards technology in the interviews would have portrayed the MS patients as individuals beyond MS and could have revealed novel patterns worthwhile to HCI research. We should have tested our assumptions that women with MS approach exercise differently than women without MS, women with other health conditions requiring regular visits with health professionals, or other genders.
I would have also looked for publishing opportunities outside of the health space as I see this project being a very interesting case study of co-creation in computer science.
5in5 Pharmacy was my first introduction to UX and gamification (interpreting works of B.J. Fogg). As a co-op student under Dr. Kelly Grindrod, I created an MVP based on contextual inquiry with community pharmacists. My role eventually evolved into content management. The project is now a webapp with over ten thousand pharmacy professionals registered and funded by the Ontario College of Pharmacists (OCP).
SEPT 2014 - MAY 2015
As a designer and developer, I created a functional MVP using Articulate Storyline for research based on pharmacist feedback and communicated with an app development firm and graphic designer.
There was interest in exploring gamification to sustain the motivation of the pharmacist to use 5in5, but further research was required to understand the needs and wants of practicing pharmacists.
Wireframes created by Brad Jennings, a predecessor in my role.
In response to these observations, the following additions were added to the 5in5 design:
'Would Susan the competent pharmacist renew the blood pressure drug?'
'Would you?'
The pharmacist was encourage to question the conflict between their knowledge and actions.
User Experience Questionnaire (UEQ) was later used when the 5in5 tool was matured and hosted online by hired developers and tested by students at the School of Pharmacy. I was not as involved in the research at this stage but had processed the data for SPSS analyses.
The 5in5 app has improved since 2014 in visual design, but its use and user flow remains the same. Upon registration, the pharmacist would be led to a screen with activity options. The pharmacist can then complete quizzes and contribute feedback to improve the tool with other pharmacists.
When Monolith tookover the 5in5 tool's development, my role shifted to content creation by reviewing modules created by pharmacy educators with community pharmacists. I set up content management systems which tracked reviewers, contributors, and testers.
However, a large part of the role included testing and using a content management system developed by Monolith Interactive. In use, I discovered usability improvements such as:
The question management system would often have errors from early development. The above shows errors in ordrring from a drop-down list.
The 5in5 app has since resulted in published studies based on the activity of its current users.
I have improved drastically in leadership and technical skills since 2014. One regret was to not have taken a more active role in development once the project was handed off to Monolith and have had missed out on a learning opportunity.
With my experience today, if I were to re-approach this project, I would have prioritized content management systems in discussions with Monolith. We had conducted a series of user tests with the consumer-side of the tool, but neglected to engineer a process for content curation. For example, the process of how an identified need in education would turn into questions, then reviewed by professionals, and then uploaded with the least developer support possible.
Journaly is an electronic diary for persons with bi-polar disorder which uses sentiment analysis to score daily entries to visualize a whole week's mood during therapy appointments. Stylized as 'Journaly.ai,' Journaly won the $5000 top prize from the 2019 Hack 4 Good: AI Hackathon in Whitby, Ontario.
MAR 2019
I also used my background in public health to consult the app design, such as ensuring accuracy of representation and finding its fit in the consumer's workflow.
Marvin Pafla: Backend Development
Kenny Fung: Frontend Development
Andrew Cen: UX design
Joanna L.: Literature Review
Example of a mood tracking bullet journal.
The app's user flow as well as how Journaly would fit into existing workflows of therapists and their clients was considered using a systems approach.
UI design demonstrating user flow created by my team member Andrew Cen who was leading UX design.
Upon login the user would:
During the appointment:
If given more time our team would have looked for a more appropriate dataset than movie reviews to train the AI. It would have also been aspirational to incorporate computer vision to convert diaries on paper to text for analysis. A self-report override for mood logging would also be helpful to improve accuracy.
Privehealth is an early startup which provided 'Gamified cybersecurity training for the health professional.' I served on their advisory board in 2019 applying my experience in gamification and entrepreneurship. In this voluntary role, I advised interviews with health professionals to identify current gaps in cybersecurity training and connected Privehealth to community stakeholders.
2018-2019
We approached healthcare professionals with semi-structured interviews which explored their perceived knowledge of cybersecurity, opinions towards existing cybersecurity tools, and their fears regarding information management. The interviews were both conducted at workplaces as well as in PriveHealth's office for professionals unable to invite us into their workplace. Video-recordings were taken with consent to take note of the body language of persons interviewed and provide context of their workspace.
The team has moved on to other endeavours but if PriveHealth wished to pivot, I would see value in becoming consultants to larger corporations and pursue intrapreneurship with employees through collaborations. Alternatively, PriveHealth could explore servicing smaller independent health providers (e.g. optometrists, counselling offices), or pivot further to teaching cybersecurity to non-traditional handlers of health data. With linkable data posing as threats to exposing individuals' health data, there may even be a market in creators of wellness e-commerce shop owners.
I contributed T-shirt designs for the student volunteers (SVs) at the 2018 ACM INTERACTIVE SURFACES AND SPACES (ISS) conference held in Tokyo.
NOV 2018
Bright colours unusual with locals in the financial district of Tokyo where the conference was held were chosen to allow SVs to be easily identified as SVs. Pink and blue were specifically chosen as they were the branding colours of the 2018 ISS conference.
'Student Volunteer' in both japanese (translated by Tokyo-based volunteers) and english were written on the back of shirts to commemorate the conference's location. Extra T-shirts without the 'Student Volunteer' print were printed to be sold to attendees as souvenirs at cost price.
In reflection, the choice of colours was not preferable for sale due to its deliberate harsh contrasts which some attendees disliked. It is advised that future T-shirt designs would ideally be appropriate for both volunteer use and sale to attendees. A balance could be reached between conference brand visibility and potential for daily wear post-conference when it comes to design.
Given identified needs, I first familiarized myself with aspects of Hawaii unique to the region ranging from tourism to the arts. I chose to focus on the exports of Hawaii (pineapples, coconuts, flowers, sugarcane) due to their aesthetics being translatable to recognizable simple design and its international relevance.
The shirt was to foremost represent the conference's focus on Human-Computer Interaction (HCI), thus a desktop computer with the conference name was chosen as the main point. A pair of human hands framed the screen to emphasize the human aspect of HCI. Orange was chosen as the shirt base as it was one of the colours (the other being green) of the CHI 2020 logo.
In reflection of my previous SV shirt designs which served the purpose of SV visibility but were not preferable to daily wear post-conference, I decided to borrow from graphic design trends of late 2019 and used an astrology themed layout.
A clicker dress-up game released for Android created at the GI Game Jam. It currently has 100+ downloads on Google Play.
SEPT 2018
As a game developer I published Mr. Goose's Dressup on the Play Store with Google Play Console after modifying it to an appropriate .apk file in Unity.
*Bonus: Goose-themed games were jokingly discouraged for the following GI game jam by organizers because of how 'annoying' Mr. Goose's Dressup was.
A two-player planet battle game made for one screen. It currently has 1000+ downloads on Google Play.
JAN 2019
Seen Above: World Smash was originally made for phone screens, but it is also playable on large-screen displays.
Tina (myself): Art
David Dufour, Phil Downey: Development
*Bonus: The game was tested for fun on large screen displays and was recognized as a potential study tool.
A side-scrolling beat em up on browser created in a team for the Global Game Jam 2020. Currently hosted on GitHub.
JAN 2020
Tina (myself): Art
David Dufour, Adam Shepley: Development
s
'Hit ESC' is a click and point game created entirely on Powerpoint with no additional scripting and all images used are within Creative Commons.
SEPT 2019
Tina (myself): Development
David Dufour: Art, Narrative
The player is instructed to hit ESC to exit the Powerpoint file.


Make America great again!
Donald Trump
Résumé
— I'm the most successful person ever to run for the presidency, by far. Nobody's ever been more successful than me. I'm the most successful person ever to run. Ross Perot isn't successful like me. Romney — I have a Gucci store that's worth more than Romney. Sorry losers and haters, but my IQ is one of the highest — and you all know it!
Experience
Recent
-
2021
Second impeachment trial in the Senate of the United States
-
2020
Lost the electiona of the President of the United States
-
2017
Became 45th President of the United States
-
-
My policy to separate migrant children from their families at the southern border was an true tragedy.
-
My news conference with Vladimir Putin in Helsinki was an embarrassment.
-
My graceless handling of Sen. John McCain’s funeral was a new low.
-
My misuse of power turned critics into martyrs.
-
My offensive tweets continued to undermine my presidency.
-
My comment about “sh--hole” countries blew up negotiations for a deal that would have given Trump his border wall.
-
-
-
2016
Won election race with 77 votes more than Clinton, yippe-kee-yay!
-
2015
Became the most important Republican nominating for presidential election run
Back then
-
2009
Changed my mind and became Republican again
-
2005
Started Trump University with Michael Sexton and Jonathan Spitalny: no grades, certificates and other bureaucracy, but program offered courses in real estate, asset management entrepreneurship, and wealth creation. 98% students gave positive reviews while studying, however some of these ungrateful gringos filed lawsuits against Trump University after the course. I had to pay $25 million to settle that...
-
2002
Acquired the former Hotel Delmonico, which was renovated and reopened in 2004 as the Trump Park Avenue. I sure do like my surname!
-
2001
Completed Trump World Tower and joined the Democratic Party
-
1999
Started buying golf courses. They are very cheap, I have 18 of them now in USA and abroad! Also switched to the Reform Party that year
-
1997
Began a multi-building development along the Hudson River, which was named Trump Place. Me and the other investors sold our shares for $1.8 billion and that was then the biggest residential sale in the history of New York City
-
1996
Acquired the Bank of Manhattan Trust Building, which was a vacant seventy-one story skyscraper on Wall Street. After an extensive renovation, the high-rise was renamed the Trump Building
-
1994
Refurbished the Gulf and Western Building on Columbus Circle, turned it into a 44-story luxury property known as Trump International Hotel and Tower
-
1989 ― 1992
Ran a second hand airline called Trump Shuttle. What a waste of money, I had to sell it, now it is American Airlines Shuttle, btw
-
1989, 1990
Learned about Tour de France and decided to hold my very own Tour de Trump. Is America not great enough for that cycling competition?
-
1988
Acquired the Plaza Hotel in Manhattan for $407 million, invested $50 million to restore the building and boosted it from three-star to four-star hotel (I called it "the Mona Lisa" and sold it for a lot of cash in 1995)
-
1987
Registered as a Republican
-
1985
I bought the Mar-a-Lago estate in Palm Beach and turned it into a private club.You can join if you pay $200K initiation fee (and there is another annual fee for members, it is very expensive to be rich). That year I also opened a casino called Trump Castle. My wife Ivana became a manager, because she is another Trump!
-
1983
I purchased New Jersey Generals, an American football team. I changed team's play schedule and filed an antitrust lawsuit against United States Football League, so NJG are not doing so good now, but back then they were great!
-
1980
Started developing the Trump Tower skyscraper in Manhattan, I payed a crew of undocumented Polish workers to demolish the historic Bonwit Teller store, including art deco features. All this to make architectural critic Paul Goldberger say in 1983 that the tower's atrium is "the most pleasant interior public space to be completed in New York in some years". At the same time I also started a repair job on the Wollman Rink in Central Park and completed the work in three months for $1.95 million, which was $775,000 less than the initial budget!
-
1978
Purchased a 50 percent stake in the derelict Commodore Hotel and turned it into the Grand Hyatt Hotel in 2 years of remodeling
-
1971
Was promoted to president of the company and renamed it The Trump Organization
-
1968
Began my career at my father's real estate development company, Elizabeth Trump & Son
Media career
Recent
-
2019
Was awarded Worst Actor and Worst Screen Combo at Golden Raspberry Awards for parts in "Death of a Nation" and "Fahrenheit 11/9"
-
2015
Published a book "Crippled America: How to Make America Great Again"
-
2011
Published a book "Time to Get Tough: Making America #1 Again" in coauthorship with Wynton Hall, Peter Schweizer and Meredith McIver
-
2011
Published a book "Midas Touch: Why Some Entrepreneurs Get Rich – And Why Most Don't" in coauthorship with Robert Kiyosaki
-
2011
Published a book "Trump Tower" in coauthorship with Jeffrey Robinson
Back then
-
-
-
2009
Published a book "Think Like a Champion: An Informal Education in Business and Life" in coauthorship with Meredith McIver
-
2008
Published a book "Never Give Up: How I Turned My Biggest Challenges into Success" in coauthorship with Meredith McIver
-
2007
Published a book "Think Big and Kick Ass" in coauthorship with Bill Zanker
-
2007
Received a star on the Hollywood Walk of Fame for being producer of Miss Universe pageant
-
2006
Published a book "Why We Want You to Be Rich" in coauthorship with Meredith McIver and Robert Kiyosaki
-
2006
Published a book "How to Build a Fortune: Your Plan for Success From the World's Most Famous Businessman"
-
2006
Published a book "The Best Real Estate Advice I Ever Received: 100 Top Experts Share Their Strategies"
-
2006
Published a book "Trump 101: The Way to Success" in coauthorship with Meredith McIver
-
2005
Published a book "The Best Golf Advice I Ever Received"
-
2005
Performed a song with Megan Mullally at the 57th Primetime Emmy Awards
-
2004 ― 2008
Ran short-form talk radio program "Trumped!" (one to two minutes on weekdays)
-
2004
Published a book "Trump: How to Get Rich" in coauthorship with Meredith McIver
-
2004
Published a book "The Way to the Top: The Best Business Advice I Ever Received"
-
2004
Published a book "Think Like a Billionaire: Everything You Need to Know About Success, Real Estate, and Life" in coauthorship with Meredith McIver
-
2003 ― 2015
Produced NBC reality shows "The Apprentice" and "The Celebrity Apprentice"
-
-
-
-
-
2000
Published a book "Trump: The America We Deserve" in coauthorship with Dave Shiflett
-
1997
Published a book "Trump: The Art of the Comeback" in coauthorship with Kate Bohner
-
1991
Was awarded Worst Supporting Actor at Golden Raspberry Awards for a part in "Ghosts Can't Do It"
-
1990
Published a book "Trump: Surviving at the Top" in coauthorship with Charles Leerhsen
-
1987
Published a book "Trump: The Art of the Deal" in coauthorship with Tony Shwartz
-
-
Languages
Education
-
2011
Asked friends who are prominent and wealthy alumni of the New York Military Academy to secure my academic records so they could not be seen by anyone, never!
-
1966
Transferred to the Wharton School of the University of Pennsylvania and graduated in May 1968 with a B.S. in economics
-
1964
Started studying in Fordham University
-
1959
Enrolled in the New York Military Academy, a private boarding school, after my parents discovered I made frequent trips into Manhattan without their permission
Skills
Character
Likes😃
Dislikes😞
Wants🥺
Personal life
-
2006
Melania gained United States citizenship and gave birth to our son, Barron
-
2005
Married her
-
1998
Met my future third wife, Melania Knauss
-
1999
Divorced Marla ¯\_(ツ)_/¯
-
1993
Married Marla and had a daughter, we named her Tiffany, because I like Tiffany & Company jewellery as well
-
1992
Started affair with Marla Maples, so I had to divorce. God knows I love nice women, I love them all!
-
1984
Birth of Eric Trump
-
1982
Birth of Ivanka Trump
-
1977
My first son is born. I called him Donald, of course!
-
1977
Married Czech model Ivana Zelníčková


setting_up_your_cv.rmd
This document will provide a small bit of context for the creation of the datadrivencv
package and a step-through of going from zero to html and pdf CV built from your data.
Anytime I would go to add something to my CV I ended up wanting to change the format a tiny bit. This usually meant the entire word document completely falling apart and needing to have each entry copied and pasted into a new version.
Ultimately this process felt formulaic and repetitive, prime indicators they could be done better with code. Using a spreadsheet to store each entry in the CV and R to write markdown seemed like the way to go. Pagedown made this even easier. Meaning that the same CV could be rendered with interactive HTML and PDF without changing the underlying rendering engine like was done with kniting to pdf vs knitting to html.
Inspired heavily the the usethis
package, datadrivencv
strives to make itself unnecessary. The main function is use_data_driven_cv
, which sets up the files you need to build your CV. These files are self-contained meaning if you uninstall datadrivencv
your CV will still knit fine. All the R code logic is contained in a sourced script so if you want to change it you can do so.
The package aims to bootstrap you to a working data-driven CV pipeline. Serving as a jumping off point for you to build your own custom CV, you may at first want to leave it as is and then slowly tweak things to keep it fresh. You have all the code, so you can!
The first step to using the package is the use_data_driven_cv()
function. This function takes a few input parameters and when when run, sets up a series of files in your current working directory. E.g.
# run ?datadrivencv::use_datadriven_cv to see more details
datadrivencv::use_datadriven_cv(
full_name = "Nick Strayer",
data_location = "https://docs.google.com/spreadsheets/d/14MQICF2F8-vf8CKPF1m4lyGKO6_thG-4aSwat1e2TWc",
pdf_location = "https://github.com/nstrayer/cv/raw/master/strayer_cv.pdf",
html_location = "nickstrayer.me/cv/",
source_location = "https://github.com/nstrayer/cv"
)
The available arguments are:
| Argument | Description |
|---|---|
full_name |
Your full name, used in title of document and header |
data_location |
Path of the spreadsheets holding all your data. This can be either a URL to a google sheet with multiple sheets containing the four data types or a path to a folder containing four .csv s with the neccesary data. |
pdf_location |
What location will the PDF of this CV be hosted at? |
html_location |
What location will the HTML version of this CV be hosted at? |
source_location |
Where is the code to build your CV hosted? |
open_files |
Should the added files be opened after creation? |
use_network_logo |
Should logo be an interactive network based on your CV data? Note that this uses the function build_network_logo() so will introduce a dependency on this package. |
This code is all that’s needed to setup a full CV. It outputs five files:
| File | Description |
|---|---|
cv.rmd |
An RMarkdown file with various sections filled in. Edit this to fit your personal needs. |
dd_cv.css |
A custom set of CSS styles that build on the default Pagedown “resume” template. Again, edit these as desired. |
render_cv.r |
Use this script to build your CV in both PDF and HTML at the same time. |
cv_printing_functions.r |
A series of functions that perform the dirty work of turning your spreadsheet data into markdown/html and making that output work for PDF printing. E.g. Replacing markdown links with superscripts and a links section, tweaking the CSS to account for chrome printing quirks, etc.. |
By default the googlesheets4
package is used to get a Google Sheet with all necessary data. To build your own version I suggest simply copying my data, removing all the rows, and filling in with your data.
There are four spreadsheets of “data” that are used. These take the form of separate sub-sheets within a google sheet.
The four spreadsheets that are needed and their columns are:
entries
| Column | Description |
|---|---|
section |
Where in your CV this entry belongs |
title |
Main title of the entry |
loc |
Location the entry occured |
institution |
Primary institution affiliation for entry |
start |
Start date of entry (year). Can be left blank for single point events like a manuscript. |
end |
End year of entry. Set to “current” if entry is still ongoing. |
description_* |
Each description column is a separate bullet point for the entry. If you need more description bullet points simply add a new column with title “description_{4,5,..}” |
.csv
s instead of google sheetsDon’t want to use google sheets to store your data? Not a problem. Just make four .csvs
(entries.csv, language_skills.csv, text_blocks.csv, contact_info.csv
) that have the same matching format as above and pass the folder containing those as your data_location
when initializing with use_datadriven_cv()
.
The function use_csv_data_storage()
will set these up for you.
Now that you have the templates setup and you’ve configured your data, the last thing to do is render. The easiest way to do this is by opening
render_cv.r
# Knit the HTML version
rmarkdown::render("cv.rmd",
params = list(pdf_mode = FALSE),
output_file = "cv.html")
# Knit the PDF version to temporary html location
tmp_html_cv_loc <- fs::file_temp(ext = ".html")
rmarkdown::render("cv.rmd",
params = list(pdf_mode = TRUE),
output_file = tmp_html_cv_loc)
# Convert to PDF using Pagedown
pagedown::chrome_print(input = tmp_html_cv_loc,
output = "cv.pdf")
This script will render your CV in HTML and output it as cv.html
, it will also turn on the pdf_mode
parameter in cv.rmd
, which will strip the links out and place them at the end linked by inline superscripts. Once the pdf version is rendered to HTML, it will then turn that HTML into a PDF using pagedown::chrome_print()
. By using this script you can easily make sure your get both versions rendered at the same time without having to manually go in and toggle the pdf mode parameter in the yaml header and then use the print dialog in your browser.
Confused by anything (there’s a lot to be confused by)? Open an issue on github and let me know. Not comfortable with github issues? Tweet the question at me on Twitter: @nicholasstrayer.


Please note: Keep the following handy for a quick registration experience:
You may not need all the fields for all the backend types.
Currently you can register the following backend types: AWS S3, Huawei OBS, Azure Blob Storage, Ceph S3, GCP Storage, Fusionstore Object, IBM COS, YIG and AWS and Azure File Storage backends(new feature*).
Registered backends can be viewed by clicking on the cloud icons of the respective backends. The cloud in the center lists all other backends.
You can modify the Access Key and Secret Key of the registered backend and delete it completely.


real wii joke
Joan: We're bringing our Wii over.
Joan's mom: (disapprovingly) As long as you smoke it outside.
Joan: WII, mom, W-i-i!!!
About this entry
You"re currently reading "real wii joke," an entry on a crick in the net
- Published:
- 12.24.06 / 11am
- Category:
- Circular File, Gamering


Gratz! Your deployment of Angular Designed App worked perfectly! Click about (above) to get your reward!


Jessica Doss
Kind human. Problem solver. Student.
Main Page
Who I am
Projects
Contact
Welcome to my life


Commuters stuck in sudden noon rains
by Manoj SharmaLight to moderate rain on Wednesday wreaked havoc on the traffic in the city's arterial and sub-arterial roads.
The rain that lasted for 30 minutes impacted Mahadevapura and East Bengaluru zones, while the city’s southern part stayed largely dry.
The downpour began at 3 pm and relented by 3.30 pm. By then, the underpasses were flooded and commuters were taking alternative routes, while some motorists took shelter below the metro bridges.
While the Bruhat Bengaluru Mahanagara Palike did not receive many complaints on rain damages, there was one incident of soil breach at a vacant land next to a house construction site near the Chowdeshwari temple in Chickpet in ward 109.
Unable to take shelter, commuters in the Central Business District (CBD) areas were drenched in the rain and were seen stranded in traffic. Roads in the CBD areas were also flooded for an hour as it took time for the rainwater to drain.
The Karnataka State Natural Disaster Management Centre (KSNDMC) said Somashettihalli and Yelahanka recorded 11.5 mm rain, while Mahadevapura and Banaswadi received 10.5 mm. Other areas to receive rains include Talaghattapura, Chamrajpet and Hunasamaranahalli (8 mm), Mandur (7 mm), and Bidarahalli and Nagarabhavi (6.5 mm).


Hello world! I'm Alexandre Gervais,
Outdoorsy, data-driven, eternal student, not so geeky creative mind and traveler. Alexandre is a curious, introverted and humble character. Working by day as a Staff Software Developer at AppDirect he has many years of savoir-faire building full-stack systems from cloud infrastructures to backend services and DevOps tools. Alex is a Kubernetes early adopter who thrives on collaboration and contributor to many Cloud-Native projects.
$ mail -s "Say Hi!" "alex.gervais@gmail.com"


Are you curious what is this nice, blue button for? Follow the 3. lesson of the tutorial and let the magic happen.


Travelling
Travelling is my pasion, I love getting to know new cultures, traditions and historic places. I think travelling allows people to acquire knowledge that no book or academy could teach.
Enthusiastic Developer
I'm a engineering student at the Universidad Nacional de Colombia.
I love programming and I have a deep interest in Software Engineering and Big Data.
“You must not lose faith in humanity. Humanity is like an ocean; if a few drops of the ocean are dirty, the ocean does not become dirty.” I do believe in these wise words and I do believe that if we want the world to change, that change has to start by ourselves.
I'm currently working as a software back-end developer for a local startup called SlabCode. Proudly funded by former students of the Universidad Nacional de Colombia.
Here, I provide technical assistance to students on the developing of web applications. Also, I assist lead teacher on evaluating students performance and the quality of their software projects
As seminar assitant, I served as guide to the foreign professors in my home university. I also helped them by preparing instructional material for the students.
I started my enginering studies in the Universidad Nacional de Colombia
Travelling is my pasion, I love getting to know new cultures, traditions and historic places. I think travelling allows people to acquire knowledge that no book or academy could teach.
Anybody could build software, but only few could build quality software products. That's the main reason why I'm drawn by the Software Engineering. I think that in a world where we are used to mediocre things, is important to be in pursue of quality stuff.
I love a good mistery, and the black novel gender provides just that. The intriguing sensation and the constant wondering are things that only this type of books can give. My favorite book is Men who hate women written by the Swedish writer Stieg Larsson.
In a world globalized as ours, where the information fluxes are constant; the amount of data that is produced is somewhat immeasurable. That's why I find fascinating all hidden patterns and incredible knowledge that can be discovered with these disciplines.


Let's go over some definitions. Click on the terms below to see a description.
Javascript
Operators
Variables
Variable naming conventions
Functions
Strings
Methods
Arguments
Parameters
Return value
Chaining methods
Booleans
Undefined
NaN
Escape
Alert
jQuery
Attributes
Comments


The Velleman Output plugin supports the Velleman K8062D interface on Windows operating systems.
You must install the proprietary Velleman K8062D library to C:\Windows\System32.


Shanghai is one of the four direct-administered municipalities of the People's Republic of China.
Yes No


Brian Tarantina of ‘The Marvelous Mrs. Maisel’ dead at 60
NEW YORK (AP) - Brian Tarantina, a character actor who most recently known for his role in “The Marvelous Mrs. Maisel,” has died in his Manhattan home. He was 60.
The New York Police Department said officers responded to the apartment on West 51st Street shortly before 1 a.m. Saturday.
They found Tarantina on his couch, fully clothed but unconscious and unresponsive. He was pronounced dead at the scene.
The cause of death was being determined by the medical examiner.
His manager Laurie Smith said he had recently had a severe illness.
“We are shocked and saddened at the passing of this wonderful actor and good friend,” she said.
On “Mrs. Maisel,” Tarantina played an emcee at a comedy club called the Gaslight.
The show’s star, Rachel Brosnahan, remembered him as “hilarious and talented and kind” in an Instagram post . “Our family of weirds won’t be the same without him,” she wrote.
The show’s official Twitter account also posted a tribute to Tarantina.
“The Gaslight won’t be the same without you. Thank you Brian Tarantina for sharing in all of the laughs. Sending love to his family and friends in this difficult time,” it wrote in the post.
In January, Tarantina was at the Screen Actors Guild Awards when the show won the comedy series ensemble category.
Tarantina had roles in a number of television shows and movies, including “Gilmore Girls” and “BlacKkKlansman.”
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


|
Layered-SQT
Layered assembly to SQT-format BSDF
|
Layer interface. More...
Public Member Functions | |
| virtual | ~Layer () |
| Destructor. More... | |
| bool | intersect (const Ray &ray, Hit &hit) const |
| Intersect. More... | |
Interface | |
| virtual void | init (const std::string &arg)=0 |
| Initialize from argument string. More... | |
| virtual void | validate () const |
| Validate. More... | |
| virtual Float | bsdf (Pcg32 &pcg, const Vec3< Float > &wo, const Vec3< Float > &wi, Float *fs_pdf=nullptr) const =0 |
| BSDF. More... | |
| virtual Vec3< Float > | bsdfSample (Pcg32 &pcg, Float &tau, const Vec3< Float > &wo) const =0 |
| BSDF sample. More... | |
| virtual bool | isTransmissive () const =0 |
| Is transmissive? More... | |
| virtual bool | isNull () const |
| Is null? More... | |
Public Attributes | |
| Float | zheight = 0 |
| Z-height. More... | |
| const Medium * | medium_above = nullptr |
| Medium above. More... | |
| const Medium * | medium_below = nullptr |
| Medium below. More... | |
Layer interface.
|
inlinevirtual |
Destructor.
|
pure virtual |
Initialize from argument string.
| [in] | arg | Argument. |
Implemented in ls::MicrosurfaceDielectricLayer, ls::MicrosurfaceLambertianLayer, ls::LambertianLayer, ls::OrenNayarDiffuseLayer, ls::MicrosurfaceConductiveLayer, and ls::NullLayer.
|
inlinevirtual |
Validate.
Reimplemented in ls::MicrosurfaceDielectricLayer, and ls::MicrosurfaceConductiveLayer.
|
pure virtual |
BSDF.
| [in,out] | pcg | Generator. |
| [in] | wo | Outgoing direction. |
| [in] | wi | Incident direction. |
| [out] | fs_pdf | Optional. BSDF-PDF. |
Implemented in ls::MicrosurfaceDielectricLayer, ls::MicrosurfaceLambertianLayer, ls::MicrosurfaceConductiveLayer, ls::LambertianLayer, ls::OrenNayarDiffuseLayer, and ls::NullLayer.
|
pure virtual |
BSDF sample.
| [in,out] | pcg | Generator. |
| [in,out] | tau | Path throughput. |
| [in] | wo | Outgoing direction. |
Implemented in ls::MicrosurfaceDielectricLayer, ls::MicrosurfaceLambertianLayer, ls::MicrosurfaceConductiveLayer, ls::LambertianLayer, ls::OrenNayarDiffuseLayer, and ls::NullLayer.
|
pure virtual |
Is transmissive?
Implemented in ls::MicrosurfaceDielectricLayer, ls::MicrosurfaceLambertianLayer, ls::MicrosurfaceConductiveLayer, ls::LambertianLayer, ls::OrenNayarDiffuseLayer, and ls::NullLayer.
|
virtual |
Intersect.
| [in] | ray | Ray. |
| [out] | hit | Hit. |
| Float ls::Layer::zheight = 0 |
Z-height.
| const Medium* ls::Layer::medium_above = nullptr |
Medium above.
| const Medium* ls::Layer::medium_below = nullptr |
Medium below.


- General
-
Once you have registered an account at the matrix you have also created a profile and a channel.
- Account
-
You have one account. This consists of your email account and your password.  It lets you
do things, such as creating profiles and channels with which you can connect to other people.
- Profile
-
You have surely registered with some other internet services, such as forums or online communities. For all of them
you provided some information about yourself, such as date of birth, country, age and the likes. Unlike other
services Hubzilla offers you the advantage of creating
many more profiles.
- Channel
-
During the registration you created your first channel. Yes, besides several profiles you are able to have
several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have
created one channel. You can use this one for the public, to communicate with people about every day life. But
perhaps you are an avid book reader and many people are bored by that. So you open a second channel just
for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of
posts, with a new profile (... or new profiles ...) and completely different contacts. Some connections
might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just
switch between both of them just like you would in real life switch when talking to people you meet on the street
or people you meet specially to talk about books. You can even connect to yourself, or better: to your other
channel. :)Think of a channel as different spaces dedicated to different topics where you meet with different
people.


In this post, we review basic minimax decision theory in the context of hypothesis testing. The standard hypothesis testing setup is we assume two hypothesis $H_{0}$ and $H_{1}$ on nature. We will observe some random variable $y$ which takes on values in the set $\mathcal{Y}$, and based on $y$ we will make a decision between $H_{0}$ and $H_{1}$. At this point, without anymore information we cannot proceed better than random guessing. Therefore, we assume two extra pieces of information. First, we assume we know how $y$ is generated under each hypothesis, e.g. we know $p_{y|H}(\cdot|H_0)$ and $p_{y|H}(\cdot|H_1)$. Second, we assume we have a cost matrix $C_{ij}$ such that $C_{ij}$ is the cost of predicting $H_i$ when the actual hypothesis is $H_{j}$. We require that the costs make sense, e.g. $C_{ij} > C_{jj}$ when $i \neq j$ (that is, it is more costly to predict incorrectly than correctly).
In Bayesian hypothesis testing, we assume we have one extra piece of information, which is the priors on the hypothesis (e.g. $p_{H}(H_0)$ and $p_{H}(H_1)$). Let $f : \mathcal{Y} \rightarrow \{ H_0, H_1 \}$ denote a decision rule. Bayesian hypothesis testing seeks to find the predictor $f^*_{B}$ which minimizes the expected cost, that is: $$ \DeclareMathOperator*{\argmin}{arg\,min} \DeclareMathOperator*{\arginf}{arg\,inf} \DeclareMathOperator*{\argsup}{arg\,sup} \newcommand{\R}{\mathbb{R}} f^*_{B} = \arginf\limits_{f} \; \mathbb{E}_{H,y}[C_{f(y),H}] $$ It turns out (we state without proof, which is quite simple) that the optimal decision rule $f^*_{B}$ is a form known as the likelihood ratio test. $$ f^*_{B}(y) = \begin{cases} H_1 &\text{if } L(y) \geq \frac{p_{H}(H_0)(C_{10} - C_{00})}{p_{H}(H_1)(C_{01} - C_{11})} \\ H_0 &\text{o.w.} \end{cases} $$ where $L(y)$ is the likelihood ratio, defined as $$ L(y) \triangleq \frac{p_{y|H}(y|H_1)}{p_{y|H}(y|H_0)} $$ Notice that if the priors $p_{H}(H_0) = p_{H}(H_1) = \frac{1}{2}$ and if the cost matrix $C_{ij}$ is symmetric, then the rule reduces to the maximum likelihood estimator: $$ \DeclareMathOperator*{\argmax}{arg\,max} f^*_{B}(y) = \argmax\limits_{H} \; p_{y|H}(y|H) $$ Because this likelihood ratio test is actually quite general, we will define a new decision rule $f^*_{B}(y;p)$ as the Bayes optimal decision rule under the assumption that $p_{H}(H_1)=p$. We will use this later.
But this blog post is about minimax decision theory, so where does that come into play? Well, we made a big assumption in the Bayesian case, that we knew the hypothesis priors. What if we do not know such information? One thing we could do is assume equal priors, but that seems sort of like cheating. What if our assumption turns out to be very incorrect? The performance of our decision rule can become arbitrarily bad. A more systematic (albeit conservative) way of dealing with this is the minimax framework. In this framework, we (the decision rule designer) play a game with nature (or an adversary). The game is this: we first pick a decision rule and then reveal our rule to nature. Nature then looks at our rule, thinks hard about it, and picks a prior distribution on the hypothesis which makes our rule perform the worst. Our goal is to pick the best decision rule (minimize), under the assumption that nature will then try make our rule perform as bad as possible (maximize). Our target metric still remains the same; we want to minimize the expected cost.
To make this more formal, we first define a quantity $\phi_{M}(f,p)$ which denotes the expected cost of decision rule $f$ assuming $p_{H}(H_1)=p$ $$ \newcommand{\Expect}{\mathbb{E}} \phi_{M}(f,p)\triangleq (1-p) \Expect_{y|H_0}[C_{f(y),H_0}] + p \Expect_{y|H_1}[C_{f(y),H_1}] $$ Then, the minimax decision rule is an $f^*_{M}$ such that $$ f^*_{M} = \arginf\limits_{f}\sup\limits_{p \in [0,1]} \phi_{M}(f, p) $$ This seems like quite a nasty function to minimize, namely because of the inner maximization for each $f$. The remarkable fact which we will prove is that $f^*_{M}(\cdot) = f^*_{B}(\cdot;p^*)$, where $p^* = \argsup\limits_{p \in [0,1]} \phi_{M}(f^*_{B}(\cdot;p), p)$. To make the proof simpler, let us assume that $C_{ii}=0$ for $i \in \{0,1\}$ (we do not need this assumption in general).
We first prove the famous minimax inequality. Suppose $\mathcal{X}$ and $\mathcal{Y}$ are both compact sets, and $g : \mathcal{X} \times \mathcal{Y} \rightarrow \R{}$ is a continuous function. Then we have $$ \newcommand{\X}{\mathcal{X}} \newcommand{\Y}{\mathcal{Y}} \inf\limits_{x \in \X} \sup\limits_{y \in \Y} g(x, y) \geq \sup\limits_{y \in \Y} \inf\limits_{x \in \X} g(x,y) $$ First, from basic analysis we know that since $\mathcal{X}$ and $\mathcal{Y}$ are compact sets, and $g(x,y)$ is continuous, then for all $x \in \X$, the supremum and infimum of $g(x, \cdot)$ are both finite and obtained by some $y \in \Y{}$ (similarly for $g(\cdot, y)$). The proof is quite simple, and starts by noting that for any $x'$ and $y'$ $$ \sup\limits_{y} g(x', y) \geq g(x', y') \geq \inf\limits_{x} g(x, y') $$ Defining $g_{y}(x') \triangleq \sup\limits_{y} g(x', y)$ and $g_{x}(y') \triangleq \inf\limits_{x} g(x, y')$, we have $g_{y}(x') \geq g_{x}(y')$. Letting $x^* = \arginf\limits_{x'} g_{y}(x')$ and $y^* = \argsup\limits_{y'} g_{x}(y')$, we conclude $$ \inf\limits_{x}\sup\limits_{y} g(x,y) = g_{y}(x^*) \geq g_{x}(y^*) = \sup\limits_{y}\inf\limits_{x} g(x, y) $$
We now turn to the proof of the minimax decision rule. We first note that for any $q \in [0,1]$, we have $$ \inf\limits_{f}\sup\limits_{p} \phi_{M}(f, p) \leq \sup\limits_{p} \phi_{M}( f^*_{B}(\cdot; q), p) $$ Coming from the other side, we have that for any $q \in [0,1]$ $$ \inf\limits_{f}\sup\limits_{p} \phi_{M}(f,p) \geq \sup\limits_{p}\inf\limits_{f} \phi_{M}(f,p) \geq \inf\limits_{f} \phi_{M}(f, q) = \phi_{M}(f^*_{B}(\cdot;q), q) $$ where the first inequality is the minimax inequality and the last equality is because for a given prior $q$, we know that the Bayes decision rule $f^*_{B}(\cdot;q)$ is optimal. We now consider the function $\phi(q,p) = \phi_{M}(f^*_{B}(\cdot;q), p)$ and take its partial derivative with respect to $p$: $$ \begin{align*} \frac{\partial \phi(q, p)}{\partial p} &= -\Expect_{y|H_0}[ C_{f^*_{B}(y;q),0} ] + \Expect_{y|H_1}[ C_{f^*_{B}(y;q),1} ] \end{align*} $$ Now, suppose there exists a $p^*$ such that $\frac{\partial \phi(q, p)}{\partial p}(p^*) = 0 \Rightarrow \Expect_{y|H_0}[ C_{f^*_{B}(y;q^*),0} ] = \Expect_{y|H_1}[ C_{f^*_{B}(y;q),1} ]$. Notice that if such a $p^*$ exists, it is not a function of $p$, and therefore by the concavity of $\phi(q,p)$ (which we did not prove), we have that $p^*$ is a maximizer of $\sup_{p} \phi(q, p)$ and therefore setting $q=p^*$ we get $$ \inf\limits_{f}\sup\limits_{p} \phi_{M}(f, p) \leq \phi(p^*, p^*) $$ and also in the other direction we have (once again setting $q=p^*$) $$ \inf\limits_{f}\sup\limits_{p} \phi_{M}(f,p) \geq \phi(p^*, p^*) $$ and so we conclude that $$ \inf\limits_{f}\sup\limits_{p} \phi_{M}(f,p) = \phi(p^*, p^*) $$ What about the case when no such $q^*$ exists such that $\frac{\partial \phi(q, p)}{\partial p}(q^*) = 0$? We now argue that if $C_{ii}=0$, this is not possible. Suppose towards a contradiction that for all $q \in [0,1]$ we have $\frac{\partial \phi(q, p)}{\partial p}(q^*) \neq 0$. It is not hard to see that, assuming $C_{ii}=0$, $$ \begin{align*} \frac{\partial \phi(q, p)}{\partial p} &= C_{01}\Pr(\hat{H}=H_0|H_1) - C_{10}\Pr(\hat{H}=H_1|H_0) \end{align*} $$ If the partial derivative is not zero, then we have $$ C_{01}\Pr(\hat{H}=H_0|H_1) \neq C_{10}\Pr(\hat{H}=H_1|H_0) $$ But this is a contradiction, since we assumed that $\hat{H}$ was Bayes optimal for the given prior $q$. This concludes the proof.


WITNESS LIST Appropriations Committee (Subcommittee on General Government) February 3, 1997-8:00A Budget Overview/General Government For: Warren, Bill (TX Employees Assn) On: Baldwin, Ed (Governor Witness) Beck, Jim (Office of Sec of State) Beckett, Sheila (Emp Retirement Sys) Campbell, Helen (Fire Fighters Pension) Chapa, Robert (Budget Division) Chote, Jim (LBB) Coates, Stephanie (LBB) Curtis, Shari (Comptroller of Pub Acts) Garza, Antonio (Office of Sec of State) Hamilton, Billy (Deputy Comptroller) Horwitz, Rita (Pension Review Bd) McGeehan, Ann (Office of Sec of State) Meadows, Vickers (TX Incentive & Producti) Norris, Robert (LBB) Powell, Elaine (TX Incentive & Producti) Procter, Dan (Office of Sec of State) Reynolds, Don (TX Pension Review Bd) Zitelman, Janice (Emp Retirement Sys)


Exchange rate : : {{ this.my_result }}
Total # of all the service requests including Weather, Movie, and Currency is : {{this._sharedService.totReqsMade}}


|
Figure 1
|
Upper left: Location of St. Marks National Wildlife Refuge ( ... |
|
Figure 2
|
Two of the principal stressors, changes in climate and habit ... |
|
Figure 3
|
SLOSH models of maximum surge level during a (a) Category 1 ... |
|
Figure 4
|
Specific conductance (µS/cm) of non‐overwashed ponds and ove ... |
|
Figure 5
|
Amount of rainfall (black dotted line) recorded since 10 Oct ... |


synchronized method responsible for the waiting of the connections of the other players, if the player are greater than or equal to 2
start a timer for waiting other players to connect, at the end of the timer create e new instance of the controller
and set the gameController started to true,while if the gameController mode is single player jump the timer and directly start a new gameController.


News story
Ofqual 'postcards' launched to help students, teachers and parents understand reforms to GCSEs, AS and A levels.
Ofqual is today (14 September) launching a series of eight ‘postcards’ to help students, teachers and parents understand its work and the reforms being made to GCSEs, AS and A levels in England.
The cards, which have been sent to every secondary-level school and college in England, and are available online , cover:
Chris Shadforth, Associate Director for Communications, said:
This project is part of our on-going commitment to improve understanding of the assessment system in England, and the important role Ofqual plays.
We’ve noticed in our conversations with teachers and schools, and in our engagement on social media, that there is a demand for succinct, clear explanations of the reforms being undertaken and where responsibilities in the education system begin and end. We’re also looking to use the postcards to debunk some myths, such as the extent of regrading in the exam system and how science practicals will be assessed in future.
We welcome feedback on today’s postcards and would like to know if there are any other areas of our work that we can demystify with a postcard.
The postcards are available on Ofqual’s website and via its social media channels:
Suggestions and ideas for more postcards should be submitted to Ofqual via Twitter (@ofqual).
If you need more information on individual subjects, take a look at our GCSE lookup table . We will publish a similar table for AS and A levels soon.


"x" "1" "VITO,M, ESPOSITO,G, VICARI,L, LEMBO,S, IMPERATRICE,ML AND DEMARINIS,E,MUTAGENIC ACTIVITY OF CHLORODIMETHYL SULFIDE AND SOME OF ITS ANILINEDERIVATIVES, BOLL.- SOC. ITAL. BIOL. SPER. 61(6):917-923, 1985"


Bosch cuts ties with Pitch@Palace as Prince Andrew stays on
by Edward ThicknesseBosch is the latest company to end its association with Prince Andrew's Pitch@Palace scheme, City A.M. has learnt.
A spokesperson for Bosch confirmed: "While Bosch will continue to support the next generation of entrepreneurial talent through various means, the company has decided against renewing its sponsorship with Pitch@Palace. The current contract is due to expire at the end of this month."
Read more: Buckingham Palace confirms Prince Andrew will continue to work on Pitch@Palace scheme
The news comes after Buckingham Palace this morning confirmed that Prince Andrew will continue to work on his Pitch@Palace initiative, as was first reported by City A.M. last night.
A source from another sponsor added: "We don't believe that the position that the palace put out this morning is tenable and we think that if this half-measure fails to revive the reputation of the programme then we will simply walk away from our existing contract."
The company joins KPMG, Standard Chartered, Inmarsat, Advertising Week Europe, Gravity Road and Aon in ending their partnership of the scheme.
BT also said that it would not support training firm Idea while the Duke remained its patron.
A source close to Pitch@Palace told City A.M. that it was "business as usual" at the programme, which connects entrepreneurs with investors.
It comes after the Duke announced he would step back from public duties for "the foreseeable future" due to the growing fallout over his links to the late billionaire paedophile Jeffrey Epstein.
The Duke said: “It has become clear to me over the last few days the circumstances relating to my former association to Jeffrey Epstein has become a major disruption to my family’s work and the valuable work going on in the many charities and organisations that I support.”
This morning entrepreneurs offered their backing to the scheme, saying it would be a shame for the initiative to end.
Read more: Entrepreneurs back Pitch@Palace as pressure grows on Prince Andrew
Will King, founder of grooming firm King of Shaves, told the BBC it was “really sad” the Pitch@Palace initiative had “been affected by the personal issues around the Duke of York”.
He told the BBC’s Today programme: “If you're going to continue the Pitch@Palace in the royal environment, where you have an infrastructure that is paid for - I think, in part - by the taxpayer, it would be an extraordinary shame that the palace don't see the opportunity in continuing this initiative.”
Main image credit: Getty


Tersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
XTersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
XTersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
XTersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
XTersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
XTersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
XTersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
Tersan Shipyard Inc. is belonging to Tersan group of companies providing services in four maritime sectors, i) new ship building, ii) ship repair, docking & conversion, iii) ship owning & operation and iv) ship agency services.
Tersan General View


| Hash | Value | Fee | Size | Fee Density | Relayed By |
|
|
|
| genesis | 000000 |
| 1st purchase of Pizza (10,000BTC"> = Â£2.5m) | 057043 |
| Summer Spam 2015 (Phase 1) | 364133 |
| Summer Spam 2015 (Phase 1) | 364281 |
| Summer Spam 2015 (Phase 1) | 364618 |
| Summer Spam 2015 (Phase 1) | 364918 |
| Summer Spam 2015 (Phase 2) | 367409 |
| Summer Spam 2015 (Phase 2) | 368580 |
| Summer Spam 2015 (Cleanup) | 364292 |


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
IN THE HIGH COURT OF JHARKHAND AT RANCHI A.B.A. No.7713 of 2019 ------
Gaurav Mundra .... .... .... Petitioner Versus The State of Jharkhand .... .... ....Opposite Party ------ CORAM : HON'BLE MR. JUSTICE ANIL KUMAR CHOUDHARY ------ For the Petitioner : Mr. Nilesh Kumar, Advocate For the State : Mr. Suraj Verma, A.P.P ------ Order No.04 Dated- 19.11.2019
Apprehending his arrest in connection with Balumath P.S. Case No.141 of 2019 instituted under Sections 379/414/420 of the Indian Penal Code, Section 21/4(A) of the M.M.D.R. Act, Section 37 of Air (Prevention and Control of Pollution) Act, 1981 and Section 44 of Water (Prevention and Control of Pollution) Act, the petitioner has moved this Court for grant of privileges of anticipatory bail.
Heard learned counsel appearing for the petitioner and learned A.P.P appearing for the State.
Learned counsel appearing for the petitioner submits that the allegation against the petitioner is that the petitioner is the General Manager of M/s. Sangeeta Sales Private Limited which is involved in handling and transportation of coal from Amrapali Project of CCL to Prayagraj in the State of Uttar Pradesh and it is submitted that there is no dispute that the coal has been validly procured and transportation was to be done on point to point basis but there is deviation. It is submitted that the allegation against the petitioner is false. Drawing attention of this Court towards the order dated 30.08.2017 passed in W.P. (Cr.) No.483 of 2015, learned counsel for the petitioner submits that as has been mentioned in the said order, a Division Bench of this Court in the case of Abhas Kumar Acksaria & Others Vs. The State of Bihar & Others (Cr.W.J.C. No.33 of 1991 (R) has held that "deviation by a truck carrying coal to a place other than its destination cannot be a criminal offence either under the Indian Penal Code or under the Essential Commodities Act." It is then submitted that the petitioner undertakes that in future he will ensure and take proper care regarding prevention of pollution by the vehicles engaged by his company for transportation of coal and he will ensure that no pollution is caused during the transportation. Drawing attention of this Court towards para-03 of the supplementary affidavit, learned counsel for the petitioner submits that the petitioner has no criminal antecedent. It is lastly submitted that the petitioner is ready and willing to co-operate with the investigation of the case. Hence, it is submitted that the petitioner be given the privileges of anticipatory bail.
Learned A.P.P appearing for the State opposes the prayer for anticipatory bail of the petitioner.
Considering the submissions of learned counsels and the facts and circumstances stated above, I am inclined to grant privileges of anticipatory bail to the petitioner. Accordingly, the petitioner is directed to surrender in the Court of learned Chief Judicial Magistrate, Latehar within six weeks from today and in the event of his arrest or surrendering, he will be enlarged on bail on furnishing bail bond of Rs.25,000/- (Twenty five thousand) with two sureties of the like amount each to the satisfaction of learned Chief Judicial Magistrate, Latehar in connection with Balumath P.S. Case No.141 of 2019 with the condition that he will co-operate with the investigation of the case and appear before the investigating officer as and when noticed by him and furnish his mobile number and photocopy of the Aadhar Card with an undertaking that he will not change his mobile number during the pendency of the case and he will ensure that in future he will take proper care regarding creation of pollution and he will ensure that no pollution is caused during the transportation and subject to the conditions as laid down under Section 438(2) of the Code of Criminal Procedure.
(Anil Kumar Choudhary, J.) Animesh/


Provide utility functions to communicate with the driver and GPU.
More...
#include <GLUtilities.hpp>
|
| static GLuint | loadShader (const std::string &prog, GLuint type, std::map< std::string, int > &bindings, std::string &finalLog) |
| |
| static GLuint | createProgram (const std::string &vertexContent, const std::string &fragmentContent, const std::string &geometryContent, std::map< std::string, int > &bindings, const std::string &debugInfos) |
| |
| static TextureInfos | loadTexture (const GLenum target, const std::vector< std::vector< std::string >> &path, const Descriptor &descriptor, Storage mode) |
| |
| static MeshInfos | setupBuffers (const Mesh &mesh) |
| |
| static void | saveFramebuffer (const Framebuffer &framebuffer, const unsigned int width, const unsigned int height, const std::string &path, const bool flip=true, const bool ignoreAlpha=false) |
| |
| static void | saveDefaultFramebuffer (const unsigned int width, const unsigned int height, const std::string &path) |
| |
| static unsigned int | getTypeAndFormat (const GLuint typedFormat, GLuint &type, GLuint &format) |
| |
| static GLuint | getMagnificationFilter (const GLuint minificationFilter) |
| |
| static GLuint | createTexture (const GLenum destination, const Descriptor &descriptor, const int mipmapCount) |
| |
| static void | drawMesh (const MeshInfos &mesh) |
| |
| static void | bindTextures (const std::vector< const TextureInfos * > &textures, int startingSlot=GL_TEXTURE0) |
| |
| static void | uploadTexture (const GLenum destination, const GLuint texId, const GLenum destTypedFormat, const unsigned int mipid, const unsigned int lid, const Image &image) |
| |
|
| static void | savePixels (const GLenum type, const GLenum format, const unsigned int width, const unsigned int height, const unsigned int components, const std::string &path, const bool flip, const bool ignoreAlpha) |
| |
Provide utility functions to communicate with the driver and GPU.
◆ bindTextures()
| void GLUtilities::bindTextures |
( |
const std::vector< const TextureInfos * > & |
textures, |
|
|
int |
startingSlot = GL_TEXTURE0 |
|
) |
| |
|
static |
Bind a series of textures to some texture slots, in order.
- Parameters
-
| textures | the infos of the textures to bind |
| startingSlot | the optional index of the first binding slot |
◆ createProgram()
| GLuint GLUtilities::createProgram |
( |
const std::string & |
vertexContent, |
|
|
const std::string & |
fragmentContent, |
|
|
const std::string & |
geometryContent, |
|
|
std::map< std::string, int > & |
bindings, |
|
|
const std::string & |
debugInfos |
|
) |
| |
|
static |
Create and link a GLProgram using the shader code contained in the given strings.
- Parameters
-
| vertexContent | the vertex shader string |
| fragmentContent | the fragment shader string |
| geometryContent | the optional geometry shader string |
| bindings | will be filled with the samplers present in the shaders and their user-defined locations |
| debugInfos | the name of the program, or any custom debug infos that will be logged. |
- Returns
- the OpenGL ID of the program
◆ createTexture()
| GLuint GLUtilities::createTexture |
( |
const GLenum |
destination, |
|
|
const Descriptor & |
descriptor, |
|
|
const int |
mipmapCount |
|
) |
| |
|
static |
Create a GPU texture with a given layout and mip map count.
- Parameters
-
| destination | the kind of texture to create: 2D, cubemap,... |
| descriptor | type and format information |
| mipmapCount | the number of mipmap levels. If null, default value will be used. |
- Returns
- the handle of the created texture.
◆ drawMesh()
| void GLUtilities::drawMesh |
( |
const MeshInfos & |
mesh | ) |
|
|
static |
Draw indexed geometry.
- Parameters
-
◆ getMagnificationFilter()
| GLuint GLUtilities::getMagnificationFilter |
( |
const GLuint |
minificationFilter | ) |
|
|
static |
Obtain the texture magnification filter associated to a minification filter, removing the mipmaping qualifier.
- Parameters
-
| minificationFilter | the minification filter to convert |
- Returns
- the magnification filter
◆ getTypeAndFormat()
| unsigned int GLUtilities::getTypeAndFormat |
( |
const GLuint |
typedFormat, |
|
|
GLuint & |
type, |
|
|
GLuint & |
format |
|
) |
| |
|
static |
Obtain the separate type, format and channel count of a texture typed format.
- Parameters
-
| typedFormat | the precise format to detail |
| type | will contain the type (GL_FLOAT,...) |
| format | will contain the general layout (GL_RG,...) |
- Returns
- the number of channels
◆ loadShader()
| GLuint GLUtilities::loadShader |
( |
const std::string & |
prog, |
|
|
GLuint |
type, |
|
|
std::map< std::string, int > & |
bindings, |
|
|
std::string & |
finalLog |
|
) |
| |
|
static |
Create a shader of a given type from a string. Extract additional informations from the shader.
- Parameters
-
| prog | the content of the shader |
| type | the type of shader (GL_VERTEX_SHADER,...) |
| bindings | will be filled with the samplers present in the shader and their user-defined locations |
| finalLog | will contain the compilation log of the shader |
- Returns
- the OpenGL ID of the shader object
◆ loadTexture()
| TextureInfos GLUtilities::loadTexture |
( |
const GLenum |
target, |
|
|
const std::vector< std::vector< std::string >> & |
path, |
|
|
const Descriptor & |
descriptor, |
|
|
Storage |
mode |
|
) |
| |
|
static |
Create, load and send a texture to the GPU.
- Parameters
-
| target | the texture target: 2D, array, cubemap,... |
| path | a list of list of paths, one for each layer of each mip level of the texture |
| descriptor | the texture format descriptor |
| mode | denote if data will be available in the CPU and/or GPU memory |
- Returns
- the texture informations, including the OpenGL ID
- Note
- If only one list path is present, the mipmaps will be generated automatically.
- Todo:
- Test in practice.
◆ saveDefaultFramebuffer()
| void GLUtilities::saveDefaultFramebuffer |
( |
const unsigned int |
width, |
|
|
const unsigned int |
height, |
|
|
const std::string & |
path |
|
) |
| |
|
static |
Save the window framebuffer content to the disk.
- Parameters
-
| width | the width of the region to save |
| height | the height of the region to save |
| path | the output image path |
- Note
- The output image extension will be automatically added based on the framebuffer type and format.
◆ saveFramebuffer()
| void GLUtilities::saveFramebuffer |
( |
const Framebuffer & |
framebuffer, |
|
|
const unsigned int |
width, |
|
|
const unsigned int |
height, |
|
|
const std::string & |
path, |
|
|
const bool |
flip = true , |
|
|
const bool |
ignoreAlpha = false |
|
) |
| |
|
static |
Save a given framebuffer content to the disk.
- Parameters
-
| framebuffer | the framebuffer to save |
| width | the width of the region to save |
| height | the height of the region to save |
| path | the output image path |
| flip | should the image be vertically fliped before saving |
| ignoreAlpha | should the alpha channel be ignored if it exists |
- Note
- The output image extension will be automatically added based on the framebuffer type and format.
- Warning
- Export of small size GL_FLOAT framebuffers can create artifacts.
◆ savePixels()
| void GLUtilities::savePixels |
( |
const GLenum |
type, |
|
|
const GLenum |
format, |
|
|
const unsigned int |
width, |
|
|
const unsigned int |
height, |
|
|
const unsigned int |
components, |
|
|
const std::string & |
path, |
|
|
const bool |
flip, |
|
|
const bool |
ignoreAlpha |
|
) |
| |
|
staticprivate |
Read back the currently bound framebuffer to the CPU and save it in the best possible format on disk.
- Parameters
-
| type | the type of the framebuffer |
| format | the format of the framebuffer |
| width | the width of the framebuffer |
| height | the height of the framebuffer |
| components | the number of components of the framebuffer |
| path | the output image path |
| flip | should the image be vertically fliped before saving |
| ignoreAlpha | should the alpha channel be ignored if it exists |
- Note
- The output image extension will be automatically added based on the framebuffer type and format.
◆ setupBuffers()
Mesh loading: send a mesh data to the GPU.
- Parameters
-
- Returns
- the mesh infos, including OpenGL array/buffer IDs
- Note
- The order of attribute locations is: position, normal, uvs, tangents, binormals.
◆ uploadTexture()
| void GLUtilities::uploadTexture |
( |
const GLenum |
destination, |
|
|
const GLuint |
texId, |
|
|
const GLenum |
destTypedFormat, |
|
|
const unsigned int |
mipid, |
|
|
const unsigned int |
lid, |
|
|
const Image & |
image |
|
) |
| |
|
static |
Upload data to a GPU texture.
- Parameters
-
| destination | the kind of texture to target: 2D, cubemap, 2D array... |
| texId | the handle of the texture |
| destTypedFormat | the detailed format of the texture |
| mipid | the mipmap level to populate |
| lid | the layer to populate for arrays and cubemaps |
| image | the image data to upload to the GPU |
The documentation for this class was generated from the following files:


WITNESS LIST Natural Resources Committee May 10, 2001 - 2:00P HB 66 ON: Wiley, Steve Manager-Water Well Driller Program (Texas Department of Licensing and Regulation), Austin, TX HB 71 Registering, but not testifying: On: Wiley, Steve Manager- Water Well Driller Program (Texas Dept Licensing and Regulation), Austin, TX HB 1281 AGAINST: Hardwick, Robert General Counsel (Tecan Water Companies, Inc.), Dallas, TX ON: Halcomb, Doug Resource Witness (TNRCC), Austin, TX Stepherson, Angela Staff Attorney (TNRCC), Austin, TX HB 1426 Registering, but not testifying: On: Enquist, Marshall Attorney-Legal Services-Resources-O&G (General Land Office-Resource Witness) HB 1628 Registering, but not testifying: For: Schmitt, Cyndie Legislative Liason (Texas Council fo Community MHMR Centers Inc.), Austin, TX On: Farmer, Roshunda Governmental Affairs Director (Texas Dept Mental Health & Mental Retardation), Austin, TX HB 1880 Registering, but not testifying: For: Engelke, Tommy Executive Vice President (Texas Agricultural Cooperative Council), Austin, TX Joiner, Gary Associate Legislative Director (Texas Farm Bureau), Austin, TX Mayberry, Rachael "Angie" Executive Assistant (Texas Association of Dairymen), Austin, TX Warner, Freddy Consultant (Texas Poultry Federation), Wimberly, TX On: Dawson, David Attorney (Akin Gump Stauss Hauer & Feld, LLP), Austin, TX Deviney, Lee Assistant Commissioner for Finance (Texas Department of Agriculture/TX As Finance Authority), Austin, TX HB 2033 Registering, but not testifying: For: Petersen, Ken General Counsel (Texas Rural Water Association), Austin, TX HB 2144 Registering, but not testifying: On: Molina, Kay Staff Attorney (TX General Land Office), Austin, TX HB 2310 ON: Buckley, Robert Executive Director (State Soil & Water Conservation Board), Temple, TX Moore, James Assistant Executive Director, Cons. Prog (Texas Soil & Water Conservation Board), Temple, TX Registering, but not testifying: For: Avbrecht, Edward Chairman (TX State & Water Board), Comfort, TX Dodier, Jr., Jose President (Assn. of Texas Soil & Water Conservation District), Zapata, TX Howe, Billy Associate Legislative Director (Texas Farm Bureau), Austin, TX On: Solterman, Susan project manager (Sunset Advisory Commission), Austin, TX HB 2400 ON: Garth, Tanner (Texas Trial Lawyers Assn.), Houston, TX Registering, but not testifying: For: Turner, Jill Associate Legislative Director (Texas Farm Bureau), Austin, TX HB 2409 Registering, but not testifying: On: Burnett, Dale Director, Waste Permits Division (TNRCC), Austin, TX HB 2436 Registering, but not testifying: For: Stevens, Bill Executive VP (Texas Alliance of Energy Producers), Abilene, TX HB 2588 Registering, but not testifying: For: Baker, Carole Director of Pubic Information (The Subsidence District), Friendswood, TX Werkenthin, Jr., Fred (Tarrant Regional Water District), Austin, TX HB 2649 Registering, but not testifying: For: Golemon, Kinnan (Equira Services & Koch Industries), Austin, TX Miksa, Mary VP Governmental Affairs (Texas Association of Business & Chambers of Commerce), Austin, TX Miller, Neal Consultant (The Chevron Companies), Austin, TX Oswald, Bill Director-Texas (Koch Industries), Austin, TX Sebree, Ben Vice President of Governmental Affairs (Texas Oil & Gas Association), Austin, TX Stewart, Michael VP, Governmental Affairs (TX Aggregates & Concrete Assn.) Venable, Peggy State Director (Citizens for a Sound Economy), Austin, TX Weiting, Leroy Owner (Weiting Consulting (CITGO)) HB 2718 Registering, but not testifying: For: Graham, Larry Regional Public Affairs (Southern Union Gas), Austin, TX HB 2855 FOR: Lee, Ernest Secretary/Treasurer (Southeast Trinity Groundwater Conservation District), Canyon Lake, TX Millikin, Jay Comal County Commissioner (Comal County Commissioners Court), New Braunfels, TX Registering, but not testifying: For: Bowlin, Stovy President (Southeast Trinity Groanudwater Conservation District), Canyon Lake, TX HB 2859 Registering, but not testifying: For: Miller, Neal Consultant (Chevron Co.), Austin, TX On: Ugarte, Elisa Staff Attorney (TX General Land Office), Austin, TX HB 2997 Registering, but not testifying: For: Golemon, Kinnan Attorney (ASARCO Incorporated, TXI Operations, Equiva), Austin, TX Miksa, Mary VP Govt Affairs (Texas Assoc of Business & Chamber of Commerce), Austin, TX On: Bredwell, Charles Policy Analyst (Comptroller of Public Accounts), Austin, TX HB 3040 FOR: Holmes, Jack Director of Environmental Affairs (First Wave Marine, Inc.), Houston, TX Registering, but not testifying: For: Golemon, Kinnan Attorneys for First Wave Marine (Brown McCarroll, LLP), Austin, TX HB 3111 ON: Batterton, Carol Director, Compliance Support Division (TNRCC), Austin, TX HB 3123 FOR: Armstrong, Beyri President (Integrated Land and Wildlife Management), Dripping Springs, TX Langford, David Executive VP (Texas Wildlife Association), San Antonio, TX Lewis, Gib (TWA), Austin, TX AGAINST: Avant, Andrew Legal Counsel (Kendall Appraisal District, Tax Collector, Boerne ISD), Austin, TX Cory, Art Chief Appraiser (Travis Appraisal District), Austin, TX Islas, Pete Chief Appraiser (Hays County Appraisal District), Kyle, TX ON: Robinson, Jim President (Texas Assn of Appraisal Districts), Houston, TX Registering, but not testifying: For: Kramer, Ken Director (Lone Star Chapter, Sierra Club), Austin, TX On: Brown, Kirby Branch Chief, Private Lands & Habitat (TPWD), Austin, TX Wilson, Dan Executive Assistant- Property Tax Divisi (Comptroller of Public Accounts), Austin, TX HB 3194 Registering, but not testifying: On: Boudreau, James Project Manager (GLO) Frank, Jeff (GLO), Austin, TX HB 3195 Registering, but not testifying: On: Boudreau, James Project Manager (GLO) Frank, Jeff (GLO), Austin, TX HB 3315 ON: Brown, Kirby Chief, Private Lands & Habitat Ranch (Texas Parks & Wildlife), Austin, TX Powers, Trey Director of Legislative Affairs (TX Dept of Agriculture), Austin, TX Registering, but not testifying: For: Small, Ed Attorney (Texas Southern Cattle Raisers Assn Texas Forestry Assn), Austin, TX HB 3543 Registering, but not testifying: For: Cornett, Cameron GM (Headwaters UWCD), Kerrville, TX HB 3628 AGAINST: Baxter, Robert Spokesperson (Goldenwood Property Ownrs Assn,), Austin, TX Christiansen, Jeanine President's Wife (Radiance Water Supply Corp), Austin, TX Foster, Erin Chair (Hays County Water Planning Partnership), Austin, TX ON: Wilson, Jim (Self), Austin, TX Registering, but not testifying: For: Barret, Andy (Maker Development LT), Austin, TX Against: Backus, Andrew Spokesman (Goldenwood Property Owners Assn.), Austin, TX Kerr, Roger Manager (Radiance Water Supply Corp.) Wilson, Terry Mayor (City of Sunset Valley), Austin, TX HB 3628 Against: Austin, Lia President (Integrated Land Assets Inc.), Austin, TX HB 3629 AGAINST: Foster, Erin Chair (Hays County Planning Partnership), Austin, TX Registering, but not testifying: Against: Austin, Lia President (Integrated Land Assets Inc.), Austin, TX Backus, Andrew Spokesman (Goldenwood Property Owners Assn.), Austin, TX Baxter, Jr., Robert Spokesman (Goldenwood Property Owners Assn.), Austin, TX Cowan, Terry Mayor (City of Sunset Valley), Austin, TX On: Barrett, Andy (Maker Development L.P.), Austin, TX Providing written testimony: Against: Christensen, Jeanine Presidents Wife (Radiance Water Supply Corp), Austin, TX Kerr, Roger (Radiance Water Supply Corp.), Austin, TX Wilson, Jim (Self), Austin, TX HB 3675 Registering, but not testifying: For: Harris, Jack County Commissioner (Brazoria County), Pearland, TX HCR 226 Registering, but not testifying: For: Golemon, Kinnan Attorney (Gulf Coast Waste Disposal Authority ASARCO TXI Operations Equira Services, etc.), Austin, TX SB 1752 FOR: Roberts, Delbert County Judge (Kimble County Commissioners Court), Junction, TX Registering, but not testifying: For: Holland, Scott General Manager (Irion Co. WCD, Sterling Co. UWCD), Mertzon, TX