diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/2014/02/prototype-nepal-school-rankings/index.html b/2014/02/prototype-nepal-school-rankings/index.html new file mode 100644 index 00000000..7a171fc5 --- /dev/null +++ b/2014/02/prototype-nepal-school-rankings/index.html @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Prototype: Nepal School Rankings | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Prototype: Nepal School Rankings

+

23 Feb 2014 - codefornepal

+

+

image

+ +

We analyzed School Performance data in Nepal and built a prototype of an app to rank schools based on the performance. It will help parents and students find good schools in the area. http://demo.skylinenet.net/nepal/

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/02/shape-files-of-districts-in-nepal/index.html b/2014/02/shape-files-of-districts-in-nepal/index.html new file mode 100644 index 00000000..fb04a4bb --- /dev/null +++ b/2014/02/shape-files-of-districts-in-nepal/index.html @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shape files of districts in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Shape files of districts in Nepal

+

23 Feb 2014 - codefornepal

+

+

We have cleaned and verified the shape files of districts in Nepal for everyone to use.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/02/top-10-languages-spoken-as-mother-tongues-in-nepal/index.html b/2014/02/top-10-languages-spoken-as-mother-tongues-in-nepal/index.html new file mode 100644 index 00000000..d558dd9d --- /dev/null +++ b/2014/02/top-10-languages-spoken-as-mother-tongues-in-nepal/index.html @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Top 10 languages spoken as mother tongues in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Top 10 languages spoken as mother tongues in Nepal

+

28 Feb 2014 - codefornepal

+

+

“There are 123 languages spoken as mother tongue reported in census 2011. Nepali is spoken as mother tongue by 44.6 percent (11,826,953) of the total population followed by Maithili (11.7% 3,092,530).” – Central Bureau of Statistics (CBS).

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/02/whats-the-largest-caste-ethnicity-in-nepal/index.html b/2014/02/whats-the-largest-caste-ethnicity-in-nepal/index.html new file mode 100644 index 00000000..2f6d3c3e --- /dev/null +++ b/2014/02/whats-the-largest-caste-ethnicity-in-nepal/index.html @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What's the largest caste/ethnicity in Nepal? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

What's the largest caste/ethnicity in Nepal?

+

25 Feb 2014 - codefornepal

+

+

_“There are 125 caste/ethnic groups reported in the census 2011. Chhetri is the largest caste/ethnic groups having 16.6% (4,398,053) of the total population followed by Brahman-Hill (12.2% ; 3,226,903).” — Central Bureau of Statistics (CBS).
+_

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/03/does-educating-girls-reduce-fertility-rates-in/index.html b/2014/03/does-educating-girls-reduce-fertility-rates-in/index.html new file mode 100644 index 00000000..3ecdae2a --- /dev/null +++ b/2014/03/does-educating-girls-reduce-fertility-rates-in/index.html @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Does educating girls reduce fertility rates in South Asia? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Does educating girls reduce fertility rates in South Asia?

+

09 Mar 2014 - codefornepal

+

+

Numbers from World Development Indicators show that the higher the level of female education, the lower the fertility rate.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/04/visualizing-district-level-poverty-in-nepal/index.html b/2014/04/visualizing-district-level-poverty-in-nepal/index.html new file mode 100644 index 00000000..82cfca39 --- /dev/null +++ b/2014/04/visualizing-district-level-poverty-in-nepal/index.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visualizing district level poverty in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Visualizing district level poverty in Nepal

+

21 Apr 2014 - codefornepal

+

+

This map shows percentage of population living in poverty in districts in 2011.

+ +

Data file: Code for Nepal

+ +

Source: Small Area Estimation of Poverty

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/04/visualizing-number-of-teachers-in-2011/index.html b/2014/04/visualizing-number-of-teachers-in-2011/index.html new file mode 100644 index 00000000..578bbb52 --- /dev/null +++ b/2014/04/visualizing-number-of-teachers-in-2011/index.html @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visualizing the number of teachers in 2011 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Visualizing the number of teachers in 2011

+

06 Apr 2014 - codefornepal

+

+

You can also view the number of teachers in the table below. Districts are arranged in an alphabetical order.

+ +

Data: Code for Nepal

+ +

Source: Open Nepal Portal and Government of Nepal, Department of Education.

+ +

 

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/04/which-districts-have-the-highest-student-teacher/index.html b/2014/04/which-districts-have-the-highest-student-teacher/index.html new file mode 100644 index 00000000..343d7a43 --- /dev/null +++ b/2014/04/which-districts-have-the-highest-student-teacher/index.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which districts have the highest student/teacher ratios? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Which districts have the highest student/teacher ratios?

+

15 Apr 2014 - codefornepal

+

+

image

+ +

For the purpose of understanding this map, student–teacher ratio is the number of students who attend schools in a district divided by the number of teachers in that district.

+ +

For example, If student-teacher ratio is 100, that means there are 100 students per teacher. Now think about it: You are a 5th grade student in a village in Nepal. There are 100 students in your class and just one teacher. Wouldn’t it be hard for you to learn anything?

+ +

The higher the student-teacher ratio, the harder it is for students to learn and get attention of teachers.

+ +

Rautahat has the highest student teacher ratio in Nepal followed by Sarlahi and Mahottari.

+ +

Explore the map to find out student-teacher ratio in different districts.

+ +

Data file: Code for Nepal

+ +

Source: Open Nepal and Government of Nepal, Department of Education.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/07/code-for-nepal-launches-digital-empowerment/index.html b/2014/07/code-for-nepal-launches-digital-empowerment/index.html new file mode 100644 index 00000000..c2375964 --- /dev/null +++ b/2014/07/code-for-nepal-launches-digital-empowerment/index.html @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal launches digital empowerment training for women today | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Code for Nepal launches digital empowerment training for women today

+

22 Jul 2014 - codefornepal

+

+

+ image +

+ +

+ For Immediate Release: 21 July 2014 +

+ +

+  Contact:          Mia Mitchell +

+ +

+ Cell Phone:      9818751154 +

+ +

+ Email:              codefornepal@gmail.com +

+ +

+ Code for Nepal Launches Digital Empowerment Training for Women Today +

+ +

+ Non-profit initiative trains women in digital skills to expand their professional opportunities +

+ +

+ Kathmandu, NEPAL: Code for Nepal, a U.S.-based initiative working to increase open data and digital skills in Nepal, especially for women, began a Digital Empowerment Training for women today in Kathmandu. The training will run for the next two weeks in partnership with Subisu Cablenet, the Internet service provider, and Wigan and Leigh College. Subisu has provided participants with wifi to support their learning throughout the training. Wigan and Leigh College has provided a classroom space for the 21 students to meet daily and learn from leading journalists, social media strategists, and entrepreneurs in Nepal. +

+ +

+ Guest lecturers to the program include: Amit Agrawal, CEO of Janaki Technology Pvt. Ltd; Rajneesh Bhandari, multimedia journalist; Jemima Sherpa, blogger; and Pranika Koya, writer and activist, among others. Students will gain valuable digital skills during the program, including social media management, blogging, and coding. Twenty-one young women are attending the training in order to boost their digital skills. One woman wrote for her application that she was “keen to bring forward the female part of population to contribute to the development of the nation.” +

+ +

+ The training was designed based on a nationwide survey that Code for Nepal conducted in June and July of this year to better understand what women are interested in learning about computers and the Internet. More than 200 women took the survey, which was conducted online and offline. The Digital Empowerment Training in Kathmandu this month incorporates their input and comes at a key time for women in Nepal. As Ravi Kumar, Code for Nepal Co-Founder, puts it: “Digitally empowering young women will be key to tackling challenges such as gender-based violence and slow economic growth in Nepal.” +

+ +

+ About Code for Nepal: Code for Nepal (www.codefornepal.org) is a U.S.-based organization that works to inform, inspire, and equip Nepalis, especially women, to use technology and social media to improve their lives and help tackle challenges in their communities. It was founded in 2014 by Ravi Kumar, a Nepali living and working in the U.S., and Mia Mitchell, a graduate student at Harvard University. +

+ +

+ ### +

+ +

+ For more information, you can reach Mia Mitchell at 9818751154, or codefornepal@gmail.com +

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/07/code-for-nepal-runs-digital-empowerment-training/index.html b/2014/07/code-for-nepal-runs-digital-empowerment-training/index.html new file mode 100644 index 00000000..46ef59c9 --- /dev/null +++ b/2014/07/code-for-nepal-runs-digital-empowerment-training/index.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal runs digital empowerment training for women | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Code for Nepal runs digital empowerment training for women

+

16 Jul 2014 - codefornepal

+

+

+ imageContact:          Mia Mitchell +

+ +

+ Cell Phone:      9818751154 +

+ +

+ Email:              codefornepal@gmail.com +

+ +

+ Code for Nepal Runs Digital Empowerment Training for Women +

+ +

+ Non-profit initiative seeks to train more women in digital skills to expand their professional opportunities +

+ +

+ Kathmandu, NEPAL: Code for Nepal, a U.S.-based initiative working to increase open data and digital skills in Nepal, especially for women, will run a Digital Empowerment Training for women from July 21 to August 1, 2014, at Wigan and Leigh College in Kathmandu. Twenty young women are expected to attend the two-week training, where they will learn from some of Nepal’s top journalists, social media strategists, and entrepreneurs. Guest lecturers for the workshop include: Amit Agrawal, CEO of Janaki Technology Pvt. Ltd; Rajneesh Bhandari, multimedia journalist; Jemima Sherpa, blogger; and Pranika Koya, writer and activist, among others. Students will gain valuable digital skills during the program, including social media management, blogging, and coding. +

+ +

+ The 20 young women applied to attend the training in order to boost their digital skills, noting in their applications that they were especially interested in coding and using the Internet for their career growth. One woman wrote for her application that she was “keen to bring forward the female part of population to contribute to the development of the nation.” +

+ +

+ The training was designed based on a nationwide survey that Code for Nepal conducted in June and July of this year to better understand what women are interested in learning about computers and the Internet. More than 200 women took the survey, which was conducted online and offline. The Digital Empowerment Training in Kathmandu this month incorporates their input and comes at a key time for women in Nepal. As Ravi Kumar, Code for Nepal Co-Founder, puts it: “Digitally empowering young women will be key to tackling challenges such as gender-based violence and slow economic growth in Nepal.” +

+ +

+ About Code for Nepal: Code for Nepal (www.codefornepal.org) is a U.S.-based organization that works to inform, inspire, and equip Nepalis, especially women, to use technology and social media to improve their lives and help tackle challenges in their communities. It was founded in 2014 by Ravi Kumar, a Nepali living and working in the U.S., and Mia Mitchell, a graduate student at Harvard University. +

+ +

+ ### +

+ +

+ For more information, you can reach Mia Mitchell at 9818751154, or codefornepal@gmail.com +

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/07/digital-empowerment-training-summer-2014/index.html b/2014/07/digital-empowerment-training-summer-2014/index.html new file mode 100644 index 00000000..a3104668 --- /dev/null +++ b/2014/07/digital-empowerment-training-summer-2014/index.html @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Digital Empowerment Training – Summer 2014 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Digital Empowerment Training – Summer 2014

+

07 Jul 2014 - codefornepal

+

+

code for nepal

+ +

Dear Fellows,

+ +

Congratulations!!

+ +

Below you will find your tentative syllabus, readings and resources to excel in this training. Continue to check this page frequently. We will update it as we finalize more details.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/07/what-i-learned-from-my-summer-at-code-for-nepal/index.html b/2014/07/what-i-learned-from-my-summer-at-code-for-nepal/index.html new file mode 100644 index 00000000..2e8b1dd2 --- /dev/null +++ b/2014/07/what-i-learned-from-my-summer-at-code-for-nepal/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What I learned from my summer at Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

What I learned from my summer at Code for Nepal

+

16 Jul 2014 - codefornepal

+

+

by Shashi Adhikari, @AdhikariShashi

+ +
+ image
+ +

+ Students in Janakpur, Nepal, complete Code for Nepal’s survey on what they hope to learn about the Internet and computers. (Photo Credit: Shashi Adhikari) +

+ +

 

+ +

I just finished my first year of college at KIIT University in India, where I study computer science. For the summer, I worked as a Program Analyst for Code for Nepal. Code for Nepal is a U.S.-based organization that works for digital empowerment in Nepal. Digital empowerment means raising awareness about how to use social media and technology to make your life better and to have more access to information online.

+ +

My main job as a Program Analyst was to conduct a survey in Nepal to determine what women wanted to learn about computers and the Internet. The survey was done online and offline via paper. In Nepal, only a few cities have good Internet service. I went to several schools such as Sathya Sai School in Kathmandu, and Siddharth Shishu Sadan School and Model Campus in Janakpur.

+ +

I also asked my friends from high school who are pursuing their undergraduate degrees in Kathmandu to ask their female classmates to take the survey. My friends are from different colleges like V.S Niketan College, Global College of Management, and Apex College. I distributed the form to them and gave a speech about Code For Nepal and they returned it back after students finished them. I gave the survey to high school, undergraduate, and graduate-level students.

+ +

It was a good experience conducting the survey in Kathmandu and Janakpur over six weeks. More than 200 women completed the survey, sharing their goals and interests for digital training.

+ +

While completing the survey, many students asked me questions, such as: what is a “hackathon”? What is “code” or “programming languages”? Students were curious to learn about HTML/CSS and Java. For students who had never heard of code, the concept was difficult to understand.

+ +

To explain, I told them that the next time when they played a game on their phone, they would see the Java logo as the game loaded – that was an example of code being used to build a product that students used in their everyday lives.

+ +

Overall, I found that it was very hard in rural area for girls to use the Internet and to know about social media. Girls in the Janakpur region also explained that they used the Internet infrequently because it is too slow. The power is often out there due to “load shedding.” Nonetheless, they were interested in Code for Nepal, and hope to participate in a training program in the future.

+ +

We are still conducting survey online. If you are a woman in Nepal interested in digital training, take the survey, or if you know someone who is interested then share this blog post with them!

+ +

And I welcome your thoughts about our project. Looking forward for your comments below!

+ +

image

+ +

Shashi Adhikari, @AdhikariShashi
+Program Analyst

+ +

Shashi is a social media and technology enthusiast. He is pursuing bachelors in computer science at KIIT in India. He likes to visit new places, make new friends and read tech blogs.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/09/code-for-nepal-empowers-women-15-photos/index.html b/2014/09/code-for-nepal-empowers-women-15-photos/index.html new file mode 100644 index 00000000..32e07d95 --- /dev/null +++ b/2014/09/code-for-nepal-empowers-women-15-photos/index.html @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal Empowers Women, 15 photos | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Code for Nepal Empowers Women, 15 photos

+

02 Sep 2014 - codefornepal

+

+

From July 21st to August 1st, we organized a digital empowerment training for 21 young women in Nepal. The two-week training boosted their digital skills and empowered them as future leaders.

+ +

1. On the first day of the training, we introduced each other and asked the Code for Nepal Fellows to interview one of their classmates and publish a profile of her on their blogs. digital_literacy

+ +

 

+ +

2. One of our goals was to help students develop a digital toolkit over the course of the training. On the second day, Rajneesh Bhandari, gave a lecture about digital journalism and helped students create accounts on YouTube, SoundCloud, and other social media platforms.

+ +

image

+ +

3. We know it’s not easy to thrive in the digital world without being entrepreneurial. On the third day of the class,

+ +

Amit Agrawal, CEO of Janaki Technology Pvt. Ltd., a growing tech company in Nepal, talked about launching a startup.

+ +

image

+ +

4. There are millions of blogs in the world but very few gain traction among their audience. An exceptional blogger, Jemima Sherpa, shared her experience of gaining an audience and finding a voice on her blog, www.whathasgood.com.

+ +

image

+ +

5. During the past few years, thanks to social media, more people have been able to express their opinions and shape public debate in Nepal. Last year, #OccupyBaluwatar was organized by a group of young, civic minded and social media savvy individuals.
+One of the key organizers of the movement, Pranika Koyu, shared her experience of how people used social media to organize themselves and protest against violence against women in Nepal.

+ +

image

+ +

6. To provide a larger context of how social media is being used in Nepal, Aakar Anil also guest lectured.

+ +

image

+ +

7. We invited Shailendra Raj Giri, a human resource expert and entrepreneur in Nepal to talk about professional development and what it takes to get hired in Nepal. He shared his inspiring journey about working to reform the human resources industry in Nepal. He is also the founder of www.merojob.com, Nepal’s top online job site.

+ +

image

+ +

8. The digital empowerment training was specifically for women, but like most industries in Nepal, the social media market is heavily dominated by men. Shilpa Singhal is a social media and marketing expert with Janaki Technology. She shared her experience and talked about social media marketing strategies.

+ +

image

+ +

9. Our digital empowerment training was not just about social media and digital skills but also about leadership. Our students practiced public speaking with Smarika KC, a leading Nepalese debater who competes internationally.

+ +

image

+ +

10. Mia Mitchell, Co-founder of Code for Nepal, taught students about Wikipedia and the gender disparity among Wikipedia editors. She also showed students how to set up their own accounts and make edits to the online encyclopedia.image

+ +

11. We know that you can’t be fully digitally empowered if you don’t know how to access, clean and visualize data. Ravi Kumar, Co-founder of Code for Nepal, gave students hands-on training on how to use open data to create visualizations that can aid policymakers.

+ +

image

+ +

12. If 10 years ago, English was the most important language to learn to do well in the world, now, the equivalent of English is coding. Prerana Paudel, a computer science student gave an introductory HTML/CSS presentation to our fellows. After the presentation, our fellows created accounts on Codecademy.

+ +

image

+ +

13. After all these wonderful workshops, the big moment came: it was time to complete any remaining any assignments and get certificates. We hosted our graduation ceremony at Fuji Hotel in Thamel.

+ +

image

+ +

14. Ammu Kannampilly, AFP Bureau Chief in Kathmandu, spoke about journalism and the digital age during our graduation ceremony.

+ +

image

+ +

15. We are grateful for everyone’s help and support with the Digital Empowerment Training! We are working to organize more workshops like this in Nepal. Connect us on Twitter and Facebook to keep up with the latest news. And last, we leave you with some beautiful art by Sabnam Shrestha, one of our trainees.image

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/09/kalpana-i-am-a-woman-and-educated-as-much-as-any/index.html b/2014/09/kalpana-i-am-a-woman-and-educated-as-much-as-any/index.html new file mode 100644 index 00000000..573d99e1 --- /dev/null +++ b/2014/09/kalpana-i-am-a-woman-and-educated-as-much-as-any/index.html @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kalpana: I am a woman and educated as much as any other man in my country | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Kalpana: I am a woman and educated as much as any other man in my country

+

25 Sep 2014 - codefornepal

+

+

+
+ +

By Kalpana Bhandari
+Code for Nepal Fellow, 2014

+ +

It is seldom a choice to think what a country needs. Let me rephrase that, what an “underdeveloped” country, like Nepal, needs. Food, water, electricity, regulated traffic, human rights, animal rights, literacy, law, constitution, you name it.

+ +

But what one, usually, fails to see is what lies behind half the population- the population that thrives to be treated equally, the population that is constantly fighting to grow out of prejudices, a population who, although ignored, can both hold back a society or set it on a progressive path.

+ +

And for such important part of the population, the women, it is of utmost necessity to move along the line of men so that they are heard, and make a difference for those who aren’t.

+ +

Anyone is capable of doing anything, whether men or women, anything. And yet, there is a huge gap between the two genders. I am a woman and educated as much as any other man in my country, grew up with same “just” things any man is entitled too- a good school, a university, an internationally accredited degree, and yet, “less empowered”.

+ +

When I say empowered, Nepal might as well make more of women empowerment through education, health benefits, or employment for that matter. Here I introduce my experience with Code For Nepal 2014, a mission to digitally empower women. Digitally- is it that important? Well yes. Digital empowerment is a must now that everything is mobile and whole world is moving with the Internet.

+ +

Code for Nepal 2014 was hosted by a team who materialised their vision in the US. Shortly after application process and selection of fellows, the 10-day programme started on July 21.

+ +

The first week of the program basically introduced different forms of social media to 21 women fellows. The classes were already at fast track since day one- introduction to class followed by digital toolkit session by Rajneesh Bhandari where the fellows were familiarised with multimedia toolkits like Twitter, Storify, SoundCloud, Wikipedia and usage of different applications on mobile.

+ +

All of these apps were module of one reason- how these tools helped us communicate, be journalists and influence a larger crowd. In fact, with all these programmes, it wouldn’t be wrong to say that almost everyone, all over the world, using the Internet is within our access and create a butterfly effect.

+ +

The training proceeded with sharing entrepreneurial experiences, blogging, tweeting, social media management, coding and data wrapping from various professionals. The programme also addressed to individuals, the participants, sessions on how to move past old ways and adapt to new things.

+ +

The program also highlighted how one could brush their interpersonal skills whether public speaking or starting small and working diligently to achieve success. The inspirational stories from new and experienced speakers, all coming together for one purpose- empower women digitally- was a much needed boost to those, us, who think that if we don’t do something, someone else will.

+ +

After the training concluded, although the team returned back to resume to their old lives- they left back an impression to fellows- to do something. Code for Nepal fellows is more active in social media now, exploring and educating others about digital media through Code for Nepal funded grants.

+ +

There were 21 women, from 21 professional and personal backgrounds, and Code for Nepal made us believe that change is one person a time.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/09/my-attempt-to-introduce-women-to-the-digital-world/index.html b/2014/09/my-attempt-to-introduce-women-to-the-digital-world/index.html new file mode 100644 index 00000000..ab5ff29d --- /dev/null +++ b/2014/09/my-attempt-to-introduce-women-to-the-digital-world/index.html @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + My attempt to introduce women to the digital world | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

My attempt to introduce women to the digital world

+

20 Sep 2014 - codefornepal

+

+

**Yogina Shakya, **__o__ne of our grantee is organizing a digital empowerment training for 10 professional women in Dang. Yogina was one of our trainees in this summer. Read her essay below on what inspired her to organize the training.**
+**

+ +

**By Yogina Shakya
+Code for Nepal Fellow, 2014
+**

+ +

 

+ +

digital literacy program for women

+ +

We know that when a woman is educated, her whole family is educated. Nations, societies and families depend on women for almost everything in life. But when we talk about the access to new opportunities, women always fall behind men. For example, in Nepal, many women don’t have access to the Internet, among many other things.I am a woman and it hurts to see that we don’t have access to opportunities that men have. We are always behind men, not only when we want access to opportunities but also when we have to talk about freedom, empowerment and rights.

+ +

But we can change that. Today’s world depends on the Internet. I know that when we have access to the Internet and have digital skills, we have more opportunities to express ourselves.

+ +

My target is to introduce the digital world to 10 professional working women who already are seen as an ideal in their community. They are well aware of the necessity of modern world but due to lack of knowledge they are struggling to contribute to their society in more efficient way.

+ +

These women know that there is Facebook and other social media platform. I want to train them how to use to digital tools in a professional capacity. Let me share a story of one woman I’ll be training soon.

+ +

Image: Puspa Gharti in Public Hearing Program

+ +

Mrs. Puspa Gharti Magar is working as a Monitoring and Evaluation Officer in BASE where she helps community level people to develop concepts for cooperative ways of development and assist them to do the same in villages. She is a great women making a huge difference in rural life but she still faces problems when she has to explain her work to the greater mass. The main reason behind it is not being aware to how to use digital media. What I seek with the training is to help her realize the potential of digital media and how it can help empower her.

+ +

There are other 9 participants like her participating in the training. Even I had not realized the potential of how useful these digital tools could be until I attended Code for Nepal’s Digital Empowerment training. A loads of thank goes to Code for Nepal not just helping me but 20 of my other fellows as well to realize our potential. Adding to that, all of 21 participants are making an effort to change the life of people around us through the knowledge gained from the training.

+ +

My training titled ‘Women Empowerment in Digital World’ is going to be conducted on 20th September, 2014 at Tulsipur, Dang. I am looking forward for it and so are my participants as well. At last, I would like to thank Code for Nepal again for funding my project, and my organization BASE and Regional Dialogue Program for supporting me through it.

+ +

Looking forward to 20th September, 2014!

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/10/none-of-the-gifts-are-greater-than-gifting/index.html b/2014/10/none-of-the-gifts-are-greater-than-gifting/index.html new file mode 100644 index 00000000..0921aa8b --- /dev/null +++ b/2014/10/none-of-the-gifts-are-greater-than-gifting/index.html @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + None of the gifts are greater than gifting somebody with digital literacy | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

None of the gifts are greater than gifting somebody with digital literacy

+

12 Oct 2014 - codefornepal

+

+

image

+ +

**
+** By Alina Karki
+Code for Nepal Fellow, 2014

+ +

This summer I’m fellow of Code For Nepal. It’s working to increase access to practical data and improve digital literacy in Nepal. By the end of this fellowship we were asked to address one problem of our society and come up with its solution.

+ +

For my project, I did research and found that most of the government school students have least access to Computers. Based on the research, I initiated Computer Learning Project in a government school. To be part of this learning project, I nominated 6 government schools of Lalitpur district.  I shared the idea with fellows of Teach For Nepal (a movement to end education inequity in Nepal) who are working on the shame school. They applied for the project online on behalf of their schools. Based on the application submitted Shree Buddha Secondary School located on Tikabhairab got selected to partner with my project.

+ +

After the school selection, I distributed 80 applications among the students of class 8, 9. The students were selected on the basis of eagerness to learn Computer and their thoughts on why Computer education is important for them. Among 80 applicants only 12 students were selected, for the 2 week long training. The training was from 14th September to 25th September 2014.

+ +

 

+ +

The main goal of the training was to make participants realize the importance of computer education.

+ +

The training mostly covered questions such as: Why computer education is important in their life? How to turn on and off computer, software and hardware, MS. Word, Ms. Excel, uses of Internet for academics, writing and sending emails.

+ +

Everyday before the class ended the students were asked question related to computer, which I named as “Question of the day”. This helped them increase their general knowledge on computer; the winner received a gift. By the end of the training all of the 12 students had gifts and had answered at least one question. These students were divided into 2 groups, one group was named as “Speaker” who usually speak up and other team was named as”Headset” who used to hardly speak. Both the team were given task such as writing an essay on what they have learned so far from the training, getting more answers by sharing more answers.

+ +

There was no hidden challenges beside my fear on students might not able to understand English well, as most the training was conducted in English language. We also used Nepali language at times.

+ +

image

+ +

To run the project Code for Nepal provided me with a grant. They also helped me by sharing my blog and updates on Social Media; as a result I received positive feedback and was highly encouraged to put best efforts on the project. Reflecting back on what I learned from the Code for Nepal training, blogging, looking for data, and sharing on Twitter and Facebook really helped me.

+ +

The training successfully wrapped up on 25th September, the students are now off for festival vacation. After their school resumes on late November they will make a group and share the training skills with their classmates.

+ +

I’m looking forward to run such trainings on near future, To see more updates on my future steps you can check out at writeupalina.wordpress.com, follow me on Twitter at @KarkiAlina

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/10/what-i-learned-from-teaching-digital-skills-to/index.html b/2014/10/what-i-learned-from-teaching-digital-skills-to/index.html new file mode 100644 index 00000000..46c1eaa9 --- /dev/null +++ b/2014/10/what-i-learned-from-teaching-digital-skills-to/index.html @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What I learned from teaching digital skills to other women | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

What I learned from teaching digital skills to other women

+

12 Oct 2014 - codefornepal

+

+

image

+ +

**Yogina Shakya,**_ _o__ne of our grantee organized a digital empowerment training for 10 professional women in Dang. Yogina was one of our trainees this summer. **
+**

+ +

**
+** By Yogina Shakya
+Code for Nepal Fellow, 2014

+ +

Empowering women with digital skills was a dream that kept my brain at unrest and my days full of preparation. Finally the day, 20th September arrived and we started the training. As per the plan, it was for 10 women that added up with 2 guest participants.

+ +

I was nervous. All the participants were older than me. What made feel slightly confident was that I knew more about digital tools and social media than anyone else in the room. The training began with a room full of positive vibes and a lot of curiosity about the topic.

+ +

At first, we talked about how the internet started and other numerous miracles born by internet. It has made a great impact in the lives of people in the 21st century, our life revolves around it. The session was full of queries and questions—that’s how I knew the training was interesting for the participants.

+ +

The training continued with more energy as we proceeded for the practical parts, looking after the social media sites and creating social media accounts.

+ +

As everyone wasn’t internet savvy it was a bit hard make sure everyone was on the same page. Thank to the team work of the participants while I was working with one, those who understood helped other participants.

+ +

Everyone found “blogs” really interesting. Most of the participants did not know you could write and publish something so easily. We also talked about professional skills and emails such as Outlook express.

+ +

During the feedback session most of them said they would love to get another session of the training. I agreed to do a follow up session to help them with anything they might need.

+ +

The training was not only about learning the digital skill but a celebration of womanhood as well. A training that was being facilitated by girl and has only women participants is way to show the changes being made in societies. Women have learned to be independent and be a leader.

+ +

After all, I believe the training was success even though I was nervous about organizing it.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2014/11/my-initiation-to-teach-computer-skills/index.html b/2014/11/my-initiation-to-teach-computer-skills/index.html new file mode 100644 index 00000000..62f26949 --- /dev/null +++ b/2014/11/my-initiation-to-teach-computer-skills/index.html @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + My initiative to teach computer skills | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

My initiative to teach computer skills

+

03 Nov 2014 - codefornepal

+

+

+

+ image +

+ +
+
+ +
+ By Sabnam Shrestha +
+ +
+ C4N14 Fellow +
+ +
+
+ +

+ </br> </div> + +

+

+ It is my privilege to be a part of Code for Nepal. I have learned so many things being a fellow of Code for Nepal. And the most crucial for me being a #C4N14 Fellow is my final project. As part of the Digital Empowerment training, we, all fellows, were asked to make a final project on any social issues in Nepal. +

+ +

+ Initially I had no idea what to do. Then one day during Digital Empowerment training, Ravi Kumar, the co-founder for Code for Nepal, asked us what bothered us. At that instance, street children came in my mind. Then I thought why not to make a project to teach the street girls computer skills. +

+ +

+ Although I decided to do this project, it was not easy. Oscillating between organizations was exhausting. After nearly two months, I was able to conduct my project with Child Watabaran Center. +

+ +

+ This September I taught 10 girls of Child Watabaran Center basic computer skills. For them, Google and YouTube were completely strange. +

+ +

+ When I went for the first day to teach, I clearly remember, one student came to me and requested me to teach them how to use Google. She had heard about Google and Facebook but she did not know how it appeared in computer screen. I attempted to teach them my best and hope that I could meet their expectations. +

+ +

+ I conducted training for 4 days. During that tenure, they learned basic computer skills like creating new user account, setting password, making new folders and how to turn on and off computer, to use MS Word and PowerPoint . They were able to do research on Google, create new email address. +

+ +

+ During the training, I was impressed by their enthusiasm. They always wanted to learn more and asked me whether I could teach more new things. +

+ +

+ The satisfaction when they said they learned new thing with sweet smile was indescribable. I want to thank Code for Nepal for providing me this opportunity to help others. +

+
+

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/02/5-most-and-least-educated-districts-in-nepal/index.html b/2015/02/5-most-and-least-educated-districts-in-nepal/index.html new file mode 100644 index 00000000..73bae27f --- /dev/null +++ b/2015/02/5-most-and-least-educated-districts-in-nepal/index.html @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 most and least educated districts in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

5 most and least educated districts in Nepal

+

27 Feb 2015 - codefornepal

+

+

+ Most and least educated districts in Nepal + +

+ Students in Nepal. Photo Credit: DFAT, Australia +

+
+ +

Since the 1950s, Nepal has worked aggressively to educate its people. We have made significant progress. Just consider this, in 1952/1954, the total literate population in Nepal was 5.3%. Now, it’s more than 55% of the population.

+ +

So have you wondered how many people in a given district were literate in 2013?

+ +

We analyzed data from UNESCO to visualize the status of literacy in Nepal. The data (pdf) is from 2013. Here is a Google doc of the data.

+ +

Not surprisingly, Kathmandu is the most educated district in Nepal followed by Lalitpur and Kaski.

+ +

Here are the 5 most educated districts in Nepal. 

+ +
    +
  1. Kathmandu
  2. +
  3. Lalitpur
  4. +
  5. Kaski
  6. +
  7. Bhaktapur
  8. +
  9. Ilam
  10. +
+ +

And here are the 5 least educated districts. 

+ +
    +
  1. Rauthat
  2. +
  3. Sarlahi
  4. +
  5. Mahottari
  6. +
  7. Humla
  8. +
  9. Siraha
  10. +
+ +

Check out the map for literacy rates of 75 districts in Nepal. You will also find female and male literacy rates.

+ +

As the map shows, many districts have lower literacy rates. Lack of infrastructure, instability and lack of good teachers are some of the causes of low literacy rates in many districts in Nepal. Here is a video by Al Jazeera that sheds some light on problems of Nepali education sector.

+ +

The good news is there are many organizations working to increase literacy level. For instance, Grassroot Movement in Nepal has so far rebuilt more than 25 schools in villages. And Teach for Nepal  is working to increase quality of education.

+ +

 

+ +

P.s: If you would like the embed code of the map to use for your website, let us know. Or if you are looking for related datasets, we will be happy to help you find those as well. Also, if you find an error in data or in this post, let us know.

+ +

 

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/02/numbers-of-female-prisoners-increased-by-239-in-nepal/index.html b/2015/02/numbers-of-female-prisoners-increased-by-239-in-nepal/index.html new file mode 100644 index 00000000..cdaf50e5 --- /dev/null +++ b/2015/02/numbers-of-female-prisoners-increased-by-239-in-nepal/index.html @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Women prisoners increased by 239% in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Women prisoners increased by 239% in Nepal

+

20 Feb 2015 - codefornepal

+

+

In the last 8 years, the number of women prisoners increased by more than 230%. That’s shockingly a lot. We are not sure why that’s happening. We do know that recently prison inmates were forced to sleep in plastic sheds and that inmates are forced to live under open sky at the Dadeldhura prison in Nepal.

+ +

Do you have any idea why this is happening? Tell us in the comments or tweet at us @codefornepal

+ +

To give you more context, number of prisoners is increasing overall as well. Between 2001 and 2010, number of total prisoners almost doubled. See below.

+ +

Data source: International Centre for prison studies (Google docs)

+ +

This data is based on International Center of Prison Studies (ICPS). ICPS got it from the U.S. State Department (pdf). The U.S Department got it from Department of Prison Management, Nepal.

+ +

 If you would like to embed these graphs on your website, we are happy to share the embed code with you. Email us at code for nepal (at) gmail.com

+ +

Related stories: 

+ +

New Bill seeks to end culture of torture

+ +

Prison inmates forced to sleep in plastic sheds

+ +

Inmates forced to live under open sky at Dadeldhura prison

+ +

Eastern Regional Jail becoming a model

+ +

Experts call for reforms in Nepal’s prisons

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/03/status-of-women-in-nepal-in-5-charts/index.html b/2015/03/status-of-women-in-nepal-in-5-charts/index.html new file mode 100644 index 00000000..e1be8e93 --- /dev/null +++ b/2015/03/status-of-women-in-nepal-in-5-charts/index.html @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status of women in Nepal in 5 charts | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Status of women in Nepal in 5 charts

+

08 Mar 2015 - codefornepal

+

+

+ +

Happy International Women’s Day! First let us tell you that there is good news. For the first time, the number of girls sitting for SLC examinations has overtaken the number of boys in Nepal this year.

+ +

Here is a quick summary of our five charts:

+ +
    +
  • Ratio of young literate female to male ages 15-24 in 2011: 86.81%
  • +
  • Households headed by female in 2011: 28.2%
  • +
  • Total births attended by skilled health staff in 2011: 36%
  • +
  • Labor force participation rate, female in 2014: 50%
  • +
  • Proportion of seats held by women in parliament in Nepal in 2014: 29.9%.
  • +
+ +

Check out these charts below and tell us what surprised you the most.

+ +
    +
  1. Proportion of seats held by women in parliament in Nepal
  2. +
+ +

Recently, Nepal has made progress in electing more women to parliaments. In 2006, only 5.6% of seats in parliaments were held by women. In 2008, it reached 33.8%. Wasn’t that great news? But in 2014, it fell to 29.9%. Let’s hope there will be an increase in the near future.

+ +
    +
  1. Labor force participation rate
  2. +
+ +

Nepal hasn’t made enough progress when it comes to ensuring there are more women in the labor force. Only 50% of women are active in the labor force.

+ +
    +
  1. Female headed households in Nepal (% of households with female head)
  2. +
+ +

We need more women who are educated and are working so they can not only lead Nepal but also their families. In 2011, only 28.2% of households in Nepal were headed by women. Let’s hope this will increase soon. We know women invest 90% of their income in their families. This will influence the productivity and ability of future generations who can help Nepal develop.

+ +
    +
  1. Births attended by skilled health staff
  2. +
+ +

Last but not the least we know how important it is to make sure births are attended by skilled health staff. Mortality rates in Nepal has decreased significantly in the past. We have managed to reach the Millennium Development Goal (MDG) on reducing maternal mortality.  But when only 36% of births are attended by skilled health staff, it’s not good. It needs to increase.

+ +

Liked what you read? Share it on your social channels.

+ +

If you find any error on this page, please let us know. Thanks!

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/04/map-of-reported-nepalearthquake-deaths/index.html b/2015/04/map-of-reported-nepalearthquake-deaths/index.html new file mode 100644 index 00000000..acc2a391 --- /dev/null +++ b/2015/04/map-of-reported-nepalearthquake-deaths/index.html @@ -0,0 +1,580 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Map of reported #nepalearthquake deaths, injured, and houses damaged | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Map of reported #nepalearthquake deaths, injured, and houses damaged

+

29 Apr 2015 - codefornepal

+

+

Updated on May 22, 4pm EST

+ +
+ Source: Reuters India + +

+ Source: Reuters India +

+
+ +

On April 25, a devastating earthquake of 7.8 magnitude struck Nepal. The death toll from the ‪#‎NepalEarthquake‬ has passed 8,000. More than 600,000 houses are completely destroyed or partially damaged. Eight million people have been affected.

+ +

The earthquake was followed by a large number of aftershocks, including one that measured 7.3 on 12 May.

+ +

We strongly believe that Nepal’s recovery should be guided by data than any other criteria. Read more about this in our oped on TIME.

+ +

If you are an org, working to help people affected, check out Kathmandu Living Labs to coordinate your response.

+ +

Below is the map of injured & deaths, public’s houses damaged and destroyed, based on the data provided by the Ministry of Home Affairs on May 22. Source: Nepal Disaster Risk Reduction Portal (Retrieved on May 22.) Here is our Google doc of the data. On this page, you will also find map of district level literacy and poverty rates.

+ +

Quick guide on how to use this map:

+ +

There are two layers in this map. You can click on the layers to select which one you would like to explore.

+ +

Thanks to Richa Neupane for compiling the data in the Google doc from the government website.

+ +

This map shows percentage of population living in poverty in districts in 2011.

+ +

Data file: Code for Nepal  Source: Small Area Estimation of Poverty

+ +

####

+ +

********

+ +

Post from May 6

+ +

Below is the map of injured & deaths, public’s houses damaged and destroyed, based on the data provided by the Ministry of Home Affairs on May 6. Source: Nepal Disaster Risk Reduction Portal (Retrieved on May 6.) Here is our Google doc of the data. On this page, you will also find map of district level literacy and poverty rates. 

+ +

Quick guide on how to use this map:

+ +

There are three layers in this map. You can click on the layers to select which one you would like to explore.

+ +

Thanks to Richa Neupane for compiling the data in the Google doc from the government website.

+ +

**********

+ +

Below is the map of injured & deaths, public’s houses damaged and destroyed, based on the data provided by the Ministry of Home Affairs on May 2. Source: Pdf in Nepali Here is our Google doc of the data. On this page, you will also find map of district level literacy and poverty rates. 

+ +

Quick guide on how to use this map:

+ +

There are three layers in this map. You can click on the layers to select which one you would like to explore.

+ +

 

+ +

***********

+ +

Below is the map of injured & deaths, public’s houses damaged and destroyed, based on the data provided by the Ministry of Home Affairs on May 1. Source: Pdf in Nepali Here is our Google doc of the data. On this page, you will also find map of district level literacy and poverty rates. 

+ +

Please note that there are discrepancies in the data. For example, In SindhupalChowk, number of houses destroyed or damaged are zero, according to the pdf. That can’t be the case because it’s one of the hardest hit areas. Number of reported deaths in Sindhupalchowk was 2,071.

+ +

If you find any error, please email at code for nepal at gmail dot com

+ +
Here are five districts with most deaths:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ District + + Number of deaths +
+ Sindhupalchok + + 2071 +
+ Kathmandu + + 1144 +
+ Nuwakot + + 759 +
+ Dhading + + 636 +
+ Gorkha + + 410 +
+ +

#####

+ +
Here are five districts with most injured:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ District + + Number of injured +
+ Kathmandu + + 4634 +
+ Bhaktapur + + 1885 +
+ Kavrepalanchok + + 1394 +
+ Nuwakot + + 1300 +
+ Lalitpur + + 1090 +
+ +

#####

+ +
Here are districts with most number of public houses damaged:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ District + + Number of public’s houses damaged (partially) +
+ Dolakha + + 35000 +
+ Kathmandu + + 20300 +
+ Kavrepalanchok + + 18545 +
+ Nuwakot + + 15000 +
+ Tanahu + + 12927 +
+ +

####

+ +

Quick guide on how to use the map:

+ +

There are three layers in this map: 1. Damaged houses 2. Number of people injured 3. Literacy rate. You can click on the layers to select which one you would like to explore.

+ +

 

+ +

This map shows percentage of population living in poverty in districts in 2011.

+ +

Data file: Code for Nepal  Source: Small Area Estimation of Poverty

+ +

**********

+ +

The map is based on April 30 data (pdf in Nepali) from Ministry of Home Affairs.  We hope to update it soon. Thanks to Ayesha Shakya for sending this to us. Here is the Google doc that you can use.

+ +

Here is an embed code for the map.

+ +

 

+ +

*******

+ +

Map of #nepalquake deaths on April 27

+ +

The map is based on April 27 data.

+ +

The idea that Nepal’s future is in ruins is FALSE. These maps showswe can overcome this disaster. Rise. Rebuild.

+ +

If you would like to use the data, here is the Google doc. Click here for embed code of this map.  

+ +

And if you like a screenshot, here is a tweet by Anup Kaphle, an editor at the Washington Post. Thanks to Anup for sharing this data.

+ +

We have published a document with needs/sources that you share with people who need or help us gather list of more resources and contacts.

+ +

Email us at code for nepal at gmail dot com if you would like to help us update these maps and add other features.

+ +

If you see any errors in these maps, please email us at code for nepal at gmail dot com

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/04/nepal-look-like-just-100-people/index.html b/2015/04/nepal-look-like-just-100-people/index.html new file mode 100644 index 00000000..487ecdc5 --- /dev/null +++ b/2015/04/nepal-look-like-just-100-people/index.html @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What would Nepal look like if there were just 100 people? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

What would Nepal look like if there were just 100 people?

+

18 Apr 2015 - codefornepal

+

+

+ Nepal as 100 people | Create infographics +
+ +
+
+ +

If you would like to use the infographic, you can get the embed code here. And here is the data (Google doc) for the infographic.

+ +

Source: Nepal Census 2011 (pdf).

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/04/recent-code-for-nepal-stories-in-nepali-media-women-education-and-inequality/index.html b/2015/04/recent-code-for-nepal-stories-in-nepali-media-women-education-and-inequality/index.html new file mode 100644 index 00000000..3b08ef7b --- /dev/null +++ b/2015/04/recent-code-for-nepal-stories-in-nepali-media-women-education-and-inequality/index.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Recent Code for Nepal stories in Nepali media: women, education and inequality | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Recent Code for Nepal stories in Nepali media: women, education and inequality

+

18 Apr 2015 - codefornepal

+

+

+ A story about education disparity in Nepali newspaper + +

+ A story in Nepali based on Code for Nepal’s data anaysis was published in my republica of Nepal. +

+
+ +

We are glad to report that in March Nepali media used some of our data visualization to publish stories about the need to educate women, education quality, and economic inequality in Nepal. Check out these stories:

+ +
    +
  1. On the occasion of International Women’s Day on March 8, Nepali Times used our interactive map on literacy to make “districts with the best performance in child and maternal survival rates are those with the highest rates of female literacy.” http://nepalitimes.com/article/editorial/everyday-should-be-international-women-day,2063
  2. +
  3. Ravi, our co-founder published an op-ed on Setopati, about inequality in Nepal using our interactive map on district level poverty rates: http://setopati.net/opinion/5816/
  4. +
  5. In March, we also published a story in Nepal about disparity in education system of Nepal: http://nagariknews.com/society/story/34651.html
  6. +
+ +

Enjoy these stories and tell us what other stories you are interested in. We will do our best to analyze data for those stories.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/06/14-promises-nepal-government-has-made-to-improve-health-condition-of-people-affected-by-earthquake/index.html b/2015/06/14-promises-nepal-government-has-made-to-improve-health-condition-of-people-affected-by-earthquake/index.html new file mode 100644 index 00000000..900c4e0c --- /dev/null +++ b/2015/06/14-promises-nepal-government-has-made-to-improve-health-condition-of-people-affected-by-earthquake/index.html @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 16 promises the Nepal Government has made to improve health conditions for people affected by the Earthquake | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

16 promises the Nepal Government has made to improve health conditions for people affected by the Earthquake

+

15 Jun 2015 - Roshan Ghimire

+

+

+ Government goal to improve health sector in post quake Nepal + +

+ Source: Gov of Nepal. (Excuse typos.) +

+
+ +

On April 25 and May 12, Nepal was hit by devastating earthquakes. There have been more than 8,700 deaths, and more than 22,000 injuries, according to the Government of Nepal (GoN).

+ +

Ministry of Health and Population in Nepal has a network of 4,188 health facilities, according to the Post Disaster Needs Assessment and Recovery Plan of Health and Population Sector report (pdf).

+ +

They range from specialized hospitals to health posts in village development committees to urban health centers in municipalities. Also there are more than 350 private health facilities in the country.

+ +

446 public health facilities including administrative building and 16 private facilities are completely destroyed. 765 health facility or administrative building are partially damaged.

+ +

Nearly 84% (375 out of 446) of the completely damaged health facilities are from the 14 most affected districts.

+ +

COST:

+ +

The government has estimated that 11.27 billion NPR (approx 110 million USD) is needed for the recovery and reconstruction of the health sector.

+ +

Here are the promises the Nepal Government has made to improve health conditions for people affected by the earthquake in Nepal. 

+ +

Deadline set by GoN for these immediate plans: JULY 15, 2015  

+ +
    +
  1. Provision of rent or tent for damaged facilities
  2. +
  3. Demolition of fully damaged facilities
  4. +
  5. Provision of additional human resources
  6. +
  7. Repair of partial damaged buildings
  8. +
  9. Ensure drugs and supplies
  10. +
  11. Reinstitute information management system
  12. +
  13. Continue surveillance system
  14. +
+ +

**Estimated cost: 153 million NPR (approx 150,000 USD)**

+ +

 

+ +

Deadline set by GoN for these intermediate plans: FY 2015/2016  

+ +
    +
  1. Repair and retrofitting of building
  2. +
  3. Establish pre fabricated structures
  4. +
  5. Provision of longer term human resources & capacity building
  6. +
  7. Establish shelter and rehabilitation homes
  8. +
  9. Strengthen surveillance system and improve quality of services
  10. +
  11. Initiate process for reconstruction of concrete infrastructure
  12. +
+ +

**Estimated cost: 1.36 billion NPR (13.3 million USD) **

+ +

 

+ +

Deadline set by GoN for these medium plans: Medium term FY 2015-16-2019/2020 

+ +
    +
  1. Assessment of existing health facility networks and capacity
  2. +
  3. Planning of health facilities based on population and geographic consideration
  4. +
  5. Strengthening of health facility networks and service delivery by reconstructing as per the concept of build back better
  6. +
+ +

Estimated cost: 9.75 billion NPR(approx 97 million USD) 

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/06/watch-a-journey-of-discovering-open-data-in-nepal/index.html b/2015/06/watch-a-journey-of-discovering-open-data-in-nepal/index.html new file mode 100644 index 00000000..0bb94a71 --- /dev/null +++ b/2015/06/watch-a-journey-of-discovering-open-data-in-nepal/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Watch a journey of discovering open data in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Watch a journey of discovering open data in Nepal

+

07 Jun 2015 - Richa Neupane

+

+

Data journalist Gyanu Sharma leads us through Kathmandu Valley to meet various stakeholders of open data, in this short documentary. In his search for the right public school for his son, we see him seeking information about the financing of public schools, a sector that is underfunded in Nepal.

+ +

Open data is new but not unheard of in Nepal. It is paving the path towards accountability.

+ +

If citizens were aware of the existence of such data that gave details on where and what the government is investing on, they could use it as a tool to demand accountability from their government.

+ +

Public schools like the one Sharma wants his son to attend could present that data to effectively advocate for more funding in order to provide quality education. The same could be done for health agencies, village development committees, and businesses.

+ +

Data will allow for a more accountable development and governance. Stout believers in the power of data like Pavitra Rana of Open Nepal hope that data will prove revolutionary.

+ +

But first, baby steps are needed. In addition to finding, creating and listing trustful detailed data about various aid or government projects, citizens also need to be more informed about the availability of such data and guidelines for effective use of that information.

+ +

Watch the documentary and tell us what you think in the comments.

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/07/sector-wise-needs-assessment-for-nepals-recovery/index.html b/2015/07/sector-wise-needs-assessment-for-nepals-recovery/index.html new file mode 100644 index 00000000..af67c7fa --- /dev/null +++ b/2015/07/sector-wise-needs-assessment-for-nepals-recovery/index.html @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sector-wise needs assessment for Nepal’s recovery | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Sector-wise needs assessment for Nepal’s recovery

+

05 Jul 2015 - Richa Neupane

+

+

The sectoral breakdown of the needs assessment data provided by the Nepal government shows that housing and reconstruction will need the biggest support. It is crucial that these needs are met fairly among those affected.

+ +

Since this sector will take the biggest chunk of recovery budget, the recovery process should look at the most cost-effective, earthquake resistant and income generating solutions.

+ +

Strategies such as assessing the pre-disaster level of income of those affected and divvying up the reconstruction support are important in order to tackle disaster-induced poverty.

+ +

Education, tourism, finance and commerce and industry are the other sectors with highest needs after housing and human settlements. Governance needs are at 16,664 million NPR.

+ +

Since the rebuilding will need a bigger involvement of the government in allocating and monitoring the process, a detailed breakdown of this amount will help understand how the governance sector needs have been assessed and whether they are justified.

+ +

Source: Nepal Gov

+ +

+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/08/how-much-does-it-cost-to-run-kathmandu/index.html b/2015/08/how-much-does-it-cost-to-run-kathmandu/index.html new file mode 100644 index 00000000..240967b1 --- /dev/null +++ b/2015/08/how-much-does-it-cost-to-run-kathmandu/index.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How much does it cost to run Kathmandu? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

How much does it cost to run Kathmandu?

+

28 Aug 2015 - Richa Neupane

+

+

This data contributed by Nikesh Balami at openspending.org helps visualize the spending by Nepal government on the city of Kathmandu.  A similar visualization and analysis was done in 2013 by Open Knowledge Foundation Nepal. NRs. 2.9 billion is being prepared for Kathmandu’s public expenditure for the year 2015-2016.

+ +

According to a 2013 report by the Center for Public Expenditure, the budget preparation process of Nepal is inefficient and untimely. There is a lack of internal auditing process.

+ +

Researcher Chandan Sapkota’s report mentions that the city district of Kathmandu accounts for 15.8% of the total share of Nepal’s GDP.

+ +

Here are some questions we would like to explore and welcome our readers’ help:

+ +
  • + What is the total income of Kathmandu metropolitan city and how much do different sectors account for? +
  • +
  • + How does this compare to Pokhara, Lalitpur, Biratnagar and other cities? +
  • + +

    Accessibility of such comprehensive information with the help of the government or related organizations in the coming years would be beneficial to those trying to understand Nepal’s progress.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/08/intern-at-code-for-nepal/index.html b/2015/08/intern-at-code-for-nepal/index.html new file mode 100644 index 00000000..67f65fb7 --- /dev/null +++ b/2015/08/intern-at-code-for-nepal/index.html @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Intern at Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Intern at Code for Nepal

    +

    23 Aug 2015 - Roshan Ghimire

    +

    +

    + Hi there! +

    + +

    + At Code for Nepal, we are expanding — taking on projects to increase digital literacy and use of open data in Nepal, in a hope that it will help many Nepalis. +

    + +

    + Now we need your help to accomplish our mission. Join us as interns. It will be fun! We promise! Richa and I know this very well! +

    + +

    + Here are a few qualities of our interns: +

    + +
  • + Committed to the mission of Code for Nepal +
  • +
  • + Reliable and collaborative +
  • +
  • + Risk taker +
  • +
  • + Excited about working with data, especially data about Nepal +
  • +
  • + Funny +
  • +
  • + Resourceful +
  • +
  • + Looking to network and mentorship +
  • +
  • + Advanced college student +
  • + +

    + Length: 3 months
    Time commitment: 2-4 hours a week +

    + +

    + Location: Remote (Online) internship
    Compensation: These are unpaid internships. We can work with you if you wish to receive class credit. At Code for Nepal, we are all volunteers, especially in the U.S. We do what we do because we believe we are helping people and because it is so fun! +

    + +

    + Writing Interns +

    + +

    + We are seeking writing interns with interest in digital empowerment. Please look at our website’s content such as blogs to get an idea of our writing topics. You will be assisting Richa, the Communications Associate in creating similar content. Please provide us with writing samples or some published articles if available. +

    + +

    + Graphic Design Interns +

    + +

    + We expect you to have some experience with Photoshop, InDesign, Illustrator, etc. +

    + +

    + We would love to see your previous work, so please send us a few samples. We will provide you guidelines, and work closely with you. Credit will be given for the all the work done for Code for Nepal. +

    + +

    + Web Design Interns +

    + +

    + We need web design interns to help build, edit and format our project websites. Ideal candidates will have a sharp eye for clean web design. Expertise with PhotoShop, InDesign, WordPress, HTML/CSS, Java etc and other coding languages would be an advantage. +

    + +

    + General internship application +

    + +

    + If you do not fit in above criteria and wish to help out with certain projects, feel free to apply and explain what you are seeking. +

    + +

    + Thanks! Please complete this application and we will get back to you soon! +

    + +
    +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/08/women-are-underrepresented-in-nepali-online-media/index.html b/2015/08/women-are-underrepresented-in-nepali-online-media/index.html new file mode 100644 index 00000000..69409384 --- /dev/null +++ b/2015/08/women-are-underrepresented-in-nepali-online-media/index.html @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Women are underrepresented in Nepali online media | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Women are underrepresented in Nepali online media

    +

    16 Aug 2015 - codefornepal

    +

    +

    Graph of gender of authors

    + +

     

    + +

    Note: The data was gathered by Anuja KC. The blog post was written by Anuja KC and Richa Neupane

    + +

    Code for Nepal conducted a pilot research and data collection project in the first half of 2015 to assess the presence of women in Nepal’s online media.

    + +

    Based on the data we gathered and reviewed, we found women are underrepresented in Nepali online media.

    + +

    The data was collected from two major media publishing houses in Nepal: Nepali Times and Setopati.

    + +

    The main purpose of collecting this data was to look at the representation of female authors in the media and shed light on the existing gender divide in Nepali media. We also started to collect data because we could not find other related data.

    + +

    The charts illustrate articles published in Nepali Times under the ‘Nation’ section in both 2004 and 2014, in order to see what differences surfaced after a decade. In the year 2004, male authors comprised 80.2% of the ‘Nation’ section, while women wrote only 19.8% of the published articles. Based on the articles reviewed, there was a huge gender divide in 2004.

    + +

    However, the gap narrowed 10 years later. Based on the articles published in the year 2014, 46.2% of the articles published in ‘Nation’ section were written by female authors, while 53.8% were written by male authors.

    + +

    And when we analyzed the Setopati opinion section in 2015, considering 101 pieces, only 18 of them were authored by women. That means only 17.8% of opinion pieces out of 101 pieces were published by female authors.

    + +

    While the data is not extensive, this two publications show significant gender divides in the Nepali media industry.

    + +

    There’s no excuse for Nepali media not to recruit more women journalists and publish articles from women authors.

    + +

    A 2010 article by Yadav Baskota gives an overview of the underrepresentation of women in media in Nepal. According to his report, patriarchal culture is a major barrier.

    + +

    Nepali society views women’s role as doing household work only. On top of that, women journalists get threats for publishing certain stories. And there is less support for women because of the lack of women in decision-making roles in the media field.

    + +

    More needs to be done to bridge the gender divide in media and reporting, in order to produce more gender-related data that would help advocate for a bigger presence of women in the field.

    + +

    We bring this data at a time when the role and status of women is being ignored in the final stages of the new constitution-making process. There is increasing dissatisfaction among women’s rights activists and many important members of the civil society in Nepal and the diaspora that the current reforms in the constitution have not signalled significant changes in the status quo of a highly male dominant Nepalese society.

    + +

    Women in media can have a huge influence at a turning point like this.

    + +

    We would like to expand our research and collect more data, if you would like to help us, please contact us. Also, let us know if you would like to use the data or find any errors.

    + +

    Tell us in the comments what could be done to bridge the gender divide in Nepali media?

    + +

    Data source: Google doc.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/10/didugetrelief-initial-findings-code-nepal-rahat-payo-pilot-project-earthquake-relief/index.html b/2015/10/didugetrelief-initial-findings-code-nepal-rahat-payo-pilot-project-earthquake-relief/index.html new file mode 100644 index 00000000..9619f475 --- /dev/null +++ b/2015/10/didugetrelief-initial-findings-code-nepal-rahat-payo-pilot-project-earthquake-relief/index.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #DidUGetRelief: Initial findings from Code for Nepal #RahatPayo pilot project on earthquake relief | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    #DidUGetRelief: Initial findings from Code for Nepal #RahatPayo pilot project on earthquake relief

    +

    18 Oct 2015 - codefornepal

    +

    +

    + Sindhupalchowk, Nepal, in early September. Photo by Code for Nepal volunteer. + +

    + Sindhupalchowk, Nepal, in early September. Photo by Code for Nepal volunteer. +

    +
    + +

    During August and September 2015, Code for Nepal conducted a pilot survey project in Nepal to gather data on earthquake survivors’ receipt of relief in the initial weeks and months following the April and May 2015 earthquakes.

    + +

    The pilot survey was designed to capture how immediate relief was provided by the involved stakeholders and to identify any unmet needs among survivors.

    + +

    This pilot was the first step in Code for Nepal’s larger initiative Rahat Payo (Did you get relief?). Rahat Payo is a multi-year project of Code for Nepal. It aims to fill the gaps that exists in the aid distribution, relief and recovery process in the aftermath of the earthquake that killed over 8,500 people, destroyed more than 600,000 houses and affected at least 8 million people in Nepal. 

    + +

    Through the initial Rahat Payo pilot in August-September 2015, Code for Nepal volunteers surveyed 767 earthquake survivors in five districts (Kathmandu, Gorkha, Bhaktapur, Rasuwa and Sindhupalchowk) in Nepal. Over the span of 14 days, eight volunteers went to at least 40 locations to find out whether earthquake survivors had been helped and what their immediate and long-term needs were.

    + +

    In this post, we share the initial summary statistics and findings of the August 2015 survey. Our intent is to start a conversation in Nepal around earthquake relief and reconstruction efforts, to ensure that aid reaches those in need in an equitable and efficient manner.

    + +

    In the coming weeks, we’ll share additional data that was gathered in Village Development Committees (VDCs) through this pilot survey.

    + +

    We are also launching an online version of the Rahat Payo survey, at: Rahatpayo.org, to continue collecting data on earthquake relief efforts.

    + +

    Please help us improve our survey and methodology. You can comment below, or on social media using hashtag #didugetrelief & #rahatpayo.

    + +

    Methodology

    + +

    Code for Nepal used Kobo Toolbox to conduct the August-September 2015 pilot. The survey that we used can be found here: www.bit.ly/reliefsurvey. We are continuing to refine these questions based on the pilot, in order to improve the online Rahat Payo survey as well as future survey work in Nepal.

    + +

    Eight Nepali volunteers were recruited to conduct the pilot in August-September. After an initial training on Kobo, volunteers traveled to at least 40 sites within Nepal to conduct the survey and gather data using mobile devices.

    + +

    The locations volunteers traveled to were determined based on feasibility of travel, and so were non-random. However, once in a town or village to conduct the survey, volunteers sought to randomize data collection by using an object such as a bottle to choose a random starting point from the village center, and the proceeding to the nearest houses from the village center to the village outskirts, interviewing each head of household who was home and seeking to alternate male and female survey respondents.

    + +

    When visiting homes, volunteers explained their purpose and clearly stated that they were there to conduct surveys and not provide relief. After an introductory conversation and with the consent of respondents, surveyors took approximately 10 minutes per household to administer the survey verbally.

    + +

    Findings

    + +

    The survey sample included 467 males and 300 females. The average age of respondents was 44 years old. Of the 767 total respondents, 642 (84%) said they received some form of relief. Most respondents who received relief (573 out of 642, or 89%) had to wait more than 8 days to get any form of help, according to the survey.

    + +

    However, in reality, the amount of time participants waited to receive relief was often longer than eight days (the upper limit included in the survey questions). Anecdotally, numerous participants noted that it took two to three months to receive relief.

    + +

    The survey also included questions on the sources of earthquake relief, including the government, NGOs, youth groups, etc. Among survey respondents who received relief, 474 (74%) said they received help from the government, 391 (61%) reported receiving aid from NGOs, and 45 (7%) said they received help from youth groups. However, in practice, many respondents were not entirely sure if they had received aid from the government or an NGO. Often they didn’t know who they received aid from at all.

    + +

    Respondents were also asked about their priorities post-earthquake. In response, 437 (57%) said rebuilding their homes was their top priority, while 643 (84%) said employment was their top priority, and 116 (15%) said they might also look for foreign employment.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/10/rahat-payo-how-we-surveyed-767-earthquake-survivors-in-nepal/index.html b/2015/10/rahat-payo-how-we-surveyed-767-earthquake-survivors-in-nepal/index.html new file mode 100644 index 00000000..8df7243a --- /dev/null +++ b/2015/10/rahat-payo-how-we-surveyed-767-earthquake-survivors-in-nepal/index.html @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rahat Payo Pilot Test: survey of 767 earthquake survivors in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Rahat Payo Pilot Test: survey of 767 earthquake survivors in Nepal

    +

    31 Oct 2015 - Prerana Pakhrin

    +

    +

    + People in quake affected areas are still waiting for help. Photo: Code for Nepal volunteer. + +

    + People in quake affected areas are still waiting for help. Photo: Code for Nepal volunteer. +

    +
    + +

    I vividly remember that moment of immense panic as I tried to call my parents.

    + +

    It was 2:00am in Washington, DC, where I currently live, and a BBC alert on Nepal had just pinged and flashed across my iPhone screen. It read, “BREAKING NEWS: A powerful 7.8 earthquake has rocked central Nepal.” 

    + +

    On April 25, 2015, a 7.8 magnitude earthquake shook Nepal. Soon after, on May 12, 2015, Nepal was hit with another one, this time measuring 7.3 on the Richter scale. The death toll was 8,500+, more than 600,000 homes were completely or partially destroyed, and almost eight million people were affected in Nepal. The country and its people were devastated, and continue to be.

    + +

    Fast-forward to August 6, 2015, I was on a plane to Kathmandu, bitter-sweet about my trip ahead. I couldn’t wait to finally see my parents, friends, and extended family (after two-and-a-half years away), but also wanted to see for myself that they were truly okay, that my house, and my city was okay. No amount of assurances over the phone was enough for someone living so far away.

    + +

     

    + +

    We are six months away from that tragic day in April. A lot has happened since the earthquakes; and a lot has not happened (yet).

    + +

    Reconstruction by the Nepali government, for example, is still pending. It is now supposed to begin next month in November, but at this point I think Nepali citizens are too politically fatigued to believe that anything promised by the government will take place until we see it take place.

    + +

    + The reason I specify ‘reconstruction by the Nepali government’ is because I do not want to discount the remarkable rebuilding efforts of Nepalis have taken up in various scales – personal/communal level, village/city level and physical/digital level – many people are doing as much as they can. In the months following the tremors, the Nepali youth in-country were especially phenomenal. Also critical was the remarkable and expert disaster response, and other forms of support that Nepal received from the international community. The general apathy we see now is in such stark contrast from the fervent resiliency we saw in the immediate aftermath. +

    + +

    And now, with $4.4 billion of unspent pledged aid money, and mired in internal and external political strife further aggravated by the ongoing fuel crisis, Nepal is going into the cold winter season with most of the devastated areas still extremely vulnerable, and the devastated victims, still unsheltered and neglected by the government.

    + +

    750px

    + +

    The government has seemingly prioritized politics over welfare of earthquake victims. The Chief Executive Officer of the National Reconstruction Authority (NEA), speaking to IRIN, hits the nail on the head when he says, “We see a clear lack of multi-tasking in our political leadership. They are busy in one agenda and cannot focus on another.” 

    + +

    My trip to Nepal in August was special because I there also to lead a pilot survey for Code for Nepal’s Rahat Payo initiative. 

    + +

    Rahat Payo translates to: “Did you get relief (aid)?” and is a multi-year project of Code for Nepal. It aims to fill the gaps that exists in the aid distribution, relief and recovery process in the aftermath of the earthquake. 

    + +

    We recruited eight Nepali volunteers to conduct the pilot between August and September 2015. After an initial training on Kobo, the platform

    + +
    + Camp at Bode survey + +

    + Camp at Bode survey +

    +
    + +

    on which we developed our survey questionnaire, our surveyors traveled to at least 40 different sites within Nepal to conduct the survey and gather data using smart devices.

    + +

    The pilot survey took place in Sindhupalchowk, Gorkha, Rasuwa, Bhaktapur and Kathmandu. There were 767 total respondents, out of which 467 were male and 300 were female. The average age of respondents was 44 years old. Of the 767 total respondents, 642 (84%) said they received some form of relief. Most respondents who received relief (573 out of 642, or 89%) had to wait more than 8 days to get any form of help, according to the survey.

    + +

    VIEW FULL REPORT: Initial Findings

    + +

     

    + +
    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2015/12/corruption15/index.html b/2015/12/corruption15/index.html new file mode 100644 index 00000000..d5670a78 --- /dev/null +++ b/2015/12/corruption15/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Seven facts about the status of corruption in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Seven facts about the status of corruption in Nepal

    +

    09 Dec 2015 - codefornepal

    +

    +

    + Dandidada + +

    + Corruption impacts everyone, especially poor people in villages. +

    +
    + +

    There is hardly anyone in Nepal who is not affected by corruption. Here are seven facts on how corruption impacts firms in Nepal based on World Bank data. These data were collected in 2013–latest data available for Nepal.

    + +

    More than 1 in 10 transactions involves a bribe.
    +Almost half of firms identify corruption as a major constraint.
    +3 in 5 firms are expected to give “gifts” to secure government contracts.
    +Almost 2 in 5 firms are expected to give “gifts” to get an import license.
    +Almost 1 in 5 firms are expected to give “gifts” to get an operating license.
    +Almost 1 in 5 firms are expected to give “gifts” to get a construction permit.
    +More than 1 in 5 firms are expected to give “gifts” to get an electrical connection.

    + +

     

    + +

    What do you think? Are you surprised? Tell us in the comments!

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/01/life-expectancy-income-nepal/index.html b/2016/01/life-expectancy-income-nepal/index.html new file mode 100644 index 00000000..f1990c3e --- /dev/null +++ b/2016/01/life-expectancy-income-nepal/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The 5 districts with the highest life expectancy and income in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    The 5 districts with the highest life expectancy and income in Nepal

    +

    01 Jan 2016 - codefornepal

    +

    +

    View of Pokhara, Nepal. View of Pokhara, Nepal. January 2014. Photo: Mia Mitchell

    + +

    If you want to increase your chances of a long life, you should move to Ramechhap, a beautiful district in Janakpur Zone. On average, the life expectancy of those in Ramechhap is 72.9 years, the highest in Nepal, according to the 2014 Human Development Report.

    + +

    If you want to increase your chances of making money, the data points to Manang as a good place to be. The average per capita income of residents in Manang is $3,166 US dollars, the highest in Nepal.

    + +

    Here are the five districts with the highest life expectancy rates in Nepal:

    + +
      +
    1. Ramechhap: 72.9 years
    2. +
    3. Gorkha: 71.7 years
    4. +
    5. Saptari: 71.34 years
    6. +
    7. Siraha: 71.29 years
    8. +
    9. Rautahat: 70.99 years
    10. +
    + +

    Here are the five districts with highest per capita income:

    + +
      +
    1. Manang: 3,166 US Dollars
    2. +
    3. Kathmandu: 2,764 US Dollars
    4. +
    5. Mustang: 1,922 US Dollars
    6. +
    7. Lalitpur: 1,894 US Dollars
    8. +
    9. Solukhumbu: 1,841 US Dollars
    10. +
    + +

    To find out where other districts stand in terms of life expectancy rates and per capita income, explore this interactive map.

    + +

    The data is based on the Human Development Report 2014 (PDF). Here’s the Google doc of the data we scraped, if you would like to use it.

    + +

    Is there anything that surprises you in this map? Are there some districts that you thought would have have high per capita income but didn’t, or where you thought people might live longer but the map shows otherwise? Tell us in the comments.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/02/15/index.html b/2016/02/15/index.html new file mode 100644 index 00000000..d82e5955 --- /dev/null +++ b/2016/02/15/index.html @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Results from Rahat Payo survey of 703 earthquake survivors in Barpark, Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Results from Rahat Payo survey of 703 earthquake survivors in Barpark, Nepal

    +

    15 Feb 2016 - codefornepal

    +

    +

    + Kids in Barpark. Photo: Code for Nepal + +

    + Kids playing in Barpark, Gorkha. December 2015. +

    +
    + +

    Barpark, a town of 7,900 people in Gorkha, Nepal, was on its way to be a model village in Nepal. It had relatively good infrastructure and uninterrupted electricity. There were six schools, a health post, a police station, and about 20 small businesses.

    + +

    There are not many villages like this in Nepal.

    + +

    Like many other parts of Nepal, however, the primary source of income in Barpark is remittances from family members who are working abroad. Located about 1,900 meters above sea level, Barpark has gorgeous views of the Himalayas, and was a popular destination for tourists before the earthquake, which brought additional income to locals.

    + +

    But on April 25, 2015 things changed forever. Barpark, a town inhabited by ethnic groups like Gurungs and Sunuwars, became the epicenter of the 7.8 magnitude earthquake that hit Nepal.

    + +

    Compared to other parts of Nepal, there was relatively higher media attention toward Barpark. But reliable data about the situation in Barpark wasn’t readily available. As part of Code for Nepal’s multi-year project, Rahat Payo, a group of surveyors visited Barpark in January 2016 — nine months after the earthquake — to assess whether relief efforts have been efficient and equitable, and what the immediate and long-term needs of people are, in Barpark.

    + +

    barpark_2

    + +

    Rahat Payo aims to fill a gap that exists in the aid distribution, relief and recovery process in the aftermath of the earthquake that killed over 8,500 people, destroyed more than 600,000 houses and affected at least 8 million people in Nepal. Our survey in Barpark follows Code for Nepal’s initial Rahat Payo pilot project conducted in August 2015 in 40 locations across five districts, covering 776 earthquake-affected people.

    + +

    In Barpark, Code for Nepal’s team of four surveyed 703 people, approximately 9% of the total population. 400 of the respondents (57%) were female. In the village, there were more women than men. Locals told us that it’s because men have left the village in search of jobs. The average age of the respondents was 42.

    + +

    While over 98% of the respondents said they received some form of relief within 1-8 weeks of the earthquake, most of them continued to live in temporary shelters, even as temperatures dropped below zero degrees celsius during the winter. Virtually everyone — 99.4% of respondents — said their house was destroyed or damaged. Over 18% were injured, and 5% had lost a relative.

    + +

    Even though most people don’t have houses to live in yet, over 97% of the respondents said the local government had the capacity to respond.

    + +

    Over 97% of the respondents said that they received relief materials from NGOs or INGOs. 32% also said that they received help from the government.

    + +

    Over 68% said that immediately after the earthquake, food supplies were the most important relief item to them, while 71% said sanitation supplies, 22% said medical supplies, and 66% said tents.

    + +

    When asked what was not available to them immediately, 81% said building materials, and 61% said cash.

    + +

    When asked about their priorities over the next five years, more than 26% said they would look for employment, more than 12% said they would seek foreign employment specifically, more than 63% said they would focus on their farms, and over 61% said rebuilding would be a priority.
    +A few respondents, who commented on how relief could be improved in the future, emphasized the need for quick disbursement of cash and fairness when it comes to distributing relief materials.

    + +

    Data: Rahat Payo survey in Barkpark (Google Doc)
    +Survey: www.bit.ly/surveynepal

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/02/in-nepali/index.html b/2016/02/in-nepali/index.html new file mode 100644 index 00000000..d3a7b8c7 --- /dev/null +++ b/2016/02/in-nepali/index.html @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + कोड फर नेपालले भिडियो र फोटो प्रतियोगिता आयोजना गर्ने | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    कोड फर नेपालले भिडियो र फोटो प्रतियोगिता आयोजना गर्ने

    +

    26 Feb 2016 - codefornepal

    +

    +

    प्रेस विज्ञप्ति – 26 February 2016
    +www.codefornepal.org
    +वाशिंगटन डी सी
    +संयुक्त राज्य अमेरिका

    + +

    तत्काल जारीका लागि
    +सम्पर्क : रोसन घिमिरे
    +इमेल: roshan@codefornepal.org

    + +

    कोड फर नेपालले भिडियो र फोटो प्रतियोगिता आयोजना गर्ने

    + + + + + + + + + +
    वाशिंगटन डि.सी. – गैर सरकारी संस्था कोड फर नेपालले रु. ७५,००० पुरस्कार राशी सहितको एक भिडियो तथा फोटो प्रतियोगिता आयोजना गर्ने भएको छप्रतियोगिताको शीर्षक “को नेपाली ?” राखिएको छयस प्रतियोगिता मार्फत कोड फर नेपालले डिजिटल साक्षरताको कौशलता पहिचान गर्ने तथा “नेपाली हुनु भनेको के हो?” भन्ने बिषयमा रचनात्मक छलफल, साथसाथै नेपाली नागरिकबीच बहसको संस्कृति बलियो बनाउने लक्ष्य लिएको छ
    + + + + + + + + +
    कोड फर नेपालले यस प्रतियोगितामा, नेपाल तथा विदेश मा बस्ने १४ वर्ष वा सो भन्दा माथिका सिकारु नेपाली भिडियोग्राफर तथा फोटोग्राफरहरुबाट सहभागिताको आशा गरेको छभिडियो भोजपुरी, अंग्रेजी, नेपाली, मैथिली, वा तामाङ भाषामा पेश गर्न पाइनेछ
    + + + + + + + + + +
    प्रतियोगितामा मार्च २५ – अप्रिल २५ २०१६ को समयाबधि भित्र पेश गरिएका भिडियो तथा फोटोहरु मात्र स्वीकार गरिनेछप्रतियोगिताका लागि पेश गरिएका प्रस्तुतिहरु www.codefornepal.com/nepali मार्फत संकलन गरिनेछप्रतियोगिताका बारे विवरण मार्च महिना को अन्त्यतिर सार्वजनिक गरिनेछ
    + + + + + + + + + + +
    रोसन घिमिरे, कोड फर नेपालका साझेदारी तथा मिडिया प्रबन्धक भन्छन् “विजेताको चयन मौलिकता तथा फोटो वा भिडियोले दिन खोजेको सन्देशको स्पष्टताका आधारमा हुनेछ”घिमिरे भन्छन ” हामी सहभागीहरुद्वारा पेश गरिएका फोटो वा भिडियोको स्तरीयता भन्दा तत्व र भाव लाइ महत्व दिनेछौयसको उद्देश्य सिकारु नेपाली फोटोग्राफर तथा भिडियोग्राफरलाइ प्रोत्साहन गर्नु नै हो
    + + + + + + + + +
    विजेताहरुको नाम २०१६, जून महिनाको १५ तारिख घोषणा गरिनेछभिडियो प्रतियोगिता अन्तर्गत प्रथम पुरस्कार विजेतालाई रु. २५,००० प्रदान गरिनेछ भने द्वितीय र तृतीय स्थानका विजेतालाई पनि नगद पुरस्कारको व्यवस्था गरिएको छ
    + + + + + + + + + +
    घिमिरे भन्छन् “यस प्रतियोगिताले डिजिटल साक्षरताका बारेमा जागरुकता वृद्धि गर्नेछसाथसाथै, नेपालका विभिन्न पृष्ठभूमिका मानिसहरुबीच, उनीहरुको आफ्नो आफ्नै पहिचान भए पनि, सबै उत्तिकै नेपाली हुन् भन्ने संवाद अभिप्रेरित गर्नेछ
    + + + + + + + +
    कोड फर नेपाल नेपालमा डिजिटल साक्षरता तथा खुला डाटाको प्रयोग बढाउनका लागि युनाइटेड स्टेट्स अफ अमेरिकामा दर्ता गरिएको एउटा 501(c)(3) गैर सरकारी संस्था हो
    + + + + + + + +
    थप जानकारीका लागि हाम्रो संचार समूह लाई media@codefornepal.org मा सम्पर्क गर्नुहोला
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/02/nepal/index.html b/2016/02/nepal/index.html new file mode 100644 index 00000000..1dc1c1d7 --- /dev/null +++ b/2016/02/nepal/index.html @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal Launches “Ko Nepali?” Video and Photo Competition | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Code for Nepal Launches “Ko Nepali?” Video and Photo Competition

    +

    27 Feb 2016 - codefornepal

    +

    +

    Update: We are accepting applications now. Please apply: https://codefornepal.org/en/2016/03/application/

    + +

    ***

    + +

    Press Release- 26 February 2016
    www.codefornepal.org
    Washington, D.C.
    United States of America

    + +

    FOR IMMEDIATE RELEASE
    +Contact: Roshan Ghimire
    Email: roshan@codefornepal.org

    + +

    Code for Nepal  Launches #WhoIsNepali Video and Photo Competition for Rs. 75,000

    + +

    Washington, D.C. – Today the non-profit Code for Nepal launched a video and photo competition with an award amount of 55,000 Nepali Rupees. The competition is titled “Ko Nepali?,” which translates to “Who is a Nepali?” The competition aims to recognize digital literacy skills and facilitate conversation about who is a Nepali and what it means to be a Nepali, while strengthening a culture of creativity and civic debate online.

    + +

    For details on eligibility and rules about the competition, check out this page: www.codefornepal.org/nepali.

    + +

    Code for Nepal seeks short video entries for the competition (180 seconds or less), or photos, from amateur videographers and photographers living in Nepal or abroad, who are 14 or older. Videos can be submitted in Bhojpuri, English, Maithili, Nepali, or Tamang.

    + +

    The contest will accept submissions from March 25, 2016 to April 25, 2016. Submissions will be accepted via www.codefornepal.org/nepali. Details of the application will be announced in late March via Code for Nepal website.

    + +

    “The selection will be based on originality and clarity of the message,” says Roshan Ghimire, Partnership and Media Manager at Code for Nepal. “We won’t judge based solely on the quality of production, and we are encouraging amateur photographers and videographers to submit.”

    + +

    Winners will be announced on June 15, 2016. The first prize winner for video will receive Rs. 25,000 and the first prize winner for photo will receive Rs. 10,000. There will also be cash prizes for second and third places.

    + +

    In total, Code for Nepal will grant cash prizes to 10 applicants.

    + +

    “In addition to increasing awareness about digital literacy, we hope this competition will foster dialogue among people from various backgrounds and regions in Nepal about their identity, and how their unique attributes define them equally as Nepalis,” says Ghimire.

    + +

    Code for Nepal is a 501(c)(3) non-profit organization registered in the United States. Code for Nepal works to increase digital literacy and the use of open data in Nepal.

    + +

    For more information, contact our communications team at __media@codeofornepal.org

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/03/1157/index.html b/2016/03/1157/index.html new file mode 100644 index 00000000..d9ac8a2e --- /dev/null +++ b/2016/03/1157/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + More than 7 in 10 road accidents in Nepal are caused by negligent drivers | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    More than 7 in 10 road accidents in Nepal are caused by negligent drivers

    +

    25 Mar 2016 - codefornepal

    +

    +

    Road accidents in Nepal have increased over the last few years.

    + +

    We looked at a report published by Nepal Police in 2015 to see what causes most accidents in Nepal. More than 7 in 10 accidents in Nepal are caused by negligent drivers, according to the data published by Nepal Police.

    + +

    “Data covers the range of July, 2014 to June 2015, provided & verified by PHQ Traffic Directorate.”

    + +

    There were over 8,700 accidents in Nepal between July 2014 and June 2015. Over 6,600 were caused by negligent drivers. Check out the chart below to see what else caused accidents.

    + +

    Data source: Nepal Police (PDF)

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/03/application/index.html b/2016/03/application/index.html new file mode 100644 index 00000000..c8003a59 --- /dev/null +++ b/2016/03/application/index.html @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Application form for Ko Nepali video and photo competition | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Application form for Ko Nepali video and photo competition

    +

    26 Mar 2016 - codefornepal

    +

    +

    Thank you for your interest in Code for Nepal’s “Ko Nepali” competition. We are giving away Rs 55,000 in total. The first prize for video is Rs 25,000. We will award cash prizes to 6 applicants! Before you submit, we would like you to carefully read the instructions and eligibility criteria! The deadline to submit the application is May 11, 2016. 

    + +

    Instructions on how to prepare your application:

    + +

    For video submissions:

    + +
  • + Think about what it means to be a Nepali? Discuss with your friends and family. Write one or two paragraphs on what do you think it means to be a Nepali! +
  • +
  • + Find a quiet and bright place. Give your smartphone/video camera to a relative/friend. Ask her/him to record your thoughts while you speak. +
  • +
  • + You could also create a documentary/film that is 3 min or less that shows what it means to be a Nepali. +
  • +
  • + Upload it on YouTube. Complete and submit the form below. +
  • + +

    For photo submissions:

    + +
  • + Use your camera/smartphone to take a photo of people that you think  shows cultural and ethnic diversity of  Nepal. +
  • +
  • + Upload it on Google Drive or Dropbox. Complete and submit the form below. +
  • + +

    Also if you have questions on what kind of submissions we are looking for, watch this video!

    + +

    And check out this video for tips on how to take good photos/videos with your smartphone!

    + +

    Eligibility

    + +

    The competition is open to all Nepali videographers and photographers, living in Nepal or abroad, who are 14 years old or more. Professional videographers and photojournalists  for are not eligible. Videos can be submitted in Bhojpuri, English, Maithili, Nepali, or Tamang.

    + +

    Rules {.ng-scope}

    + +
      +
    • + There is no charge or fee to participate in this competition. +
    • +
    • + The video or photo should respond to the question: Who is a Nepali? +
    • +
    • + Videos should be no longer than 3 minutes (180 seconds). Videos can be in Bhojpuri, English, Maithili, Nepali, or Tamang. +
    • +
    • + Stealing or copying others’ work is plagiarism, and those submissions will automatically disqualify participants from the competition. +
    • +
    • + Participants can submit up to 1 photo or 1 video for consideration, not both. +
    • +
    • + Code for Nepal staff, interns, advisors, and their immediate relatives are not eligible to apply. +
    • +
    + +

    Application form

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/03/five-reasons/index.html b/2016/03/five-reasons/index.html new file mode 100644 index 00000000..0ff0427d --- /dev/null +++ b/2016/03/five-reasons/index.html @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + “को नेपाली” भिडियो र फोटो प्रतियोगितामा तपाईले भाग लिनु पर्ने पाँच कारण !! | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    “को नेपाली” भिडियो र फोटो प्रतियोगितामा तपाईले भाग लिनु पर्ने पाँच कारण !!

    +

    16 Mar 2016 - Roshan Ghimire

    +

    + + + + + + +
    तपाईहरु धेरैले कोड फर नेपालले “को नेपाली ?” शिर्षक भएको एक भिडियो तथा फोटो प्रतियोगिता आयोजना गर्दैछ भनेर त सुन्नु भएको नै होला
    + + + + + + + + + + + + + + +
    छैन भने, चिन्ता नगर्नुस, म छोटकरीमा फेरी भन्छु  
    हामी भिडियो तथा फोटो प्रतियोगिता आयोजना गर्दै छौ जसको उदेश्य नेपालमा डिजिटल साक्षरताको कौशलता पहिचान गर्ने तथा “नेपाली हुनु भनेको के हो?” भन्ने बिषयमा रचनात्मक छलफल, साथसाथै नेपाली नागरिकबीच बहसको संस्कृति बलियो बनाउनु होधेरैले हामीले आयोजना गर्न थालेको प्रतियोगिताको बारेमा चासो देखाउनु भएको छहामी चाहन्छु धेरै भन्दा धेरै नेपाली हाम्रो संबादमा सरिक हुन
    + +

    कति जानेले त किन यो प्रतियोगितामा भाग लिने भनेर प्रश्न पनि गर्नु भो ! यो रमाइलो पोस्टमा मैले ” को नेपाली ?” प्रतियोगितामा किन नेपालीहरुले भाग लिनै पर्छ भनेर ५ वटा तर्क पेश गरेको छु है !

    + + + + + + + + +
    १) देश र विदेशमा बस्ने नेपालीहरु, जो १४ वर्ष वा माथिको उमेरका छन्, ति सबैले भाग लिन पाउने पहिलो खुला भिडियो र फोटो प्रतियोगिता होला यो*
    + + + + + + + + + +
    २) नेपाली, भोजपुरी,अंग्रेजी, मैथिली वा तामाङ मध्ये जुन भाषामा पनि भिडियो बनाउन पाइनेयस्तो प्रतियोगिता त नेपालको इतिहासमा कहिले पनि आयोजना भएको थिएन होला* यी पाँच मध्ये एक भाषामा भिडियो बनाउन तपाईलै के नै गार्हो भो र ? भिडियो कस्तो बनाउने, फोटो कस्तो खिच्ने बन्ने कुरा त हामीले यता भनेको छौ/ इमेल दर्ता गर्नु भो भने तेहा पनि पठाई दिउला, सजिलोको लागि ! ल दर्ता गर्ने ठाउँ भने यो लिंकमा https://codefornepal.org/en/nepali/
    + +

    ३) अवसरको कुरा गरौ न त अब, देश र विदेशमा बस्ने बस्ने नेपाली बीच अहिले को २१ सौ शताब्दीमा नेपाली हुनु भनेको के हो, हाम्रो सहि पहिचान के भो बनेर दरो र अनुशासित संबाद चलाउन सक्यो भने, हाम्रो जस्तो नया गणतान्त्रिक देशलाइ कति फाइदा होला ?

    + + + + + + + + +
    ४) सबैको हातमा फोन छ आजकल ! धेरै संग त भिडियो खिच्न मिल्ने क्यामेरा पनि छअब साधन छ, नया नया सोच छ, येस्तो मौकामा आफु संग भएको सिप “को नेपाली?” प्रतियोगितामा प्रयोग नगरे कहिले गर्ने त ? हाम्रो हजुरबा मौकामा हिरा फोड्नु है बाबु भन्नु हुन्थ्यो ! 🙂
    + + + + + + + + + +
    ५) कुरा छोटो तर मिठो गर्नु भन्छन, तेसैले अन्तिममा, ” को नेपाली?” भिडियो र फोटो प्रतियोगितामा पहिलो, दोस्रो र तेश्रो हुनेलाइ पुरस्कार पनि छहामी १० जनालाइ २ विधामा गरेर रु. ७५,००० दिदैछौतपाईहरुको राम्रो सिर्जनाले “को नेपाली ?” प्रतियोगिता जित्ने प्रबल सम्भावना देख्छौ हामी ! ल अब भिडियो बनाउन, फोटो खिच्न र साथीभाइ, परिवारजनसंग “को हो त नेपाली?” भने कुरामा संबाद सुरु गरीहालौ
    + + + + + + + + + + + + + + +
    तपाईहरुले प्रतियोगितामा भाग लिनु हुन्छ भन्ने ठुलो आस छ हामी लाईप्रतियोगिताको बारेमा अन्य जानकारी यता: https://codefornepal.org/en/nepali/
     
    प्रश्न छन् भने कमेन्ट गर्दा पनि हुन्छइमेल नै गर्छु भन्नुहुन्छ भने contact@codefornepal.org गर्नु होलाहामी छिटो भन्दा छिटो जवाफ पठाउने छौ
    + +

    साथीहरु, हाम्रो गफ सेयेर गर्दा हुन्छ | यो कुरा, एक कान, दुइ कान गरेर सबै नेपालीकोमा घरमा पुर्याउनु छ |
    +*१) सार्बजनिक रुपमा पुष्टी गर्न बाकी
    +*२) यो त ठोकुवा गरेर भन्न मिल्छ | 🙂

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/03/more-than-3-in-10-accidents-are-caused-by-two-wheelers-in-nepal/index.html b/2016/03/more-than-3-in-10-accidents-are-caused-by-two-wheelers-in-nepal/index.html new file mode 100644 index 00000000..c20a8431 --- /dev/null +++ b/2016/03/more-than-3-in-10-accidents-are-caused-by-two-wheelers-in-nepal/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Two Wheelers cause the most accidents in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Two Wheelers cause the most accidents in Nepal

    +

    25 Mar 2016 - Shashi Adhikari

    +

    +

    Yesterday Code for Nepal published a chart on who causes the most road accidents in Nepal.

    + +

    Today here’s a chart I created that has which type of vehicles cause the most accidents? I’m sure it is easy to guess?

    + +

    It’s Two Wheelers. Yes, no surprises there! Sadly.

    + +

    We looked at a report published by Nepal Police in 2015 to see what causes most accidents in Nepal. More than 3 in 10 accidents in Nepal are caused by two wheelers in Nepal, according to the data published by Nepal Police.

    + +

    “Data covers the range of July, 2014 to June 2015, provided & verified by PHQ Traffic Directorate.”

    + +

    There were over 8,700 accidents in Nepal between July 2014 and June 2015. Over 5,403 were caused by Two Wheelers. The lowest number of accidents is 203 caused is by tempo-three wheeler. Check out the chart below to see what else caused accidents.

    + +

    Data source: Nepal Police (PDF)

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/04/using-data-to-prevent-conflict/index.html b/2016/04/using-data-to-prevent-conflict/index.html new file mode 100644 index 00000000..7deebd4f --- /dev/null +++ b/2016/04/using-data-to-prevent-conflict/index.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Using data to prevent conflict | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Using data to prevent conflict

    +

    06 Apr 2016 - Richa Neupane

    +

    +

    On March 30-31, I attended my very first UN-hosted roundtable conference. The roundtable was a platform to generate new ideas drawing from our experiences in the process of creating tools that would help prevent conflict through the use of data.

    + +

    As I was riding to the event location, I did not know what to expect. At the end of day two, I now know so many amazing people working in the data and development fields. I am also aware of various challenges and opportunities around the usage of data.

    + +

    There were about twenty-five attendees from various sectors. As most of Code for Nepal staff (volunteers) is based outside Nepal, it was a good way to meet professionals who have been doing similar work in Nepal.

    + +

    On day one, Mr. Allen Tuladhar from Microsoft Innovation Center Nepal (MIC) presented about MIC’s experiences and data and digital literacy in the Nepali context. We also learned about their efforts in partnership with UNDP and UNV through their Debris Management Program. Dr. Anders Engvall and Mr Rudi Sukandar shared about their many years of data collection and analysis work to tackle conflict in Thailand and Indonesia respectively. We also heard from Mr. Thomas Barr from Peace Informatics Lab and Mr. René Clausen Nielsen from the Global Pulse Lab about various case studies on the use of big data for conflict prevention and development.

    + +

    In between these presentations we had group discussions and Q/A to put the learnings into Nepali context. All of the participants had some role in the use of data especially for the humanitarian response during the earthquake.

    + +

    I shared about how Code for Nepal used low-tech high-impact approach through Google document, screenshots, and Facebook ads to circulate information about resources, volunteers, and people that needed help during the earthquake. All the knowledge we got on day one would be used as a precursor to meet our objectives for the next day.

    + +

    On day two, we were divided into two groups. We brainstormed ideas while David Roth and Ruici Tio from LoveFrankie facilitated the group work. Participants observed that the process was similar to design thinking. We were exploring concepts that would answer the question ‘How might data prevent conflict, violent extremism and build peace?’. My group came up with the idea of a youth led initiative that would involve a crowdsourcing platform.

    + +

    We tested our main concepts using the POWER tool. The group involved professionals with different backgrounds and perspectives. We pitched our idea and got feedback. All this was done within fours hours. Even though our group had a lot of debates and differences, we were able to come up with a final pitch. It was a wonderful learning experience hearing from such diverse group of professionals.

    + +

    I would like to sincerely thank UNDP, UNV and UNRCO for the opportunity to be a part of this roundtable and all the attendees for kindly sharing their experiences, ideas, and great intent to work with each other.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/04/women-in-nepal-police/index.html b/2016/04/women-in-nepal-police/index.html new file mode 100644 index 00000000..89f29f9a --- /dev/null +++ b/2016/04/women-in-nepal-police/index.html @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Women make up just 7% of Nepal Police | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Women make up just 7% of Nepal Police

    +

    30 Apr 2016 - codefornepal

    +

    +

    At 51.5%, women make up the majority of Nepal’s population, according to the Nepal Census of 2011.

    + +

    Among the Nepal Police, however, there are just 4,525 women (7%) compared to 60,070 men (93%), according to data published (PDF) by the Nepal Police in 2015.

    + +

     

    + +

    Data: Nepal police (Google doc by Code for Nepal)

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/06/join-code-for-nepal-as-a-communications-associate/index.html b/2016/06/join-code-for-nepal-as-a-communications-associate/index.html new file mode 100644 index 00000000..c8904da4 --- /dev/null +++ b/2016/06/join-code-for-nepal-as-a-communications-associate/index.html @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Join Code for Nepal as a communications associate | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Join Code for Nepal as a communications associate

    +

    02 Jun 2016 - Roshan Ghimire

    +

    +

    + Hi there! +

    + +

    + At Code for Nepal, we are expanding — taking on projects to increase digital literacy and use of open data in Nepal, in a hope that it will help many Nepalis. +

    + +

    + Now we need your help to accomplish our mission. Join us as a communications associate! It will be fun! We promise! I know this very well! +

    + +

    + Here are a few qualities of our communications associate: +

    + +
  • + Committed to the mission of Code for Nepal +
  • +
  • + Reliable and collaborative +
  • +
  • + Risk taker +
  • +
  • + Excited about working with data, especially data about Nepal +
  • +
  • + Funny +
  • +
  • + Resourceful +
  • +
  • + Looking to network and mentorship +
  • +
  • + Bachelors , preferably graduate student. +
  • + +

    + Length: 3 months
    Time commitment: 2-4 hours a week +

    + +

    + Location: Remote (Online) +

    + +

    + Compensation: These are unpaid internships. We can work with you if you wish to receive class credit. At Code for Nepal, we are all volunteers, especially in the U.S. We do what we do because we believe we are helping people and because it is so fun! +

    + +

    + Responsibilities:  +

    + +
    +
    +
    +
    +
    +
    + Work with communications team to regularly update Code for Nepal website and social media channels.  +
    + +
    + Write 2-3 blog post per month for Code for Nepal website. +
    + +
    + Come with creative ideas for data visualizations, infographic and video script. +
    + +
    + Be familiar with video editing, graphic design and front-end web development. +
    + +
    + Other tasks as needed. +
    +
    +
    +
    +
    +
    + +
    +
    + +

    To apply, please complete the form. We will contact short-listed candidates.

    + +
    +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/06/which-districts-has-the-highest-percentages-of-population-with-slc/index.html b/2016/06/which-districts-has-the-highest-percentages-of-population-with-slc/index.html new file mode 100644 index 00000000..7e26e04c --- /dev/null +++ b/2016/06/which-districts-has-the-highest-percentages-of-population-with-slc/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Map of number of SLC holders in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Map of number of SLC holders in Nepal

    +

    19 Jun 2016 - codefornepal

    +

    +

    On June 16, The Office of the Controller of Examinations published the results of the School Leaving Certificate exams-2016.

    + +

    We looked at Nepal Census data 2011, the latest census, to create a map of number of SLC holders in each districts of Nepal.

    + +

    Of course, the districts with more population have higher number of people with SLC compared to districts with less population.

    + +

    Check out the map below to see how many people in your district have SLC! Comment below if you are surprised!

    + +

    Data: Google doc. Source: Nepal Census 2011.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/06/why-should-you-care-about-open-data/index.html b/2016/06/why-should-you-care-about-open-data/index.html new file mode 100644 index 00000000..f0cf87d6 --- /dev/null +++ b/2016/06/why-should-you-care-about-open-data/index.html @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Why you should care about open data in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Why you should care about open data in Nepal

    +

    02 Jun 2016 - Kavyaa Rizal

    +

    +

    Open data and government transparency is an old but yet, ongoing debate in Nepal. While some support a blind trust in the government, many believe that seeking government data and encouraging transparency is one of the many ways to keep their powers in check. However, at one point or another, one might ask themselves “why does this matter to me? Why should I care?!”

    + +

    Here are five reasons why you, personally, should care!

    + +
      +
    1. **It enables YOU to hold YOUR authorities accountable!**
    2. +
    + +

    Ever wondered where every rupee paid for taxes was going? If it was going to something productive for the country at all? Well, through open data and government transparency, you wouldn’t have to wonder because you would know! This would be a convenient way to not only know how your, and all other taxpayers’, contributions have helped the country but also to hold the ministries accountable to the budget they have received and the outcomes achieved through them.

    + +
      +
    1. + Saying goodbye to corruption won’t just be a distant dream! +
    2. +
    + +

    We have all been there when long heated political arguments with peers just end with “Hya there’s just too much corruption! Nepal’s never going to change!” Well actually, this change quite achievable through open data! By holding government officials accountable for the money they receive as well as their achievements year after year, corruption will inevitably find its way out the government offices in Nepal!

    + +
      +
    1. + It will catalyze the country’s Development! +
    2. +
    + +

    Another frustrating part of being a Nepali citizen is having to witness the so-slow-its-almost-stagnant development. While cities like Kathmandu enjoy an unnecessary rise in movie theatres or places to eat, we still find that some of the country’s citizens are still unable to formulate a word in paper, let alone ride a car in the entirety of their lives. Through increased government efficiency and the availability of data to the public, not only do we ourselves become more aware of the country’s status, but we also know where and how to improve!

    + +
      +
    1. + It supports democracy! +
    2. +
    + +

    Democracy is all about giving power to the people. However, how can we claim the people to be powerful if none of us have access to any of the country’s important data? As we all know, information is power, and only by obtaining actionable information will we, as citizens of the country, be able to claim any power.

    + +
      +
    1. + It enables research and study, supporting future policies! +
    2. +
    + +

    In a place with open access to information, there will be people studying and analyzing this information. This will only be beneficial for the country as not only will we have a more informed population, but also a better idea of the type of policies that need to be implemented.

    + +

    Have something to add? Please comment below!

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/07/disability/index.html b/2016/07/disability/index.html new file mode 100644 index 00000000..73fdddf8 --- /dev/null +++ b/2016/07/disability/index.html @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interactive map of disabled population in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Interactive map of disabled population in Nepal

    +

    23 Jul 2016 - codefornepal

    +

    +

    <img src=”https://codefornepal.org/wp-content/uploads/2016/07/16208677607_7e8afb317c_z.jpg” alt=”Disable population in Nepal” width=”100% height=”100%” />Photo Credit: Idex World

    + +

    In 2011, two percent (1.94%; 513,321) of the total population of Nepal reported having “some kind of disability,” according to the Nepal Census.

    + +

    Here’s a breakdown of the different types of disabilities: 

    + +
      +
    • Physical disability: 36.3 percent of the disabled population
    • +
    • Blindness/Low vision: 18.5 percent
    • +
    • Deaf/Hard of hearing: 15.4 percent
    • +
    • Speech problem: 11.5 percent
    • +
    • Multiple disabilities: 7.5 percent
    • +
    • Mental disability: 6 percent
    • +
    • Intellectual disability: 2.9 percent
    • +
    • Deaf-Blind: 1.8%
    • +
    + +

    Here are the five districts with the highest of number of physically disabled people, based on the 2011 Census:

    + +
      +
    1. Kathmandu 6,030
    2. +
    3. Morang 6,029
    4. +
    5. Kailali 5,631
    6. +
    7. Jhapa 5,524
    8. +
    9. Surkhet 4,627
    10. +
    + +

    It’s estimated that after the earthquakes in 2015, the number of disabled persons in Nepal has likely increased. Because of the earthquakes, thousands of Nepalis were “temporarily or permanently disabled through crush or other injuries.”

    + +

    Nepal has historically lacked the capacity to assist the disabled population either by creating accessible infrastructure or providing support in other ways. After the earthquake, the National Federation of the Disabled, Nepal (NFDN), released an urgent appeal to advocate for the “inclusion of persons with disabilities in Disaster Response Programs.”

    + +

    Check out the number of disabled persons in districts of Nepal by clicking on the interactive map below.

    + +

    To increase awareness of the challenges faced by disabled persons in Nepal and to promote inclusive tourism, International Development Institute (IDI), is organizing an accessible tourism program in Nepal, in collaboration with Soarway Foundation, and others.

    + +

    Have anything to add to this story? Comment below!

    + +

    Data source: Nepal Census (Google Doc)

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/08/got-power-iwalkfreely/index.html b/2016/08/got-power-iwalkfreely/index.html new file mode 100644 index 00000000..db00cadb --- /dev/null +++ b/2016/08/got-power-iwalkfreely/index.html @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I Got the power #IWalkFreely | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    I Got the power #IWalkFreely

    +

    18 Aug 2016 - Kavyaa Rizal

    +

    +

    ~ Stuti Sharma

    + +

    He put his hand on my thighs throughout the whole journey, but I did nothing. I was nervous, scared, angry, all at the same time, but I did nothing. He got down on the same stop that I got down at, and sensing that he was following me, I ran as fast as I could until he was out of sight. I did NOTHING!

    + +

    It was a microbus packed with people. So much that one had to breathe in the smell of sweat mixed with traces of female perfume, alcohol and cigarette instead of air. I felt someone rubbing their groin against my butt as I was standing. I could have turned around, screamed and slapped the person, but I just moved some steps away from that place and did NOTHING!

    + +

    IMG_20160816_195305

    + +

    I get into the bus; it was all empty except for a group of 6-7 men in their thirties I suppose. As I pass through them to occupy an empty seat at the back, I feel someone pinching my butt. It was so sudden, painful, infuriating and embarrassing. I could have turned around, punched the person who did it on the face and broke his nose, but I stayed quiet and occupied a seat. I did NOTHING!

    + +

    These are some real-life experiences of women who travel (or have traveled) in a public vehicle. Some have been shared by friends and some are my own. Often, I tend to think about the times that I have been through these horrifying experiences. The ones who have been through this would clearly know how frustrating it is to be treated like an object to taunt, have fun with. What’s more infuriating is not being able to reply back to them or to take a stand for yourself, enduring it all the way. This feeling breaks you up, eats you alive and even with that, you manage to put a smile on your face like nothing has happened. People around you give you the tag of an arrogant, rude woman and you don’t try to explain because they wouldn’t understand.

    + +

    Even if you’re one of those who have learned to take a stand for themselves, and vent out their anger upon the shit-headed perverted minds (excuse my use of language here), get ready to be treated with stares and whispers from the pathetic audience (to whom it may concern) who judge you or are entertained by what’s going on, instead of giving you a big round of applause.

    + +

    Not that I blame only the society for this, but it’s us individuals who need to learn to fight, to help ourselves. I know how hard it is (been there, done that) to counter-attack the person who attacked you (thanks to fear and a lack of confidence, thanks to Crime Patrol, thanks to the people who stuffed us with the “keti manche bhayepachi estai huncha, chod deu” philosophy). I still remember a question that was asked on a Facebook page: “What would you do if you were a parent?” to which I had replied, “I would send my kids to self-defense classes.” It would be good to have a karate kid of your own, wouldn’t it?

    + +

    It took me long to build up courage, to realize that I have got the power in me and that I should stop expecting others to be good. It took me long to become the strong person that I am today. What I have realized is that you don’t even need to try so hard. For example, I had a similar encounter about a year ago. A man in his 50’s probably, sat beside me on a public vehicle and was very keen to poke on my breast repeatedly, with his elbow. I politely told him Uncle, afno haat lai samhalera rakhnus in a voice loud enough for everyone in the vehicle to hear. In a second, he got up and jumped off the moving vehicle. Not bad, eh?

    + +

    What I am trying to say with all these rants is that YOU are the one! YOU are the one who can bring about change. YOU are the one who has got the power to end this. YOU are the hope and YOU are the danger. You’ve got the power. Utilize it. Be a fighter, not a victim.

    + +

    I was walking on the road when someone put their hands on my shoulders. I turned around to see if it was someone I knew but instead got a “k cha soltini?” from the stranger. I punched him on the back as a reply, and the guy left, without turning back. Today, I did SOMETHING

    + +

    ~This blog is cross-posted from Stuti’s blog NepaliTantrums. Stuti is a volunteer with Code for Nepal. 

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/08/iwalkfreely/index.html b/2016/08/iwalkfreely/index.html new file mode 100644 index 00000000..9d6925ea --- /dev/null +++ b/2016/08/iwalkfreely/index.html @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #IWalkFreely: Beginning to end street harassment in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    #IWalkFreely: Beginning to end street harassment in Nepal

    +

    04 Aug 2016 - Kavyaa Rizal

    +

    +

    <img class=”alignnone size-full wp-image-1397” src=”https://codefornepal.org/wp-content/uploads/2016/08/Screen-Shot-2016-08-04-at-9.53.05-AM.png” alt=”#IWalkFreely” width=100% height=”421” srcset=”https://codefornepal.org/wp-content/uploads/2016/08/Screen-Shot-2016-08-04-at-9.53.05-AM.png 613w, https://codefornepal.org/wp-content/uploads/2016/08/Screen-Shot-2016-08-04-at-9.53.05-AM-300x206.png 300w” sizes=”(max-width: 613px) 100vw, 613px” />

    + +

    About a week ago, I, along with three other friends, all girls, decided to go for a quick dinner in Durbar Magh. It about 9.00 pm that we were all done and started heading back home.

    + +

    As we were walking back, a group of men started to walk along with us, slowing their pace with ours and almost surrounding all of us in their group. Frightened, we quietly attempted to hurry past the group to which they responded by saying things like “Oho! Esto K hattar? (What’s the hurry?)” and “Kata Bhageko? (Where are you running off to?)”.

    + +

    After minutes of surrounding us, they finally decided to leave us alone and went off to another venture, having succeeded at using us to entertain themselves for a few minutes. Not long after that, just as we started to get into the car, a middle-aged man walked past us and “accidentally” groped my friend’s little sister from the back.

    + +

    We all look at him as she screamed, he looked back at us, smiled, simply said “sorry” and made his way ahead. These two incidents occurred within 10 minutes of one night in Kathmandu.
    +Feeling frightened, helpless, and violated in the streets is almost a daily occurrence for women in Nepal. Be it getting constant stares from men in the streets, the supposedly “flattering” words we are quietly forced to hear, or on many occasions the “accidental” gropes that we have to pretend never happened, all leave us feeling helpless and terrified in the same streets we have to walk everyday. The worse part of it all, though? It’s how it’s hardly ever talked about let alone addressed this problem.

    + +

    Being tired of the street harassment, I, and Code for Nepal, have decided to start a campaign to at least start talking about street harassment and how we can combat it in Nepal. This project is called “I Walk Freely” and is created to help the many out there who are unable to do so today. Over the next few weeks, we will be refining this project and releasing little bits and pieces along the way. We will also launch a survey to gather data on street harassment.

    + +

    However, #IWalkFreely is in its initial phase right now, and what it needs the most to develop is you!

    + +

    We need you to start talking about this project, and about street harassment in Nepal. If you have faced any forms of street harassment, share it with us and show your support. If you are not comfortable doing that, just show us your support by sharing this message and using the hashtag #IWalkFreely.

    + +

    If you don’t have a harassment story, share this message and pledge that you will not support any forms of harassment against fellow men or women and do you best to fight against it.

    + +

    Together, I believe that we can build a Nepal where every person, man or woman, has the ability to walk freely. But for now, let’s simply start talking about it. #IWalkFreely

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/09/computer-education-in-dhanusha/index.html b/2016/09/computer-education-in-dhanusha/index.html new file mode 100644 index 00000000..bb193a16 --- /dev/null +++ b/2016/09/computer-education-in-dhanusha/index.html @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status of computer education in Dhanusha district of Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Status of computer education in Dhanusha district of Nepal

    +

    18 Sep 2016 - codefornepal

    +

    +

    Recently we supported and partnered with Women Development Advocacy Centre (WDAC), a non-profit in Nepal to conduct a study in Dhanusha district about the status of computer literacy in public schools. 

    + +

    Read the full report (Google doc), and check out the infographic below for summary! We welcome your feedback in the comments!

    + +

     

    + +

    infographic of dhanusha district

    + +

     

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/09/digital-literacy-in-nepal/index.html b/2016/09/digital-literacy-in-nepal/index.html new file mode 100644 index 00000000..6dcb62fe --- /dev/null +++ b/2016/09/digital-literacy-in-nepal/index.html @@ -0,0 +1,372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7 reasons why digital literacy is important in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    7 reasons why digital literacy is important in Nepal

    +

    05 Sep 2016 - Sudeshana Karki

    +

    +

    tumblr_inline_ndck4pOZTf1qb9ga0

    + +
      +
    1. Computers are the uncontested source of knowledge.
    2. +
    3. Computers are gateway to information and the potential to learn through them are vast. Having a computer can expand the resources available to the school as well as facilitate the much-needed computer literacy.
    4. +
    5. It is our right, sanctioned by the constitution. The constitution of Nepal promulgated in 2015 states that the public should be able to easily access information. The policy also adds that this ease of access to information should be ensured through expansion of information technology as it is in necessary for accelerating the nation’s development. Having computer literacy at school level is aligned with this policy and imparts computer literacy among the Nepali population.
    6. +
    7. Keeping up with the changing world. With the current expansion of information technology and its reach, it is only fair that computer literacy is prioritized. Countries around the world have incorporated computer classes in the core curriculum of schools and when every academic field has an extension rooted in computer technology, it is only logical to attain computer literacy to keep up with the changing world.
    8. +
    9. Skill development. Computer literacy is a very crucial skill to have in the 21st century. If computer literacy is incorporated in school curriculum, it allows students to attain computer skills which they can utilize for academic, employment or even developmental opportunities.
    10. +
    11. Increased employment opportunity. As mentioned earlier, knowledge of computer skills or proficiency in computer literacy allows a person to pursue more job opportunities.
    12. +
    13. Earlier the better. The earlier the students are introduced to computers, the easier it will be for them to grasp the concepts and be able to pursue it.
    14. +
    + + + + + + + + + +

    Having computers is a win-win situation for all. However, the current state of computer literacy in Nepal is still in its nascent stage. Many schools across the nation are still struggling to afford a computer, let alone offer articulate courses. Following info-graphs gives us a glimpse of the current status of computer literacy in Nepal.

    + +

    1 2

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

     

    + +

    On the brighter side, implementation of Information-Communication Technology (ICT) infrastructures in school education have been recognized by the policymakers.

    + +

    Initiatives like one Laptop per Child (OLPC), Lab Model (computer sharing mechanism) and internet access to schools have started to get implemented. There is still a lot to be done and it takes a combined contribution and support from both private and public sector to change that.

    + +

    Spread the word!

    + +

     

    + +

     

    + +

     

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/10/iwalkfreely-nepal/index.html b/2016/10/iwalkfreely-nepal/index.html new file mode 100644 index 00000000..0914589b --- /dev/null +++ b/2016/10/iwalkfreely-nepal/index.html @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #IWalkFreely – A Nepali girl’s dream | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    #IWalkFreely – A Nepali girl’s dream

    +

    24 Oct 2016 - Asmita Gauchan

    +

    +

    #Iwalk

    + +

    Note: This piece was first published on Setopati

    + +

    I have gotten used to verbal and sexual harassment. How terrible of a sentence is that?! Nobody should ever, ever get ‘used’ to things like that.

    + +

    Nothing brings more clarity to the grim reality of the normalcy with which girls and women are harassed on the streets of Nepal than this excerpt from a participant story from our #IWalkFreely online survey. Indeed, no one should be exposed to harassment to such a degree that they start getting used to it, but it’s hardly surprising that we are seeing this resigned acceptance of the misogynistic norm among our youth.

    + +

    The #IWalkFreely survey amassed over 1000 responses and an overwhelming 92% of the participants reported they had been harassed on the streets in one form or another. More bleak still, 98% of all women participants stated they had been harassed making this an indisputably gender based issue.

    + +

    Besides the streets, 71% of the participants also reported getting harassed in public transportations. 63% of the participants reported physical harassment of some form, 63% also reported being exposed to verbal harassment, and 20% reported sexual harassment.

    + +

    One of the most insidious ways in which harassment thrives in our society is through the collective dismissal of its gravity. The problem is woven into the very fabric of our society, yet people are unwilling to acknowledge it. Instead, there is constant and casual deflection of the issue spurred by an internalized toxicity which has allowed this kind of heinous behavior to go unchecked for so long.

    + +

    49% of the participants who said they had faced harassment were between 20 and 29 years old. Similarly, over 41% of the participants who answered in the affirmative when asked if they’d ever experienced harassment were between the ages of 13 and 19. This means a disturbing majority of the people who are harassed in our country are girls and young women.

    + +

    Participant stories illustrated that victims were very often too embarrassed to talk about what had happened with their parents or authorities, fearful that the shame of the act would fall upon them, not the perpetrators. Boys will be boys. They won’t say anything if you cover up. Just pretend you didn’t hear them. They’ll stop if you don’t pay attention to them.

    + +

    Being a young girl in Nepal, one is likely to hear this sort of dismissive rhetoric if she does try to talk about harassment with her mother or a female teacher. This is primarily why victims are more inclined to endure silently instead of trying to report the culprits. Girls are being conditioned to think their pain is not important, their bodies not their own to command but for boys and men to ogle and objectify

    + +

    In a society that has done the utmost to all but erase the female sexuality, adolescent girls are forced to deal with their changing physiques while simultaneously made to feel compelled to hide their development and growth, because being obvious might attract unwanted attention on the streets or their classroom or the micro bus. This poisonous socio-cultural trend will never change unless we, collectively as Nepali citizens, acknowledge that objectification of girls and women and the consequent harassment that they are subjected to is a national epidemic.   

    + +

    It’s easy to discern from the data that harassment is ubiquitous—one would have to stay home at all times, with their doors padlocked if they wish to dodge harassment in Nepal.

    + +

    What we need to take away from these startling numbers is not the idea of urging our girls to become shut-ins, but the intent to spread awareness about this toxic epidemic and start conversations on all social and educational levels to teach our boys that girls are just as much human as they are, girls warrant just as much respect as boys do, girls deserve to walk freely on the streets without having to worry about being dehumanized through objectification.

    + +

     

    + +

    Source: Survey data

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/10/rebooting-asknepal-initiative/index.html b/2016/10/rebooting-asknepal-initiative/index.html new file mode 100644 index 00000000..cdd8df61 --- /dev/null +++ b/2016/10/rebooting-asknepal-initiative/index.html @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rebooting AskNepal initiative | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Rebooting AskNepal initiative

    +

    30 Oct 2016 - Nikesh Balami

    +

    +

    October 17th, 2016 – A day when I messaged Mr. Ravi Kumar Nepal, Co-founder of Code For Nepal showing my interest in leading and contributing AskNepal initiative and within a day my meeting was fixed with him for October 22nd, 2016 where we discuss the different possible ways of my engagement. Today right after one week of that meeting, here I am writing this post with the possible Project Plan, Admin Access, Project Lead tag. Unbelievable, Isn’t it a super fast way of joining a community. Yes, it is and thanks to Ravi and team for accepting me as a C4N family.

    + +

    So, What are the possible next steps and how we are doing it?

    + +

    Like every others project, AskNepal initiative also needs multi-stakeholders, supporters, collaborators to make a greater impact and easy outreach. So, our next step is to search for possible organizations and civil society organization (CSO) who can help us. Our initial discussion with some RTI Activist of Nepal had found that there is more than 10 organization working all around Nepal for the betterment of Right to Information Act with greater implementation and impact. At first stage, we will be starting this discussion with two organization of Nepal, Citizens’ Campaign for Right to Information (CCRI) and Freedom Forum because this organization has great experience of working in RTI field and human resources who believes in technological solution. We will keep searching others possible organization. We want these kinds of CSO, who understand technology to be our collaborators because AskNepal initiative is all about increasing citizen’s reach of Access to Information through the use of technology.

    + +

    We will be taking feedback and suggestion from this two organization (CCRI Nepal and Freedom Forum) regarding site customization so, that we can make it more user-friendly because the current version of the site is the replicate of the global initiative https://www.whatdotheyknow.com/. Where you choose the public authority that you would like information from, then write a brief note describing what you want to know. Then we will play the intermediary role where we will send your request to the respective public authority or officer. Any response received is automatically published on the website for you and anyone else to find and read.

    + +

    But we plan to localize the site according to the local context and needs to increase our chances of reaching local citizens from all around the country. We will implement and try all kinds of suggestion regarding site customization because, at the end of the day, all we want is to make the site user-friendly.

    + +

    After making site perfect, our next step is to discuss initiative with a government organization in search of help. For this, we will follow Top-Down approach and will directly start from National Information Commission (NIC)  because when it comes to working with government, Bottom-Up approach never works and I personally have a good experience about this. We also believe our chances of getting positive responses from government officials is high and after getting linked with government and CSO, the project outreach is just a matter of time.

    + +

    Last but not the least, the site is still empty, what about data, where are the list of public authorities?

    + +

    The answers are clear and simple, we will search and crowdsourced it. National Information Technology Center (NITC) already have this data because all the (.gov.np) domain are control and maintained by them. We will ask those data with them by using RTI Act and the ongoing project of Open Knowledge Nepal, PublicBodies Nepal can be another possible source of data.

    + +

    The outreach and frequent maintenance of site will be done by the team of Code for Nepal and Open Knowledge Nepal. More importantly, If the initiative got selected for Accountability Lab Incubator, all the implementation of this plan is going to be easier.

    + +

    Want to join or support AskNepal initiative, contact project lead Nikesh Balami (nikesh@codefornepal.org)

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/11/data-on-nepal/index.html b/2016/11/data-on-nepal/index.html new file mode 100644 index 00000000..74175ee2 --- /dev/null +++ b/2016/11/data-on-nepal/index.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NepalMap: Data about Nepal at your fingertips | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    NepalMap: Data about Nepal at your fingertips

    +

    08 Nov 2016 - ravi

    +

    +

    <img class=”alignnone size-large wp-image-1563” src=”https://codefornepal.org/wp-content/uploads/2016/11/Screen-Shot-2016-10-09-at-8.03.49-AM-1024x515.png” alt=”NepalMap” width= 100% height=”473” srcset=”https://codefornepal.org/wp-content/uploads/2016/11/Screen-Shot-2016-10-09-at-8.03.49-AM-1024x515.png 1024w, https://codefornepal.org/wp-content/uploads/2016/11/Screen-Shot-2016-10-09-at-8.03.49-AM-300x151.png 300w, https://codefornepal.org/wp-content/uploads/2016/11/Screen-Shot-2016-10-09-at-8.03.49-AM-768x386.png 768w, https://codefornepal.org/wp-content/uploads/2016/11/Screen-Shot-2016-10-09-at-8.03.49-AM.png 1230w” sizes=”(max-width: 1024px) 100vw, 1024px” />

    + +

    When I was a kid, I wondered how many other people lived in Dhanusa, my home district on the southern border of Nepal. I asked my parents. They had no idea. They guessed. I remained curious.

    + +

    Years later, when I was in college in the U.S., I wanted to look up data on Nepal to write research papers or to tell my friends about my home country. There were existing resources with data but often it was incomplete, or would only include national averages. I was not able to find out how many people lived in each district, for example.

    + +

    The data must have existed somewhere, as Nepal has been conducting censuses for at least a century, starting in 1911. But it’s only been with the rise of the Internet that data has been, in theory, more widely available. However, most of the Nepal census data online today is still locked in PDF format, making it inconvenient for users to analyze and share. We wanted to change that.

    + +

    In 2014, my wife and I co-founded Code for Nepal, a non-profit to increase digital literacy and the use of open data in Nepal. This month, Code for Nepal is excited to launch the beta version of www.nepalmap.org, a web app that puts data about Nepal at your fingertips!

    + +

    NepalMap helps users to find and understand data on Nepal easily, and will be useful to anyone who seeks to learn more about Nepal via data.

    + +

    Whether you live in Morang or Mahottari, you can use NepalMap to find out how many people in your district have passed School Leaving Certificate (SLC), or how many people still use wood to cook food.

    + +

    You can compare two districts and find out which one has a higher life expectancy or more toilets. Very soon, Village Development Committee data will be available too.

    + +

    Journalists, researchers, and students will find NepalMap to be one of their best friends as they are looking for data. Entrepreneurs and businesses can better understand an area in which they are looking to do business by using NepalMap. Anyone can embed charts from NepalMap on their websites or download the data for their own use.

    + +

    Building a tool is just the first step. I believe for us to better understand our challenges, we have to have an evidence-based conversation. I hope all of us can use an app like NepalMap to explore and understand Nepal better.

    + +

    NepalMap would not have been possible without the generosity of many people. It is based on Wazimap, which is based on Census Reporter. At Code for Nepal, we are especially grateful to Clifton McIntosh, for serving as the lead developer for NepalMap. Amit Chaudhary and other Code for Nepal volunteers along with Clifton, continue to work to make NepalMap better.

    + +

    Next time someone asks you how they can look for data on Nepal, I hope you will refer them to NepalMap.org. Had I and my parents had NepalMap, when I was a kid, it would have helped me to better understand where I came from. Better late than never.

    + +

    Onward.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/12/1588/index.html b/2016/12/1588/index.html new file mode 100644 index 00000000..2396a781 --- /dev/null +++ b/2016/12/1588/index.html @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #IWalkFreely – Real Life Horror Stories | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    #IWalkFreely – Real Life Horror Stories

    +

    12 Dec 2016 - Asmita Gauchan

    +

    +

    Note: This piece was first published on Nepali Times

    + +

    That women are harassed at home, in the workplace and in the streets of Nepal is well known. What was hidden was the true extent of the problem.

    + +

    Code For Nepal’s #IWalkFreely has shown not just the shocking extent of the problem but even more disturbing are the testimonies which speak of the horror Nepali girls and women face daily.

    + + + +

    ‘I was once harassed by my own relative,’ wrote a 12-year-old girl. Another 13-year-old female respondent said: ‘I was walking alone in an alley in the evening and a man (not so old) groped me. I was totally shocked, couldn’t process what had just happened and he ran away.’

    + +

    By staying silent when a woman is being teased on the streets, bystanders accept that women will always be oppressed and let it flourish.

    + +

    ‘Verbal teasing and unwanted looks are things that I don’t go a day without facing. Molestation has happened so many times you can’t count it on 5 fingers. Because that doesn’t mean this is only happening to me, thousands of other females in Nepal are just like me — and that shocks me,” wrote another respondent.

    + +

    There is little repressed anger in their words because what is happening to the girls and women is unfair and unjust. There is hurt, resignation.

    + +

    ‘Once I was returning from school and some vagrant was flashing. Another time I was returning home from college in a bus and a guy was running his fingers over my thigh. I scolded him and he left the bus. I was walking in a crowd during Machindranath Jatra and an old man pinched my ass. Every day as I leave home I hear comments from people, no matter if I dress up in shorts and a tight dress or in a kurta,” wrote another.

    + +

    The #IWalkFreely survey collected over 1,000 responses and 97 percent of all women said they had been harassed. Besides the streets, 71 percent of respondents of both genders also reported harassment in public transportation, 63 percent said they were subjected to physical harassment of some form, and 20 percent reported sexual harassment.

    + +

    iwalkfreely_yes-no-chart

    + +

    Here is another respondent in the Code for Nepal survey: ‘During the India-Nepal Blockade, it was 7pm and carpooling was a highly chosen option. I also chose to take a lift at RNAC. My home was 30 minutes far and with a bike it can take only 10 minutes. So the motorcyclist and I were talking and going. Just some simple conversation. Then on the way there was a place where there was a bit of dark. He began to touch my legs. I told him to stop there and then. But he didn’t stop. Then he advanced his hands backwards again and touched my thighs. I screamed and he told me not to. I lied to him and said that my father is a DIG then he halted. I jumped off his bike and ran away. Crying and crying. I didn’t stop till I was near my home and didn’t even look back. I didn’t have the guts to tell anyone at home. I just cried all night and promised myself never to take a lift from strangers.’

    + +

    iwalkfreely_age-chart

    + +

    Nearly half the participants who said they had faced harassment were between 20-29 years old, and 41 percent were between 13 and 19. It isn’t only the figurative abduction of girls and women that we should fight against as a society. Street harassment, so often mistakenly seen as harmless, is a precursor to more severe forms of violence against women.  So many of the stories respondents shared didn’t stop at confessing to being harassed on the streets. As illustrated by the sampling of anecdotes in this piece, girls and women in Nepal are exposed to greater dangers than cat calls and wolf whistles.

    + +

    ‘As I’ve grown older, I’ve learned to become more straightforward and unafraid of such men and stare directly at them and tell them exactly what I’m thinking or just throw up the middle finger and a dirty look,’ wrote one. It may be time to take some pointers from this brave young woman.

    + +

    Don’t shrug at these horrifying, heartbreaking stories. It is upon every man and woman to think of what can be done to change how these stories are shaped, to ensure they do not end with helpless rage or leave scars.

    + +

    Source: #IWalkFreely Survey Data

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2016/12/code-for-nepal-2016-review/index.html b/2016/12/code-for-nepal-2016-review/index.html new file mode 100644 index 00000000..ece6c214 --- /dev/null +++ b/2016/12/code-for-nepal-2016-review/index.html @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 thing to do and 6 things to know about Code for Nepal before the year ends | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    1 thing to do and 6 things to know about Code for Nepal before the year ends

    +

    23 Dec 2016 - codefornepal

    +

    +

    Subarna Tandukar

    + +

    + In 2016, we scaled up our commitment to increase digital literacy and the use of open data in Nepal to empower women and minorities. Make tax deductible donations now to digitally empower Nepal. 100% of the funds will go towards our operations. +

    + +
      +
    1. + NepalMap: We launched NepalMap, a web app to make data on Nepal easily accessible, understandable, and sharable. On average 8,500 people use the app every month. +
    2. +
    3. + Scholarship for up to 25 Nepali women to learn coding: We have partnered with TECHRISE, a local private entity in Nepal that offers bootcamp training for various programming languages, to equip young women with advanced web development skills. We are raising funds to provide full scholarships to 25 young women in Nepal to learn web development skills. Donate now to empower women in Nepal. +
    4. +
    5. + Increasing Digital Literacy in Dhanusha: We funded a study in Dhanusha district about the status of computer literacy in public schools. We are partnering with a local non-profit in Nepal to operate a digital literacy center in Janakpur, and train at least 150 youth from a disadvantaged background to be digitally equipped to tackle professional as well as personal challenges. +
    6. +
    7. + Documenting and helping end street harassment in Nepal: We launched the  #IWalkFreely campaign to gather data on the status of street harassment in Nepal and raise awareness to end street harassment. We published our findings in Nepali Times and Setopati based on 1,100+ responses. +
    8. +
    9. + Using photos and videos to help build inclusive Nepal: In a bid to raise awareness on digital literacy and generate culture-driven creative content, we launched the “Ko Nepali?” Video and Photo Competition in February. The competition was open to Nepalis all around the world, and in true spirit of inclusivism, entries were accepted in four of the most spoken native tongues in the country as well as in English. Over 150 submissions were received. Check out the winners! +
    10. +
    11. + Rahat Payo: Rahat Payo was a survey we initiated to assess the state of relief distribution in post-earthquake Nepal. In February, we released results from the survey we conducted in Barpark, Gorkha, the epicenter of the 7.8 magnitude earthquake that hit the country on April 25th, 2015. 98% of the respondents (out of sample population of 703) said they had received relief aid within 1-8 weeks of the earthquake. However, after ten months of the incident, most of the locals were still living in temporary shelters, even in the prevailing sub-zero temperatures. We shared the data with a local non-profit working to help the people of Barpark so their efforts can be directed by the voice of the local residents and their needs. +
    12. +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/01/code-for-nepal-launches-scholarship-program-to-empower-women-in-nepal/index.html b/2017/01/code-for-nepal-launches-scholarship-program-to-empower-women-in-nepal/index.html new file mode 100644 index 00000000..ecccfe4d --- /dev/null +++ b/2017/01/code-for-nepal-launches-scholarship-program-to-empower-women-in-nepal/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A New Code for Nepal Initiative: Women in Tech Scholarship | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    A New Code for Nepal Initiative: Women in Tech Scholarship

    +

    28 Jan 2017 - Asmita Gauchan

    +

    +

    Women are majority of Nepal’s population. But they are the most underutilized talent in Nepal. To help develop skills of young women, especially in tech industry, we are launching a scholarship program.

    + +

    Code for Nepal is partnering with TECHRISE, a local private entity in Nepal to equip young women with advanced web development skills.

    + +

    We have raised funds to provide full scholarships to 25 bright, young women to participate in this program. Each of them will receive scholarship support of $100 to complete this program.

    + +

    Recipients will enroll in an 8 week web development training program, wherein they will have access to mentors as well as an opportunity to connect with other aspiring developers. Code for Nepal will start accepting scholarship applications for this program in early February. We will be working closely with TECHRISE to select recipients based on merit. Women from underserved and minority groups are especially encouraged to apply.

    + +

    Applicants do not need to have any prior programming background, but a good understanding of how to use a computer is a must. The scholarship is being planned to roll out in batches of 5, so our first batch of recipients will comprise of 5 students. An additional 5 recipients will be selected when the first batch has completed training, and we will continue this process until we have funded 25 women.

    + +

    Additionally, applicants will also need to fulfill the following minimum requirements to be considered for the scholarship:

    + +

    1) Applicants must have their own computers/laptops

    + +

    2) Must be able to read English

    + +

    3) Applicants should be able to devote approximately 15 hours a week on the program

    + +

    Code for Nepal is anticipating great things from this collaboration with TECHRISE.

    + +

    Past students have spoken greatly of their experience with the program, like Puja Poudyal from Bhaktapur, who shared, “Going into the world of technology has always been a great passion for me. But whenever I tried to learn new things by myself, I faced all sorts of problems and would get frustrated. After enrolling in TECHRISE, I started exploring my potential with 1 on 1 mentor sessions, and building real web applications. I was able to learn from anywhere and get help from my mentor whenever I got stuck.”

    + +

    Only 50% of Nepali women were active in the country’s labor force in 2014. Additionally, in the same year, only 28.2% of the households in the country were headed by women and only 29.9% of the seats in the parliament were taken by women. These dreary numbers are one of numerous reasons why Nepal trails behind in development despite several efforts made to push the nation forward.

    + +

    When half of the nation’s labor force is not able to contribute to the economy, it should come as no surprise that the economy continues to struggle.

    + +

    Code for Nepal’s initiative to facilitate personal focus based learning experience with TECHRISE for 25 bright and motivated Nepali women is a step in the right direction to create a bigger space and greater opportunities for women in the country’s job market. Information Technology is a largely male dominated field, not just in Nepal but throughout the world. It is our hope that with similar efforts to support and encourage women who pursue Information Technology based careers, we will be seeing this pattern overturn in the coming years.

    + +

    Stay tuned for the application by visiting www.codefornepal.org or liking us on Facebook: www.fb.com/codefornepal, or Twitter: www.twitter.com/codefornepal

    + +

    And yes, please spread the word!

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/01/digital-literacy-center-in-janakpur/index.html b/2017/01/digital-literacy-center-in-janakpur/index.html new file mode 100644 index 00000000..ed0f0c81 --- /dev/null +++ b/2017/01/digital-literacy-center-in-janakpur/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Supporting digital literacy in Janakpur | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Supporting digital literacy in Janakpur

    +

    17 Jan 2017 - codefornepal

    +

    +

    + +

    We have partnered with Women Development Advocacy Center (WDAC), a non-profit in Nepal, to support a computer learning center in Janakpur, a town in southern borders of Nepal.

    + +

    The learning center will train local youth from the disadvantaged background, especially those from rural areas.

    + +

     

    + +

    At Code for Nepal, we believe in increasing digital literacy especially among women and minorities. By partnering with WDAC we are supporting the mission. We are supporting by providing the salary of a trainer who will teach youth.

    + +

    We are grateful for Mitrapath, Inc, a non-profit based in the U.S. for their donations to support to this digital literacy center.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/02/app/index.html b/2017/02/app/index.html new file mode 100644 index 00000000..9f1c63da --- /dev/null +++ b/2017/02/app/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Apply now for Women in Tech Scholarship – Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Apply now for Women in Tech Scholarship – Code for Nepal

    +

    05 Feb 2017 - Asmita Gauchan

    +

    +

    Thank you for your interest.

    + +

    We, at Code for Nepal, believe gender should not be a determinant in the kind of career opportunities that one gets to pursue. As things stand in Nepal, however, women are severely disadvantaged in virtually all aspects of life. Glaring gender gaps in employment within various fields is a bleak reality. In an effort to tip the scales in favor of promising, motivated young women who do not get as many opportunities as their male counterparts, we are partnering with TECHRISE, a local private entity in Nepal to equip young women with advanced web development skills.

    + +

    Code for Nepal’s Women in Tech Scholarship will award selected recipients with the opportunity to attend TECHRISE’s 8-week Immersive Core Program, wherein they will have access to mentors as well as the chance to connect with other aspiring developers.

    + +

    Applicants do not need to have any prior programming background, but a good understanding of how to use a computer is a must. The scholarship is being planned to roll out in batches of 5, so our first batch of recipients will comprise of 5 students. An additional 5 recipients will be selected when the first batch has completed training, and we will continue this process until we have funded 25 women.

    + +

    Additionally, applicants will also need to fulfill the following minimum requirements to be considered for the scholarship:

    + +

    1) Applicants must have their own computers/laptops.

    + +

    2) Must be able to read English.

    + +

    3) Applicants should be able to devote approximately 15 hours a week on the program.

    + +

    Application deadline is March 12, 2017. Code for Nepal is anticipating great things from this collaboration with TECHRISE.

    + +

    For more information, please check out this post.

    + +

    Applications have now been closed for this round of Code for Nepal’s Women in Tech Scholarship.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/02/code-for-nepal-organizes-digitalnepal-conference-to-empower-youth-in-nepal/index.html b/2017/02/code-for-nepal-organizes-digitalnepal-conference-to-empower-youth-in-nepal/index.html new file mode 100644 index 00000000..e0b80015 --- /dev/null +++ b/2017/02/code-for-nepal-organizes-digitalnepal-conference-to-empower-youth-in-nepal/index.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal organizes #DigitalNepal conference to empower youth in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Code for Nepal organizes #DigitalNepal conference to empower youth in Nepal

    +

    21 Feb 2017 - codefornepal

    +

    +

    Press Release- 20 February 2017

    + +

    www.codefornepal.org

    + +

    Washington, D.C.

    + +

    United States of America
    +FOR IMMEDIATE RELEASE

    + +

    Contact: Roshan Ghimire

    + +

    Email: roshan@codefornepal.org
    +Code for Nepal organizes #DigitalNepal conference to empower youth in Nepal
    +Washington, D.C. – Today the nonprofit Code for Nepal announced that it will organize a digital conference in Janakpur, Nepal, in partnership with local organizations. The conference will empower youth, support a local digital literacy center and promote scholarship programs for women to learn coding, by granting Rs. 4.5 lakhs over the next year.
    +This event brings together international and national speakers in Janakpur for the first time to discuss how young people in Nepal can prepare themselves to use digital tools for making their dreams a reality and finding a job.
    +Honorable Dr. Ram Baran Yadav, first president of Nepal is the chief guest of the conference. Biswas Dhakal, from F1Soft International, Yogina Shakya, from the CloudFactory, Dietrich Ayala from Mozilla, Anusha Yadav from Accountability Lab, are some of the speakers at the conference.
    +120+ of college students, journalists, and civil society leaders are expected to participate. “Technology can play instrumental role in empowering youth. This conference in Janakpur hopes to do that,” said Ravi Kumar, founder of Code for Nepal.
    +Attendees will learn about how to use social media responsibly, launch a successful business, citizen journalism, data visualization, multimedia storytelling, and virtual reality. The conference will also allow participants to network and connect with possible future mentors.
    +To find out more details about the conference, please see: www.digitalnepal.org
    +The conference is supported by Mozilla, the technology company that supports free and open-source web, and Eejot, the non-profit that helps students in villages of Nepal with education.
    +The conference is co-organized by Women Development Advocacy Center (WDAC), a social enterprise that enables sustainable livelihoods for disadvantaged women and youth in urban and rural areas.
    +Madhesi Youth, Association of Youth Organization in Nepal, Open Knowledge Nepal, Janakpur youth Network are partners for the conference.
    +About Code for Nepal
    +Code for Nepal is an all-volunteer non-profit organization registered in the United States. Code for Nepal works to digitally empower Nepal by increasing digital literacy and the use of open data.
    +For more information, contact our communications team at media@codeofornepal.org

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/02/digital-governance-hackathon-2017-in-kathmandu/index.html b/2017/02/digital-governance-hackathon-2017-in-kathmandu/index.html new file mode 100644 index 00000000..3d18403b --- /dev/null +++ b/2017/02/digital-governance-hackathon-2017-in-kathmandu/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Digital Governance Hackathon 2017 in Kathmandu | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Digital Governance Hackathon 2017 in Kathmandu

    +

    10 Feb 2017 - Nikesh Balami

    +

    +

    Code for Nepal is pleased to support Digital Governance Hackathon 2017. The hackathon is being organized in Kathmandu, Nepal on 11-12 February 2017 at Hotel Hardik, Bagbazaar.

    + +

    The aim of the hackathon is to connect software developers to government and nonprofit organizations to produce digital products around issues of Civic Engagement, Open Government and Open Data, Financial Technology, Accountability, Democratic Policy Making, Education and Health and Digital Services to Public.

    + +

    The event is being hosted by American Embassy, with support from Ministry of Education, Hello Sarkar Nepal, National Federation of Disabled-Nepal(NFD-N), Federation of Nepali Journalists(FNJ), MaxConnect, chakrapath.com, Code For Nepal and Programiz.

    + +

    Hackathons are one of many initiatives going on to promote digital governance in Nepal. Code for Nepal recently released nepalmap.org, a platform to explore and understand Nepal using data. We recently partnered with Women Development Advocacy Center (WDAC), a non-profit in Nepal, to support a computer learning center in Janakpur, a town in southern borders of Nepal.

    + +

    We hope that the hackathon is able to provide much needed technological support to projects initiated by government and non-profits.

    + +

    Program Schedule

    + +

    Day 1

    + +

    + +

    Day 2

    + +

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/02/drinking-water-in-nepal/index.html b/2017/02/drinking-water-in-nepal/index.html new file mode 100644 index 00000000..65b6c47b --- /dev/null +++ b/2017/02/drinking-water-in-nepal/index.html @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The six districts in Nepal where nearly half of all people don’t have safe drinking water | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    The six districts in Nepal where nearly half of all people don’t have safe drinking water

    +

    19 Feb 2017 - codefornepal

    +

    +

    + Safe drinking water map + +

    + Source: www.nepalmap.org +

    +
    + +

    Over the last few decades, Nepal has made significant progress in providing people with safe drinking water. 83.4% of Nepalis have access to safe drinking water, according to UNDP Development Human Development Report, 2014,

    + +

    That means more than 8 in 10 Nepalis have safe drinking water.

    + +

    But there are some districts where almost half of the people still don’t have safe drinking water. Here are those districts:

    + +
      +
    1. Achham
    2. +
    3. Dang
    4. +
    5. Salyan
    6. +
    7. Dailekh
    8. +
    9. Kalikot
    10. +
    11. Jajarkot
    12. +
    + +

    Check out this interactive map to explore how many people in your district have access to safe drinking water.

    + +

    Comment below if you are surprised by what you find.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/04/diversity-and-enthusiasm-my-take-on-digital-nepal-conference-janakpur/index.html b/2017/04/diversity-and-enthusiasm-my-take-on-digital-nepal-conference-janakpur/index.html new file mode 100644 index 00000000..b60cd22b --- /dev/null +++ b/2017/04/diversity-and-enthusiasm-my-take-on-digital-nepal-conference-janakpur/index.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Diversity and enthusiasm: My take on Digital Nepal Conference, Janakpur | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Diversity and enthusiasm: My take on Digital Nepal Conference, Janakpur

    +

    27 Apr 2017 - Nikesh Balami

    +

    +

    As we know, things are pretty unpredictable in Nepal. Right before the Digital Nepal Conference – Janakpur, because of unfortunate and tragic events, a strike was announced. After monitoring the situation closely, talking to people, and considering the high demand from youths in the region, Code for Nepal decided that it would be OK to go forward with the conference.

    + +

    I had only been to Janakpur once as a child many years ago. As someone who had not really explored the southern parts of the country, I decided to go to Janakpur despite the challenges of the strike. Frankly, my friend, Avinash, and I were both a bit nervous. However, we were also very excited.

    + +

    We decided to fly on March 8. I almost did not make it to the airport on time because of heavy traffic on the road in Kathmandu. After all the hassle, when we landed safely in Janakpur, Ravi and the Code for Nepal team were there to greet us at the airport. It was so reassuring to see familiar faces. Half of the passengers who traveled on that plane were attending the conference. Isn’t that amazing?

    + +

    From the airport, we took a Tuk Tuk. It was my first time riding a Tuk Tuk. On the way to the hotel, I realized how clean and beautiful Janakpur had become (Ravi says the town used to be cleaner when he was growing up there). Most importantly, the weather was perfect. Later that day, we also visited Janaki Mandir and surrounding ponds. Janakpur is such a religious and historical town. People are friendly.

    + +

    That evening, there was a journalism workshop for local journalists of Janakpur. It was a normal kind of workshop, similar to ones I used to see more frequently while attending events in Kathmandu. The workshop was facilitated by Dietrich Ayala, David and Ravi Kumar Nepal, where participants learned about using technology for storytelling. But it was when the team of Accountability Lab started the discussion about Open Government, that I saw the enthusiasm of participants. They openly discussed how the concept of Open Government can be helpful for all Nepalese citizens. Some also shared problems that they are facing, which can only be solved by governments.

    + +

    + +

    Since there was a strike that day, there was nothing much to expect. But thanks to Pratap Adhikari from Association of Youth Organizations Nepal (AYON) who made our night awesome. He took us on a Janakpur tour, during which we visited almost all the important temples and ponds of Janakpur. We also enjoyed watching puja happening at Ganga Sagar, and more importantly enjoying the taste of Janakpur lassi was an awesome feeling.

    + +

    On the 2nd day of the conference, I joined Alisha Chettri from the Women Development Advocacy Center at the registration desk. This gave me a chance to understand how diverse the conference was going to be. Yes, diverse – which is hard to see in Kathmandu-based events. Young students, housewives, shopkeepers, journalists and community leaders were there to attend the conference. Female participants were also in a good number.

    + +

    + +

    The conference started and as usual, I started snapping photos to post them on our social media account, which I believe is one of the best ways to do documentation of an event. Taking photos, listening to speakers and going Facebook Live sometimes, I was enjoying it. However, I found it interesting when participants started asking questions to presenters. This showed how enthusiastic they were. They were engaged in all presentations and panel discussions. Asking questions, sharing their views, interactions were from both sides. After all the presentations and panel discussions, a token of love was given to each presenter, and t-shirts were given to all participants. Some left the venue and the rest of us went for a group photo. Ohh, group photo and my selfie 😛

    + +

    + +

    After the conference ended, we caught up with Pratap Adhikari again and went to taste Janakpur fish. Don’t know whether I should be saying it or not, but that evening I came to know that strong beer is found only in Terai districts. After enjoying the fish, we went for dinner where Ravi gave us a treat, and I must say that the food was amazing. Later that night, Dietrich and I enjoyed an omelet of a duck egg also.

    + +

    + +

    I must say that my three-day-visit of Janakpur was awesome, and this time my experience was different. My contribution at Digital Nepal Conference was limited, but the conference gave me an opportunity to enjoy and interact with nice people of Janakpur. Hope this kind of event will be organized outside of the valley more frequently.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/04/election-nepal-a-mediator-between-citizens-and-government-for-election-data/index.html b/2017/04/election-nepal-a-mediator-between-citizens-and-government-for-election-data/index.html new file mode 100644 index 00000000..41b210a1 --- /dev/null +++ b/2017/04/election-nepal-a-mediator-between-citizens-and-government-for-election-data/index.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Election Nepal – A mediator between Citizens and Government for Election Data | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Election Nepal – A mediator between Citizens and Government for Election Data

    +

    18 Apr 2017 - Nikesh Balami

    +

    +

    On 20th February 2017, A Cabinet meeting held at the Office of the Prime Minister and Council of Ministers in Singha Durbar announced the date of Local Elections to be held on May 14. Nearly after the 20 years, this election is being held. The last local elections in Nepal were held in 1997 for municipalities and village councils. And, Local elections which was held in 2005 by King Gyanendra during his direct rule which was widely boycotted by the major political parties. That was ineffective because of the ongoing civil war.

    + +

    Election Commission Nepal is responsible government body for conducting and managing all activities of Local Elections. This is the first election after Nepal being recognized as a Federal Nation. For the preparation of the election, the government decided to provide Rs 10.296 billion to the Election Commission Nepal immediately for the polls. Thus, Election Commission Nepal has already started exploring the logistic requirements, updating the voters’ list, estimation of the human resources. According to the Election Commission Nepal, the preparation has been 90% completed. Commission had also received the financial and technical support from the major donor countries, who did support in past elections regularly.

    + +

    The Commission had already started to generate an enormous amount of election data so, to maximize the reach of those data, last week in collaboration with Open Knowledge Nepal, we launched the first Beta version of Election Nepal Portal. Election Nepal is a crowdsourced open portal that brings all kind of Data related to Nepal’s Local Election together in Open and Visual Format. Those accumulated data can be easily reused in future for various purposes. The portal will be focusing on three different areas, such as: visualization, datasets, and Twitter feed. Visualization will consist different kinds of visualization which can be easily shared, reuse and embed. Datasets will consist data published by different government source regarding the election in an open format and Twitter feed will bring social buzz happening at social media regarding local elections.

    + +

    For more information please visit the project website: http://electionnepal.org and find out how the project started and journey behind from here.

    + +
    + + +

    + Election Nepal Portal +

    +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/04/forbes2017/index.html b/2017/04/forbes2017/index.html new file mode 100644 index 00000000..98642d37 --- /dev/null +++ b/2017/04/forbes2017/index.html @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal is named in Forbes 30 Under 30’s list of social entrepreneurs in Asia | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Code for Nepal is named in Forbes 30 Under 30’s list of social entrepreneurs in Asia

    +

    16 Apr 2017 - codefornepal

    +

    +

    + Forbes 30 Under 30's list of social entrepreneurs in Asia + +

    + We are honored and humbled to be named in Forbes 30 Under 30’s list of social entrepreneurs in Asia +

    +
    + +
    +
    + +
    + This week we found out we have been named to Forbes as 30 under 30 social entrepreneurs in Asia. +
    + +
    +
    + +
    + We are a small group of volunteers building meaningful products and helping people learn skills to improve their lives. We are truly grateful and humbled by the honor! Read more about it on Forbes: www.bit.ly/c4nforbes.</p> +
    + +
    + With love, +
    + +
    + Code for Nepal team +
    + +
    +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/06/1720/index.html b/2017/06/1720/index.html new file mode 100644 index 00000000..46e7211b --- /dev/null +++ b/2017/06/1720/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Meet Susan Sunuwar – a recipient of the Women in Tech Scholarship | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Meet Susan Sunuwar – a recipient of the Women in Tech Scholarship

    +

    02 Jun 2017 - Asmita Gauchan

    +

    +

    Meet our first recipient of the Code for Nepal Women in Tech Scholarship!

    + +

    “My name is Susan Sunuwar. I am currently pursuing my Bachelor degree in CSIT, 7th semester running. I always had interest in Web Development, so I decided to apply for the scholarship as soon as I saw the notice on facebook. I hope to improve my current knowledge and skill in programming.”

    + +

    Congratulations Susan!
    +We are looking forward to introduce the four other recipients of the scholarship over the next few weeks!

    + +
    +
    + +
    +  (This was originally published by TechRise.) +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/06/here-are-top-5-most-populous-caste-or-ethnic-ktm/index.html b/2017/06/here-are-top-5-most-populous-caste-or-ethnic-ktm/index.html new file mode 100644 index 00000000..33707b5c --- /dev/null +++ b/2017/06/here-are-top-5-most-populous-caste-or-ethnic-ktm/index.html @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The 5 most populous caste or ethnic groups in Kathmandu | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    The 5 most populous caste or ethnic groups in Kathmandu

    +

    05 Jun 2017 - codefornepal

    +

    +

    2: Thamel, Kathmandu

    + +

    The district of Kathmandu’s population was more than 1.7 million people in 2011.

    + +
    +
    + These were the five most populous caste or ethnic groups at that time: +
    + +
      +
    1. + Brahman-Hill (24%) +
    2. +
    3. + Newar (22%) +
    4. +
    5. + Chhetree (20%) +
    6. +
    7. + Tamang (11%) +
    8. +
    9. + Magar (4%) +
    10. +
    + +
    + Check out this data visualization from NepalMap to learn more about caste and ethnic groups in Kathmandu! +
    + +

    +

    + +

    + In 2031, the population of Kathmandu will likely be over 2.7 million. That means there will be over 50% increase in the population of the district. +

    + +

    + What do you think will be the ethnic/caste makeup of the Kathmandu in 2031? Tell us in the comment +

    + +
    +
    +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/06/mentality-and-infrastructure-both-need-to-be-improved-kathmandu-city/index.html b/2017/06/mentality-and-infrastructure-both-need-to-be-improved-kathmandu-city/index.html new file mode 100644 index 00000000..e32d2489 --- /dev/null +++ b/2017/06/mentality-and-infrastructure-both-need-to-be-improved-kathmandu-city/index.html @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mentality and Infrastructure both need to be improved: Kathmandu City | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Mentality and Infrastructure both need to be improved: Kathmandu City

    +

    26 Jun 2017 - Nikesh Balami

    +

    +

    +

    + Like every morning, I was going through my Twitter account. One hand on a cup of tea and another hand on a mobile because Twitter always got some really cool stuff. +

    + +

    + While going through Tweets, I saw this: “Welcome to #Kathmandu SEE graduates !!” by Saugat Gautam and the Tweet quoting +

    + +
    +

    + “काठमाडौँ तयार भएर बस् । फेरी कैयौ एस.इ.इ. पास भएका सपनाहरु डसनामा पोको पर्दै तेरो कंक्रिटको जंगलमा डेरा खोज्न आउदै छन् ।” +

    +
    + +

    + Tweet was saying capital city Kathmandu to be prepared to welcome Secondary Education Examination graduates. A sentiment we hear every year after the result of SEE (previously known as SLC). Kathmandu is the preferred destination of every school graduates, not because students love studying here but because they lack a good education infrastructure in their home districts. Some districts don’t have good schools and teachers, let’s forget about colleges and universities. +

    + +

    + Many people argue that the education system needs to decentralize all over Nepal (from developed to undeveloped) and the aim of new Federal Structure also plans to reduce all these things through sustainable development, but still, there are lots of question raised about the structure and constitution implementation itself. +

    + +

    + Since, my hometown is Kathmandu, I rarely feel proud of it. It’s populated, polluted, busy. Kathmandu is pretty unmanaged in my view. After seeing that Tweet, my interest in knowing more about my district increased. +

    + +

    + I browsed NepalMap, a project of Code for Nepal and searched Kathmandu District to analyze the power and weakness of my home district. +

    + +

    + With 1,744,240 current Population according to National Population and Housing Census 2011, Kathmandu is one of the densely populated districts of Nepal. The reason for this are higher education, employment opportunity, only international airport and the capital city. The projected population of the city by 2031 is 2,729,056. +

    + +

    + +

    +
    + +
    +

    + With $2,764 Per capita income in US dollars, most of the people in Kathmandu speak Nepali language and more importantly, only 7.6% (128,297) of the total population is in poverty. Education is one of the sectors which Kathmandu dominates, 86% of people can Read and Write, whereas 37% choose the Business field for their higher study. Unlike other districts, with 72% Female and 74% Male, the percentage of school attendance is almost same. Which is hard to see in the Terai and Himalayan districts. +

    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +

    + For more interesting facts about your districts, please visit NepalMap: http://nepalmap.org +

    +
    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/06/tech-scholarship/index.html b/2017/06/tech-scholarship/index.html new file mode 100644 index 00000000..df3a5c46 --- /dev/null +++ b/2017/06/tech-scholarship/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interested in learning coding? Apply for Tech Diversity Scholarship by July 5 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Interested in learning coding? Apply for Tech Diversity Scholarship by July 5

    +

    11 Jun 2017 - codefornepal

    +

    +

    We are very excited to announce Tech Diversity Scholarship to award selected recipients with the opportunity to attend a 12-week web development course with a mandatory 3-week capstone project. The programming boot camp is made possible by Nepal Telecom and with the partnership with Insight Workshop.

    + +

    We are looking to sponsor 25 people who are genuinely interested in learning programming or want to build something. Tell us why you want to learn the art of coding, what will you do after the course, or how this course will help you to take your career to the next level. We want to hear your story!

    + +

    Check out the FAQs for more details about the course.

    + +

    If this is interesting to you, please fill the form below to be considered for the scholarship. We are looking for applicants from all backgrounds.

    + +

    If you have any questions regarding the scholarship program, please feel free to contact us contact@codefornepal.org, or leave a comment below. 

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/07/1772/index.html b/2017/07/1772/index.html new file mode 100644 index 00000000..25fbfe81 --- /dev/null +++ b/2017/07/1772/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The six districts in Nepal with the highest female populations in 2031 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    The six districts in Nepal with the highest female populations in 2031

    +

    15 Jul 2017 - Stuti Raut

    +

    +

    Monica Jha

    + +

    According to NepalMap, a data reporting tool by Code for Nepal, six districts to have the highest projected female concentration in Nepal 2031 are:

    + +

    Manang
    +Parsa
    + Mugu
    + Bhaktapur
    + Lalitpur
    + Kathmandu

    + +

    Districts such as Bhaktapur, Lalitpur, and Kathmandu are known for high literacy rate
    +and gender equality, which could make them favorable living options for women.

    + +

    On the other hand, male counterparts in districts such as Manang, Parsa, and Mugu are known to travel gulf countries and India as migrant workers, which could explain for more female concentration left in such districts.

    + +

    Check out this interactive chart to learn more:

    + +

    What do you think? Tell us in the comments.

    + +

    If you are looking for data we used in this post, check out this Google document.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/07/breathefreely-nepal/index.html b/2017/07/breathefreely-nepal/index.html new file mode 100644 index 00000000..8443a7c3 --- /dev/null +++ b/2017/07/breathefreely-nepal/index.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #breathefreely- How polluted is Nepal? Tell us. | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    #breathefreely- How polluted is Nepal? Tell us.

    +

    23 Jul 2017 - Ayesha Shakya

    +

    +

    Looking at old photos of Nepal makes me strangely nostalgic of a past I never saw. Pristine hills and mountains, clear blue skies, acres upon acres of greenery, the list pretty much goes on. While parts of the country still remains intact in its natural beauty, the same cannot be said for our cities. Rampant urban development have turned our major cities into dust bowls, with Kathmandu being impacted the most, and earning itself the most unfortunate nickname: Dustmandu.

    + +

    Nepal’s air quality ranked 177th out of 178 countries according to Yale University’s 2014 Environmental Performance Index (EPI) and it has only been a downward spiral since then. Cities are choking under layers of dust, most prominently since the 2015 earthquake and the reconstruction efforts that followed. The level of pollutants in the atmosphere have been steadily increasing and remain dangerously above the norm.

    + +

    Air pollution Nepal Photo: Gopen Rai

    + +

    But we’re not just talking about air pollution in Kathmandu here: the increase in the level of pollutants have dire consequences in health and environment across Nepal and beyond. It is a worrying thought that more people over time feel the need to wear masks on a daily basis to protect themselves.

    + +

    We’ve seen the scientific numbers behind the air pollution but now we want to hear directly from you on how you have been affected by the degrading air quality. This survey called “How polluted is Nepal?” aims to understand the situation of air pollution, focusing on its long-term impacts, and finding solutions beyond just the numbers.

    + +

    We need to start having an evidence-based conversation surrounding air pollution so that prompt actions can be taken to improve the quality of the air we live in.

    + +

    Please share this survey with your friends via Facebook, Twitter, Instagram or email so we can gather more data. If you want to share photos or videos depicting air pollution in your cities, please use the hashtag #breathefreely when you share them.

    + +

    We want to hear how you have been impacted and what we can do together to make our cities and our country clean again. After all, we all deserve a chance to #breathefreely.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/07/malnutrition-data-nepal/index.html b/2017/07/malnutrition-data-nepal/index.html new file mode 100644 index 00000000..a153e9ec --- /dev/null +++ b/2017/07/malnutrition-data-nepal/index.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Malnutrition data shows we are building Nepal on crumbling foundations | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Malnutrition data shows we are building Nepal on crumbling foundations

    +

    22 Jul 2017 - Priti Oli

    +

    +

    Children are considered to be the foundation that the future of a nation rests upon. Only a proper investment in today’s children will bring us a better tomorrow. 

    + +

    But a quick glance at child nourishment data on www.nepalmap.org shows that 40 % children under the age of five in Nepal are malnourished. Under such scenario, almost half of the children in Nepal do not get a well-balanced meal, which is bound to hamper nation’s development.
    +

    + +

    The six districts namely Humla, Bajhang, Baitadi, Surkhet, Doti, Achham, Okhaldhunga, Terhathum, Panchthar have a staggeringly high percentage of child malnourishment rate, all above 56 percent, with Humla being the district with the highest number of children malnourished. Only 4 out of 10 children in Humla get proper nourishment which is an alarming statistics.

    + +

    Here are six districts with the highest rate of malnourished children under age five in Nepal

    + + + + + + + + + + + + + +
    To find out malnourishment rates for children under age five in your districts, check out this **[interactive map](http://www.nepalmap.org/data/map/?table=CHILD_NOURISHMENT&geo_ids=districtcountry-NP,vdcdistrict-21,districtcountry-NP,districtcountry-NP&primary_geo_id=district-21#column%7Cpercent%20malnourished%2Csumlev%7Cdistrict). **
    + +

    Possible reasons for such distribution could be poverty, lack of fertile land for cultivation: geography, climate being possible causes, unavailability of roads and other means of transport, lack of proper awareness and education, diseases accompanied during childbirth.

    + +

       To reduce the number of malnourished children, here are a few suggestions:

    + +
      +
    • Reliable transportation facility throughout the nation for the distribution of local, nutritious products in cheaper rates.
    • +
    • Education and dissemination of information on nutrition. The government should also train local farmers on efficient agricultural practices such as crop rotation.
    • +
    • Allocation of funding to child nutrition programs.
    • +
    • Expand reach through community health workers
    • +
    • Research and development to increase crop yields.
    • +
    + +

    What do you think? Tell us in the comments.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/07/population-2031-nepal/index.html b/2017/07/population-2031-nepal/index.html new file mode 100644 index 00000000..801da6f2 --- /dev/null +++ b/2017/07/population-2031-nepal/index.html @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The six districts in Nepal with the highest and lowest populations in 2031 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    The six districts in Nepal with the highest and lowest populations in 2031

    +

    04 Jul 2017 - Stuti Raut

    +

    +

    Students in Nepal

    + +

    Have you thought about how many people there will be in your district in 10 or 15 years? Well, now you can find out.

    + +

    These six districts are projected to have the highest population in Nepal in 2031, according to the Central Bureau Statistics of Nepal.

    + +

    Kathmandu
    +Rupandehi
    +Morang
    +Kailali
    +Sunsari
    +Jhapa

    + +

    Kathmandu, the capital, will continue to have the highest number of residents. The other five
    +districts belong to the Terai region.

    + +

    Similarly, the six districts projected to have the lowest population in Nepal in 2031 are:

    + +

    Manang
    +Mustang
    +Rasuwa
    +Dolpa
    +Humla
    +Mugu

    + +

    Geographically, these districts are highly mountainous and often face the challenge of a lack of infrastructure and development.

    + +

    To learn more about projected populations in other districts, check out this interactive map on NepalMap, the web that puts data about Nepal at your fingertips. 

    + +

    Comment below if you are surprised by the projections.

    + +

    To access data used in this post, check out this Google document.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/08/1895/index.html b/2017/08/1895/index.html new file mode 100644 index 00000000..ad92684d --- /dev/null +++ b/2017/08/1895/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In these five districts, almost half the population uses solar energy | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    In these five districts, almost half the population uses solar energy

    +

    22 Aug 2017 - Priti Oli

    +

    +

    With the huge urban-rural disparity in use of electricity, solar based lighting has been beneficial in rural areas where infrastructure for electricity has not yet been developed.The data from nepalmap.org shows that 67% of people use electricity for lighting whereas while 18% people are dependent upon kerosene and 7% rely on solar energy. Browsing through data on nepalmap.org the following five district relies mostly on solar energy for lighting purposes:

    + +

    Mugu

    + +

    Dolpa

    + +

    Rolpa

    + +

    Rukum

    + +

    Jumla

    + +

    Check out this interactive map to see how many people in your district uses solar energy. Based on the data collected by the Government of Nepal, there has been an exponential rise in the number of installation of solar home system in Nepal over the last 15 years. Use of solar in those places where there is no electricity is popular because of portability and low-cost. This has not only helped in lighting households but also has helped to raise living standard in many cases.For instance, students can have more study time on proper light at night, people can have access to tv, radio and hence get informed. The perspective of solar based technology not only serves for lighting but also for thermal generation. Though not hugely practiced, there is a huge prospect of using solar thermal technology for cooking also.

    + +

    As an initiative, Nepal government has introduced more than 40%  subsidiary scheme to promote Solar Thermal System, which could be used as an alternative for firewood for cooking purposes, Institutional cooker or dryer.This can promote solar based cooking in those areas too.Thus, reducing strain on forests and vegetation for firewood.

    + +

    What do you think? Tell us in the comments.

    + +

     

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/08/donate-to-help-flood-victims-in-nepal/index.html b/2017/08/donate-to-help-flood-victims-in-nepal/index.html new file mode 100644 index 00000000..a6da9746 --- /dev/null +++ b/2017/08/donate-to-help-flood-victims-in-nepal/index.html @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Donate to help flood victims in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Donate to help flood victims in Nepal

    +

    14 Aug 2017 - codefornepal

    +

    +

    + + + +
    + +

    Heavy monsoon floods across southern Nepal have killed 91 people, destroyed over 3000 homes, and displaced thousands of Nepalis. At least six million people are affected by the floods in the southern plains of Nepal.

    + +

    Weather forecasters have predicted more rain in some areas. Scores of people reported are still missing, and over 48,000 homes flooded. Electricity and phone service have been cut off, making relief effort harder for volunteers. Nepal Red Cross warned that shortages of drinking water and food could create a humanitarian crisis.

    + +

    We need funds to support victims with relief. Flood survivors immediately need food, safe drinking water, first aid, temporary shelter and toilet and care package for women and children. Please chip in to fund our campaign. We are closely working with volunteers on the ground to bring support directly to the victims.

    + +

    As always, Code for Nepal team will maintain transparency and accountability.
    +Your generous contribution will be appreciated.

    + +

    The amount raised here includes the funds raised via our Facebook page as well.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/08/in-these-districts-in-nepal-9-out-of-10-people-still-use-wood-to-cook-food/index.html b/2017/08/in-these-districts-in-nepal-9-out-of-10-people-still-use-wood-to-cook-food/index.html new file mode 100644 index 00000000..85de2e69 --- /dev/null +++ b/2017/08/in-these-districts-in-nepal-9-out-of-10-people-still-use-wood-to-cook-food/index.html @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In these districts in Nepal, 9 out of 10 people still use wood to cook food | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    In these districts in Nepal, 9 out of 10 people still use wood to cook food

    +

    01 Aug 2017 - Priti Oli

    +

    +

    Firewood has been a traditional source of fuel to cook in Nepal. Though few districts now use LPG gas and electricity, let’s take a look at what the data reveals.

    + +

    According to the data from nepalmap.org, 64% people in Nepal are still dependent upon wood to cook their food. That means out 6 out of every 10 Nepali still uses wood to cook their food.

    + +

    + +

    Here are the districts with the highest percentage of people dependent upon firewood for cooking:

    + +

    Mugu: 99%

    + +

    Rukum 98%

    + +

    Salyan 97%

    + +

    Doti 96%

    + +

    Taplejung 96%

    + +

    And, the following districts use firewood the least:

    + +

    Kathmandu 8%

    + +

    Lalitpur 18%

    + +

    Bhaktapur 25%

    + +

    Kaski 32%

    + +

    Saptari 34%

    + +

    Check out this interactive map to see how people throughout Nepal use wood to cook food.

    + +

    With forests being destroyed for fuel, there is a need for alternative sources of energy for fuel.

    + +

    Some alternatives could be a solar based cooker, bio-briquettes, biogas and so on. Many households have already harnessed benefits from such options and usage has been increasing steadily in various parts of Nepal.

    + +

    Based on solar potential, many districts use solar based lightening however only a few districts use solar based cooking methods.

    + +

    What do you think? Tell us in the comments.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/08/nepalflood/index.html b/2017/08/nepalflood/index.html new file mode 100644 index 00000000..5a447ae2 --- /dev/null +++ b/2017/08/nepalflood/index.html @@ -0,0 +1,456 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Map of reported number of #NepalFlood deaths, houses damaged and cattle loss | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Map of reported number of #NepalFlood deaths, houses damaged and cattle loss

    +

    16 Aug 2017 - codefornepal

    +

    +

    Note: We will update this post every 48-72 hours. 

    + +

    Monsoons, floods, and landslides across southern Nepal have killed at least 123 people (PDF in Nepali), and affected at least six million across the country (approximately one in five Nepalis).

    + +

    Based on the data available on Nepal Disaster Risk Reduction Portal, more than 13,000 private houses are damaged or destroyed, and over 1,600 cattle have been lost.

    + +

    Residents of Province No. 2, where poverty and illiteracy rates are some of the highest in the country, appear to have lost the most.

    + +

    Rauthat, has seen the highest number of deaths due to monsoons and floods, with 15 reported deaths in the district. In Rauthat, one in three people lives in poverty. Muslims, one of the most marginalized groups in the country, make up 20 percent of the population.

    + +

    We are presenting evidence-based analysis because we strongly believe relief and recovery should be guided by data, as we advocated in the aftermath of the tragic earthquakes in Nepal in 2015. Check out this document to see how you can help. Click here to donate

    + +

    We hope everyone involved in the relief and recovery effort will use data to guide their efforts. You can find source data including VDC level data in this Google doc.

    + +

    If you find any errors, we’d be grateful if you could comment below, email us at contact[at]codefornepal.org, tweet us at @codefornepal, or message us on Facebook.

    + +

    These are the districts with the highest number of deaths:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + District + + Total deaths +
    + Rautahat + + 15 +
    + Sunsari + + 8 +
    + Morang + + 7 +
    + Jhapa + + 7 +
    + Parsa + + 5 +
    + Sarlahi + + 5 +
    + Banke + + 5 +
    + +

     

    + +

    These are the districts where the highest number of private houses are fully or partially damaged: 

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + District + + Private Houses Fully or Partially Damaged +
    + Morang + + 2861 +
    + Kailali + + 2550 +
    + Saptari + + 2444 +
    + Jhapa + + 2381 +
    + Udayapur + + 490 +
    + +

     

    + +

    Check out these maps to see what type of foundation, roof, and type of wall houses usually have in these districts. And refer to this map to find out in what percentage of residents have access to safe drinking water in these districts.

    + +

    Here’s an interactive map that shows the reported number of human deaths, cattle losses, and houses damaged by monsoon, flood, and landslide. The map is based on data available as of August 14, 2017, on http://drrportal.gov.np/

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/09/1920/index.html b/2017/09/1920/index.html new file mode 100644 index 00000000..164b27e0 --- /dev/null +++ b/2017/09/1920/index.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which subjects are popular in higher education in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which subjects are popular in higher education in Nepal

    +

    11 Sep 2017 - Priti Oli

    +

    +

    + The demographics data from nepalmap.org shows that 66% of Nepalese can read and write. However, only 39% of Nepalese have passed the primary level. To further break it down, only 10% have passed SLC, 6% have passed intermediate, 3% have graduated and only 1% have acquired a postgraduate degree. +

    + +

    This means only 1 out of 100 Nepali has a Master’s degree and only  3 in 100 have a bachelor’s degree. The data on the study major for higher education reveals that business as a study of the subject is the most popular for higher studies. 25% of those who pursue higher education in Nepal study business. Engineering, Law, Mathematics, Journalism, Agriculture, and computing has the least numbers of students enrolled in.

    + +

    + +

    Photo Credit: Peter Davis/Flickr

    + +

    Furthermore, the data distribution shows a wide discrepancy in the male to female ratio within the classes such as mathematics and statistics, law, engineering manufacturing and construction, computing, agriculture forestry and fishery.

    + +

    In these fields, the ratio is such that for every two males in the classroom there exists only a single female attending the same class. This discrepancy can be ascribed to several reasons. Fewer number of female enrolled in higher education, already existing disproportionate male-to-female ratio in higher educational status, social bias towards the education of female and prevalence of stereotypical mindset on fields of study that are “suitable” for females could be few of possible reasons.

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/09/1940/index.html b/2017/09/1940/index.html new file mode 100644 index 00000000..d4b84471 --- /dev/null +++ b/2017/09/1940/index.html @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kerosene usage by districts in province two of Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Kerosene usage by districts in province two of Nepal

    +

    29 Sep 2017 - Stuti Raut

    +

    +

    Main type of lighting fuel in Nepal. Source: https://nepalmap.org

    + +

    Kerosene is still used as the primary source of lighting fuel in districts such as Saptari, Rautahat, and Sarlahi with usage rate being close to 50% and higher. It is also used for cooking, heating, and other household purposes.

    + +

    WHO reports that breathing large quantities of kerosene vapor and drinking kerosene-based liquids may cause dizziness, headache, and vomiting. Continuous skin exposure to kerosene may result in dermatitis (eczema) and a severe form of lung injury called pneumonitis may occur if liquid kerosene is directly inhaled into the lungs. It also states that exposure to kerosene for a brief amount of time is unlikely to produce any long-term health hazards.

    + +

    A study funded by National Institute of Environmental Health Sciences (NIEHS) and published in 2012 suggested that high black carbon emissions from kerosene contribute to global warming.

    + +

    Electricity seems to be another popular choice of lighting fuel in most of the districts in province two.

    + +

    Sustainable sources of fuels such as biogas and solar are least used across all districts in the province 2.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/09/nepalmap/index.html b/2017/09/nepalmap/index.html new file mode 100644 index 00000000..eeaafce8 --- /dev/null +++ b/2017/09/nepalmap/index.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I’m in grade 10 and I used NepalMap to do my homework | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    I’m in grade 10 and I used NepalMap to do my homework

    +

    24 Sep 2017 - Anshu Adhikari

    +

    +

    + +

    Today internet has been seen as a positive influence on education. Students are encouraged to get information and knowledge from the internet. My school also encourages us to use the internet.

    + +

    Recently, I was in my class. It was a social studies class. Our teacher told us to get information about our districts and submit a data-based report.

    + +

    I thought of NepalMap. NepalMap is a project of Code for Nepal, a nonprofit that works to increase digital literacy and use of open data. I used NepalMap to find more information about my district. Among many things, I learned about population, income per capita, access to water, poverty and literacy rates of my district.

    + +

    When I spoke with my friends, they did not know where to find out data about their district.

    + +

    My friends were very stressed about their social studies class homework because they did not have complete information. They did not know about NepalMap so I gave them an idea what it is and I told them that NepalMap has information broken by categories like demography, human, and development. I also told them that NepalMap contextualizes data and visualizes data so it’s easy to understand the situation of a district.

    + +

    All my friends used NepalMap to search about the information they required.

    + +

    Next day all my classmates had finished their homework and they told me that NepalMap was very helpful. I heard from my classmates recently that they have been using it since then to get various information about different districts of Nepal.

    + +

    Have you used NepalMap to do your homework?

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/09/understanding-the-patterns-business-data-added-in-nepalmap/index.html b/2017/09/understanding-the-patterns-business-data-added-in-nepalmap/index.html new file mode 100644 index 00000000..dbf708d0 --- /dev/null +++ b/2017/09/understanding-the-patterns-business-data-added-in-nepalmap/index.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Understanding the patterns: Business Data added in NepalMap | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Understanding the patterns: Business Data added in NepalMap

    +

    01 Sep 2017 - Nikesh Balami

    +

    +

    As the use and impact of NepalMap increases day by day, we at Code for Nepal are working hard to make sure the users are getting direct benefits by publishing new stories with facts, adding new datasets and teaching people how to use it through events. NepalMap aims to make data on Nepal more accessible and understandable by creating user-friendly data visualizations on key demographic issues.

    + +

    After adding Local Election Data at NepalMap, We recently added the business data so that users can get the whole overview and growth rate of business in Nepal. A year ago, Office of Company Registrar Nepal embarked the OCR Open Government Data (OGD) initiative to increase access to company data and wants to create an ecosystem of OGD to increase the usability of data and realize the benefits. They opened the data regarding company registration from 2002 till 2072 BS for download and reuse in CSV and XML format.

    + +

    Despite huge possibilities of data-based storytelling, only a few had used those sources of data. So, we decided to feature the data in NepalMap.

    + +

    To find the right pattern to present business data at NepalMap, We go through different phases just to make sure the data visualization we create can be easily understandable and meaningful.

    + +

    First Phase: Sorting the whole dataset

    + +

    In the first phase we analysis the whole available datasets and sorted it according to the year wise and districts wise. For this we replace the district code with district name and removed the other unwanted parts, this gave us an opportunity to understand the company data better. All the filtered and sorted datasets are in available openly at GitHub for reuse.

    + +

    Second Phase: Finding the patterns to present the data

    + +

    For this we used 10 years long civil war as our key point, Keeping the date of civil war as a break point, we divided the whole datasets into three parts: before the civil war, during the civil war, and after civil war.

    + +

    + +

    We also present data according to a decade and its business types: Private, Public, Foreign and Non-profit.

    + +

    Third Phase: Presenting the data

    + +

    We used Bar Charts to present both Era and Decade data, although we had some discussion of using Histogram for presentation. Let us know if you think presenting this data in different visualization would be better.

    + +

    + +

    We are also looking for some others sources of data which can be featured at NepalMap, let us know what kinds of datasets would you like to see at NepalMap next.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/11/1952/index.html b/2017/11/1952/index.html new file mode 100644 index 00000000..e5d2b13d --- /dev/null +++ b/2017/11/1952/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The majority of the #breathefreely survey respondents said their health has been affected by the air pollution in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    The majority of the #breathefreely survey respondents said their health has been affected by the air pollution in Nepal

    +

    14 Nov 2017 - Ayesha Shakya

    +

    +

    Air pollution Nepal

    + +

    Winter usually signals the time when mountains start appearing in view from the outskirts of the Valley. But that hasn’t quite been the case these spast several years.

    + +

    This year, Kathmandu did not even have to wait for winter for the air pollution to become hazardous thanks to a combination of smoke from crop residue burning in the Indian plains, and dust from Kathmandu’s earthquake reconstruction and never-ending road-widening project.

    + +

    What is most alarming is the looming health catastrophe triggered by this perpetual pollution. Hospitals report a surge in patients with chronic obstructive pulmonary disease, emphysema and even lung cancer.

    + +

    An online survey by Code For Nepal, #BreatheFreely, sheds light on the negative consequences of breathing this toxic air. Not surprisingly, most of the responses were from Kathmandu Valley.

    + +

    Of the 789 answers collected earlier this year, a staggering 76% stated that their health has been affected by the air pollution. Most cited were breathing problems, chest pain and eye infection.

    + +

    ‘I can’t walk or ride my motorbike freely. I have to cover my whole body, from head to toe, just to block out the dust. If I don’t use a mask, I’ll have to suffer from the ensuing tonsilitis and dust allergy,’ wrote one respondent.

    + +

    The situation is even more difficult for people with existing respiratory problems: ‘I am an asthma patient and also have an allergy to dust and cold. So I have to think twice before I go out for a walk or even ride a scooter. Because of the pollution I have increased my meds to twice a day.’

    + +

    One respondent even stated that the primary motive behind his decision to study abroad was to get away from Kathmandu’s worsening pollution. Others noted that it is not only physical health that is impacted: ‘The pollution increases my stress level and I become irritated very easily when travelling between home and work.’

    + +

    Nearly 64% of respondents stated that they used masks on a daily basis. While air pollution is a round-the-clock problem, most said the period between 12-4pm was when the air quality was worst, probably because that is when they were out and about. Data collected from air monitoring stations by the group, Drishti, showed daily peaks in PM2.5 (the most harmful particles less than 2.5 microns in diameter) in the mornings and evenings in winter at 10 measurement stations in Kathmandu Valley.

    + +

    Drishti’s data also show that PM2.5 levels were highest from January to March 2016, reinforcing how inversion during winter months creates a dust-bowl effect, increasing the concentration of pollutants. The levels of fine particles were significantly higher between 8-11am.

    + +

    On 1 January 2017, PM 2.5 levels saw a high of 170.28µg/m³, much higher than the universally-accepted level of 15µg/m³. Between 7am-11am, PM 2.5 stayed consistently above 104µg/m³. With 10% more vehicles on the roads than last year, pollution will be even worse this winter.

    + +

    One respondent pointed out: ‘There isn’t a single hour when Kathmandu air is clean, except while it’s raining.’

    + +

     

    + +

    Survey data: Google Doc

    + +

    Note: A similar version of this article was first published in Nepali Times.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/12/one-thing-to-do-and-six-things-to-know-before-saying-goodbye-to-2017/index.html b/2017/12/one-thing-to-do-and-six-things-to-know-before-saying-goodbye-to-2017/index.html new file mode 100644 index 00000000..4e48a5b3 --- /dev/null +++ b/2017/12/one-thing-to-do-and-six-things-to-know-before-saying-goodbye-to-2017/index.html @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + One thing to do and six things to know before saying goodbye to 2017 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    One thing to do and six things to know before saying goodbye to 2017

    +

    20 Dec 2017 - codefornepal

    +

    +

    A view from Nagarkot, Nepal

    + +

    We hope you had a great year and are enjoying the holiday season. As 2017 comes to an end, we wanted to take this opportunity to thank you for supporting Code for Nepal, seek end of year donations, and share updates on our work over the past year.

    + +

    In 2017, we undertook the following initiatives:  

    + +

    Diversity and Women in Tech Scholarship: This year we launched two scholarships programs. One focuses on providing scholarships to young women to learn coding. Meet one of the recipients. Another program provided scholarships to a diverse group of young women and men. Check out a photo of the recipients.

    + +

    Digital Nepal Conference: Early in 2017, we organized the first-ever digital conference in Janakpur to empower young women and men. Code for Nepal founders used gifts from their wedding to organize the conference. Over 100 participants and speakers spent a day interacting and sharing information. We also supported a digital literacy project in Janakpur.

    + +

    Honored by Forbes: We are honored and humbled to be named in Forbes 30 Under 30’s list of social entrepreneurs in Asia.

    + +

    Breathe Freely project: Nepal has one highest levels of air pollution in the world. To start having an evidence-based conversation surrounding air pollution so that action can be taken, we launched a survey and published the results on Nepali Times.
    ****

    + +

    NepalMap:** In 2016, we launched https://nepalmap.org, to put Nepal’s data at your fingertips! People have visited NepalMap more than 200,000 times. In 2017, we added many new datasets such as natural disasters, foreign aid, and health indicators. Check it out if you haven’t yet.
    **

    + +

    Supporting Flood Survivors in Nepal: At least six million people were affected by the floods in the southern plains of Nepal. We raised funds to help more than 600 families with initial relief.

    + +

    All of this would not have been possible without your help! To help us increase our impact, we ask that you consider making a tax-deductible donation to Code for Nepal, supporting our work to increase digital literacy and the use of open data in Nepal. We are an all-volunteer organization and every dollar will go a long way!

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2017/12/top-3-kata-nepali-short-videos-will-be-screened-in-nepa-america-international-film-festival/index.html b/2017/12/top-3-kata-nepali-short-videos-will-be-screened-in-nepa-america-international-film-festival/index.html new file mode 100644 index 00000000..9a37888d --- /dev/null +++ b/2017/12/top-3-kata-nepali-short-videos-will-be-screened-in-nepa-america-international-film-festival/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Top 3 “Kata Nepali?” short videos will be screened in Nepal- America International Film Festival | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Top 3 “Kata Nepali?” short videos will be screened in Nepal- America International Film Festival

    +

    15 Dec 2017 - Roshan Ghimire

    +

    +

    Code for Nepal and Nepal American Film Society proudly announce the partnership for the short video competition Kata Nepali?”  titled where is Nepal/Nepali heading?  The winning videos of the competition will be screened at the Nepal-America International Film Festival in Washington DC area from 18- May to 20 May, organized by Maryland based non-profit Nepal American Film Society.

    + +

    Code for Nepal is currently accepting short video submissions for the competition.The participants can submit their videos free of cost. The videos can be in English, Nepali, Bhojpuri, Maithili, or Tamang and should be no longer than 180 seconds. However, with the possibility of being screened internationally, participants are encouraged to include English subtitles for videos.

    + +

    In a nation full of diverse cultures, perspectives and experiences, this competition seeks to discover what vision many Nepalis hold today for the future of Nepal, while promoting the use of their digital resources such as cameras, cell phones, or digital platforms such as Facebook.

    + +

    “The film represents the most powerful medium for portraying diverse stories of various communities around the world. This is a unique opportunity to understand Nepal’s cultural diversity and connect with each other,” says Purna Singh Baraili, Director for Nepal America International Film Festival. “ I am hopeful that Nepal America International Film Festival will work as a platform to encourage Nepali youth to explore their hopes, challenges, and dreams about Nepal through this competition.”

    + +

    + +

     

    + +

    “The selection of videos will be based on creativity and clarity of the message,” says Roshan Ghimire, Director of Operations and Partnerships at Code for Nepal. “ I am hopeful that this opportunity to showcase short video at international film festival will encourage storytellers and film makers to bring forward  diverse and changing voices of Nepali society to the international audiences.”

    + +

    The last day for submission is January 10, 2018. All participants must fill the submission form available at https://codefornepal.org/en/katanepali/ as well as upload their submissions on YouTube, following the directions available at the given link.

    + +

    Winners will be announced on February 14, 2018, and the first prize winner will receive Rs. 20,000, with certificates and cash prizes for second and third places as well.   

    + +

    Code for Nepal is a 501(c)(3) nonprofit organization registered in the United States. Code for Nepal works to increase digital literacy and the use of open data in Nepal.

    + +

    Nepal American Film Society is a 501(c) (3) compliant non-profit organization based in the United States whose mission is to bridge the world of arts and culture through cinema. The Film Society focuses on bridging the Nepali and American culture, and community through cinema by partnering with film, arts, and other development organizations.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/01/nepal-inclusive-economy/index.html b/2018/01/nepal-inclusive-economy/index.html new file mode 100644 index 00000000..99f860a2 --- /dev/null +++ b/2018/01/nepal-inclusive-economy/index.html @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nepal is one of the most inclusive emerging and developing Asian economies | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Nepal is one of the most inclusive emerging and developing Asian economies

    +

    28 Jan 2018 - codefornepal

    +

    +

    + +

    Nepal is one of the most inclusive emerging and developing Asian economies, according to the World Economic Forum’s Inclusive Development Index 2018.

    + +
    +

    “The Inclusive Development Index (IDI) is an annual assessment of 103 countries’ economic performance that measures how countries perform on eleven dimensions of economic progress in addition to GDP. It has 3 pillars; growth and development; inclusion and; intergenerational equity – sustainable stewardship of natural and financial resources.”

    +
    + +

    Here’s the list of 10 most inclusive emerging and developing Asia economies. 

    + +

    Inclusive economy

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/01/province-poverty-nepal/index.html b/2018/01/province-poverty-nepal/index.html new file mode 100644 index 00000000..2d8740b1 --- /dev/null +++ b/2018/01/province-poverty-nepal/index.html @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which province in Nepal has the highest number of poor people? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which province in Nepal has the highest number of poor people?

    +

    21 Jan 2018 - codefornepal

    +

    +

    View of Sunset in Janakpur, a city in Province 2

    + +

    There are seven newly formed provinces in Nepal.

    + +

    Among them, Province 2 has the highest number of multidimensionally poor Nepalis. More than 2.5 million people are multidimensionally poor in Province 2, representing 35% of all poor Nepalis according to the Multidimensional Poverty Index (MPI) released by the Nepali Government.

    + + + +

    Unlike traditional poverty rates which look at monetary indicators, the Multidimensional Poverty Index looks at ten indicators, including child mortality, years of schooling, school attendance, nutrition, cooking fuel, improved sanitation, improved drinking water, electricity, asset ownership and flooring and roofing. If a Nepali is deprived in at least three of these areas, then she/he is considered poor.

    + +

    Nepal’s Multidimensional Poverty Index is aligned with the Sustainable Development Goals (SDGs) of the United Nations. Overall, 28.6% of Nepal’s population is multidimensionally poor.

    + +

    According to the report: “Provinces 6 and 2 have the highest rate of multidimensional poverty – with every second person being multidimensionally poor (50%) – followed by Provinces 5 and 7 (approximately 30%).”

    + +

    Look at this chart to see each province’s incidence of multidimensional poverty.

    + +

    Province 2 is the second largest province in the country. Located in southeastern Nepal, this province includes Bara, Dhanusha, Mahottari, Parsa, Rauthat, Saptari, Sarlahi and Siraha.

    + +

    Province 6 is the smallest province in Nepal and includes the districts of Dailekh, Dolpa, Humla, Jajarkot, Jumla, Kalikot Mugu, Rukum (western part) Salyan, Surkhet.

    + +

    Here’s an interactive map visualizing the distribution of multidimensional poverty in Nepal. 

    + +

    What do you think? Tell us in the comments.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/02/mobiles-toilets-nepal/index.html b/2018/02/mobiles-toilets-nepal/index.html new file mode 100644 index 00000000..7c7c6cb0 --- /dev/null +++ b/2018/02/mobiles-toilets-nepal/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + More people in Nepal have access to mobile phones than toilets | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    More people in Nepal have access to mobile phones than toilets

    +

    11 Feb 2018 - codefornepal

    +

    +

    Aasu Ram explains her toilet mural, Ganespur Community of Bastipur NEWAH WASH project Siraha, Udayapur District, Nepal. Photo by Jim Holmes for AusAID. Aasu Ram explains her toilet mural in Siraha, Udayapur District, Nepal. Photo by Jim Holmes for AusAID.

    + +

    In 2015, about 50% of Nepalis had access to toilets or improved sanitation. In the same year, about 100% of Nepalis had mobile cellular subscriptions.

    + +

    Both mobiles and toilets are important. But historical data shows that Nepal needs to do more to increase access to toilets and improved sanitation.

    + +

    In 2005, just ten years before, almost 30 percent or almost one in three Nepalis had access to toilets, while less than 1 percent of people in Nepal had access to mobile phones. Since then, mobile subscriptions have skyrocketed.

    + +

    Unfortunately, that’s not the case with toilets.  

    + +

    Look at these charts below.

    + +

    What do you think Nepal can do to make sure every family has a toilet? Share your thoughts in the comments!

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/02/nepal-broadband/index.html b/2018/02/nepal-broadband/index.html new file mode 100644 index 00000000..bccb8680 --- /dev/null +++ b/2018/02/nepal-broadband/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nepal is the least expensive country for broadband in South Asia | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Nepal is the least expensive country for broadband in South Asia

    +

    20 Feb 2018 - codefornepal

    +

    +

    Photo by Rob Tinworth

    + +

    Photo by Rob Tinworth

    + +

    Nepal provides the cheapest broadband in South Asia, with an average cost of USD 19.16 per month.

    + +

    Access to the internet is considered a basic necessity in the 21st century. When people have internet they can access information, looks for jobs or access health or financial information to make better decisions about their lives.

    + +

    A new study that looked at the average cost of broadband in 196 countries found that Iran provides the cheapest broadband.

    + +

    Based on the same study, Nepal offers the cheapest broadband in South Asia.

    + +

    What do you think? Tell us in the comments!

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/02/nepal-family-money/index.html b/2018/02/nepal-family-money/index.html new file mode 100644 index 00000000..4fcffc3b --- /dev/null +++ b/2018/02/nepal-family-money/index.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How does a typical family in Nepal spend its money? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    How does a typical family in Nepal spend its money?

    +

    25 Feb 2018 - codefornepal

    +

    +

    Do you wonder how your family or other families spend money?

    + +

    Of course, every family is unique but thanks to the Annual Household Survey published by the Nepal Government, we know how an average Nepali family spends its money.

    + +

    The average annual household consumption in 2015/16 was Rs, 3,22,730 or approximately USD 3,111.12. (Exchange rate: 1 Nepalese Rupee equals 0.0096 US Dollar)

    + +

    More than half of household consumption (53.8%) went toward food, while 12.9% was spent on rent, 4% on education, and 3.9% on alcohol and tobacco. 

    + +

    Explore the chart below to see how Nepalis spend their money.

    + +

    Compared to 2014/15, the average household’s consumption has increased by Rs 30,418. However, inequality in Nepal is widening: “The annual consumption of the richest 20% households is Rs. 6,13,725 which is 4.2 times higher than that of the poorest 20% households.” 

    + +

    What do you think? Share your thoughts in the comments!

    + +

    (If you are looking for an embed code for this chart, check out this Google doc.)

    + +

    Data source: Nepal Gov (PDF)

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/03/average-size-family-nepal/index.html b/2018/03/average-size-family-nepal/index.html new file mode 100644 index 00000000..02bb1f7d --- /dev/null +++ b/2018/03/average-size-family-nepal/index.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What is the average size of a family in Nepal? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    What is the average size of a family in Nepal?

    +

    25 Mar 2018 - codefornepal

    +

    +

    Family in Jajarkot District

    + +

    Family in Jajarkot District. Credit:lepetitNicolas

    + +

     

    + +

    Families are important to all of us. Some of us come from big families. Some of us come from smaller families.

    + +

    Are you curious what the average size of a family in Nepal is?

    + +

    According to the latest Annual Household survey (PDF) by the Government of Nepal, it’s 4.6 people.

    + +

    Families in rural area are slightly bigger on average (4.8 people) than families in urban areas (4.2 people).

    + +

    What do you think? Are you surprised? Tell us in the comments.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/03/women-nepal-2018/index.html b/2018/03/women-nepal-2018/index.html new file mode 100644 index 00000000..4c9a669e --- /dev/null +++ b/2018/03/women-nepal-2018/index.html @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 data visualizations show the status of women in Nepal in 2018 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    6 data visualizations show the status of women in Nepal in 2018

    +

    07 Mar 2018 - codefornepal

    +

    +

    Students in Nepal

    + +

    Women make up more than half the population of Nepal today and they will continue to be the majority of Nepal in 2030 too!

    + +

    To mark the 2018 International Women’s Day,  here are six data visualizations to show the status of women in Nepal.

    + +

     

    + +

    ###

    + +

    The proportion of employed women has decreased

    + +

    The proportion of women who were employed was only 68% in 2016 compared to 83% in 2006. 

    + +

    “Among employed respondents, women are almost three times more likely than men not to be paid (52% versus 16%),” according to the demographic and health survey (PDF) by the Government of Nepal.

    + +

    Spousal violence has decreased

    + +

    One in four women in Nepal experienced spousal violence in 2016. While that number is very high, it has declined since 2011 when 32% of women or one in three experienced spousal violence.

    + +

    Spousal violence in the Terai region is high compared to other regions. One in three women in the Terai reported spousal violence.  Women in Province 2 (37%) are most likely to experience spousal physical, sexual, or emotional violence, and those in Province 4 (16%) least likely to do so.

    + +

    Explore the map to see the level of spousal violence by Provinces in Nepal.

    + +

    More women agree that wife beating is justified 

    + +

    More than one in four women agree that wife beating is justified under a specific circumstance.

    + +

    “The proportion of women who consider wife beating justifiable under specific circumstances increased from 23% in 2006 to 29% in 2016. The proportion among men increased marginally, from 21% to 23%.

    + +

    Women living in “Province 2 (33%) and Province 7 (34%) are most likely to have attitudes justifying wife beating under any one specific circumstance.”

    + +

    Explore the map below to see the attitude of women towards wife beating in Provinces of Nepal

    + +

    Proportion of seats held by women in national parliament of Nepal remains unchanged

    + +

    In 2017, proportion of seats held by women in national parliament of Nepal was about 30% like that of in 2016, 2015 and 2014. In 2013, proportion of seats held by women in Nepal’s national parliament was 33.2%.

    + +

    More women are head of households

    + +

    Almost one out of every three households in Nepal is headed by a female. Evidence strongly suggests that this trend is a result of migration as most migrants are male and family heads.

    + +

    Women’s literacy rate has increased

    + +

    In 1991, only 17% of Nepali women (15 years or older) were literate. In 2015, almost 57% of women were literate. 

    + +

    Education is the most important way to empower women. In last quarter century, women’s literacy rate has increased almost three times. There is still a long way to go when all women of Nepal will be literate. 

    + +

    What do you think about the status of women in Nepal? Tell us in the comments below.

    + +

     

    + +

    (If you would like to embed these dataviz_,  check out this Google doc for the embed code.)_

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/04/computational-linguistic/index.html b/2018/04/computational-linguistic/index.html new file mode 100644 index 00000000..a3c47e31 --- /dev/null +++ b/2018/04/computational-linguistic/index.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Supporting computational linguistic competition in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Supporting computational linguistic competition in Nepal

    +

    21 Apr 2018 - codefornepal

    +

    +

    Credit: Himalayan Computational Linguistic Olympiad Nepal.

    + +

    Recently, Code for Nepal supported the Himalayan Computational Linguistic Olympiad Nepal (HLON), which is simply a computational linguistic competition. The competition happened in March in Kathmandu.

    + +

    8 teams from various schools and colleges participated in the competition. About 80 people including the participants, volunteers, organizers, sponsors, and observers attended the event.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/04/province-2-nepal/index.html b/2018/04/province-2-nepal/index.html new file mode 100644 index 00000000..112b6081 --- /dev/null +++ b/2018/04/province-2-nepal/index.html @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Province 2 of Nepal in maps and charts | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Province 2 of Nepal in maps and charts

    +

    07 Apr 2018 - codefornepal

    +

    +

    Editor’s note: This is blog series where Code for Nepal will publish data and charts about all of the Provinces of Nepal.

    + +
    + Aasu Ram explains her toilet mural, Ganespur Community of Bastipur NEWAH WASH project Siraha, Udayapur District, Nepal. Photo by Jim Holmes for AusAID. + +

    + Aasu Ram explains her toilet mural, Ganespur Community of Bastipur NEWAH WASH project Siraha, Udayapur District, Nepal. Photo by Jim Holmes for AusAID. +

    +
    + +

    Province 2 has the highest number of multidimensionally poor Nepalis.

    + +

    More than 2.5 million people are multidimensionally poor in Province 2, representing 35% of all poor Nepalis according to the Multidimensional Poverty Index (MPI) released by the Nepali Government.

    + +

    Unlike traditional poverty rates which look at monetary indicators, the Multidimensional Poverty Index looks at ten indicators, including child mortality, years of schooling, school attendance, nutrition, cooking fuel, improved sanitation, improved drinking water, electricity, asset ownership and flooring and roofing. If a Nepali is deprived in at least three of these areas, then she/he is considered poor.

    + +

    Nepal’s Multidimensional Poverty Index is aligned with the Sustainable Development Goals (SDGs) of the United Nations. Overall, 28.6% of Nepal’s population is multidimensionally poor.

    + +

    According to the report: “Provinces 6 and 2 have the highest rate of multidimensional poverty – with every second person being multidimensionally poor (50%) – followed by Provinces 5 and 7 (approximately 30%).”

    + +

     

    + +

    Province 2 has the highest percentage of illiterate men and women in Nepal.

    + +

    One-third of men aged 6 or over in Province 2 haven’t received any education.

    + +

    More than half of women aged 6 or over in Province 2 haven’t received any education.  

    + +

    Spousal violence is the highest in Province 2.

    + +

    One in three women in the Terai reported spousal violence.  Women in Province 2 (37%) are most likely to experience spousal physical, sexual, or emotional violence in Nepal.

    + +

    Women living in “Province 2 (33%) and Province 7 (34%) are most likely to have attitudes justifying wife beating under any one specific circumstance.”

    + +

     

    + +

    What do you think? Are you surprised? What can be done to improve the status of province 2?

    + +

    Sources used in this blog post: Multidimensional Poverty Index (MPI) and Demographic and Health Survey 2016, Nepal

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/04/smart-cities-nepal/index.html b/2018/04/smart-cities-nepal/index.html new file mode 100644 index 00000000..d115e19f --- /dev/null +++ b/2018/04/smart-cities-nepal/index.html @@ -0,0 +1,415 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Are you a developer? Sign up for workshops to learn how to help build smarter cities in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Are you a developer? Sign up for workshops to learn how to help build smarter cities in Nepal

    +

    24 Apr 2018 - codefornepal

    +

    +

    A view from Nagarkot, NepalAsia-Pacific Peace and Development Service Alliance (APPDSA), Global Peace Foundation, Global Young Leaders Academy are going to host a forum on “Smart and Green Cities Equipping Youth Social Enterprise to Achieve Sustainable Development Goals” at Bougainvilla Events, Tripureshwor (Nearby Avenues TV Plaza), on May 14 and 15, 2018. 

    + +

    At the event, in partnership with Code for Nepal, a group of international technical experts from IBM will deliver their extensive training for free of costs to put a light on what ICT means and how it can be utilized in making of smart and green city. The workshop is supported by Artificial Intelligence for Development (AID) and AI Developers Nepal (AIDevNepal) as a Knowledge Partners. During the workshop participants will learn how to maximize their coding skills and get a hands-on technical training form the experts. The participants will get equipped with blended learning formats and broaden their horizons by introducing IT into their current profession or learning environment.

    + +

    Read more about the workshops below and at the end of this page sign up for the free workshops. By May 10, we will let you know if you have been selected to attend these workshops.

    + +

    Who should attend these workshops: Developers

    + +

    Features Training Topics:
    +– IBM Cloud
    +– Quantum Computing
    +– Artificial Intelligence
    +– Blockchain
    +– Internet of Things (IoT)
    +– Watson Visual Recognition

    + +

    WORKSHOP – THEME RELATED TO DISASTER RECOVERY

    + +

    Code Pattern – 1: Analyze an image and send status alert

    + + + + + + + + +
    **Brief about patternHow this will impact the society**
    + +

    Industrial and high-tech maintenance companies often photograph their sites for potential hazards or emergencies and then inform the appropriate person who can take action to resolve the issue. A leak, fire, or malfunction can spell disaster for a company, resulting in dangerous situations for employees, downtime, public relation setbacks, and financial losses.

    + +

    These companies have been leaders in using remote devices–phones, mounted cams, drones–to send images of various sites and equipment to be monitored for any malfunctions. But what if you could automatically analyze those images and send an alert about the location or potential emergency situation?

    + +

    If you’re a developer working for a company that relies on-site images, you can now build an application that analyzes an image and sends an alert automatically. In this code pattern, you’ll use IBM Cloud Functions to analyze an image and send it to the Watson IoT Platform. The image will be assigned a score, and that score will be evaluated to trigger any necessary alerts to reach authorities through the best available communication channel (for example, email, text, or push notifications).

    + +

    You have the option to develop a standalone application that can be easily updated or modified to work from within a smart device, or run it on a browser on your laptop or phone.In the pattern use case, you’ll learn how to send an image for processing that detects a fire. (You can also use this same app for maintenance alerts or other emergency alert detections.) The fire is identified by the Watson Visual Recognition service, and the Node-RED app will subsequently notify the appropriate resources.

    + +

    There are multiple ways to design this process, and you can modify the pattern to extend it to other real-world use cases, sending alerts to other designated recipients and creating additional designated channels for alert notifications.

    + +

    You’ll create an app based on the following flow:

    + +
  • + The application takes an image from a device or uploads it from a local image folder to an IBM Cloudant NoSQL database. +
  • +
  • + The Cloudant database, in turn, receives the binary data and triggers an action on IBM Cloud Functions. +
  • +
  • + IBM Cloud Functions Composer performs the Visual Recognition analysis and receives a response in JSON format. +
  • +
  • + The response is sent to the IoT Platform and registers itself as a device receiving the analyzed image. +
  • +
  • + A Node-RED flow continues to read these events from the device on the IoT Platform and triggers alerts based on the image’s features. +
  • + +

    More details on Code Pattern here: https://developer.ibm.com/code/patterns/analyze-an-image-and-send-a-status-alert/

    + +

    Expected Outcome: What developers will learn

    + +

    After completing workshop on this Code Pattern, developers will learn how to

    + +
      +
    1. Upload an image to IBM Cloudant NoSQL database from local device image folder
    2. +
    3. Trigger an action on IBM Cloud Functions (Serverless)
    4. +
    5. Register a device and send data to IoTF Platform
    6. +
    7. Analyze image using Watson Visual Recognition
    8. +
    + +

    Pre-reqs for developers:

    + + + +

     

    + +

    Code Pattern – 2: Deploy a Core ML model with Watson Visual Recognition

    + + + + + + + + +
    **Brief about patternHow this will impact the society**
    + +

    Imagine that you’re a technician for an aircraft company and you want to identify one of the thousands of parts in front of you. Perhaps you don’t even have internet connectivity__. (__Most of the times during disaster recovery we won’t have access to Internet connectivity__) So how to do it? Where do you start? If only there was an app for that. Well, now you can build one!

    + +

    Most visual recognition offerings rely on API calls to be made to a server over HTTP. With Core ML, you can deploy a trained model with your app. Using Watson Visual Recognition, you can train a model without any code; simply upload your images with the Watson Studio tool and deploy a trained Core ML model to your iOS application.

    + +

    In this code pattern, you’ll train a custom model. With just a few clicks, you can test and export that model to be used in your iOS application. The pattern includes an example dataset to help you build an application that can detect different types of cables (that is, HDMI and USB), but you can also use your own data.

    + +

    More details on Code Pattern here: https://developer.ibm.com/code/patterns/deploy-a-core-ml-model-with-watson-visual-recognition/

    + +

    Expected Outcome: What developers will learn

    + +

    When you have completed this code pattern, you should know how to:

    + +
  • + Create a dataset with Watson Studio +
  • +
  • + Train a Watson Visual Recognition classifier based on the dataset +
  • +
  • + Deploy the classifier as a Core ML model to an iOS application +
  • +
  • + Use the Watson Swift SDK to download, manage, and execute the trained model +
  • + +

    Pre-reqs for developers:

    + + + +

     

    + +

    The workshop is the part of Asia Pacific Peace and Development Service Alliance (APPDSA) 2 Day Forum organized by Global Peace Foundation Nepal. Please find the more information of the whole event from here.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/05/postcard-janakpur-project-update/index.html b/2018/05/postcard-janakpur-project-update/index.html new file mode 100644 index 00000000..13fcd512 --- /dev/null +++ b/2018/05/postcard-janakpur-project-update/index.html @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Postcard from Janakpur- A Project Update! | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Postcard from Janakpur- A Project Update!

    +

    31 May 2018 - Roshan Ghimire

    +

    +

    + +

      In December 2017,  Amita Sharma, a Teach for Nepal fellow based in Janakpur, posted an appeal on Facebook asking to raise funds to buy a projector to enable digital learning for her students. She wrote, “While computers and laptops for all is a far-fetched dream because of space constraints, we are aiming at being able to use projectors as a medium through which learning in the class is not restricted to just whiteboards and markers.”

    + +

    Amita ’s willingness to bridge digital gap by introducing digital tools in classrooms is commendable. Also, her interest in digital education aligned with Code for Nepal’s mission to promote digital literacy in Nepal. We supported her campaign financially.

    + +

    A few days ago, Amita sent us a note and attached some photos of her happy students. Students are thrilled to have a projector in class. Learning has never been this exciting for them. We are hopeful this small effort to bring digital tools to classroom learning will have a significant impact one day. Today, we are just pleased to share some happy and bright faces with you all.

    + +

    Also, Amita recently penned an opinion on “Digital Classroom & Education,” and we are sharing her piece here.

    + +

     

    + +

    + Digital Classroom & Education +

    + +

    Who would have thought, just ten years ago, that the nurses you see in hospital would log your notes on tablets, or that staff in restaurants would be taking orders on smartphones? The overwhelming majority of workers in this country, if they studied ICT, would have worked on clunky desktop computers at school to develop their skills.

    + +

    Technology has the power to transform how people learn – but walk into some classrooms and you could be forgiven for thinking you were entering a time warp.

    + +

    There will probably be a whiteboard instead of the traditional blackboard, and the children may be using laptops or tablets, but plenty of textbooks, pens and note copies are still likely.

    + +

    And perhaps most strikingly, all desks will face forwards, with the teacher at the front.

    + +

    And so it stands to reason that the children we teach will themselves engage with unforeseen technologies in their futures. So is there any point in filling their classrooms with equipment that could belong in antiquity by the time they reach their twenties?

    + +

    In short, yes. Quality technological provision is a huge challenge with the funding squeezes upon schools, but evidence from my classroom strongly suggests that it is an investment worth making.

    + +

    Digital Classroom Project, a digital initiative undertaken under Teach For Nepal with the vision to provide a technology – enabled classroom for the students of Shree Secondary School, Mithileswar Mauwahi was initiated a couple of months back. Few generous souls helped me to create a class with a laptop, projector and a screen so enormous that it could illuminate the street. I am very grateful to Code for Nepal and Diwaker Jha along with his friends from Finland for the generous contribution to fulfill the need of projector in our classroom. Our brief was to explore how the equipment could impact upon students from an incredibly deprived background. Year 10–12 were targeted children. A great year group for trying a new way of teaching, yes?

    + +

    Children from deprived backgrounds are more likely to have communication and language issues from entry into school. Being able to record voice, images and annotations on apps, and review them, often provides my students with something they’re not proud of at first. But by collaborating with each other, seeking technical language and competing to show what they know, every students in my class is always keen for their work to be shared on the big screen. It gives a new impetus to learn and promotes confidence in the quality of their work through this medium.

    + +

    The Digital Classroom also had a disproportionality positive effect on students who needed extra support and motivation. Digital Classroom increased flexibility in me, gave me the capacity to differentiate learning and made lessons far more inclusive.

    + +

    Yes, technology is an expensive thing to explain to stakeholders. Yes, it takes a huge investment of time for classroom teachers. And yes, it can be an immense headache when trying to deploy new apps and programmes. But the confidence, ability and growth which I’ve seen in my students over the past couple of months tells me that every penny and minute would have been wisely invested.

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/05/remittances-to-nepal/index.html b/2018/05/remittances-to-nepal/index.html new file mode 100644 index 00000000..472f0824 --- /dev/null +++ b/2018/05/remittances-to-nepal/index.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remittances to Nepal increased more than 3,000 percent in 20 years | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Remittances to Nepal increased more than 3,000 percent in 20 years

    +

    13 May 2018 - codefornepal

    +

    +

    Farm in southern Nepal

    + +

    In 1996, less than 1 percent of Nepal’s GDP came from remittances.

    + +

    Twenty years later, in 2016, remittances had increased by more than 3,000 percent and made up more than 31 percent of the country’s GDP — the highest in South Asia.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/06/1464/index.html b/2018/06/1464/index.html new file mode 100644 index 00000000..1ba595d8 --- /dev/null +++ b/2018/06/1464/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 charts that show Nepal has made progress | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    4 charts that show Nepal has made progress

    +

    02 Jun 2018 - codefornepal

    +

    +

    Subarna Tandukar

    + +

    Photo: Subarna Tandukar

    + +

    When a country is struggling on a daily basis to meet its basic needs, it’s hard to believe that over the last few decades, Nepal has made progress. Here are four charts that show how Nepal progressed. Check it out and share with others!

    + +

    In 1960, the life expectancy of an average Nepali was just a little more than 35 years. In 2015, it’s almost 70 years. Life expectancy has doubled in the last 50+ years in Nepal! 

    + +

    In 2005, only about 1 in 100 Nepalis had a subscription to a cellular mobile. In 2015, just 10 years later later, all most all Nepalis have a cellular mobile phone.

    + +

    In 1960, 32 out of every 100 babies born died before they turned five. In 2015, three out of every 100 babies died before they turned five. The infant mortality rate has drastically decreased. There’s still a lot of progress to make! 

    + +

    We know youth are the future of a country. In 1981, the youth literacy rate was about 30 percent. In 2015, the youth literacy rate was 90 percent. That means 9 in 10 Nepalis between ages 15 and 24 can read and write! That’s progress!

    + +

    To be clear, Nepal is still one of the poorest countries in the world. There are a lot of challenges in Nepal. These charts show that Nepal has the potential to do better!

    + +

    What do you think? Tell us in the comments.

    + +

     

    + +

    **This was originally published in Sept. 2016, and recently updated in June 2018.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/06/2156/index.html b/2018/06/2156/index.html new file mode 100644 index 00000000..00b0151a --- /dev/null +++ b/2018/06/2156/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which districts in Nepal produce the most milk? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which districts in Nepal produce the most milk?

    +

    10 Jun 2018 - codefornepal

    +

    +

    + +

    Do you use milk or yogurt? Have you thought about where that milk comes from?

    + +

    Nepal produced 1,854,249 metrics tons (1,854,249,000 liters) of milk in 2016, according to the Ministry of Agriculture.

    + +

    Curious about which districts produced the most milk? Here are the top 10 districts. 

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + District + + Total Milk (Metric tons) +
    + Kavrepalanchok + + 83509 +
    + Morang + + 73207 +
    + Kailali + + 64582 +
    + Jhapa + + 62124 +
    + Syangja + + 56080 +
    + Nawalparasi + + 52047 +
    + Kanchanpur + + 49022 +
    + Chitwan + + 45177 +
    + Makwanpur + + 43214 +
    + Sunsari + + 42858 +
    + +

     

    + + + + + + + + +
    To learn how much milk your district produced, check out our [interactive map on NepalMap](https://nepalmap.org/data/map/?table=AGRICULTURE_MILK&geo_ids=districtcountry-NP&primary_geo_id=country-NP#column%7CBUFFALO_MILK%2Csumlev%7Cdistrict).
    + +

    Data source:

    + +

    Ministry of Agriculture (PDF)

    + +

    or check out

    + +

    Google doc by Code for Nepal

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/06/resource-watch-nepal/index.html b/2018/06/resource-watch-nepal/index.html new file mode 100644 index 00000000..cdd38426 --- /dev/null +++ b/2018/06/resource-watch-nepal/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Using Resource Watch in the context of Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Using Resource Watch in the context of Nepal

    +

    02 Jun 2018 - Tawheeda Wahabzada

    +

    +

    In April 2018, the World Resources Institute launched Resource Watch, which “provides trusted and timely data for a sustainable future.” This blog will use the Resource Watch platform, by looking at different datasets in the context of Nepal.

    + +

    Perhaps we want to investigate whether there is a link between high population density and exposure to high levels of PM 2.5. Figure 1 provides two datasets. The first layer shows 2015 population exposed to unhealthy levels of PM 2.5, expressed in percentages. In the case of Nepal, about 100% of the population is exposed to unhealthy levels of PM 2.5. The second layer shows 2015 population density (people/km2). Since the entire population is essentially exposed to high levels of PM 2.5, this map does not show a correlation between population density and population exposed to unhealthy levels of PM 2.5.

    + +

    See below.

    + +

    Figure 1

    + +

    Resource Watch also provides several datasets on land and agriculture. Figure 2 shows global croplands and the vegetation health risk. Overall, Nepal’s vegetation health index ranges from 0-40, indicating vegetation stress and possible crop loss, to indices above 40, indicating greater crop production. Though, much of the country’s croplands are located in areas with vegetation indices of under 40.

    + +

    See below.

    + +

    Figure 2

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/07/2170/index.html b/2018/07/2170/index.html new file mode 100644 index 00000000..0eb16449 --- /dev/null +++ b/2018/07/2170/index.html @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which district in Nepal has the most forested land? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which district in Nepal has the most forested land?

    +

    29 Jul 2018 - Namrata Karki

    +

    +

    + +

    Forests are of great importance to any country. They contribute significantly to the environment, economic and social well being of the country. Owing to the numerous benefits and the products of the forests it can be easily stated that forests are one of the invaluable gifts of nature to humankind. They are an indispensable part of our earth’s ecological system.

    + +

    A joint five-year survey conducted by the Department of Forest Research and Survey and the National Forest Products Survey Project in between 2067 to 2071 BS, shows that of the total 147,181 square kilometers area of Nepal, forest area makes up 44.74 percent. Of it, 40.36 percent is covered by forest and remaining 4.38 percent is scrubland. It is necessary for a developing country like Nepal to conserve its forest resources as forest plays a significant role in the development of a nation.

    + +

    The top 10 list of districts with abundant forest land are as follows:

    + +

    Districts                         Forested land (In square kilometres)

    + +

    Kailali                            2008

    + +

    Dang                              2007

    + +

    Sankhuwasabha           1920

    + +

    Surkhet                         1746

    + +

    Sindhuli                         1668

    + +

    Taplejung                      1577

    + +

    Makwanpur                   1527

    + +

    Udaypur                        1501

    + +

    Bajhang                        1487

    + +

    Doti                               1440

    + +

    Top 10 list of districts with least amount of forest are as follows:

    + +

    Districts              Forested land (In square kilometres)

    + +

    Bhaktapur            25

    + +

    Kathmandu         152

    + +

    Parsa                   173

    + +

    Jhapa                   177

    + +

    Siraha                  181

    + +

    Saptari                 204

    + +

    Sunsari                 219

    + +

    Mahottari             222

    + +

    Lalitpur                245

    + +

    Rupandehi           251

    + +

     

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/08/province_nepal_population/index.html b/2018/08/province_nepal_population/index.html new file mode 100644 index 00000000..bf0e0e36 --- /dev/null +++ b/2018/08/province_nepal_population/index.html @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which province in Nepal has the highest population? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which province in Nepal has the highest population?

    +

    19 Aug 2018 - codefornepal

    +

    +

    + +

    There are seven provinces in Nepal. Curious about which one has the highest population?

    + +

    Well, look no further.

    + +

    Province 3 has the highest population, while Province 2 has the second highest as well as the highest number of multidimensionally poor Nepalis.

    + +

    Each of these Provinces has a higher population than Provinces 4 and 7 combined.

    + +

    Province 6 has the least number of people. Check out the chart below.

    + +
    + +
    + +

    Note: Pratima Kandel contributed to this post. 

    + +

     

    + +

    Data source: CBS (PDF).

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/09/2194/index.html b/2018/09/2194/index.html new file mode 100644 index 00000000..9f9e5ac2 --- /dev/null +++ b/2018/09/2194/index.html @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How I had fun this summer increasing digital literacy even though I could have just limited myself to eating Mo:Mos | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    How I had fun this summer increasing digital literacy even though I could have just limited myself to eating Mo:Mos

    +

    08 Sep 2018 - Nischal Paudel

    +

    +

    + +

    Hi, I am Nischal Poudel—a Nepali student currently in a high school in the UK. This summer, I volunteered with Code for Nepal, a non-profit working to increase digital literacy and the use of open data. Our plan for the summer was to initiate projects of digital literacy and open data in Pokhara, a beautiful city in Nepal.

    + +

    To finance these plans, I first organized a fundraiser. We were able to raise $290 (Rs. 31500), and I am really grateful to the donors who contributed online and offline. Then, I started to work.

    + +

    At first, I went to two public schools (Shree Ram Jyoti Secondary school and Amar Jyoti Gau-Farka Secondary School) and had a session titled ‘Make the most out of IT’ with the class 10 students. The goal was to enable them to get the most use out of whatever technology they currently have access to.

    + +

    In the session, we discussed how today’s digital offerings can break Nepal’s infrastructural limitations, and how the students could use technology for various purposes like:

    + +
      +
    • learning a new skill or completing a full academic degree online from Western universities;
    • +
    • doing jobs remotely in the tech field;
    • +
    • operating a business and using technology to sell products locally and globally.
    • +
    + +

    Next, I organized a mini-workshop on open data. At Code for Nepal, we believe that people need to have access to accurate data so that they can make better decisions. In addition to increasing access to data through https://nepalmap.org, we organize workshops as well to increase data literacy.

    + +

    Titled ‘Open Data Pokhara: Initiating data-driven development’, the workshop was a success. It was organized in the ICT building of GBS (Gandaki Boarding School) thanks to the generous support of the school administration. More than 30 students and teachers participated. We looked at what open data is, how big a role it plays in our daily life, and how it can act as a catalyst in development.

    + +

    We also looked at how we can find various business opportunities in statistics by having a practical session of looking at the most searched keywords in Nepal. Based on this exercise, we came up with business ideas that ranged from making simulation games along the lines of ‘Clash of Parties’ to manufacturing Motu-Patlu (a popular video series) merchandise.

    + +

    We concluded the workshop with a session on data scraping: extracting data from the Pokhara metropolitan website, converting it to machine-readable format, and using various tools to visually represent them, while also experiencing lots of problems in the conversion process because of the way the data was published.

    + +

    A total cost of Rs. 5500 ($55) was incurred to organize the digital literacy sessions and the open data workshop. The rest of the fundraiser money ($235) will be utilized to provide scholarships to students in various IT courses.

    + +

    All in all, our plan was successful, and it was tons of fun.

    + +

    But why did I do all of this? I was a high school student on his summer holidays. I could be comfortable spending my time eating momos and sipping cold drinks by the lake in Pokhara. (I did eat momos though.)

    + +

    I did this because I believe in the potential of Nepal. Nepal can make a lot of progress by increasing access to digital technology and enabling people to make the best use of digital technology they already have. Digital literacy can bring about a big change, and address problems like brain drain, corruption, superstition, and gender and ethnic inequality in Nepal.

    + +

    I had a great summer, and I am really grateful to my support system in Pokhara that comprised of Code for Nepal members, teachers, and my friends that helped me make this possible.

    + +

    But I also realized that I need more time to make the level of impact I want to make. With the lessons I’ve learned this summer, I will keep moving forward, keep pushing Code for Nepal forward, and we will continue to deliver on our mission for a digitally literate and technically capable Nepal.

    + +

    Are you a high school student interested in joining us or organizing a program like this? Send us a message via our Facebook page, comment below or email us at contact[@]codefornepal.org

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/09/tourism-nepal-visitnepal2020/index.html b/2018/09/tourism-nepal-visitnepal2020/index.html new file mode 100644 index 00000000..e948b990 --- /dev/null +++ b/2018/09/tourism-nepal-visitnepal2020/index.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Top five countries that send the most tourists to Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Top five countries that send the most tourists to Nepal

    +

    23 Sep 2018 - codefornepal

    +

    +

    + +

    Travel and tourism make a significant contribution to the economy in Nepal. In 2017, travel and tourism directly contributed (PDF) NPR 99.8bn (USD 982.5mn) or 4.0 percent of Nepal’s GDP and supported 497,500 jobs.

    + +

    These are the five countries that send the most tourists to Nepal, according to the Ministry of Culture, Tourism & Civil Aviation.

    + +
      +
    1. India
    2. +
    3. China
    4. +
    5. USA
    6. +
    7. UK
    8. +
    9. Sri Lanka
    10. +
    + +

    Data source: PDF

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/10/pratima-kandel-code-for-nepal/index.html b/2018/10/pratima-kandel-code-for-nepal/index.html new file mode 100644 index 00000000..5838a71f --- /dev/null +++ b/2018/10/pratima-kandel-code-for-nepal/index.html @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pratima Kandel on why she is part of Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Pratima Kandel on why she is part of Code for Nepal

    +

    03 Oct 2018 - Shrijana Khanal

    +

    +

    + Pratima Kandle is a Code for Nepal member. + +

    + Pratima Kandel is a Code for Nepal member. +

    +
    + +

    Code for Nepal is made by volunteers. We believe everyone can contribute. If you would like to join Code for Nepal, contact us. Read about Pratima Kandel, a member of Code for Nepal.

    + +

    Who are you and tell us how/where did you grow up?

    + +

    My name is Pratima Kandel and I am a Sophomore majoring in Computer Science at the University of Mary Washington, Virginia. I am originally from Nepal. My hometown is in Bhaktapur, I have three sisters and a younger brother. I grew up in an era where we were in less control of social media and technology, this made me an outside person. If any time, my parents were looking for me, they would find me somewhere catching crabs in the streams or playing soccer. Yeah!! I was a tomboy. I am an adventurous person and love to do anything that involves with an adrenaline rush.  

    + +

    How did you become involved with Code for Nepal?

    + +

    I was introduced to Code for Nepal through a friend. The history behind the formation of Code for Nepal and the work done by the organization was fascinating, this inspired me to become involved.

    + +

    Code for Nepal is a volunteer-run organization, many of the volunteers have daytime jobs outside of Code for Nepal. Therefore, where is your passion and dedication for this organization derived from?

    + +

    Learning is a very crucial part of life and working with Code for Nepal is learning to me. Every project that we have done so far is challenging, it involves patience and dedication. Throughout my experience, I have learned various important qualities, which makes me a good programmer and a learner. I have always been interested in volunteering and helping my community and Code for Nepal has helped me give back to my country with the knowledge that I have gained so far.

    + +

    What is your role in Code for Nepal? Do you see yourself changing this role anytime in the future?

    + +

    I started as a volunteer with Code for Nepal some months ago and presently, I feel privileged to be given the role as an Assistant developer. I look forward to work on more projects and continue to learn from Code for Nepal.

    + +

    Where do you see Code for Nepal in the next few years?

    + +

    Digital literacy and open data are very important terms that are crucial in today’s rapid technology-driven world. Countries like Nepal are in slow progress and still backward in terms of technology. I see Code for Nepal changing this ongoing problem. Through technology and open data, we could see a Modern Nepal that has highly progressed regarding Digital Literacy.

    + +

    How is Code for Nepal different or special from other non-profits?

    + +

    Code for Nepal is a unique organization that works for spreading digital and data literacy in Nepal and builds civic technology tools such as https://nepalmap.org. As I mentioned, Nepal needs to progress in the field of technology and there is rarely much organization that involves in solving the problem that our country is facing. Thus, Code for Nepal is a welcoming organization with volunteers providing their time and effort to make a change. 

    + +

    How can individuals especially the youth become more aware or involved with Code for Nepal?

    + +

    Good marketing is always the first thing for making people aware of our organization. We could partner with colleges and do events. In today’s highly influential social media, we could spread our words about Code for Nepal. Lastly, continue doing our best work for our country which will eventually attract youths who are interested in making a change.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/10/visitjanakpur-nepal/index.html b/2018/10/visitjanakpur-nepal/index.html new file mode 100644 index 00000000..08c7bded --- /dev/null +++ b/2018/10/visitjanakpur-nepal/index.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal and partners launched VisitJanakpur.com to attract more tourists and create more jobs in Janakpur, Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Code for Nepal and partners launched VisitJanakpur.com to attract more tourists and create more jobs in Janakpur, Nepal

    +

    30 Oct 2018 - codefornepal

    +

    +

    Pond in Janakpur Dham Credit: Badal Gyawali

    + +

    Washington, USA, October 29, 2017 – Code for Nepal today announced that Code for Nepal and partners are launching Visit Janakpur (https://www.visitjanakpur.com/)  to digitize the city and area to attract more tourists, help local businesses and people in Nepal.

    + +

    As Nepal plans to attract 1.5 million tourists by 2020, Janakpur could benefit the country and itself by doing all it can to attract more tourists. Realizing this potential, Code for Nepal and partners are launching Visit Janakpur. As part of the initiative, they also plan to train local businesses to improve their services in the near future.

    + +

    “Visit Janakpur is a project initiated by Code for Nepal to digitize the city to attract more tourists, help local businesses and people in Nepal. To maximize the benefit of the project, we are partnering with Province 2 Government and Janakpurdham Sub-Metropolitan City, ” said Roshan Ghimire, director of Code for Nepal. Organizations like Appan TV, Internet Market Today, StoryCycle, FACTS Nepal, Sano Paila, ANTA, Code for Janakpur and others are partners of this project.

    + +

    On October 27-29, a group of volunteers gathered to build digital maps of Janakpur, take photos and videos, and publish essays about the temples and ponds of this historic city.  As a team volunteers built 542 map points, 55 plus 360-degree imageries, 12 video stories. Honorable Mayor of Janakpur Dham officially launched www.visitjanakpur.com at the workshop after thanking volunteers and organizers for their work to promote tourism in Janakpur Dham.

    + +

    “As a digital marketing entrepreneur, it’s a privilege for me to work on a project to promote my hometown to the global audience,” said Amit Jha, Founder & CEO of Internet Market Today.

    + +

    “Janakpur has the potential to be a major attraction for religious tourism in Nepal,” Navin Shah, founder of Appan TV said. “Visit Janakpur is a great initiative to attract more tourists to Janakpur area.”  

    + +

    Contact:

    + +

    Roshan Ghimire

    + +

    Director of Operations and Partnerships

    + +

    Code for Nepal

    + +

    roshan@codefornepal.org

    + +

    +977 985-120-4309

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/11/cliff-mcintosh/index.html b/2018/11/cliff-mcintosh/index.html new file mode 100644 index 00000000..b6a7a7bc --- /dev/null +++ b/2018/11/cliff-mcintosh/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cliff McIntosh uses his software development skills for social good through Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Cliff McIntosh uses his software development skills for social good through Code for Nepal

    +

    10 Nov 2018 - Shrijana Khanal

    +

    +

    + + +

    + Photo: Cliff McIntosh +

    +
    + +

    Code for Nepal is made by volunteers. We believe everyone can contribute. If you would like to join Code for Nepal, contact us.

    + +

    Read about Cliff McIntosh, a member of Code for Nepal who leads the development of NepalMap, a web app that puts Nepal’s data at your fingertips.

    + +

    _Who are you and tell us how/where did you grow up?
    +_

    +I am Cliff McIntosh. I grew up in west Texas in the U.S. These days, I live in Chicago and work as a software developer.

    + +

    _How did you become involved with Code for Nepal?
    +_

    +I have had an interest in Nepal from the time that I was a Peace Corps volunteer teaching English in Dadeldhura district. I was looking for a volunteer opportunity and answered a call for volunteers on the Code for Nepal website. Ravi Nepal asked if I would be interested in helping launch a tool that makes census and other data available. That’s how I became involved with Code for Nepal and our NepalMap project.

    + +

    _Code for Nepal is a volunteer-run organization, many of the volunteers have daytime jobs outside of Code for Nepal. Therefore, where is your passion and dedication for this organization derived from?
    +_

    +I want to be able to use my software development skills for social good. Working with Code for Nepal on the NepalMap project allows me to do that.

    + +

    **What is your role in Code for Nepal? Do you see yourself changing this role anytime in the future?**

    + +

    I am a developer on the NepalMap project. Amit Chaudhary and I worked closely with other Code for Nepal team members and volunteers to launch the first version of the project. I am the team member who serves as the primary resource for working with the Wazimap framework that we use for NepalMap. I hope to continue to serve as a developer with NepalMap, but I would also like to have the opportunity to mentor other developers so that responsibility and skills can be shared.

    + +

    How is Code for Nepal different or special from other non-profits?
    +_** **

    +_
    Code for Nepal is different because it allows us to get involved by using our technical skills to serve a social good.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/11/improving-digital-footprint-of-janakpur/index.html b/2018/11/improving-digital-footprint-of-janakpur/index.html new file mode 100644 index 00000000..dd3c5b95 --- /dev/null +++ b/2018/11/improving-digital-footprint-of-janakpur/index.html @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Improving digital footprint of Janakpur | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Improving digital footprint of Janakpur

    +

    23 Nov 2018 - Nikesh Balami

    +

    +

    In October Code for Nepal organized the “Digitizing Janakpur Workshop” in collaboration with Appan TV, Internet Market Today, SotryCycle and other stakeholders to digitize Janakpur using photos and videos so, that we can attract more tourist supporting the Nepal Government “Visit Nepal 2020” initiative and also launch Visit Janakpur (https://www.visitjanakpur.com) project in partnership with Nepal Tourism Board,  Ministry of Industry, Tourism and Environment of Province 2 and Janakpurdham Sub-Metropolitan City in Nepal. Here is the brief overview of what happened in the two and half days workshop.

    + +

    Day 1

    + +

    The workshop was hands on. It included many field visits. Hence we selected only 25 participants out of which 13 were young women. All of them checked-in and Nikesh Balami, Project Manager of Code for Nepal gave the name tag to everyone so it would be easier to remember their name during the time of the workshop. Ravi Nepal, Founder of Code of Nepal, welcomed the workshop participants and share about the aim of organizing the event, the kind of opportunities and the impact which can be made to create more jobs and attract more tourist in Janakpur.

    + +

    Saurav Dhakal from StoryCycle shared a brief overview of what participants will be doing for the 2 and half days. Navin from Appan TV talks briefly about civic responsibility to promote local tourism, where he encouraged the youths to get involved in the community activities.

    + +

    Sudhan Subedi from Nepal Tourism Board talked about digital tourism and the Visit Nepal 2020 initiative. He was joined by Roshan Ghimire form Code for Nepal, where he highlighted the importance of digitizing Janakpur and the type of impact the workshop can make by promoting the local collaboration and resource sharing.

    + +

    The workshop was made special by the presence of Mr. Lal Kishor Sah, Mayor of Janakpurdham Sub Municipality. He joined the team to launch the Visit Janakpur project and also assured the long-term support from the Municipality side for its promotion. The participants were excited to hear about the work done by the Municipality to promote the tourism sector, preserve historic places and ongoing renovation in Janakpur Dham.

    + +

    + +

    Soon Survar Dhakal started the session on “Mapping your Story“, where he first asked participant introduce his/her partner with the help of paper maps which were provided to them. They were asked to locate the location of the hometown, school, favorite hangout place of their partners. He also talked about using digital tools to map the stories so that it will make an impact and highlighted the importance of hazard mapping to save lives during the time of natural disasters like floods and earthquake. He also shared some examples of using the mapping for the development and promotion of places.

    + +

    He was joined by Prijun Koirala, Web Developer of StoryCycle, where they talked about making the proper use of available equipment and applications like using Google Street View to capture 360 photos, Snapseed to edit photos from the mobile, which will help to make the stories attractive and beautiful.

    + +

    The basic concept of Mobile Photography was shared by the Roshan Ghimire in a separate session, where he shared some tips and tricks to take good quality photos using smartphones. He discussed on focusing on the stories and photo angle, rather than clicking randomly for the fun. After the session on Mobile Photography, Sudhan Subedi joined the participants to talk about gathering accurate information, which can help tourists or grow sales of the existing business. He talked about discouraging incomplete or meaningless information and asked participants to publish the photos and stories they collected as a blog so that visitor will find a complete information online.

    + + + +

    Amita Sharma, Teach of Nepal Fellow, led the discussion on “Digital Content Ethics” in the afternoon. She shared about Dos and Don’t of publishing and told participants to be very careful while publishing any kinds of content on the internet.

    + +

    After all the session, participants were divided into a smaller group for a field visit to map Janakpur using photos and videos. Four group were made and briefed on how to collect the map coordinates and photos of the important places and were sent for the trial mapping session, accompanied by members of Code for Nepal and StoryCycle.

    + +

    Day 2

    + +

    On the second day, participants traveled parts of Janakpur to collect stories. Early morning in around 8 AM everyone gathered at the Monastic School and Ravi conducted a short recap session, where he asked the participant to share his/her first day experiences. Many of them requested to organize similar kinds of workshop and events frequently on a timely basis.

    + +

    After the recap session and tea, Saurav divided the participants into 4 groups by making few changes in the day first group for the field mapping and assigned them with a task to cover and complete. All the four teams were accompanied by members of Code for Nepal and StoryCycle. Participants spent more than 3 hours in the field, collecting map coordinates, photos, and videos. Once they returned to the workshop venue, they were taught how to upload the collected photos and coordinates on Google Maps. The basic of Google Local Guide platform was also shared to encourage participants to continue their contribution after the workshop.

    + +

    Then participants took some rest over lunch. Soon Mr. Sumit Shekhar Shah, a Digital Photography enthusiast, who has been working in Janakpur for the grassroots awareness joined the participants to talk about how they can promote the history of Janakpur by highlighting the culture, temples, foods etc. He told participants to reach out to him anytime for help.

    + + + +

    Participants went to the field again. This time they were asked to focus on 360 photos and video stories. They identified the stories like the making of the Janakpur Lassi, Yummy Samosa, Mithal Arts etc. These videos will be published soon by StoryCycle.

    + +

    Day 3

    + +

    Like Day 2, participants gathered in the venue early in the morning and Ravi conducted the short review session. After the review, the team was dispatched again for the field mapping of parts of Janakpurdham.

    + +

    At the end to the three and half days workshop, we built 542 map points, 55 plus 360-degree imageries and 12 video stories.

    + +

    Mr. Ram Naresh Ray form Ministry of Industry, Tourism and Environment of Province 2 joined us. In his remarks, he congratulated all the participants and organizers for the hard work and said that the government is working to advance the tourism sector in Province 2.

    + +

    + +

    Data, photos and videos collected from the workshop are still being processed. Some of them have been published http://visitjanakpur.com/

    + +

    #VisitJanakpur #VisitNepal2020 #Code4Nepal

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/11/this-givingtuesday-nepal/index.html b/2018/11/this-givingtuesday-nepal/index.html new file mode 100644 index 00000000..de768bf1 --- /dev/null +++ b/2018/11/this-givingtuesday-nepal/index.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Give coding scholarships to young women in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Give coding scholarships to young women in Nepal

    +

    23 Nov 2018 - codefornepal

    +

    +

    + +

    We are raising money to give 25 scholarships to young women from diverse background to learn to code. Your contribution will make an impact, whether you donate $5 or $500. 100% of the donation will be used to provide scholarships. Every little bit helps. Thank you for your support.

    + +

    Gender equality in all sectors and especially in the tech sector, in Nepal, remains a challenge. We would like to help change that. Code for Nepal has years of experience in providing opportunities for women to learn to code and finding a job or internship. Please join us in making Nepal a more equal place for women. Please donate and share with your friends and family.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/11/which-districts-in-nepal-produce-the-most-eggs/index.html b/2018/11/which-districts-in-nepal-produce-the-most-eggs/index.html new file mode 100644 index 00000000..ed1ed0e7 --- /dev/null +++ b/2018/11/which-districts-in-nepal-produce-the-most-eggs/index.html @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which districts in Nepal produce the most eggs? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which districts in Nepal produce the most eggs?

    +

    04 Nov 2018 - Namrata Karki

    +

    +

    We are all familiar with the question ‘Who came first- the egg or the chicken’? Well, it is impossible to answer this question but meanwhile, we have some egg-citing information for you.

    + +

    People in Nepal generally consume duck and hen eggs. Nepal produces a total of 1,308,072,000 eggs annually, according to Ministry of Agriculture [PDF]. This number is contributed by the commercial farming done in various districts.

    + +

    The top 10 districts responsible for producing the most number of eggs in Nepal are as follows.

    + +

    District                                   Total Eggs

    + +

                                                 (Including duck and hen egg)

    + +

     

    + +

    Chitwan                                41,217,5000

    + +

    Makwanpur                         5,810,6000

    + +

    Dang                                     55047000

    + +

    Udaypur                              50236000

    + +

    Kaski                                    43151000

    + +

    Nawalparasi                       41946000

    + +

    Kathmandu                        41233000

    + +

    Bhaktapur                          40995000

    + +

    Kavrepalanchowk             35988000

    + +

    Morang                              33652000

    + +

     

    + +

    Data sources:

    + +

    Check out NepalMap.

    + +

    or

    + +

    Google doc.

    + +

    or Minister of Agriculture (PDF)

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/12/2018-year-in-review/index.html b/2018/12/2018-year-in-review/index.html new file mode 100644 index 00000000..a1d0d30e --- /dev/null +++ b/2018/12/2018-year-in-review/index.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + One thing to do and six things to know before saying goodbye to 2018 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    One thing to do and six things to know before saying goodbye to 2018

    +

    24 Dec 2018 - codefornepal

    +

    +

    Flowers.
    + +

    + Happy Holidays!
    +

    + +

    We hope you had a great year and are enjoying the holiday season. We have been grateful for your support. As 2018 comes to an end, we wanted to thank you for supporting Code for Nepal, seek end of year donations, and share updates on our work over the past year.

    + +

    Overview of what we were up to in 2018:

    + +

    Building the digital footprint of a city: Janakpur is a historical and religious city in southern Nepal. By working with partners, we launched an initiative to digitize the city to attract more tourists, local businesses and people in Nepal: https://www.visitjanakpur.com/

    + +

    Increasing digital and data literacy: This year, as in the past, we continued to analyze and visualize data related to Nepal. We also organized an event in Pokhara and supported a young teacher’s hope to buy a projector to increase digital literacy in Janakpur and computational linguistic competition in Kathmandu.

    + +

    Supporting entrepreneurs: In collaboration with Open Knowledge Nepal, we launched the Hack for Nepal initiative and hosted AngelHack Hackathon for the first time in Nepal. This was our first experience of hosting an overnight hackathon, where more than 70 participants competed to build ‘Seamless Technology for Humanitarian Response’.

    + +

    Increasing access to federal level data: Nepal has new administrative boundaries. In 2016, we launched NepalMap to put Nepal’s data at your fingertips. Now we are working to create a new version of NepalMap to reflect the new administrative boundaries of Nepal. Join us!

    + +

    Blankets4Nepal: In early 2018, extreme cold waves affected Nepal. Many lost their lives. Code for Nepal and partners raised over $1,500 to donate blankets to those affected.

    + +

    #KataNepali Video Competition: After the grand success of #KoNepali video and photo competition, in 2018, we organized “KataNepali” video competition asking Nepali youth all around the world their vision and aspiration for Nepal. In March, we distributed the award to the winners in Kathamandu. If you haven’t watched the #KataNepali videos, please do and let’s continue to discuss the future of Nepal.

    + +

    Looking forward:

    + +

    + Scholarships for women: We are working to launch a scholarship initiative for young women to strengthen their coding skills and make them more competitive candidates for technology sector jobs in Nepal. Please donate to the scholarship fund. +

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/12/asmita/index.html b/2018/12/asmita/index.html new file mode 100644 index 00000000..9bf86426 --- /dev/null +++ b/2018/12/asmita/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Read why Asmita Gauchan leads strategy at Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Read why Asmita Gauchan leads strategy at Code for Nepal

    +

    20 Dec 2018 - Shrijana Khanal

    +

    +

    Asmita Gauchan - Director Code for Nepal
    Asmita Gauchan, Director of Strategy at Code for Nepal.
    + +

    + Who are you and tell us how/where did you grow up?
    Born in Pokhara and raised in Kathmandu, I hold both places close to my heart. I grew up in a big joint family which included my grandparents, uncles, parents, and siblings.  Being away from home has been a challenge to say the least. My parents instilled the importance of education and personal independence in me from an early age, so I have them to thank for who and where I am today. I realize not everyone is as privileged as I have been; therefore, working towards leveling the playing field for Nepali girls and women has always been a priority for me. +

    + +

    How did you become involved with Code for Nepal?
    +I learned about a lot of cool things that Code for Nepal does through their Facebook page. As an IT professional, Code for Nepal’s mission to promote digital literacy in Nepal really resonated with me.

    + +

    Code for Nepal is a volunteer-run organization, many of the volunteers have daytime jobs outside of Code for Nepal. Therefore, where is your passion and dedication for this organization derived from?
    +Opportunity should be indiscriminate, not based on gender or social class, as it is so often in Nepal. Digital literacy is a powerful tool that can enforce this principle by empowering Nepali women and girls, which is why I chose to work with this organization.

    + +

    What is your role in Code for Nepal? Do you see yourself changing this role anytime in the future?
    +I was previously a Scholarship Manager at Code for Nepal, and helped raise scholarship funds for web design courses for Nepali girls who were interested in learning web development. Recently, I took on the role of Director of Strategy. I intend to support the organization by managing the various projects that make Code for Nepal impactful.

    + +
    +

    +
    Opportunity should be indiscriminate, not based on gender or social class, as it is so often in Nepal. Digital literacy is a powerful tool that can enforce this principle by empowering Nepali women and girls, which is why I chose to work with this organization. +

    + + Asmita Gauchan, Director of Strategy, Code for Nepal +
    + +

    Where do you see Code for Nepal in the next few years and what can it do to improve?
    +I think Code for Nepal will continue its great work by bringing together like-minded, proponents of digital literacy. In a few years’ time, I hope our work will have have increased in both scale and reach.

    + +

    **How is Code for Nepal different or special from other non-profits?
    +** I think Code for Nepal’s work in mobilizing youth in the country to promote the merits of technology, and support various avenues they pursue to spread digital literacy is quite special. We work with many extremely passionate young adults and expreience professionals, who constantly inspire me with their enthusiasm and dedication. Some of them are working to create change in their own home districts, so the projects our volunteers initiate and lead are not only impactful but also highly personal.

    + +

    How can others become more aware or involved with Code for Nepal?
    +Follow us on social media, and our blog! We do our best to share our progress, victories, and struggles with the public through these platforms. If you are interested in getting involved, you can reach out to us via our Join Code for Nepal form. We welcome all who share the same vision of creating a Nepal that leverages digital literacy and technological innovations to ensure its citizens are thriving.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2018/12/visitjanakpur-social-media-photo-challenge/index.html b/2018/12/visitjanakpur-social-media-photo-challenge/index.html new file mode 100644 index 00000000..62e35bb1 --- /dev/null +++ b/2018/12/visitjanakpur-social-media-photo-challenge/index.html @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #VisitJanakpur Social Media Photo Challenge | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    #VisitJanakpur Social Media Photo Challenge

    +

    18 Dec 2018 - Roshan Ghimire

    +

    +

    + +

    Purpose

    + +

    The purpose of the #VisitJanakpur Social Media Photo Challenge is to encourage participants to photograph Janakpur Dham and area and publish on Instagram or Twitter or Facebook using hashtags #VisitJanakpur and #VisitNepal2020. Both of these hashtags must be used. The photo can be of anything such as: food, temples, art, ponds or people.

    + +

    Who can apply

    + +

    Everyone except members and families of organizer and co-organizer of this challenge.

    + +

    How to apply

    + +

    From October 30  to December 31, participants need to take photos of Janakpur Dham and area and post on Instagram or Twitter or Facebook using hashtags #VisitJanakpur and #VisitNepal2020.

    + +

    A participant has to post minimum of five photos of five different things to qualify. For example, a participant can take photos of temple, pond, food, people, houses or neighborhoods.

    + +

    Photos published between October 30 to December 31 will be judged for this social media challenge.

    + +

    Participants need to email their 5 best photos to contact@codefornepal.org  with the subject- “Entry for Visit Janakpur Social Media Photo Challenge”

    + +

    The post should have:

    + +

    1-2 sentence description of the photo. See for example:

    + +

    Twitter post: https://twitter.com/VisitJanakpur/status/1064458963704524800

    + +

    Instagram post: https://www.instagram.com/p/BqW58qblrjB/

    + +

    Facebook post: https://www.facebook.com/visitjanakpurdham/photos/a.1648374195400021/2257708451133256/?type=3&theater

    + +

    Tag @VisitJanakpur on Instagram/Twitter

    + +

    Guidelines to submit

    + +

    You can take photos of people, food, temples, flowers, ponds, houses etc and post with a caption (description) that would help people understand what your photo is about. Use hashtags #VisitJanakpur and #VisitNepal2020. Also, please don’t watermark your submissions.

    + +

    Judges*

    + +

    Deepika Gyawali

    + +

    Sumit Sabita Shekhar

    + +

    *Please do not contact the judges or ask them questions.  If you have questions, please email contact@codefornepal.org

    + +

    Judging Criteria

    + +

    Photos will be judged based on quality of photo and description of the photos.

    + +

    Awards

    + +

    Nrs 5,000 and certificate each to two top winners: One male and one female participant. Three additional participants would get certificates.

    + +

    Winners will be announced in mid of January.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/01/most-visited-places-by-tourists-in-nepal-in-2017/index.html b/2019/01/most-visited-places-by-tourists-in-nepal-in-2017/index.html new file mode 100644 index 00000000..b5b4595c --- /dev/null +++ b/2019/01/most-visited-places-by-tourists-in-nepal-in-2017/index.html @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Most visited places by tourists in Nepal in 2017 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Most visited places by tourists in Nepal in 2017

    +

    24 Jan 2019 - Pratima Kandel

    +

    +

    A view from Nagarkot, Nepal

    + +

    Nepal has been blessed by nature. It is so beautiful. Numbers prove that tourists love that about Nepal. The most places visited in Nepal by tourists are National Parks and Wildlife Reserves, followed by Pashupati Area and Lumbini (excluding Indian tourists for both of these religious sites).

    + +

    Here are the most visited places by tourists in 2017.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + National Parks and Wildlife Reserve +
    + Pashupati Area (excluding Indian tourists) +
    + Lumbini (excluding Indian tourists) +
    + Manaslu Trekking +
    + Mustang Trekking +
    + Humla Trekking +
    + Lower Dolpa Trekking +
    + Kanchanjunga Trekking +
    + Upper Dolpa Trekking +
    + +

    Source: Ministry of Culture, Tourism & Civil Aviation (PDF)

    + +

    For machine readable data check out our Github.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/01/wealth-inequality-nepal/index.html b/2019/01/wealth-inequality-nepal/index.html new file mode 100644 index 00000000..92479dd5 --- /dev/null +++ b/2019/01/wealth-inequality-nepal/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which province has the highest wealth inequality in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which province has the highest wealth inequality in Nepal

    +

    06 Jan 2019 - codefornepal

    +

    +

    + +

    + Overall in Nepal, inequality is low in context of the country’s economic development.
    +

    + +

    Inequality is measured by the Gini Index, “the most widely used measure of inequality”. The Gini Index looks at the “distribution of a nation’s income or wealth, where 0 represents complete equality and 1 total inequality.”

    + +

    The most recent Demographic and Health Survey of Nepal released by the Ministry of Health shows which provinces have the highest wealth inequality.

    + +

    Province 6 has the highest inequality and one of the highest rates of multidimensional poverty with every second person being multidimensionally poor (50%), the same as Province 2 of Nepal. However, inequality in Province 2 is the lowest in the country, according to the Demographic and Health Survey.

    + +

    Data source: Demographic and Health Survey

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/02/literacy-rate-province-nepal/index.html b/2019/02/literacy-rate-province-nepal/index.html new file mode 100644 index 00000000..166495c8 --- /dev/null +++ b/2019/02/literacy-rate-province-nepal/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which Provinces have the highest and lowest literacy rate in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which Provinces have the highest and lowest literacy rate in Nepal

    +

    16 Feb 2019 - codefornepal

    +

    +

    Photo: Nischal Poudel
    + +

    + Nepal has seven provinces. While latest data on these provinces are not yet available, Ministry of Education last year released a report that provides literacy rate of provinces based on the 2011 Census. +

    + +

    The literacy rate of Nepal in 2011 was 66%. Province 3 has the highest literacy rate (74.8%) while Province 2 has the lowest (49.5%) in the country. Check out the chart below to see literacy rate of other provinces.

    + +

    p.s: We are looking for the latest data, if you know where it is, please comment below.

    + +

    Source: Ministry of Education (PDF)

    + +

    Machine readable data: Google Excel 

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/02/project-manager-for-code-for-nepal/index.html b/2019/02/project-manager-for-code-for-nepal/index.html new file mode 100644 index 00000000..5e4ddbff --- /dev/null +++ b/2019/02/project-manager-for-code-for-nepal/index.html @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Project Manager for Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Project Manager for Code for Nepal

    +

    21 Feb 2019 - Roshan Ghimire

    +

    +

    General information:

    + +

    Code for Nepal is a registered non-profit in the US working to increase digital literacy and the use of open data in Nepal. Over the past five years, Code for Nepal has built several products, organized conferences and provided scholarships to create more opportunities for Nepalis.

    + +

    In addition to our ongoing projects, Code for Nepal is launching a new Fellowship Program for young Nepali women to learn coding.

    + +

    Once they complete the technical training, Fellows of this new program will work closely to build, revamp and promote many of Code for Nepal’s products such as NepalMap.org, AskNepal.info, VisitJanakpur.com, Sangraha.org, as well as upcoming projects we have in the pipeline.

    + +

    This real world experience will allow the Fellows to build their portfolio and help them gain competitive edge for the job market.  

    + +

    Code for Nepal is looking for a dynamic, talented and entrepreneurial Project Manager based in Kathmandu. He/She should be committed to digitally empowering Nepal and to support our Fellowship program and existing projects and partnerships. This is a part-time position for 10 hours a week working remotely and in person meetings as needed.

    + +

    Responsibilities of the position include:

    + +
      +
    • Implement, coordinate, direct and maintain Code for Nepal Fellowship program, including preparation of Fellowship submission and agreements form, monitoring and maintaining regular contact with Fellows.
    • +
    • Serve as liaison between Code for Nepal staff, Fellows and training provider and the public to provide information and resources regarding Fellowship program.
    • +
    • Formulate and implement a communications plan to promote the Fellowship program.
    • +
    • Serve as a project manager for Code for Nepal ongoing projects including Ask Nepal, NepalMap and Visit Janakpur to ensure projects are on track.
    • +
    • Work with Code for Nepal management team to manage project pipeline and various partnerships.
    • +
    • Liaise with Code for Nepal volunteers to ensure volunteers are finding their engagement with Code for Nepal meaningful and contributing to Code for Nepal projects.
    • +
    + +

    Selection criteria
    +This position requires strong project management skills, relationship building, understanding of Nepali tech industry, open data, media and marketing fluency, and an ability to work with a diverse set of colleagues who are committed to digitally empowering Nepal. A candidate must have a bachelor’s degree and a minimum of two years of full-time professional experience.

    + +

    Reporting requirements:

    + +

    Roshan Ghimire, Operations and Marketing Director, Code for Nepal

    + +

    How to apply:

    + +

    Please send your resume and cover letter to contact@codefornepal.org by March 20 with your monthly compensation expectation. The subject of the email should be Project Manager Application.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/02/read-nikeshs-insights-about-code-for-nepal/index.html b/2019/02/read-nikeshs-insights-about-code-for-nepal/index.html new file mode 100644 index 00000000..4117fbf9 --- /dev/null +++ b/2019/02/read-nikeshs-insights-about-code-for-nepal/index.html @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Read Nikesh’s insights about Code for Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Read Nikesh’s insights about Code for Nepal

    +

    17 Feb 2019 - Shrijana Khanal

    +

    +

    + +

    Nikesh with Code for Nepal recipients of Tech Diversity Scholarship at Insight Workshop

    + +

    Who are you and tell us how/where did you grow up?

    + +

    Namaste! I am Nikesh Balami. I am born and raised in Kathmandu. I love coffee chat, tweeting, hackathons, blogging, traveling, and open data. I am the co-founder and CEO of Open Knowledge Nepal, a non-profit civic tech organization comprised of openness aficionados. In my daily work schedule, I coordinate diverse project related to tech & data, write research & reports, scrape & harvest government data and sometimes code.

    + +

    How did you become involved with Code for Nepal?

    + +

    I joined Code for Nepal three years ago with an aim of rebooting the AskNepal initiative. It was super quick, I also wrote a blog about it on my personal website highlighting the experience and possible next steps.

    + +

    Code for Nepal is a volunteer-run organization, many of the volunteers have daytime jobs outside of Code for Nepal. Therefore, where is your passion and dedication for this organization derived from?

    + +

    Yeah, I also have my separate organization like many other Code for Nepal members. Talking about passion and dedication, C4N’s mission of “increasing access to open data” is where I connect with this organization. The value of openness to create an inclusive environment for everyone is a priority to me,, and I like how Code for Nepal mobilizes its volunteers to build projects and initiative around it.

    + +

    What is your role in Code for Nepal? Do you see yourself changing this role anytime in the future?

    + +

    My role at Code for Nepal is interdisciplinary and has been changed frequently. Previously I was the AskNepal Lead, then Project Coordinator, and now I am Program Manager with the responsibilities of managing product and event. I represent C4N on different platforms. I speak on the behalf of the organization, promote activities, manage relations with Nepalese civil societies, and coordinate workshops and hackathons through Hack for Nepal initiative.

    + +

    Regarding the change in role, the type of role which I hold within the organization does not matter much. It’s all about the continuous contribution and dedication, which I will be doing until Code for Nepal will achieve “i_ncreasing access to open data.”_

    +
    + +![](https://lh6.googleusercontent.com/86uLBucVygg9Gt7cc40_I7wR4-j_O7qh1h67J2ZZUzFeRH-R1Fm86kwIqkPwDt9sezqfGGbA8GhoS-qLwgQ2M4TO-UKLHw-w6hsVrnAyajcSuSW5tb1rpNTmVks1oEXs3Hpq47A)
    + +

    Organizer and Winners of AngelHack Nepal Hackathon 2018 – part of Hack for Nepal initiative

    + +

    Where do you see Code for Nepal in the next few years and what can it do to improve?

    + +

    Over the years, I was lucky and grateful to witness the growth of Code for Nepal, which makes me proud. Let’s keep working, let’s keep moving forward – I believe tomorrow is beautiful.

    + +

    How is Code for Nepal different or special from other non-profits?

    + +

    I can’t list this as bullet points, but I call ourselves (Code for Nepal) as a modern day non-profit organization, working in Nepal with no hierarchical orders and capabilities of working virtually, which is very much different than traditional working style.

    + +

    How can others become more aware or involved with Code for Nepal?

    + +

    Anyone who is interested to be part of this momentum can contact contact@codefornepal.org or they can directly start contributing through http://github.com/Code4Nepal

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/03/hawkins-fellowship/index.html b/2019/03/hawkins-fellowship/index.html new file mode 100644 index 00000000..e1503bcd --- /dev/null +++ b/2019/03/hawkins-fellowship/index.html @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal launches Hawkins Fellowship for Young Women in Partnership with Insight Workshop | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Code for Nepal launches Hawkins Fellowship for Young Women in Partnership with Insight Workshop

    +

    04 Mar 2019 - Roshan Ghimire

    +

    +

    + +

    Contact: Roshan Ghimire

    + +

    Email: roshan@codefornepal.org

    + +

    Code for Nepal launches Hawkins Fellowship in Partnership with Insight Workshop to Help Increase Women Talent in Tech Job Market in Nepal

    + +

    Code for Nepal and Insight Workshop are pleased to announce the partnership  to launch Hawkins Fellowship to help increase women talent in the tech job market in Nepal.

    + +

    Code for Nepal and Insight Workshop will select 15 women fellows in five batches, train them on open source and web development and soft skills and help them build their portfolio with hands-on training to enable them to compete in the job market. After successfully completing the fellowship, the fellows will also receive a monetary award.

    + +

    “The rising demand for talent in the rapidly growing tech job market is a sign that we need to mobilize women, who are the population majority in Nepal, to seek the same opportunities that their male counterparts do. We are pleased to be able to continue supporting this movement in empowering women with knowledge and experience”, said Asmita Gauchan, Director of Strategy at Code for Nepal.

    + +

    “Insight Workshop is extremely delighted to partner with Code for Nepal to train young and energetic women to become future leaders in product and technology,” said Sitaram Gautam, Chief Executive Officer, Insight Workshop

    + +

    “We are glad to be able to continue our partnership with Insight Workshop to build talent for the future in the country,” said Roshan Ghimire, Director of Partnerships and Operations at Code for Nepal.

    + +

    Details of the fellowship will be announced in early April.

    + +

    ***

    + +

    About Code for Nepal:

    + +

    Code for Nepal is a 501(c)(3) nonprofit organization registered in the United States. Code for Nepal works to increase digital literacy and the use of open data in Nepal.

    + +

    About Insight Workshop:

    + +

    Insight Workshop is a Kathmandu-based engineering company that primarily consults technology solutions to partners and companies around the world. Insight Workshop also runs an Academy to train future engineers and invests in local product development.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/03/which-province-in-nepal-has-the-most-number-of-students-enrolled-in-higher-education/index.html b/2019/03/which-province-in-nepal-has-the-most-number-of-students-enrolled-in-higher-education/index.html new file mode 100644 index 00000000..22154249 --- /dev/null +++ b/2019/03/which-province-in-nepal-has-the-most-number-of-students-enrolled-in-higher-education/index.html @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Which Province in Nepal has the most number of students enrolled in Higher education | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Which Province in Nepal has the most number of students enrolled in Higher education

    +

    24 Mar 2019 - codefornepal

    +

    +

    + +

    Gaining higher education is critical in the 21st century. Province 3, home of the capital city in Nepal attracts most students who are interested in higher education.

    + +

    There were just more than 3 lakhs 61 thousand students enrolled in higher education of which more than 50% are in just Province 3 in 2017, according to the Ministry of Education (PDF).

    + +See the chart +

    below for details.

    + +

    What can your province do to increase the number of students in higher education?

    + +

    Data in Machine readable format: OpenDataNepal

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/04/apply-hawkins-fellowship-learn-excel-tech-market-nepal/index.html b/2019/04/apply-hawkins-fellowship-learn-excel-tech-market-nepal/index.html new file mode 100644 index 00000000..33098e9e --- /dev/null +++ b/2019/04/apply-hawkins-fellowship-learn-excel-tech-market-nepal/index.html @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Apply by April 12 for Hawkins Fellowship to learn how to excel in the tech market in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Apply by April 12 for Hawkins Fellowship to learn how to excel in the tech market in Nepal

    +

    05 Apr 2019 - Richa Neupane

    +

    +

    + We are pleased to announce that applications are open for the first batch of Hawkins Fellows. The objective of the 12 week fellowship program organized by Code for Nepal in partnership with Insight Workshop is to help increase female talent in the technology job market in Nepal. +

    + +

    About the fellowship program

    + +

    The Hawkins Fellowship by Code for Nepal in partnership with Insight Workshop Academy includes:

    + +

    A. A twelve-week program at the Insight Workshop Academy

    + +

    Fellows will be engaged full-time from Monday to Friday 10 am to 4 pm in the Insight Workshop classes

    + +

    B. A four-week capstone program

    + +

    For the capstone project Fellows can either build from their own ideas and interests or they can be involved in one of the following Code for Nepal projects

    + + + +

    C. A Monetary reward of Nrs 15,000 after the fellow successfully completes the program. (The fellowship award including the training, networking and more is worth Nrs 60,000.)

    + +

    Learning outcomes of the fellowship:
    +–
    Leadership and communications skills
    +– Access to network with established leaders in the field
    +– Project Management: Portfolio-building with Code for Nepal and Insight Workshop**
    +–**Technical skills: Open source and web development

    + +

    Deadline to Apply :  April 12

    + +

    Number of Fellows for April intake: 3

    + +

    Applicants must meet the following criteria to apply:

    + +
      +
    • +

      able to commit full-time

      +
    • +
    • +

      background in basic programming

      +
    • +
    • +

      identify as female

      +
    • +
    • +

      young professional or final year Bachelor’s student

      +
    • +
    + +

    We will call for interviews if you are shortlisted. Three fellows will work alongside the April batch of trainees of Insight Workshop Academy. To know more about the curriculum visit insightworkshop.io

    + +

    Fellowship timeline: April 15, 2019 to August 15,  2019

    + +

    You only have to fill one application form. Please fill and submit the form below by April 12.

    + +

    If you have questions that has not been answered in this page, please ask using the comments section below.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/04/internship-in-janakpur/index.html b/2019/04/internship-in-janakpur/index.html new file mode 100644 index 00000000..2fa79129 --- /dev/null +++ b/2019/04/internship-in-janakpur/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Internship in Janakpur | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Internship in Janakpur

    +

    23 Apr 2019 - Richa Neupane

    +

    +

    We are pleased to announce our partnership with Internet Market Today for a three-month internship program in Janakpur, Nepal. Internet Market Today is a digital advertising agency based in Janakpur.

    + +

    Number of interns: 2
    +Stipend: NRs 3000 per month
    +Tentative start date: May 15, 2019

    + +

    Interns will have the opportunity to learn the following skills:

    + +
      +
    • Google Ads Marketing
    • +
    • Creative Writing
    • +
    • Social Media Marketing
    • +
    • Search Engine Optimization
    • +
    • Website Designing
    • +
    + +

    Expectations:

    + +
      +
    • Interns will write at least two blog posts for Code for Nepal about their experience.
    • +
    • They will help with Code for Nepal projects.
    • +
    • Interns will work full-time.
    • +
    + +

    Minimum requirements:

    + +
      +
    • Applicants must have some academic or professional background in IT
    • +
    • Must be at least in the final semester of Bachelor’s degree
    • +
    • Must be fluent in English
    • +
    + +

    Please send your CV and letter of interest to richa@codefornepal.org. Deadline has been extended to May 10, 2019.

    + +

    Applications will be reviewed on a rolling basis.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/04/introducing-our-hawkins-fellows/index.html b/2019/04/introducing-our-hawkins-fellows/index.html new file mode 100644 index 00000000..b16b055a --- /dev/null +++ b/2019/04/introducing-our-hawkins-fellows/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Introducing our Hawkins Fellows | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Introducing our Hawkins Fellows

    +

    30 Apr 2019 - Richa Neupane

    +

    +

    I joined Code for Nepal this April and my first task was selecting the Hawkins Fellows. There were 24 applicants and out of them eight were called for phone interview. I had to make decisions quickly so we could match the Fellowship timeline for the Insight Workshop training program. I read the stories of the finalists again and again and tried to find a good mix of the fellows according to their diversity and strengths. Within a few days, I communicated with the selected fellows and they responded immediately and have started the fellowship. I sent out rejection letter to the rest of the candidates who I had interviewed. To be honest all the candidates’ stories were exceptional. A few did not meet the education or programming language requirement. I encourage all of those who applied but did not hear from us or did not get selected to continue your hard work and to continue taking advantage of such opportunities. It is great to see that you have already taken the steps towards closing the gender gap in technology by choosing to work in this field and already are role models to many.

    + +

    Here, I present to you the first batch of Hawkins Fellows.

    + +

    1.SUMI PRAJAPATI, BHAKTAPUR

    + +
    +
    +
    + +

    I recently finished my Bachelor’s. I am the oldest daughter in my family. Growing up, I was the most mature,outgoing person and I tried to help my family my entire life. I am a simple,open minded girl who loves to learn new things and experience life.

    + +

    I was one of the fellows at Women Leaders in Technology (WLiT) which run programs to foster the vision of providing young girls opportunities and resources to carry their passion in technology, and become leaders and innovators. I have been a part of various workshops and hackathons including a 3 month smart-chhori campaign in Khalti which helped me learn about digital payments and digital literacy program practically. From my teenage days I had always experienced the gender gap and felt the decreased involvement of girls in technology. I believe that girls are equally good as boys. The technology field had always fascinated me. Collecting memories and capturing them in photos is what interests me. I like to volunteer. I want to spread smiles to my loved ones.

    + +

    Code for nepal dreams to empower Nepal by  increasing digital literacy. Encouraging women in this area is a huge step towards this dream. I was very impressed and attracted towards this vision looking at different projects of this organization.

    + +

    The Hawkins Fellowship is also one of the small step towards building gender equality in the field of technology. Working together in a team in various kinds of projects is going to be fun and through this Ii can see my future with a huge difference. This kind of opportunity is definitely going to help people grow and get motivated to achieve a successful future.

    + +

    2. BASNA RANJITKAR, KAVRE

    + +
    +

    +
    + +

    I have just completed my Bachelor’s in Computer Engineering. I joined a fellowship program during my Bachelor to improve my soft skills. This made me confident that I can face any type of interviews, or work pressure. But after I completed my studies and I began to send resume to apply for jobs, I realized that I lacked most of the job requirements posted by companies. The hard skills developed during the college days to just complete the minor and major projects were insufficient to match the job requirements. I applied for Hawkins Fellowship for Women to get the necessary training on technical and professional skills and be able to apply those skills at the workplace.

    + +

    3. SEEMA THAPA MAGAR, POKHARA

    + +
    +
    +
    + +

    I recently completed my undergraduate in Computer Science and Information Technology. I am a passionate, optimistic and dedicated woman who believes in perfecting my skills with continuous effort. As there is a saying by the great Aristotle that “We are what we repeatedly do. Excellence, then is not an act, but a habit.”

    + +

    I am also a nature lover, health enthusiast, scribbler and a social activist. I consider it my greatest achievement when I am able to motivate and help many young students or learners about the cosmic possibilities of technology. I feel genuinely happy when my code runs without any errors or bugs while programming. One of my imperishable memory was of a leadership development camp 2019 in Sikles where I got to meet and influence around 80 indigenous students highly ambitious towards their career. I want to be one of the female tech expert in the IT field. I want to be an example so that people will believe that even a girl can be a scientist, CEO, software developer or any top professional thriving excellently in the technology sector.      

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/05/first-month-as-a-software-engineer-trainee-at-insight-workshop/index.html b/2019/05/first-month-as-a-software-engineer-trainee-at-insight-workshop/index.html new file mode 100644 index 00000000..80e6167d --- /dev/null +++ b/2019/05/first-month-as-a-software-engineer-trainee-at-insight-workshop/index.html @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + First month as a Software Engineer Trainee at Insight Workshop | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    First month as a Software Engineer Trainee at Insight Workshop

    +

    28 May 2019 - Sumi Prajapati

    +

    +

    I applied for this workshop from both Insight website as well as from Code for Nepal fellowship. It was an amazing feeling to know that I had got selected for both. I thought “WOW! I can do this.” I felt more energetic: all I could feel was positive vibes.

    + +

    From the very first day I was feeling very lucky to be part of this workshop. I took this as an opportunity to learn and groom myself in a real office environment. This was the time to implement my theoretical knowledge into practical world. I saw my big picture world i.e future through these tiny steps. I dreamt of being a software engineer since my school days. So this was a starting of my journey.

    + +

    Talking about my first day at Insight Workshop, everyone was so welcoming.We were introduced with the previous batch of students, mentors and everyone else there. They shared their Experiences. There were more than 50% girls; it was a happy feeling. Everyone had the same dreams and these were tech enthusiasts with same passion to learn. There were positive vibes coming from everyone that we should learn and there was a team working environment. It was a different feeling.

    + +

    The first month went by so fast.We learnt the basics of everything from Html, Css to Django Framework. We learnt how they work in real world and also learned project management basics from tools to practicals.We were assigned assignments and tasks. There were exams. And I even got chocolate and highest marks in the third test. I felt happy. Every Friday we had guest lectures from industry experts who shared their experiences. I loved how they shared everything with us, making us feel like their own family. They want us to grow and we were all motivated and learnt so many things from each and every person every single day. Every day was productive. It wasn’t hectic at all. The time was feasible and the environment was co-operative.

    + +

    For the ongoing second month we are divided into team of two members.We have already been assigned projects to implement all our learnings. We have been given time about 4 weeks to complete this project. My only goal for this month is to complete this project with all the hard work I can put in and learn many things each and everyday to make it more productive.

    + +

    I am grateful to Code for Nepal for selecting me as one of the Hawkins Fellow and giving me this opportunity.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/05/first-month-as-a-software-engineering-trainee/index.html b/2019/05/first-month-as-a-software-engineering-trainee/index.html new file mode 100644 index 00000000..e62fa2c1 --- /dev/null +++ b/2019/05/first-month-as-a-software-engineering-trainee/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + First month as a software engineering trainee | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    First month as a software engineering trainee

    +

    28 May 2019 - Seema Thapa

    +

    +

    After being selected as one of the Hawkins fellow, I searched for Insight workshop’s further background, course curriculum outline and its location to make sure I am going to the right place. In my view, most of the Nepali students get internship experiences where they just come to complete the syllabus of internship or the internship becomes a phase where students begin to lose their zeal in technology. Often, interns do not learn anything due to lack of guidance. I had a slight skepticism whether the workshop would be as promising as it looked. But when I entered Insight Workshop, it was nothing like what I have encountered in the past. It was fairly disparate from any other technology companies in Nepal. It was an ecstatic moment for me when I could see the academy was professionally equipped, provided with well defined resources and supported by highly experienced mentors.

    + +

    I joined workshop one week behind the actual schedule which gave me a push to work extra hard to recover my absence. I remember meeting Basna, one of the other Hawkins fellows welcoming me with a sweet gesture and I could feel every other members being cooperative and competent on the first day of workshop.

    + +

    The second week was productive in learning how to use Linux, Source Code maintenance in Git, how to use Skype effectively for communication and how to get access to full stack development tools and technologies. I got familiar with daily practices such as stand up session at sharp 10 AM in the morning with group members, using SCRUM board for personal and project development, mundane update of our progress at the end of day, Friday’s guest lectures and retro discussions on reflecting what went well or not over a week. It was completely a modern reality to perform task by teaming up with other members to solve problems both technical and non-technical.

    + +

    On the third and fourth week, we were given Python assignments, Front end designs to clone and do objective tests. I learned to delegate my tasks and I planned to accomplish my objectives by the deadline using Trello and we were provided online learning materials by our instructors.  I don’t like to miss a single day; I love being on time and every moment, I am learning something new. I am not exaggerating about how tough and high yielding our profession is. However, I genuinely sensed my daily six hours at work. Though, nothing comes easy, we have to train ourselves to become auto-didactic, brainstorm ideas, comprehend programming skills, follow stern and unanimous working environment. Last week, we learned to do basic crucial features of web development and I believe that I can develop my very own project with required functionality.

    + +

    Over the coming months, I have planned to upgrade my programming skills to take my project to next level, give my foremost at workplace, redraft my professional subjects like CV, LinkedIn profile and build an effective communication and networking environment. Overall, I have attained additional confidence and motivation to work harder in the tech field. I am pursuing this notion in the coming days to complete my purpose of being a Hawkins Fellow and a software engineering trainee.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/05/my-first-month-experience-as-a-hawkins-fellow/index.html b/2019/05/my-first-month-experience-as-a-hawkins-fellow/index.html new file mode 100644 index 00000000..64fae486 --- /dev/null +++ b/2019/05/my-first-month-experience-as-a-hawkins-fellow/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + My First Month Experience as a Hawkins Fellow | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    My First Month Experience as a Hawkins Fellow

    +

    28 May 2019 - Basna Ranjitkar

    +

    +

    It has already been a month of joining the program as a Hawkins fellow. In these four weeks, I have learnt a lot about the tasks I should be doing as a software engineer.

    + +

    Flash back to the day I first came to IW Academy feeling excited and thinking how the classes and fellow friends would be. I happened to get the confirmation mail of being selected as a Hawkins fellow only on the evening of April 16 when the class had already run for two days. I missed the classes and I had to recover the study I missed. So I reached to IW an hour early to learn what I missed. The friends are so welcoming and it was not hard to learn what I missed.

    + +

    The classes are running following the syllabus. The environment is so motivating seeing all academy friends eager to learn and committed to the task. The lecturers are always motivating us to work hard in these three months for our better future. Our class starts from 10am sharp and there is stand-up where we in group speak out about our progress to the project manager and the day follows with an hour-long lecture and hands-on practices for the rest of the day.

    + +

    Here is no spoon-feeding like we were done in school and college level. We are taught about best practises of using the code, resource sharing and given idea of how hectic job market can be. We are always motivated by our lecturer for self learning. It is important because when we will be doing real job, self learning is necessary because we might have to learn new language for the project. From the first week we were assigned assignments so that we would learn on our own and search and explore new things to complete them. This pushed us to explore new things on our own. We are told that the real job market will be more hectic than how we are feeling now to complete assignments. So regular hands-on practise will make easier. Here we are sat together randomly daily so that we get to know each other, be comfortable and be a good team player. In jobs, we always have to work in team so this is a good practise.

    + +

    I feel very lucky and thankful to the Code for Nepal for selecting me for this fellowship. It is a good opportunity to apply what I have been learning to volunteer for Code for Nepal and work for utilizing data.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/05/what-does-code-for-nepal-symbolize-for-our-community-member-richa/index.html b/2019/05/what-does-code-for-nepal-symbolize-for-our-community-member-richa/index.html new file mode 100644 index 00000000..5127f7d6 --- /dev/null +++ b/2019/05/what-does-code-for-nepal-symbolize-for-our-community-member-richa/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + What does Code for Nepal symbolize for our Community member Richa? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    What does Code for Nepal symbolize for our Community member Richa?

    +

    18 May 2019 - Shrijana Khanal

    +

    +

    + Recognizing and thanking Code for Nepal Community members +

    + +

    + In this post, we are highlighting Richa Neupane, our project manager! +

    + +

    Who are you and tell us how/where did you grow up?

    + +

    I am Richa Neupane. I was born and raised in Kathmandu.

    + +

    How did you become involved with Code for Nepal?

    + +

    I became involved with Code for Nepal in 2015, when the team was gathering online volunteers for the April earthquake response at that time.

    + +

    Code for Nepal is a volunteer-run organization, many of the volunteers have daytime jobs outside of Code for Nepal. Therefore, where is your passion and dedication for this organization derived from?

    + +

    I joined Code for Nepal only days before I graduated college. Back then, I was in the US and I really saw a way to contribute to Nepal through Code for Nepal’s vision of ending the digital literacy gap. I talked to a few volunteers and the co-founders online and I was inspired by their passion for change.

    + +

    What is your role in Code for Nepal? Do you see yourself changing this role anytime in the future?

    + +

    I am the project manager at Code for Nepal. I have joined as a part-time staff and it may change in the future.

    + +

    Where do you see Code for Nepal in the next few years and what can it do to improve?

    + +

    Code for Nepal should continue the work it is doing now. In the next few years, I think it will reach more corners of Nepal through programs like Visit Janakpur. I think having an office set up in Nepal would be helpful. I really like the idea of being able to work for Nepal from wherever you are!

    + +

    How is Code for Nepal different or special from other non-profits?

    + +

    Code for Nepal is different in the way that it is very transparent and open to all. It has the ability to bring small quick changes as well as the larger systemic problems such as corruption and inaccessibility to resources.

    + +

    How can others become more aware or involved with Code for Nepal?

    + +

    They can send us a message or fill our volunteer from online. They can also help through donations or just by sharing our products and providing feedback on how we can improve. Follow this link for more details.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/07/datahack-2019-crowdsourcing-map-data-to-ease-the-humanitarian-and-relief-activities/index.html b/2019/07/datahack-2019-crowdsourcing-map-data-to-ease-the-humanitarian-and-relief-activities/index.html new file mode 100644 index 00000000..eec8b659 --- /dev/null +++ b/2019/07/datahack-2019-crowdsourcing-map-data-to-ease-the-humanitarian-and-relief-activities/index.html @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DataHack 2019- crowdsourcing map data to ease the humanitarian and relief activities | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    DataHack 2019- crowdsourcing map data to ease the humanitarian and relief activities

    +

    26 Jul 2019 - Richa Neupane

    +

    +

    On July 20 and 21, fifteen humanitarian tech enthusiasts came to the DataHack 2019 – Map the districts affected by monsoon in Nepal at Outside’s office in Jhamsikhel, Lalitpur. The aim of the DataHack was to map the several districts which have been affected by monsoon rains in Nepal.

    + +
    +
    +
    + +

    Day 1, July 20: The event Started with participants’ introduction. Our project coordinator Nikesh Balami kicked off the event and introduced OpenStreetMap (OSM) to the participants and gave a hands-on overview on how to edit the map. He talked about the importance of open mapping and how OSM platform acts as a resource for humanitarian & social causes, giving the users the flexibility to  contribute on their own time as well as have an offline access through the app MAPS.ME.

    + +

    After the overview and some basic discussion, participants started mapping the affected areas. On the first day,, participants contributed to the mapping tasks created by Kathmandu Living Labs. Although all participants were editing the OSM for the first time, they completely mapped around 38 tasks within 5 hours. Participants mapped the roads, landmarks, residential areas, waterways, etc in the monsoon affected districts. According to Roshan Ghimire, program director at Code for Nepal, learning about the basics and importance of open mapping was crucial. Participants also stopped for a lovely lunch break and a Table Tennis game. 

    + +
    +
    +
    + +

    Day 2, July 21: **On the second day, participants worked on the mapping of Janakpur city and its surrounding areas on OpenStreetMap. The mapping tasks of Janakpur area was created by Code for Nepal. In between mapping, Nikesh Balami shared how such mapping of disaster prone areas helps ease the humanitarian and relief activities with participants. It helps relief workers and disaster preparedness planners to conduct their programs in these areas more smoothly.

    + +
    +
    +
    + +

    In an informal discussion, the participants gave feedback that the mapping process would be more effective if local people of these disaster prone areas were also involved in the DataHack. On the second day, a total of five participants completely mapped around 30 tasks. 

    + +

    Many participants have pledged to continue mapping. Being able to remotely contribute to the disaster preparedness work have motivated all the participants. However, just two days of mapping is not enough to complete all tasks.

    + +

    You can also contribute by first getting familiar with the OSM platform and then getting started with these tasks. 

    + +

    To map flood and landslide prone areas: https://tasks.klldev.org/contribute?difficulty=ALL 

    + +

    To map Janakpur city & surrounding areas: https://tasks.teachosm.org/project/707 

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/09/my-journey-at-insight-workshop-through-the-hawkins-fellowship/index.html b/2019/09/my-journey-at-insight-workshop-through-the-hawkins-fellowship/index.html new file mode 100644 index 00000000..4c86aee1 --- /dev/null +++ b/2019/09/my-journey-at-insight-workshop-through-the-hawkins-fellowship/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + My Journey at Insight Workshop through the Hawkins Fellowship | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    My Journey at Insight Workshop through the Hawkins Fellowship

    +

    19 Sep 2019 - Sumi Prajapati

    +

    +

    One morning I applied for an academy program in Insight Workshop (IW), a Software Company located in Naxal, Kathmandu. The deadline was just the night before. Luckily my application was counted. (Big thanks to my dearest friend Rachana for this). After a rigorous application process I was selected for the program. I also applied for this program from Hawkins Fellowship Program by Code for Nepal. I got selected as a Hawkins fellow from there too. I can’t express in words the feelings that I had that day. I was so excited and nervous about this journey.

    + +

    Everyone was so welcoming at IW. We were introduced with previous batch’s students, mentors and everyone else there. They shared their experiences and motivated us on the very first day. More than 50% of the trainees were girls; it was a happy feeling. I was around people with the same dreams and passion to become a future Full Stack Developer. Positive vibes were coming from everyone that we were there to learn. It was a different feeling.

    + +

    The first month went by so fast. We learned the basics of everything from Html, CSS to Python, Django Framework. We learned how the software development process works in the real IT world. Alongside programming, we also learned problem-solving, research and time management skills. We were given assignments and challenging tasks too to boost our skills. we have to complete them by the deadlines. There were exams too. Every Friday we had guest lectures from industry experts who shared their experiences. I loved how they shared everything with us, making us feel like their own family. They wanted us to grow together and we learned so many things from every person every single day. Every single day was productive. It wasn’t hectic at all; time was feasible, the environment was co-operative and supportive.

    + +

    In the last four weeks of this academic period, we were assigned a team project based on the concepts which we had learned earlier. Although I entered as a very beginner, in just two weeks of experience and proper guidance, I was able to build a complex web application. This gave me a lot of confidence exponentially raising my passion for software development. 

    + +

    Looking back to those three months, these were the most beautiful and exciting days of my life, as my career kickstarted. Currently, I am working at Insight workshop as a Software Engineer Trainee after completing these 3 months of the journey. I am so thankful for Insight Workshop as well as Code for Nepal for seeing potential in me and providing me with this opportunity. 

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/10/chart-companies-in-provinces-of-nepal/index.html b/2019/10/chart-companies-in-provinces-of-nepal/index.html new file mode 100644 index 00000000..55063b82 --- /dev/null +++ b/2019/10/chart-companies-in-provinces-of-nepal/index.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Chart: Companies in Provinces of Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Chart: Companies in Provinces of Nepal

    +

    21 Oct 2019 - codefornepal

    +

    +

    + +
    + Fruit vendor waiting for customers in Kathmandu, Nepal +
    Fruit vendor waiting for customers in Kathmandu, Nepal. By + +[Bryon Lippincott](https://www.flickr.com/photos/bryonlippincott/) +
    + +

    The total number of companies in Nepal is 923,356. Among, them just about half (50.1%) are registered. And on average, companies in Nepal employ less than 4 people. 

    + +

    Kathmandu, Jhapa, Rupandehi, Morang, and Sunsari are the districts with the highest number of companies in Nepal. 

    + +

    Province 3 has the most companies or establishments, followed by Province 1 and Province 5. Check out the chart below to see how many companies are in each province. 

    + +

    Source: Nepal Economic Census, 2018

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2019/11/volunteers-uploaded-over-2000-street-level-imagery-of-janakpur-a-city-in-nepal/index.html b/2019/11/volunteers-uploaded-over-2000-street-level-imagery-of-janakpur-a-city-in-nepal/index.html new file mode 100644 index 00000000..75525fc9 --- /dev/null +++ b/2019/11/volunteers-uploaded-over-2000-street-level-imagery-of-janakpur-a-city-in-nepal/index.html @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Volunteers uploaded over 2,000 street-level imagery of Janakpur, a city in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Volunteers uploaded over 2,000 street-level imagery of Janakpur, a city in Nepal

    +

    23 Nov 2019 - Nikesh Balami

    +

    +

    + +

    [November 3, 2019] Spending holiday by volunteering is fun, especially in this digital world when you can help a group of youth digitize their town. With this aim of mobilizing the local volunteers to map the street of Janakpur on OpenStreetMap; Code for Nepal collaborated with Internet Market Today, Appan TV and Smartha Nepal to organize 2019 Digitizing Janakpur Workshop. It was a followup event of 2018 workshop, where we launched https://www.visitjanakpur.com/ by mapping businesses of the city, and publishing photos and videos.

    + +

    As the use of technology has grown, everyone now depends on online search and service. Digital content like blog posts, photos, street views, promotional videos etcetera usually appear in online search results. A town needs to have digital presence and online map so locals and tourists alike navigate the area easily. 

    + +

    When Nepal is promoting Visit Nepal 2020 campaign, a platform like Visit Janakpur can be very useful, where the latest information about the city is contributed by local volunteers.

    + +

    The main aim of the 2019 digitizing workshop was: 

    + +
      +
    • To use Mapillary, an app, to map different routes of Janakpur key destination.
    • +
    • To teach young people how to become part of Google’s local guides community.
    • +
    • To enjoy the hands-on experience of taking 360 photos using Google Street View.
    • +
    + +

    Workshop Day

    + +

    15 volunteers gathered at Monsatic Higher Secondary School at 8:30 AM, where they received a welcome orientation from Program Coordinator of Code for Nepal, Sadikshya Karki. She shared the overall program agenda and quickly created a friendly environment within participants through warmup dance. I and Ishan Dongol accompanied her during the introduction.

    + +

    + +

    After the short introduction session and breakfast, the participants were asked to download and setup Mapillary accounts for the mapping. Ishan Dongol lead the hands-on session to teach participants how to use Mapilary. The participants then were divided into 3 groups for the field mapping, where they visited different key places of Janakpur to collect street views.

    + +

    + +

    After 3 hours long field visits and short lunch break, the participants went to the office premises of Internet Market Today, where the session on “How Search Works” was conducted by Amit Jha, Founder & CEO of Internet Market Today. 

    + +

    I then led a short session on how to take 360 photos using Google Street View app, where I shared the importance of 360 photos and key tips of taking beautiful photos.

    + +

    + +

    The workshop was concluded by Navin Shah, Managing Director of Appan TV and Sadikshya Karki, where they encouraged participants to be connected through social media and welcomed their contribution to the Visit Janakpur portal.

    + +

    Key Outcomes of the Workshop

    + +

    Participants were able to capture the 21 street view sequences, which consists of 2575+ images of various parts of Janakpur and few 360 photos.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2020/02/nepalmap-federal-explore-and-understand-nepal-using-data/index.html b/2020/02/nepalmap-federal-explore-and-understand-nepal-using-data/index.html new file mode 100644 index 00000000..51b85fcd --- /dev/null +++ b/2020/02/nepalmap-federal-explore-and-understand-nepal-using-data/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NepalMap Federal – Explore and understand Nepal using data | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    NepalMap Federal – Explore and understand Nepal using data

    +

    24 Feb 2020 - Nikesh Balami

    +

    +

    Code for Nepal has just launched the federal version of NepalMap, a web app that puts data about Nepal at your fingertips! Since 2016, this data portal has been the go-to source for many journalists, researchers, entrepreneurs and students; when they are looking for data or data visualizations.

    + +

    After the promulgation of 2015 constitution and adoption of federal structure, we see demand for data has increased. Data users have been continuously searching for data from aligned with the new federal structure which includes 753 local bodies, 77 districts and 7 provinces.

    + +

    To meet the demand of users, with the help of generous support of our volunteers, we are happy to launch the federal version of NepalMap – https://nepalmap.org/.

    + +
    +
    +
    + +

    Whether you live in Province 1 or anywhere else in Nepal, you can find out how many people live in your Province or District or Municipality. Or find out what kind of crops or vegetables farmers produce in the area where you live. On this version of NepalMap, demographics, agriculture, educational and household data are available.

    + +

    NepalMap uses National Data Profile, created by Central Bureau of Statistics, and other official sources, to create user-friendly data visualizations on key demographic issues. You can embed, access or download the data too. You can also compare any two areas side-by-side.

    + +

    NepalMap is based on Wazimap which is a fork of Census Reporter. Wazimap is built and maintained by Code for South Africa. All of these tools are completely open source. You can build one for your country.

    + +

    NepalMap is entirely built by volunteers who are committed to ensuring everyone has access to open data about Nepal. We are looking for volunteers who can help us add more data, and improve NepalMap. If you have the right skills, and would like to help, please complete this form or you can also directly create issues in our GitHub repo to report the bug. If you would like to access pre-federal data from 2011 Population Census, please check out: https://2011.nepalmap.org/.

    + +

    Code for Nepal is grateful to Clifton McIntosh for his guidance throughout the development process; Amit Chaudhary, Nitesh Rijal, Pratima Kandel, Ishan Dangol for their code contribution and Nirmal Rijal for helping us with data scraping.

    + +

    Explore NepalMap Federal – https://nepalmap.org/ and feel free to write to us at nepalmap@codefornepal.org if you need any further information.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2020/03/fellowship-by-march-19/index.html b/2020/03/fellowship-by-march-19/index.html new file mode 100644 index 00000000..c8e9a12b --- /dev/null +++ b/2020/03/fellowship-by-march-19/index.html @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You are a young woman and want to excel in the tech market in Nepal? Apply for this fellowship by March 19 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    You are a young woman and want to excel in the tech market in Nepal? Apply for this fellowship by March 19

    +

    07 Mar 2020 - codefornepal

    +

    +

    Hawkins Fellows from the class of 2019.
    + +

    We are pleased to announce that applications are open for the 2nd batch of Hawkins Fellows. The objective of the 12-week fellowship program organized by Code for Nepal in partnership with Insight Workshop is to help increase female talent in the technology job market in Nepal.

    + +

    (This is a rolling application process which works on a “first come first served basis”. The sooner you apply, you have a higher chance of being accepted.)

    + +

    About the fellowship program

    + +

    The Hawkins Fellowship by Code for Nepal in partnership with Insight Workshop Academy includes:

    + +

    A. A twelve-week program at the Insight Workshop Academy

    + +

    Fellows will be engaged full-time from Monday to Friday 10 am to 4 pm in the Insight Workshop classes

    + +

    B. A four-week capstone program

    + +

    For the capstone project Fellows can either build from their own ideas and interests or they can be involved in one of the following Code for Nepal projects

    + + + +

    C. A Monetary reward of Nrs 5,000 after the fellow successfully completes the program. (The fellowship award including the training, networking and more is worth Nrs 60,000.)

    + +

    Learning outcomes of the fellowship:
    +–
    Leadership and communications skills
    +– Access to network with established leaders in the field
    +– Project Management: Portfolio-building with Code for Nepal and Insight Workshop**
    +–**Technical skills: Open source and web development

    + +

    Deadline to Apply:  March 19

    + +

    Number of Fellows for April intake: 3

    + +

    Applicants must meet the following criteria to apply:

    + +
      +
    • +

      able to commit full-time for this Fellowship in Kathmandu

      +
    • +
    • +

      background in basic programming

      +
    • +
    • +

      identify as female

      +
    • +
    • +

      young professional or final year Bachelor’s student

      +
    • +
    + +

    We will call for interviews if you are shortlisted. Three fellows will work alongside the April batch of trainees of Insight Workshop Academy. To know more about the curriculum visit insightworkshop.io

    + +

    Fellowship timeline: April 6, 2019 to August 30,  2019

    + +

    You only have to fill one application form. Please fill and submit the form below by April 12.

    + +

    If you have questions that have not been answered on this page, please ask using the comments section below. Also, here are more blog posts related to Hawkins Fellowship including a few by our Fellows from 2019.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2020/05/google-data-now-shows-fewer-people-in-nepal-are-staying-indoors-amid-the-coronavirus-pandemic/index.html b/2020/05/google-data-now-shows-fewer-people-in-nepal-are-staying-indoors-amid-the-coronavirus-pandemic/index.html new file mode 100644 index 00000000..5d4d89b6 --- /dev/null +++ b/2020/05/google-data-now-shows-fewer-people-in-nepal-are-staying-indoors-amid-the-coronavirus-pandemic/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google data now shows fewer people in Nepal are staying indoors amid the Coronavirus pandemic | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Google data now shows fewer people in Nepal are staying indoors amid the Coronavirus pandemic

    +

    19 May 2020 - codefornepal

    +

    +

    The Government of Nepal has reported over 350 COVID-19 positive cases and two deaths due to this novel coronavirus as of this writing. To prevent the mass spread, Nepal has been under a national lockdown since March 24.

    + +

    In late March, Google released its COVID-19 Community Mobility Report to help users “understand responses to social distancing guidance related to COVID-19.” Code for Nepal compared Google’s reports from March 29 and May 9 and found fewer people in Nepal are staying indoors amid the coronavirus pandemic. 

    + +

    Mobility trends for places categorized as “retail and recreation” or places such as restaurants, shopping centers, or movie theatres on March 29 decreased sharply (-78%) compared to February 16. Mobility trends for places categorized as “grocery and pharmacy” or places such as grocery markets, food shops, or pharmacies decreased by 69%. 

    + +

    Almost six weeks later, on May 9, mobility trends to “retail and recreation” have increased by 11% compared to the March 29 trend. And mobility trends for “grocery and pharmacy” have increased by 17%. Similarly, mobility trends for workplaces increased by 37%. 

    + +

    For details, check out this chart. 

    + +

    It is important to note that this data is not representative of all Nepalis. According to Google, “insights in these reports are created with aggregated, anonymized sets of data from users who have turned on Google’s Location History setting.”

    + +

    We welcome your thoughts and comments below.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2020/11/21/cumulative-number-of-confirmed-cases.html b/2020/11/21/cumulative-number-of-confirmed-cases.html new file mode 100644 index 00000000..c99d3101 --- /dev/null +++ b/2020/11/21/cumulative-number-of-confirmed-cases.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cumulative number of confirmed COVID-19 cases in Nepal has increased dramatically' | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Cumulative number of confirmed COVID-19 cases in Nepal has increased dramatically'

    +

    21 Nov 2020 - codefornepal

    +

    +

    Just 6 months ago, Nepal had just 1,500 confirmed cases of COVID-19 in Nepal. Since then the number of confirmed cases has increased dramatically in the country. Globally, experts are warning that during winter COVID-19 cases will likely rise as gatherings move indoors.

    + +

    Dataviz:

    + + + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/02/14/launching-a-fellowship-program-to-build-data-skills-of-over-500-nepalis-globally.html b/2021/02/14/launching-a-fellowship-program-to-build-data-skills-of-over-500-nepalis-globally.html new file mode 100644 index 00000000..93f89062 --- /dev/null +++ b/2021/02/14/launching-a-fellowship-program-to-build-data-skills-of-over-500-nepalis-globally.html @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Launching a Fellowship program to build data skills of over 500 Nepalis globally | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Launching a Fellowship program to build data skills of over 500 Nepalis globally

    +

    14 Feb 2021 - Ravi Kumar

    +

    +

    Launching a Fellowship program to build data skills of over 500 Nepalis globally

    + +

    We are excited to launch Data Fellowship to build the data skills of over 500 Nepalis. There are only two criteria to apply for this fellowship. First, applicants must be able to commit at least 5-10 hours per week for the first 2-3 months. Second, they should be curious and interested in learning new skills.

    + +

    Applicants can be based anywhere. They can come from any background. They can be students, professionals, or unemployed. We highly encourage women and especially people from provinces 2 and 6 to apply.

    + +

    In a world where everything is digitized, data skills have become critical. The ability to find, analyze and use data can not only help one do well professionally but also lead a more meaningful life. During this historic and tragic pandemic, we have been seen how people and businesses that are digitally connected and data-savvy can withstand the crisis compared to those who are not.

    + +

    Any Nepali who is keen on making progress personally, professionally, or tackling a challenge in their community will benefit from this fellowship.

    + +

    This fellowship provides a safe and convenient opportunity for Nepalis to gain new skills. Those who have access to the Internet and a laptop can take courses at their own convenience and earn certificates. The Fellows will also have the opportunity to virtually contribute to civic technology and open data products such as:

    + +
      +
    1. Open Data Nepal
    2. +
    3. NepalMap
    4. +
    5. AskNepal
    6. +
    7. Sangraha
    8. +
    + +

    The total monetary value of the program is over USD 200,000 or 2 crore Nepali rupees. This fellowship would not have been possible without the generous support of DataCamp, a leader in building the data skills of people around the world.

    + +

    Open Knowledge Nepal and Code for Nepal have partnered to offer support for career opportunities and mentorship to Fellows.

    + +

    Selected Fellows can choose to take classes from DataCamp experts at their own convenience to become Data Scientists, Data Engineers, Data Analysts, or Quantitative Analysts. If a Fellow has completed a certain career track and is interested in learning more skills from DataCamp, we would be keen to support that as well.

    + +

    We welcome you to apply and help us spread the word.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/04/11/datacamp-experience.html b/2021/04/11/datacamp-experience.html new file mode 100644 index 00000000..f533f212 --- /dev/null +++ b/2021/04/11/datacamp-experience.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How DataCamp is helping me learn data science | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    How DataCamp is helping me learn data science

    +

    11 Apr 2021 - Anshu Adhikari

    +

    +

    Launching a Fellowship program to build data skills of over 500 Nepalis globally

    + +

    In college, I am planning to study computer science and economics. However, I did not want to wait to learn the basics of data science till I got to college. In that sense, Datacamp has truly helped me overcome the barriers of time and space.

    + +

    I got access to DataCamp as a member of Code for Nepal, a non-profit organization working to increase digital literacy and data literacy in Nepal. DataCamp as part of its global effort to build data skills donated thousands of subscriptions to organizations and schools globally.

    + +

    As I worked to enhance the learning experiences of 100s of others who were selected as Code for Nepal’s Data Fellows, I was increasing my own knowledge of data science and familiarity with DataCamp. The courses on datacamp are developed to meet the expectations of learners at every level including one like myself. I have realized that to ensure the quality of learning and include the needs of different types of learners, tools like podcasts, hints, assessments have been developed. I have found them very helpful.

    + +

    Also, students can rate the courses and give feedback about their learning experience to DataCamp which helps improve the courses.

    + +

    I had no prior experience with programming languages. I knew a little bit of HTML and Q-basic that I had learned in middle school. As a total beginner at the start of my datacamp journey, I discovered ‘Introduction to python’, “Introduction to R”, and “Introduction to SQL, are free courses on Datacamp and they were the perfect place to start. After I finished these free courses I took a skilled assessment which recommended me to learn Python.

    + +

    The next step in my journey was to start my first lesson on DataCamp. This is where I had to decide to make a decision of whether I wanted to start with an individual course or a track. The courses started with very basic: types, variables, basic calculations. Therefore even as a beginner that has never written or read a single line of code, I was able to follow the material presented very easily.

    + +

    The courses on DataCamp take place on your browser so you don’t have to download anything to learn. I am very impressed with the concept of interactive e-learning with DataCamp as it allowed me to become active with my own learning experience. Interestingly Datacamp XP is a symbolic point-system that rewards learners like me for engaging in learning. XP is awarded to learners for progressing in courses, exercises, and projects.

    + +

    When I use hints or show answer methods for solving problems a certain amount of my XP was used which motivated me to try and solve problems on my own as I did not want to lose the hard-earned XP.

    + +

    Datacamp also has a section dedicated to getting real-life experience with projects. I have some courses bookmarked so that I know what I have next on my list to achieve and I can revise by taking assessments that are already there on datacamp for me. On the live events tab, there are always upcoming events which has webinars and live training sessions to learn about data-driven organizations. I am thrilled to learn new things every day and datacamp feels like a roadmap where I am on a data car that leads me safely by minimizing risk and providing clarity to reach my destination as a data scientist. This journey has to be my favorite of all time.

    + +

    Finally, let me share that when I finished my first-course introduction to python I was very proud of myself. After all, I managed to accomplish a significant step towards eventually becoming a data expert. I realized that becoming data fluent would require more time and dedication. I look forward to completing more courses, tracks, and projects that DataCamp has to offer.

    + +

    This may be the fact that all our fellows at DataCamp have a positive experience with different courses like python, R, SQL, and Machine learning. In the era of the COVID-19 pandemic, as a high school student, I realized it is necessary to reinforce the various learning Opportunities that prioritizes strengthening my data skills and DataCamp was the best platform for it.

    + +

    In the coming weeks, I will share how others in our community are using DataCamp. In the meantime, I would be curious to hear about your experience in coding. Please share your experiences or thoughts in the comment section below.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/05/02/donate-to-save-lives-and-help-nepalis-fight-COVID-19-pandemic.html b/2021/05/02/donate-to-save-lives-and-help-nepalis-fight-COVID-19-pandemic.html new file mode 100644 index 00000000..7e9f972c --- /dev/null +++ b/2021/05/02/donate-to-save-lives-and-help-nepalis-fight-COVID-19-pandemic.html @@ -0,0 +1,325 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Donate to save lives and help Nepalis fight COVID-19 Pandemic | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Donate to save lives and help Nepalis fight COVID-19 Pandemic

    +

    02 May 2021 - Code for Nepal

    +

    +

    + +

    Why

    + +

    Nepal has run out of hospital beds due to rapidly rising COVID-19 cases. The Health Ministry has said that the situation is “unmanageable”. Just a few weeks ago, Nepal was recording fewer than 100 cases a day. On May 1, it recorded over 7,000 COVID-19 cases. Data suggests Nepal currently has one of the highest positivity rates in the world and is on track to double its COVID cases every five days. There are tons of people who have lost their daily income and are in need of immediate relief.

    + +

    This fundraiser is intended to help bring much needed resources to people within and outside of Kathmandu including but not limited to meals to those in need and medical professionals.

    + +

    Our goal is to raise USD 15,000. All your donations are tax deductible in the US. We also encourage you to speak with your employer to explore the possibility of employer matching.

    + +

    How to Donate

    + + + +
    + + + +
    + +

    Implementation and transparency

    + +

    We will publish complete details of donations every 30 days on our website: https://codefornepal.org and share via our social media channels.

    + +

    Details and cost of every single item procured through this fundraiser will be published via our website.

    + +

    Use of funds

    + +

    We are partnering with Samartha Nepal, Janata clinic and other local groups to provide resources to help people who need imemdiate support.

    + +

    We are also working to support families who have lost their sole breadwinners and have no source of income. At this rate, it is very likely that there will be scores of families without a source of income and in need of basic supplies to survive on a daily basis within and outside of Kathmandu Valley. With our network of partners all over the country, especially in the Southern border of Nepal that is being hit terribly, we aim to expand our support.

    + +

    Join us in our mission to help Nepalis. Please share this with your friends and family.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/05/10/Data-fellowship.html b/2021/05/10/Data-fellowship.html new file mode 100644 index 00000000..f0503498 --- /dev/null +++ b/2021/05/10/Data-fellowship.html @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Data Fellowship has allowed me to indulge myself with guided and self-started projects | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Data Fellowship has allowed me to indulge myself with guided and self-started projects

    +

    10 May 2021 - Nigin Pun

    +

    +

    Launching a Fellowship program to build data skills of over 500 Nepalis globally

    + +

    If you ask me if my gap year has taught me anything significant, I’d say that seeking knowledge continuously is the one thing that has stayed with me.

    + +

    And Code for Nepal came at the right time to act as a bridge when I was searching for ways to learn data science for free! How?

    + +

    Code for Nepal launched its fellowship program where fellows would get access to DataCamp for $0!

    + +

    I felt like I hit the jackpot and I didn’t think twice before applying because I knew it was the right fit for me. DataCamp as part of its global effort to build data skills donated thousands of subscriptions to organizations and schools globally.

    + +

    As a fellow at Code for Nepal, I got access to a multitude of courses and resources via Data Fellowship which let me dive deep into the data world like never before.

    + +

    It was euphoric to re-learn courses interactively which I had learned via different online courses that were like traditional classes but on a computer!

    + +

    But with Datacamp, I could code simultaneously while getting instructions. Subsequently, my learning time grew exponentially!

    + +

    I had the time of my life exploring Business Analytics courses during my gap year.

    + +

    Frustrated, I started recording my eating habits on an excel sheet and visualized it to find patterns between my diet and its influence on my sinus problem.

    + +

    Finding that dairy products and low water consumption was related to surged congestion and toothache, I changed my diet and increased water consumption to improve my health.

    + +

    I also increased my yoga time after noticing a pattern between reduced toothache and increased yoga duration.

    + +

    Subsequently, my interest in Analytics grew even more. I plan to utilize the robust analytics program at Datacamp to shape solutions to people’s problems like I did for myself.

    + +

    Datacamp has courses that have helped me leverage data tools, maintaining databases, and creating and managing data analytics that helps me connect dots between marketing and analytics, improving my problem-solving skills.

    + +

    Using the tools, I was able to identify students’ major issues (analysis) and address them in collaboration with our startup- TheVidhwan’s- student ambassadors by acquiring and analyzing 300 student data.

    + +

    During college, I aspire to continue connecting the dots between marketing and analytics thereby improving my problem-solving skills. Through analysis and models, I want to create patterns and unravel mysteries about people’s behavior to have a deeper understanding of their problems.

    + +

    And through marketing, I plan to shape creative ideas to connect and communicate with people.

    + +

    The Data Fellowship has allowed me to indulge myself with guided and self-started projects which adds a whole new perspective to my experience as I tackle real-world scenarios.

    + +

    And Datacamp has made it easy enough for me to execute such projects at the comfort of my home sipping coffee!

    + +

    For my project, I collected, analyzed, and visualized company data of Pacific Human Resources Pvt. Ltd that is being used for the company’s marketing and its website.

    + +

    Furthermore, the community that we have at Code for Nepal Fellowship is just what I needed while struggling with my project.

    + +

    Our monthly session that is led by the founder himself allowed me to get my questions answered by him and other data professionals.

    + +

    Capitalizing on the power of data has helped me realize how much progress we need to make as a country.

    + +

    And for that reason, I am starting the change with myself and the people around me!

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/05/17/covid-fund-nepal.html b/2021/05/17/covid-fund-nepal.html new file mode 100644 index 00000000..7b9b271a --- /dev/null +++ b/2021/05/17/covid-fund-nepal.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Running list of fundraisers to support Nepal to fight COVID-19 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Running list of fundraisers to support Nepal to fight COVID-19

    +

    17 May 2021 - Code for Nepal

    +

    +

    Let us all help the volunteers and organizations who are helping Nepal by building a database of all the fundraisers and their expected goals. A database will help Nepalis identify funding gaps and take appropriate actions.

    + +

    See the running list of fundraisers gathered by Code for Nepal volunteers: bit.ly/covidfunddatabase

    + + + +

    Here is the running list of fundraisers curated by members of Student Coalition for Nepal and Code for Nepal volunteers.

    + + + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/06/16/Upskilling-in-the-domain-of-mechanical-engineering-with-data-science.html b/2021/06/16/Upskilling-in-the-domain-of-mechanical-engineering-with-data-science.html new file mode 100644 index 00000000..30b53aab --- /dev/null +++ b/2021/06/16/Upskilling-in-the-domain-of-mechanical-engineering-with-data-science.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Upskilling in the domain of mechanical engineering with data science | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Upskilling in the domain of mechanical engineering with data science

    +

    16 Jun 2021 - Nabin Joshi

    +

    +

    I am Nabin Joshi, aData fellow at Code for Nepal +. I am a mechanical engineering student. I received my bachelor’s degree in 2019 from Kathmandu University. Many technological advancements radically modified machines over time, due to researchers and scientists that worked tirelessly to make things happen the way they are now. Machines, which were completely mechanically driven only a few years ago, have now begun to work automatically, thanks to programming, artificial intelligence, machine learning, and other technologies. This progress piqued my curiosity, which evolved into a desire to pursue Mechanical Engineering as a bachelor’s degree.

    + +

    But during my college years, I was not interested in programming; C and C++ were the only two classes I had taken in my first year. Every year, we were also required to complete engineering project work as part of our course credit. I realized the true usefulness of programming when I was in my third year because it was and still is used in almost every field. The synergistic pairing of mechanical engineering and computer science helps the upskilling in this domain. I deduced, “It is the future.” My desire to learn python grew even stronger thereafter, thanks to its simple syntax.

    + +

    I learned about the DataCamp in 2020 from a Facebook ad. I impulsively registered for one of the courses because it was available for a limited time for free. In 2021, I accessed DataCamp + for the second time, this time as a Data Fellow at Code for Nepal. I’ve enrolled in the Python Programmer and Machine Learning career track, as well as numerous other python programming courses that have helped me to develop my basic coding skills. Because I had no idea what basic coding abilities a mechanical engineer would need, I began taking courses at random, in a rush to learn everything that came my way, whether it was relevant or irrelevant to my career. I used to wonder after enrolling in a course, “Is this the right course for me?”

    + +

    I wished DataCamp had a career track titled Python for Mechanical Engineers to make things easier. I’m not sure if one exists. It took me approximately two and a half months to figure out what to learn and what to disregard at DataCamp, which covers a wide range of topics. I learned and am currently learning fundamental programming skills and tools through the Code for Nepal fellowship. It is an accomplishment for me to have progressed from nothing to something.

    + +

    I’m still undecided about what I want to pursue as a career, but I’m interested in becoming an automation engineer, a data scientist, or a mechanical design engineer, to name a few. Being a Data Fellow at Code for Nepal has been quite beneficial in assisting me in achieving my goal.

    + +

    As I progress in my datacamp career tracks I have realized just like how Steve Jobs said in a famous Stanford commencement speech “You can’t connect the dots looking forward; you can only connect them looking backward” I have to believe that the dots (code skills) will connect to what I’ll be doing in the future. Believing that the dots will join in the future motivates me to keep doing what I’m doing today. We’re getting closer to the end of the DataCamp fellowship with each passing day, and I’m starting to acquire a sense of how to make the most of it.

    + +

    The opportunity to participate in the Code for Nepal fellowship was one of the nicest things that have ever occurred to me, and I am grateful to Code for Nepal for providing me with this fantastic opportunity.

    + + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/06/18/Reflecting-on-the-journey-and-bidding-farewell-to-Code-for-Nepal-community.html b/2021/06/18/Reflecting-on-the-journey-and-bidding-farewell-to-Code-for-Nepal-community.html new file mode 100644 index 00000000..fc7be2ea --- /dev/null +++ b/2021/06/18/Reflecting-on-the-journey-and-bidding-farewell-to-Code-for-Nepal-community.html @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reflecting on the journey and bidding farewell to Code for Nepal community | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Reflecting on the journey and bidding farewell to Code for Nepal community

    +

    18 Jun 2021 - Nikesh Balami

    +

    +

    I remember the exact date, it’s October 17th, 2016 - A day when I landed into the AskNepal initiative while doing random online research; a day when I casually message one of the founders of Code for Nepal, Ravi Kumar, expressing my interest in leading and contributing. Looking back, it’s difficult for me to summarize the journey in words; almost 5 years went by within the blink of eyes.

    + +

    When I started, I wanted to be focused on leading one initiative, which was AskNepal; but as time progressed I remember volunteering for so many interdisciplinary projects, programs and positions. Unfortunately, this awesome journey will come to halt this April 2021, as I step down and bid farewell to Code for Nepal community. So yay, I might not be actively engaged in the community activities and projects from April onwards.

    + +

    Taking this decision to bid farewell wasn’t easy for me but a year-long pandemic has made my personal and professional life a little messy; forcing me to take some major decisions to collect life back to normal. Also, I believe 5 years is a long time and this is a good time for me to move on; so other volunteers can utilize the community platform and get a similar opportunity to contribute and prove themselves.

    + +

    I still will be wondering and struggling in the field of data and technology. So, if anyone wants to reach out; my email nikeshbalami@gmail.com) will be always open for collaboration. The aim is to make sure that everyone has free and open access to the key information, empowering themselves to be able to make decisions about their own lives based on the information that wasn’t available before.

    + +

    Reflecting on the journey

    + +

    Shaping AskNepal initiative - my project plan to reboot the entire initiative was a complete flop, but we made some progress in terms of further enhancing the project. We successfully brought the project under the joint partnership of Open Knowledge Nepal and Code for Nepal, to ease its implementation. Also, with the support from OKN colleagues, Sagar Ghimire & Shubham Ghimire, we improved the user interface. We also were able to localize the platform in the Nepali language, many thanks to the volunteers of Kathmandu University and the guidance of Saroj Dhakal. Unfortunately, we were never able to acquire dedicated funding to support the outreach activities of the project. The good-looking project proposal remains in my Google drive. If someone is still looking to support, feel free to reach out.

    + +

    Organizing #DigitalNepal conference - In the midst of tragic events and strike at province 2, we successfully organized the Digital Nepal conference at Janakpur, which was one of the biggest out of Kathmandu valley technology events. A little nervous, a little excited; I remember my friend Avinash and I, taking a flight from Kathmandu. It was all worth it and many thanks to Pratap Adhikari, who then was a member of the Association of Youth Organizations Nepal (AYON), for making it memorable, by helping us explore the entire Janakpur. You can read my take on the Digital Nepal conference, the event was full of enthusiasm with diverse audiences.

    + +

    Building civic tools - Something I love, crowdsourcing the idea and converting it into impactful projects with the help of wonderful volunteers. Out of many, one of the memorable projects was the Election Nepal portal, although the portal wasn’t sustainable for a longer period. I have shared the journey of online collaboration in building the portal with the Open Nepal team, feel free to read. The source code and datasets are also openly available for everyone to reuse. Another project is Visit Janakpur, I wasn’t involved in the development of the project, but helping the team organize the “Digitizing Janakpur Workshop” was fun. At the end of the three and half days workshop, we built 542 map points, 55 plus 360-degree imageries and 12 video stories. You can read more details regarding how we helped improve the digital footprint of Janakpur from my [blog]https://codefornepal.org/2018/11/improving-digital-footprint-of-janakpur/.

    + +

    Hosting local and global events - In the span of 5 years, I remember helping in the coordination of many events, that too in various parts of the country. Some of them include Smart Cities Workshop, in partnership with Global Peace Foundation; AngelHack Hackathon with support from ING Group, DataHack 2019 to map the districts affected by the monsoon in Nepal, 2019 Digitizing Janakpur Workshop to map the street of Janakpur on OpenStreetMap and Digital Literacy Training at Sindhupalchowk.

    + +

    Improving NepalMap portal - When I first joined Code for Nepal community; NepalMap was already a thing with a very good user base. I feel very grateful that I got an opportunity to work with both teams who developed the old pre-federal and new federal version of NepalMap, especially with Clifton McIntosh, who despite being non-Nepali got such a deep understanding of Nepal. In the pre-federal version, I contributed the local elections and business data. Adding business data was fun, where I spent quite some nights understanding its patterns, you can read my experience regarding the understanding of the business data pattern. Which gave me confidence in coordinating the development of the federal version. Many thanks to Clifton McIntosh, Amit Chaudhary, Nitesh Rijal, Pratima Kandel, Ishan Dangol and Nirmal Rijal; without whom the development of NepalMap Federal would not have been possible.

    + +

    Launching fellowship - Helping with the launch and coordination of the different fellowship programs was also one of the memorable parts of the journey. Recent activities include the launch of the Hawkins Fellowship and Data Fellowship program, where we aim to build data skills of over 500 Nepalis globally. If you are someone who is looking for any opportunity to kickstart the carrier in the field of data, feel free to apply.

    + +

    Final note

    + +

    As I previously mentioned, my focus will still be in the field of data and technology, so if you are someone who works in a similar field, we definitely have a higher chance of meeting and working again. In the end, I would like to thank Ravi Kumar for his mentorship; without him, this phase of life could have been boring.

    + +

    See you all on the other side 👋

    + + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/06/26/My-Code-For-Nepal-Data-Fellowship-Experience-as-an-Actuarial-Science.html b/2021/06/26/My-Code-For-Nepal-Data-Fellowship-Experience-as-an-Actuarial-Science.html new file mode 100644 index 00000000..5604f80d --- /dev/null +++ b/2021/06/26/My-Code-For-Nepal-Data-Fellowship-Experience-as-an-Actuarial-Science.html @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + My Code For Nepal Data Fellowship Experience as an Actuarial Science Student | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    My Code For Nepal Data Fellowship Experience as an Actuarial Science Student

    +

    26 Jun 2021 - Krishna kumar Shrestha

    +

    +

    Everyone who is reading my blog, hello and Namaste. Hello, my name is Krishna Kumar Shrestha, and I am now studying for a bachelor’s degree in Actuarial Science at Tribhuvan University. I was born in Banepa and currently reside in Kathmandu. My favorite subject has always been mathematics, and I’ve always wanted to work in disciplines linked to mathematics.

    + +

    I chose to major in actuarial science, which entails a lot of statistics and mathematics. As an actuarial student, being able to interpret vast amounts of data is essential. I had been studying programming languages such as C, C++, MATLAB, and R to prepare for this. The only thing I lacked was practical data experience. I learned about a DataCamp fellowship from Code for Nepal a few months ago when browsing LinkedIn. I applied after learning of this and was fortunate enough to be chosen. After receiving the scholarship from Code for Nepal, I began working on projects to gain hands-on experience. But I had the impression that I lacked the necessary talents to execute them. So, from DataCamp, I chose a professional path as a Data Analyst utilizing R.

    + +

    For the past three months, DataCamp has been my best buddy and I am thoroughly enjoying the companionship it provides. I am grateful to Code for Nepal for allowing me to participate in this fellowship. DataCamp required a lot of hands-on coding, which I didn’t love at first. At times, I was concerned and wondered aloud, “Will I be able to stay motivated to finish this course?”

    + +

    But, as time went on, I found that practice questions had assisted me in learning more. Those inquiries compelled me to delve further into the intricacies, hunt for more information and groomed me along the way. You know, I used to earn very little XP because I couldn’t solve many questions at first, but I progressively tried, started solving problems on my own, and performed well.

    + +

    The crucial thing I learned from this data fellowship is professionalism in data analysis. It has changed my vision to explore the data and I was able to generate innovative ideas from data. When I used to do my project in college, most of the time I got clean data for my analysis. But in the real world, the situation is completely different. Most of the time we will get unstructured and dirty data and we must spend too much time cleaning them. This means whatever we learned, cannot be applied until we clean them. So, what I found out is that the data camp has designed its track to fulfill these gaps and provide students with real-world skills.

    + +

    I’m having so much fun at DataCamp, I’ve decided to pursue a career as a Data Scientist using R because Code for Nepal has motivated me to make the most of this opportunity. In a similar vein, I’m nearing the end of my certification process. Hopefully, I will complete the task and acquire DataCamp certification.

    + +

    Finally, I’d like to thank the Code for Nepal team for giving me this opportunity and for arranging so many inspiring events for youth like me to learn more.

    + + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2021/07/11/Experience-being-a-data-fellow-at-Code-for-Nepal.html b/2021/07/11/Experience-being-a-data-fellow-at-Code-for-Nepal.html new file mode 100644 index 00000000..8f69615e --- /dev/null +++ b/2021/07/11/Experience-being-a-data-fellow-at-Code-for-Nepal.html @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Experience being a data fellow at Code for Nepal and internship at Open Knowledge Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Experience being a data fellow at Code for Nepal and internship at Open Knowledge Nepal

    +

    11 Jul 2021 - Binita Gyawali

    +

    +

    Binita Gyawali, a graduate of Computer Science and Information Technology from Butwal Multiple Campus, data Science journey with Code for Nepal and Open Knowledge Nepal.

    + +

    I am Binita Gyawali, a graduate of Computer Science and Information Technology from Butwal Multiple Campus. I have been exploring the fields of data science and artificial intelligence for about six months. My research interest is in different applications of data science and artificial intelligence, particularly computer vision.

    + +

    I have been working since my freshman year to fill the gender gap in the tech community of Nepal, especially Province no. 5. A strong proponent of girls’ coding, I co-founded Butwal Coder Girls, a non-profit organization, in 2016 to motivate girls in coding, either as a hobby or as a career. Now, after exploring data science and seeing the landscape of girls’ involvement in data science, I feel more girls should be encouraged to pursue careers in data science, data engineering, and artificial intelligence.

    + +

    What have you learned from DataCamp and how has DataCamp benefitted you so far? +I had no prior experience with data science or programming. I wanted to learn Python programming and do some data science. As a result, I looked into instructions from a variety of places. I felt bewildered in the new world of programming and data science when I referred to those materials. Put it simply, there was too much to catch. Things were not as well arranged as I had hoped. As a result, I was frustrated and contemplated quitting programming at one point.

    + +

    But everything changed when I got access to DataCamp through Code for Nepal Fellowship program. I was finally able to organize my studies. DataCamp provided step-by-step instruction in the form of skill and career tracks. That was precisely what I needed. Another feature of this Fellowship that I like was the ability to learn anything I wanted in DataCamp. I struggled with basic programming principles on several instances, and happily, DataCamp allowed me to take any basic classes or view any basic programming videos I chose. DataCamp acted as a mentor for me with its guided projects that inspired me to pursue Python and data science as a career because I was able to observe how the skills I gained were applied in the real world.

    + +

    How has the Data Fellowship from Code for Nepal supported you in your career growth? +Despite being a major fan of data science, I never got the chance to work in it. I’d always wanted to understand how to convert raw data into a tidy, appealing manner. Presenting data in the form of beautiful graphs has always piqued my interest. When I was in school, I used to tinker with excel whenever I had any data. My bucket list item is to learn how to analyze data using mathematical models. Data cleansing, data analysis, data visualization, and data modeling are among my best hobbies to do.

    + +

    I quit my job to pursue my true calling: data science. I came across the data fellowship offered by Code for Nepal and Open Knowledge Nepal and applied instantly. The data fellowship encouraged me to follow my interest in data science by researching and beginning to combine my career in the field. Observing other students conduct intriguing work motivated me to leverage data to create data-driven analytical tools.

    + +

    After two months of diligently seeking the fellowship, I was offered a data science internship with Open Knowledge Nepal, which marked the start of my professional data science journey. Right now, I’m merely scratching the surface of data science. I aspire to improve in my career with time and experience

    + +

    What are the other benefits of this Fellowship, apart from the DataCamp subscription? +Bringing attention to DataCamp is one of the numerous ways Code for Nepal is attempting to assist us in developing data skills. This Fellowship has several advantages, including assisting in the development of my portfolio and encouraging networking. For me, the “Data Fellowship” is my first data science involvement, thus it is quite valuable. This fellowship program has stood out in my resume and reflected well in my portfolio, as attested by HR experts and project managers from the several firms I interviewed for.

    + +

    What do you believe the next step is in your career, and how can we help you get there? +After completing my bachelor’s degree in computer science and information technology, I am eager to gain more experience in the field of computer vision and further develop my research interests. So, the next stage in my career will be to continue my education in America. As a result, I am excited to apply for a Ph.D. in computer science with a computer vision emphasis in the fall of 2022. +Code for Nepal, I believe, has a strong professional network both within and outside Nepal. It would be extremely beneficial if Code for Nepal could assist me in connecting with AI research professionals (such as Ph.D. students, researchers, professors, and others) with whom I could work as a research assistant (even on a volunteer basis) or receive mentorship.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/04/04/From-a-Data-fellow-to-Program-Assistant-for-Fellowship-Program.html b/2022/04/04/From-a-Data-fellow-to-Program-Assistant-for-Fellowship-Program.html new file mode 100644 index 00000000..a5473bdf --- /dev/null +++ b/2022/04/04/From-a-Data-fellow-to-Program-Assistant-for-Fellowship-Program.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a Data fellow at Code For Nepal to Program Assistant for the Fellowship Program | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    From a Data fellow at Code For Nepal to Program Assistant for the Fellowship Program

    +

    04 Apr 2022 - Prayatna Mishra

    +

    +

    Prayatna Mishra is an undergraduate student currently studying in Deerwalk Institute of technology. He believes in giving back to the community.

    + +

    I always knew I would find myself in the tech industry from a very young age. But as I entered my 20s , I was clueless regarding which sector to choose in the IT industry. To find where my true passion lies, I had planned to explore every sector in the IT industry. With this purpose, I applied for a Data Fellowship organized by Code For Nepal and got accepted.

    + +

    Making the most out of the opportunity and leisure time that pandemic offered me, I allocated 2 hours of my morning to learn even if that meant I had to be a morning person from a night owl. Each day I was enthusiastically learning and I felt more accomplished. During my tenure as a Data Fellow, I completed two courses from Career track : “Python Programmer” and “Data Scientist with Python”. All thanks to DataCamp, where lectures videos were informative, tutorials were effective and exercises were interactive and engaging. This all made my learning fun and not monotonous.

    + +

    Being a Data Fellow, I didn’t have much idea about the impact that Code for Nepal was making until the networking event. After having insights about the organization , a part of me wanted to be part of the team and contribute to the cause . Then, I reached out to Ravi ( Founder and volunteer of Code for Nepal ) about my interest in volunteering . I also remember being asked , “Do I really want to do all the boring stuff that falls in program management?”. After fully convincing Ravi, I was part of the team.

    + +

    Being a part of the team was different from being a data fellow. I had more power but had even more responsibilities. I was working with people who were already experts in their field. The perks of being the youngest one in the team is that you will be guided by professionals who are experienced . They encourage and bring the best out of you. I had the same perks , I was learning while assisting the team.

    + +

    One of the grateful moments that I realized was when I got a chance to review applications of potential to-be Data Fellows.Reading through the lines I realized there were people in Nepal who have been deprived from learning but were doing everything in their hand to learn. At that moment , I felt grateful to be part of the team to provide access to those people.At that moment , I felt like the clueless guy found his Ikigai, a concept that emerged in Japan that says we are happy when we do something that gives us a sense of purpose. For me that sense of purpose lies in giving back to the community .

    + +

    From that moment on , I have been working actively, assisting my team to manage and coordinate the Fellowship program. I plan to use my knowledge in the field of computer science and link it to make an impact in the field of education. Looking back, joining code for Nepal has been really fruitful personally and professionally. I have leveled up , made connections and developed a work ethic. I am pumped up more than ever to contribute to the cause and to make a difference through Code for Nepal.

    + +

    I would also like to thank DataCamp and DataCamp Donates for the opportunity.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/04/04/How-can-Data-Science-change-the-future-of-the-environment-and-climate_.html b/2022/04/04/How-can-Data-Science-change-the-future-of-the-environment-and-climate_.html new file mode 100644 index 00000000..a79813a5 --- /dev/null +++ b/2022/04/04/How-can-Data-Science-change-the-future-of-the-environment-and-climate_.html @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How can Data Science change the future of the environment and climate? | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    How can Data Science change the future of the environment and climate?

    +

    04 Apr 2022 - Ashma Subedi

    +

    +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    + +

    Data science is the study of extracting information from huge data to support decision-making. It is one of the most powerful tools for discovering and evaluating complex problems, generating solutions, and tracking progress. Today, data science has overtaken practically every industry in the world. It has become a power source for businesses, having a profound impact on banking, finance, manufacturing, e-commerce, education, and health industries. However, to this date, the applications of data science have been very less when it comes to understanding the natural environment and climate change.

    + +

    The studies of the natural environment such as geosphere, hydrosphere, biosphere, climate, and atmosphere are increasingly data rich. These data can be utilized to support research and come up with the solution for major environmental projects ranging from climate monitoring to wildlife protection to waste management. With this article, I aim to highlight my experience of using Data Science in an environmental project and some of the applications of Data Science.

    + +

    A Data-Driven Environmental World

    + +

    Data is linked with everything we do. Data is utilized to capture our actions, from posting on social media to buying groceries at the shop to calories that we consume. Likewise, data is also tied to every aspect of the environment, such as yearly precipitation and temperature, changes in the volume of glaciers, number of protected species, etc. Both data science and environmental science are interdisciplinary fields. Look at the air pollution photo below. This is an area where results can be made based on a variety of levels, based on many interconnected variables such as health and pollution, crop production and pollution, etc. Environmental science fields such as climatic variables, pollution, etc. are becoming more data-driven, and they are moving toward open-sourcing their data.

    + +

    + +

    One of the most challenging and intriguing projects that I have even done in this coding world was on Time Series Analysis of Nitrogen Dioxide (NO2). Time series modeling is a powerful method to describe and extract information from time-based data and helps to make informed decisions about future outcomes. Thanks to this project, now I can retrieve CSV dataset, visualize and transform the dataset into times series, test whether the time series is stationary or not, transform time series to stationary, build seasonal Autoregressive Integrated Moving Average (SARIMA) model using grid search method, and finally predict NO2 (shown below). More details of this can be found on my GitHub.

    + +

    + +

    I was fascinated when I first came across an interesting technique that could be used to explore enormous datasets in novel ways to get forecasted results. After receiving quite interesting results with the ARIMA model, my curiosity for Data Science increased more. +Data science, in my opinion, is the future of data and the environment. That is the only way to assure that you get outstanding outcomes in a timely, repeatable, and consistent manner.

    + +

    How Data Fellowship 2022 organized by Code for Nepal will further help me in my environmental career?

    + +

    Currently, I am enrolled in career building Data Analyst with Python course to gain experience in coding skills. The course focuses on applied learning, which means I am addressing problems using real-world datasets, which is the best part of this course. The data science skills that I have learned at the Data Fellowship so far came in handy when it came to manipulating and visualizing the data. While the lectures were an important part of their course, the actual learning happened while working on projects and doing hands-on exercises. These exercises were practical, entertaining, and enlightening, and they provided an excellent opportunity for me to put what I had learned in the lectures into practice.

    + +

    Furthermore, after the completion of this course, Data Analyst with Python, I am sure that I will be able to analyze data-driven modeling approach, data- and knowledge-based approaches for disaster risk management, and approaches for uncertainty reduction with climatic vulnerability such as floods, droughts, etc. The approaches for uncertainty reduction can be done by combining diverse sources of data to create augmented claims, which then help in the creation of a vulnerability model.

    + +

    Application of Data Science in the environment world

    + +

    Data Science can have an impact on the earth and environmental sciences, providing a rich tapestry of new techniques to support both a deeper understanding of the natural environment in all its complexities and the development of well-founded climate change mitigation and adaptation strategies. Some of the applications of data science that can be used in the environment field:

    +
      +
    1. Forecasting and prediction: The world’s most pressing environmental issues till today are climate change, floods, droughts, renewables energy, etc. All these issues are directly or indirectly heavily weather dependent such as temperature, precipitation, and wind. As a result, forecasting has become more critical in managing supply and demand, which must be balanced in real-time. From numerical weather predictions and historical data, data science allows us to develop reliable precipitation forecasts (which can be used to minimize the impacts of floods and droughts), wind forecasts (which can be used for more precise wind power production), temperature forecasts (which can be used to minimize the impacts of forest fire).
    2. +
    3. Better policy-making/ decisions: There are many success stories of how rivers have improved their water quality after suffering waste pollution mainly from industrial areas. Looking at this data, we can identify and measure the effectiveness of regulatory interventions and inform future policy decisions. Using data science, we can better understand how our environment is changing, what might be driving those changes, how to manage the state of our environment better, and even how to consider what might happen in the future.
    4. +
    5. Disaster risk reduction planning: Risks, vulnerabilities, and resilience may all be measured and understood with the use of data science. It is critical for disaster response, recovery, and planning. Improved resilience is achieved through risk assessment and risk reduction and data science can assist us in comprehending how disaster risk may evolve in the future. +Data science can be applied in all fields of environmental science including but not limited to the climate, energy, geosphere, hydrosphere, biosphere, and atmosphere. With this data fellowship, I realized that environmental scientists, hydrologists, climate researchers should be encouraged and supported to create a culture shift toward open science, i.e., a science which is more collaborative and integrative through open approaches to data, models, and knowledge development, as well as more transparent, repeatable, and reproducible science.
    6. +
    + +

    How to get involved with data and data science?

    + +

    Data Science is a new field with new technologies and the use of new approaches. We can draw insight from data and help build actionable and innovative solutions. However, the greatest approach to understanding a thing is to plunge in and practice it rather than studying its definition. Some of the ways are:

    +
      +
    • Learn about statistics as statistical knowledge is important
    • +
    • Get comfortable with R or Python as both the languages can be/ are extensively used in environmental projects.
    • +
    • Learn about data analysis, manipulation, and visualization with pandas as these will significantly increase your efficiency when working with data.
    • +
    • Try your data science environmental project. For example, try extracting and analyzing data from the internet such as data related to air pollution or the maximum temperature of Nepal for the last 20 years. Use these data for analysis, visualization and try making the best out of them.
    • +
    + +

    Finally, I would also like to thank DataCamp and DataCamp Donates for the opportunity.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/04/06/How-DataCamp-and-Code-for-Nepal-helped-me-learn-data-engineering-for-free.html b/2022/04/06/How-DataCamp-and-Code-for-Nepal-helped-me-learn-data-engineering-for-free.html new file mode 100644 index 00000000..d9476229 --- /dev/null +++ b/2022/04/06/How-DataCamp-and-Code-for-Nepal-helped-me-learn-data-engineering-for-free.html @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How DataCamp and Code for Nepal helped me learn data engineering for free | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    How DataCamp and Code for Nepal helped me learn data engineering for free

    +

    06 Apr 2022 - Mala Deep Upadhaya

    +

    +

    Mala Deep is a Business Intelligence Consultant, and a lifelong learner. He likes to blog and share his love for data.

    + +

    If you are considering a career in the field of data, or if you have limited experience and want to learn more about it, this blog is for you. Continue reading!

    + +

    What inspired you to join the Data Fellowship?

    + +

    I have a lot of practical data science experience and frequently do data visualization and information design work. I had a gut feeling that I needed to push myself and explore more of the topics in the data domain. +Data engineers are on the front lines of data strategy so that others don’t need to be. They are the first to deal with the inflow of structured and unstructured data into a business’s systems. Any data strategy would be incomplete without them.

    + +

    On my LinkedIn network, I have seen people talking about data engineering and how it shaped all projects in data science. Finally, I decided I should explore being a data engineer. +Then, as with anything else in this digital era, I searched for an online program where I could learn data engineering, and because I’m from Nepal, one of the criteria we use when looking for something is that it must be available for free. +As a result, I was looking for a free data engineering course. Coursera, edx, udemy, and DataCamp are all places where I frequently engage. While investigating, I came across a few data engineering bootcamps in the United States. They meet the first but not the second of my criteria: they should be free.

    + +

    And then, after a few weeks, one day I came upon a Code for Nepal post on LinkedIn. I wasn’t a stranger to Code for Nepal. Back in the day, I did some volunteer work. +My heart leapt with delight and the thirst to learn as soon as I noticed the data fellowship post partnering with data camp.

    + +

    I applied for the fellowship with high hopes, and I was accepted.

    + +

    + +

    Finally, I began my three-month data fellowship with Code For Nepal and DataCamp after completing my orientation. I chose the data engineering career path and began my journey.

    + +

    How difficult was the fellowship journey?

    + +

    It was totally tough. It was filled with deadlines and completing the course was not easy. During the first 4–6 weeks, I studied 49 hours a week. But after 3 weeks, the learning process was impeded due to family responsibilities. At that time, I had two options: I could drop out and offer my spot to other students looking for similar opportunities, or I could stay and push myself without any excuses. Guess what? I chose to push myself and manage my time, and lastly, you are reading this blog post.

    + +

    + +

    What lessons did you learn from The Fellowship?

    + +

    I discovered that everyone, no matter how confident or successful they appear, suffers from self-doubt and imposter syndrome. What matters is that you feel the fear and go ahead and do it anyhow. Simply adopt a learning attitude and keep an eye out for opportunities. When they present themselves, seize the opportunity without further delay. Also, I learned that individuals are willing to assist if I know how to ask and what I require.

    + +

    Would you suggest Data Fellowship to a friend?

    + +

    Yes, absolutely! Beyond all the amazing resources, sessions, and opportunities, The Fellowship is an experience that will make a difference in many aspects of your life. It did in my life and will shape lots of areas. For those that are currently feeling unfulfilled in their career and are not sure what their next move is, The Fellowship will help you identify your skills, values, and what’s important to you in your career and will help you push beyond your comfort zone by equipping you with the skills. Data engineering, data science, data analysis, machine learning and much more. All you have to do is decide and be disciplined about the decision.

    + +

    Any words to future fellowship seekers?

    + +

    Lookout for the next cohort and apply without hesitation. As Code for Nepal is offering free access to DataCamp, all you need is time and a desire to learn.Remember, Albert Einstein once said,

    +
    +

    “The only source of knowledge is experience.”

    +
    + +

    He was right, but it does not have to be your experience. +You can leverage knowledge from other people’s lessons. You can stand on the shoulders of giants. Like Stand on the shoulders of DataCamp and Code for Nepal and pave your career the way you intended.

    + +

    What are you doing right now?

    + +

    At the moment, I’m working on a data engineering project and writing some blogs. If you enjoy reading, please have a look at my few blogs on Medium and let me know what you think. (Oh, did I mention that if you haven’t developed a love of reading, you should check out my blog; who knows, it might pique your interest.)

    + +

    Finally, I’d like to express my gratitude to Code for Nepal for providing a fantastic opportunity to the Nepali community, as well as DataCamp for believing in Code for Nepal.

    + +

    If you have any queries regarding the article or want to work together on your next data engineering and data science project, ping me on LinkedIn.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/04/15/Basics-of-Multiple-Linear-Regression-using-R.html b/2022/04/15/Basics-of-Multiple-Linear-Regression-using-R.html new file mode 100644 index 00000000..aebd26af --- /dev/null +++ b/2022/04/15/Basics-of-Multiple-Linear-Regression-using-R.html @@ -0,0 +1,745 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basics of Multiple Linear Regression using R | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Basics of Multiple Linear Regression using R

    +

    15 Apr 2022 - Roshan Rai

    +

    +

    Photo by Luke Chesser on Unsplash +Photo by Luke Chesser on Unsplash

    + +

    Roshan Rai

    + +

    (https://www.linkedin.com/in/tetris/roshan-rai-935301217/)

    + +

    MBA student at KUSOM

    + +

    Nepal had seen the steady rise of the e-commerce sector primarily because of the rising of secure and easy e-payment systems, emerging e-commerce platforms like DARAZ, Sastodeal and the growth of small entrepreneurs using social media platforms like Facebook and Instagram to sell their products. But, it was the COVID lockdowns that had a major role in the current rapid growth of e-commerce. According to NRB, the amount of online transactions reached Rs. 4.93 trillion in the first nine months of FY 2021 compared to Rs. 2 trillion in the same time period in the previous year. E-commerce companies like Daraz and Sastodeal grew by 100 per cent in terms of volume and value respectively in the year 2021 (Prasain, 2021).

    + +

    Understanding the growth of e-commerce in Nepal, me and my friends did a small study on “Consumers’ attitude towards online shopping” as a part of our project. The questionnaire was prepared by Shachee Shrestha, Aastha Kayastha and Kshitiz Vaidya. With the data available, I did some analysis using R. This article will showcase some of my skills in R that I have gained so far as a “Data Fellow 2021” of “Code for Nepal”. The article/blog will focus on data visualization & the regression analysis of the responses as well as why & how I did in R.

    + +

    1. Data Manipulation

    + +

    The study focused on understanding how consumer attitude is affected by four different factors: security of online transactions, web design, the reputation of online retailers and price and deals. For the study, Likert scales were used which ranged from 1 to 5 i.e. 1 – Strongly Disagree, 2 – Disagree, 3 – Neither Agree/Disagree, 4 – Agree and 5 – Strongly Agree. Most works on data cleaning and manipulation were done on MS Excel. The only data manipulation I did on R was creating new columns of an average of the above-mentioned variables. The questionnaire included:

    + +
      +
    1. Four questions related to security variable; each of them coded as SEC_1, SEC_2, SEC_3 and SEC_4.Four questions related to web-design variable; each of them coded as WEB_1, WEB_2, WEB_3 and WEB_4.
    2. +
    3. Five questions related to reputation variable; each of them coded as REP_1, REP_2, REP_3, REP_4 and REP_5.
    4. +
    5. Five questions related to price and deals variable; each of them coded as PRC_1, PRC_2, PRC_3, PRC_4 and PRC_5.
    6. +
    7. +

      Four questions related to attitude variable; each of them coded as ATT_1, ATT_2, ATT_3 and ATT_4.

      + +

      Create average columns for security, web design, reputation and price & deals variable

      + +

      consumer_behaviour1 <- consumer_behaviour %>%

      + +

      mutate(sec_avg = as.integer((SEC_1 + SEC_2 + SEC_3 + SEC_4) / 4),

      + +
           web_avg = as.integer((WEB_1 + WEB_2 + WEB_3 + WEB_4) / 4),
      +
      +     rep_avg = as.integer((REP_1 + REP_2 + REP_3 + REP_4 + REP_5) / 5),
      +
      +     prc_avg = as.integer((PRC_1 + PRC_2 + PRC_3 + PRC_4 + PRC_5) / 5),
      +
      +     att_avg = as.integer((ATT_1 + ATT_2 + ATT_3 + ATT_4) / 4))
      +
      + +

      head(consumer_behaviour1)

      +
    8. +
    + +

    The Output:

    + +

    No alt text provided for this image

    + +

    2. Visualizing the Demographic data

    + +

    2.2 Plotting Gender with respect to the age of respondents

    + +
    ggplot(consumer_behaviour, aes(Age, fill=Gender)) +
    +
    +geom_bar(position="dodge", width=0.85, colour="black") +
    +
    +labs(title="Age of Respondents",
    +
    +    x="Age in years",
    +
    +    y="Frequency") +
    +
    +theme_bw(base_size=14) +
    +
    +  theme(axis.text = element_text(size = 14),
    +
    +        axis.text.x = element_text(angle=90),
    +
    +       legend.text = element_text(size = 14),
    +
    +       plot.title = element_text(size=16)) +
    +
    +facet_wrap(~Gender)
    +
    + +

    The Output:

    + +

    No alt text provided for this image

    + +

    2.3 Plotting educational qualification with respect to the gender of respondents

    + +
    ggplot(consumer_behaviour, aes(x=Educational.Attainment, fill=Gender)) +
    +
    +geom_bar(width=0.6, colour="black", position="dodge") +
    +
    +labs(title="Educational qualification based on gender",
    +
    +    x="Gender",
    +
    +    y="Frequency") +
    +
    +coord_flip() +
    +
    +theme_bw(base_size=14) +
    +
    +theme(axis.text = element_text(size=14),
    +
    +     legend.text=element_text(size=14),
    +
    +     plot.title=element_text(size=16))+
    +
    + +

    The Output:

    + +

    No alt text provided for this image

    + +

    2.4 Plotting income of respondents based on the gender and educational qualification

    + +
    ggplot(consumer_behaviour, aes(x=Income, fill=Gender)) +
    +
    +geom_bar(width=0.6, colour="black", position="dodge") +
    +
    +labs(title="Income based on gender and educational qualification",
    +
    +    x="Gender",
    +
    +    y="Frequency") +
    +
    +theme_bw(base_size=14) +
    +
    +theme(axis.text = element_text(size=14),
    +
    +      axis.text.x = element_text(angle=90),
    +
    +     legend.text=element_text(size=14),
    +
    +     plot.title=element_text(size=16)) +
    +
    +facet_wrap(~Educational.Attainment)+
    +
    + +

    The output:

    + +

    No alt text provided for this image

    + +

    3. Visualizing the Likert Scales

    + +

    I have plotted Likert scales using violin plots from the ggplot2 package. Visualizing the Likert scales in R would have been better with Likert or HH packages. Instead, I have chosen ggplot2. Though Likert plots using Likert or HH are visually appealing, there are some advantages of visualizing Likert data in violin plots. For example, one can integrate a boxplot within the violin plot or even show mean, median, standard deviation points individually within the violin plot.

    + +

    For every variable, there is a certain number of questions measured on the Likert scale of which the average has been taken and plotted. Interpreting the plots has been quite challenging to me. If anyone reading this article would like to help me with that, your help will be appreciated. Similarly, in the following violin plots, black dots represent the median of the response of a certain variable.

    + +

    3.1 Security Variable

    + +
    #Plotting security variable
    +
    +ggplot(consumer_behaviour1, aes(Gender, sec_avg, color=Gender)) +
    +
    +geom_violin(trim=FALSE, size=1.5) +
    +
    +geom_jitter(position=position_jitter(0.2)) +
    +
    +stat_summary(fun=median, geom="point", shape=16,
    +
    +                 size=3, color="Black") +
    +
    +facet_wrap(~Income) +
    +
    +scale_y_continuous(name="Scale", breaks=c(1,2,3,4,5)) +
    +
    +labs(title="Security", x="Gender", y="") +
    +
    +theme_bw(base_size=13) +
    +
    +theme(axis.text=element_text(size=13),
    +
    +     legend.text=element_text(size=13),
    +
    +     legend.position="bottom",
    +
    +     plot.title=element_text(size=16, face="bold"))
    +
    + +

    The Output:

    + +

    No alt text provided for this image

    + +

    From this plot, we can conclude that the median responses for the security variable are mostly either “Agree” or “Neither agree nor disagree” for different income levels.

    + +

    3.2 Web Design Variable

    + +
    #Plotting Web design variable
    +
    +ggplot(consumer_behaviour1, aes(Gender, web_avg, color=Gender)) +
    +
    +geom_violin(trim=FALSE, size=1.5) +
    +
    +geom_jitter(height=0.1) +
    +
    +stat_summary(fun=median, geom="point", shape=16, size=3, color="black") +
    +
    +facet_wrap(~Income) +
    +
    +scale_y_continuous(name="Scale", breaks=c(1,2,3,4,5)) +
    +
    +labs(title="Web Design Scale", x="Gender", y="") +
    +
    +theme_bw(base_size=13) +
    +
    +theme(axis.text=element_text(size=13),
    +
    +     legend.text=element_text(size=13),
    +
    +     legend.position="bottom",
    +
    +     plot.title=element_text(size=16, face="bold"))
    +
    + +

    The Output:

    + +

    No alt text provided for this image

    + +

    This plot shows, the median responses for a web-design variable to be mostly “agree” for different income levels of males and females.

    + +

    3.3 Reputation Variable

    + +
    #Plotting Reputation variable
    +
    +ggplot(consumer_behaviour1, aes(Gender, rep_avg, color=Gender)) +
    +
    +geom_violin(trim=FALSE, size=1.5) +
    +
    +geom_jitter(height=0.1) +
    +
    +stat_summary(fun=median, geom="point", shape=16,
    +
    +            color="black", size=3) +
    +
    +facet_wrap(~Income) +
    +
    +scale_y_continuous(name="Scale", breaks=c(1,2,3,4,5)) +
    +
    +labs(title="Reputation Scale", x="Gender", y="") +
    +
    +theme_bw(base_size=13) +
    +
    +theme(axis.text=element_text(size=13),
    +
    +     legend.text=element_text(size=13),
    +
    +     legend.position="bottom",
    +
    +     plot.title=element_text(size=16, face="bold"))
    +
    + +

    The Output:

    + +

    No alt text provided for this image

    + +

    This plot shows, the median responses for a reputation variable to be mostly “neither agree nor disagree” and “agree for different income levels of males and females.

    + +

    3.4 Price and Deal variable

    + +
    #Plotting price and deals variable
    +
    +ggplot(consumer_behaviour1, aes(Gender, prc_avg, color=Gender)) +
    +
    +geom_violin(trim=FALSE, size=1.5) +
    +
    +geom_jitter(height=0.1) +
    +
    +stat_summary(fun=median, geom="point", shape=16,
    +
    +            color="black", size=3) +
    +
    +#geom_boxplot(width=0.1) +
    +
    +facet_wrap(~Income) +
    +
    +scale_y_continuous(name="Scale", breaks=c(1,2,3,4,5)) +
    +
    +labs(title="Price & Deals Scale", x="Gender", y="") +
    +
    +theme_bw(base_size=13) +
    +
    +theme(axis.text=element_text(size=13),
    +
    +     legend.text=element_text(size=13),
    +
    +     legend.position="bottom",
    +
    +     plot.title=element_text(size=16, face="bold"))
    +
    + +

    The Output:

    + +

    No alt text provided for this image

    + +

    This plot shows, the median responses for a price and deals variable to be mostly “neither agree nor disagree” for different income levels of males and females.

    + +

    3.5 Attitude Variable

    + +
    #Plotting Attitude variable
    +
    +ggplot(consumer_behaviour1, aes(Gender, att_avg, color=Gender)) +
    +
    +geom_violin(trim=FALSE, size=1.5) +
    +
    +geom_jitter(height=0.1) +
    +
    +stat_summary(fun=median, geom="point", shape=16,
    +
    +            color="black", size=3) +
    +
    +#geom_boxplot(width=0.1) +
    +
    +facet_wrap(~Income) +
    +
    +scale_y_continuous(name="Scale", breaks=c(1,2,3,4,5)) +
    +
    +labs(title="Attitude Scale", x="Gender", y="") +
    +
    +theme_bw(base_size=13) +
    +
    +theme(axis.text=element_text(size=13),
    +
    +     legend.text=element_text(size=13),
    +
    +     legend.position="bottom",
    +
    +     plot.title=element_text(size=16, face="bold"))
    +
    + +

    The output:

    + +

    No alt text provided for this image

    + +

    This plot shows, the median responses for attitude variable to be “neither agree nor disagree” for different income levels of males and females.

    + +

    4. Model Selection

    + +

    Selecting a good model is not an easy task. A model with “too many” predictors can result in an overfitted model i.e. model that gives low bias but high variance with poor predictions while a model with “too few” predictors result in an under-fitted model i.e. model that gives low variance but high bias with poor predictions. Criteria for model selection must incorporate the goodness of fit and parsimony. A good model balance bias and variance to get good predictions. There are various methods for model selection like adjusted R-square, Akaike’s Information Criterion, Bayesian (BIC). I will be using the AIC method for the determination of the best model of regression here.

    + +

    4.1 Akaike’s Information Criterion

    + +

    The AIC was developed by the Japanese statistician Hirotugu Akaike. It considers both the fit of the model as well as the number of parameters in the model. A higher number of parameters result in more penalty. The model fit is measured as the likelihood of the parameters being correct for the population based on the observed sample. Hence, AIC equals the number of parameters minus the likelihood of the overall model. In conclusion, we select the model with the lowest AIC value.

    + +

    In R, we can use the AICcmodavg package to determine the AIC values of a different model. If there are p number of predictors, the total number of models that can be formed is 2^p. For simplicity, I have only used linear models. The models can be formed in R as:

    + +
    #Forming the regression models
    +
    +sec_avg.mod <- lm(att_avg ~ sec_avg, data = consumer_behaviour1)
    +
    +web_avg.mod <- lm(att_avg ~ web_avg, data = consumer_behaviour1)
    +
    +rep_avg.mod <- lm(att_avg ~ rep_avg, data = consumer_behaviour1)
    +
    +prc_avg.mod <- lm(att_avg ~ prc_avg, data = consumer_behaviour1)
    +
    +sec_avg.web_avg.mod <- lm(att_avg ~ sec_avg + web_avg, data = consumer_behaviour1)
    +
    +sec_avg.rep_avg.mod <- lm(att_avg ~ sec_avg + rep_avg, data = consumer_behaviour1)
    +
    +web_avg.rep_avg.mod <- lm(att_avg ~ web_avg + rep_avg, data = consumer_behaviour1)
    +
    +sec_avg.web_avg.rep_avg.mod <- lm(att_avg ~ sec_avg + web_avg + rep_avg, data = consumer_behaviour1)
    +
    +web_avg.rep_avg.prc_avg.mod <- lm(att_avg ~ web_avg + rep_avg + prc_avg, data = consumer_behaviour1)
    +
    +rep_avg.prc_avg.sec_avg.mod <- lm(att_avg ~ sec_avg + rep_avg + prc_avg, data = consumer_behaviour1)
    +
    +combination.mod <- lm(att_avg ~ sec_avg + web_avg + rep_avg + prc_avg, data = consumer_behaviour1)
    +
    + +

    The AIC can be determined in R as:

    + +
    #Determining the AICc of models
    +
    +library("AICcmodavg")
    +
    +models <- list(sec_avg.mod, web_avg.mod, rep_avg.mod, prc_avg.mod, sec_avg.web_avg.mod, sec_avg.rep_avg.mod, web_avg.rep_avg.mod, sec_avg.web_avg.rep_avg.mod, web_avg.rep_avg.prc_avg.mod, rep_avg.prc_avg.sec_avg.mod, combination.mod)
    +
    +models.name <- c("sec_avg.mod", "web_avg.mod", "rep_avg.mod", "prc_avg.mod", "sec_avg.web_avg.mod", "sec_avg.rep_avg.mod", "web_avg.rep_avg.mod", "sec_avg.web_avg.rep_avg.mod",  "web_avg.rep_avg.prc_avg.mod", "rep_avg.prc_avg.sec_avg.mod", "combination.mod")
    +
    +aictab(cand.set = models, modnames = models.name) %>%
    +
    +knitr::kable()
    +
    + +

    The output:

    + +

    No alt text provided for this image

    + +

    From this output, we can clearly see sec_avg.web_avg.rep_avg.mod has the lowest AICc value i.e. 87.37457 followed by sec_avg.web_avg.mod i.e. 87.57156. Since the difference in AICc between the models is so low that one can argue that we better choose the second model because K = 4 for the second model vs. K = 5 for the first. In such scenarios, it is better to take the help of other model selection methods along with AIC to select the best model. But here I will be selecting the first model i.e sec_avg.web_avg.rep_avg.mod.

    + +

    5. Test of Homoscedasticity

    + +

    The important assumption of multiple regression analysis is that data needs to show homoscedasticity i.e. variance of the dependent variable is the same for all data. In R, we can simply perform a homoscedasticity test using the following:

    + +
    #Test of Homoscedasticity
    +
    +res <- resid(sec_avg.web_avg.rep_avg.mod)
    +
    +plot(fitted(sec_avg.web_avg.rep_avg.mod), res)
    +
    +abline(0,0))
    +
    + +

    The output:

    + +

    No alt text provided for this image

    + +

    This plot shows that residuals are pretty symmetrically distributed around the line. Hence, we can conclude that assumption of homoscedasticity hasn’t been violated.

    + +

    6. Q-Q plot

    + +

    The quantile-quantile plot helps to determine if the residuals follow the normal distribution. If all the points on the plot lie on the straight line, we can conclude that the distribution is normally distributed. In R, the Q-Q plot can be shown with the following code:

    + +
    #Creates the q-q plot
    +
    +qqnorm(res) 
    + 
    +#Creates the line in the plot                  
    +
    +qqline(res)       
    +
    + +

    + +

    The output:

    + +

    No alt text provided for this image

    + +

    As we can see in the plot, the residuals tend to stray away from the straight line hence, the distribution may not be perfectly normally distributed. The distribution is somewhat right-skewed. This indicates that we need to do some transformation in our model. But in our case, since this article focuses on some basics of performing regression analysis, I will be using the same model without any transformation.

    + +

    7. Regression Analysis

    + +

    Using the model selected above, regression analysis in R can be performed as:

    + +
    #Regression Analysis
    +
    +model <- lm(att_avg ~ sec_avg + web_avg  + rep_avg, data = consumer_behaviour1)
    +
    +summary(model)
    +
    + +

    The output:

    + +

    No alt text provided for this image

    + +

    From this output, our regression model is att_avg = 1.594 + 0.1215 sec_avg + 0.1973 web_avg + 0.0802 rep_avg . Here, 0.1215, 0.1973 and 0.0802 are regression coefficients of sec_avg, web_avg and rep_avg. Regression coefficient of sec_avg is 0.1215 indicates that if security variable increases by 1 scale, attitude variable increases by 0.1215 scale. Other regression coefficients can be explained likewise. At 5% level of significance, sec_avg and web_avg are statistically significant since their p-values i.e. 0.0334 & 0.001 respectively are less than alpha = 0.05. Adjusted R-square of the model is 0.399 indicates 39.9% variance of dependendt variable is explained by these three predictors. P-value of overall model is 2.87e-11 is lower than 0.05 hence, the overall model is statistically significant.

    + +

    8. Analysis of Variances

    + +

    ANOVA or Analysis of variances is a statistical test that determines whether there is a difference in means of groups at each level of the independent variable. It estimates how a quantitative dependent variable changes at different levels of one or more categorical independent variables. In R, ANOVA can be performed as:

    + +
    #Performing anova analysis
    +
    +anova <- aov(att_avg ~ sec_avg + web_avg + rep_avg, data = consumer_behaviour1)
    +
    +summary(anova)
    +
    + +

    The output:

    + +

    No alt text provided for this image

    + +

    Conclusion

    + +

    People argue that Likert scale data cannot be treated as continuous and multiple linear regression analysis cannot be performed. Hence, I have used an average of each variable for the analysis. With dependent and independent variables in Likert scale data, it is encouraged to perform ordinal logistic regression instead of linear regression. This article summarizes the study on “Consumer attitude towards online shopping in Nepal” and how I performed it using R. All thanks goes to Code for Nepal for providing me with a wonderful opportunity to learn R.

    + +

    To download responses, click here! To download the R file, click here!

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/04/16/go-beyond-csv-data-ingestion-with-pandas.html b/2022/04/16/go-beyond-csv-data-ingestion-with-pandas.html new file mode 100644 index 00000000..a8cb5e77 --- /dev/null +++ b/2022/04/16/go-beyond-csv-data-ingestion-with-pandas.html @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Go Beyond CSV: Data Ingestion with Pandas | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Go Beyond CSV: Data Ingestion with Pandas

    +

    16 Apr 2022 - Mala Deep Upadhaya

    +

    +

    Mala Deep is a Business Intelligence Consultant, and community focused data citizen.

    + +

    Go Beyond CSV: Data Ingestion with Pandas

    + +

    Data will not always come to you in CSV

    + +

    Pandas Read_CSV() data ingestion in Python

    + +

    Pandas read_csv() method. Image by the author.

    + +

    Ifyou are a complete beginner or think of yourself as a beginner to data engineering or data science, then you are totally familiar with the Jupyter notebook and the following command.

    + +

    #importing dataset

    + +

    df = pd.read_csv(“path/filename.extension”)

    + +

    Then you know how to acquire data in CSV (Comma Separated Values). After all, before you can analyze data, you first have to acquire it.

    + +

    From my experience and most of the tutorials/resources out there, they have always been written with working CSV files. So, when you go to work for a company, and someone gives you data in SQL and/or JSON, then you start to panic and create a self-image of “oh, this is going to be tough.”

    + +

    But, if you follow this blog, you can easily work with any sort of data in a jupyter notebook.

    + +
    +

    Remember: Before you can analyze data, you first have to acquire it.

    +
    + +

    Let’s get started. Data ingestion is the process of pulling data from a variety of sources into your system with the purpose of easily exploring, maintaining, and using it for your own use. Today, you will learn how to transfer data from various formats such as Excel, HTML, SQL, and JSON into a Pandas dataframe object using various Pandas methods (highlighted below as read_csv()).

    + +

    Pandas Read_CSV() Streamlined data ingestion in Python

    + +

    Pandas read_csv() method. Image by the author.

    + +

    Step Involved

    + +

    To transfer such data format, into a Python DataFrame object, the following steps are taken:

    + +
      +
    1. Knowing from where and how you will pull data.
    2. +
    + +

    Unless at until you have an idea of where your data is and in what format you will never going to bring it as DataFrame object. After that, if your data is residing on the server, then you will need the path, and URL to the file.

    + +
      +
    1. Use Pandas ‘read_x’ method
    2. +
    + +

    For loading and converting CSV data into a DataFrame object, use _read_csv()._You need to replace x with another.

    + +
      +
    1. Validate the data using a DataFrame object.
    2. +
    + +

    Next, you need to verify whether the conversion was smooth.

    + +

    For Excel

    + +

    Excel sheets (spreadsheets) are still widely used in a variety of domains. Excel is widely used, from developing budgeting strategies to tracking daily student attendance.

    + +
      +
    • method: read_excel()
    • +
    • extension/format: .xlsx or .xls
    • +
    + +

    For now, you will be using Preliminary Data of National Population and Housing Census 2021, Nepal dataset from OpenDataNepal. I have saved this dataset as n_epalcensusdata.xlsx_

    + +

    Snapshot of Excel dataset. Image by author. Preliminary Data of National Population and Housing Census 2021, Nepal dataset from OpenDataNepal. Streamlined data ingestion in Python.

    + +

    Snapshot of the Excel dataset. Image by the author. Preliminary Data of National Population and Housing Census 2021, Nepal dataset from OpenDataNepal.

    + +

    #import the Pandas library
    +**import pandas
    #import excel data and store as data_excel dataframe (no need to do df always)
    +data_excel = pd.read_excel(“n_epalcensusdata.xlsx_”)#view the dataset as pandas dataframe object
    +**data_excel.head()

    + +

    Output:

    + +

    Snapshot of Excel dataset. Image by author. Preliminary Data of National Population and Housing Census 2021, Nepal dataset from OpenDataNepal. Streamlined data ingestion in Python.

    + +

    Output obtained from data_excel.head() as Pandas dataframe. Image by the author.

    + +

    If you have more than one sheet in your workbook then an additional parameter called sheet_name is needed.

    + +

    data_excel = pd.read_excel(“nepalcensusdata.xlsx”,sheet_name = 0)
    +data_excel.head()

    + +

    Snapshot of Excel dataset. Image by author. Preliminary Data of National Population and Housing Census 2021, Nepal dataset from OpenDataNepal. Streamlined data ingestion in Python.

    + +

    Pandas read_excel() method. Image by the author.

    + +

    In our case, we are importing the first sheet, thus it is given 0. The sheet numbers start at 0.

    + +

    For HTML

    + +

    If you are familiar with data scrapping (web scraping), then Beautiful Soup, Selenium, and Scrapy are familiar to you. You inspect the HTML structure of the website and pull down the data. If you feel it is sometimes time-consuming or hectic, you can easily do that using the read_html() method.

    + +
      +
    • method: read_html()
    • +
    • extension: .html
    • +
    + +

    From Wikipedia, we will extract a table from the Money Heist (Spanish: Casa de Papel) series on Netflix from the following url: https://en.wikipedia.org/wiki/Money_Heist

    + +

    We will be extracting the awards and nominations tables.

    + +

    Snapshot of Money Heist awards and nominations table from Wikipedia. Image by the author. Streamlined Data Ingestion in Python Pandas.

    + +

    Snapshot of Money Heist awards and nominations table from Wikipedia. Image by the author.

    + +

    #import the Pandas library
    +import pandas#import html data and store as data_html dataframe
    +**data_html = pd.read_html(“https://en.wikipedia.org/wiki/Money_Heist”)[1]
    #view the dataset as pandas dataframe object**
    +data_html.head()

    + +

    Output:

    + +

    Snapshot of Money Heist awards and nominations table from Wikipedia. Image by the author. Streamlined Data Ingestion in Python Pandas.

    + +

    Output obtained from data_html.head() about awards and nominations of Netflix series Money Heist as Pandas dataframe. Image by author.

    + +

    Streamlined Data Ingestion in Python Pandas. df_read_html() method example.

    + +

    Pandas read_html() method. Image by the the author.

    + +

    Here, the initial output from the read_html() method is a list, and to convert that list into a dataframe, you have to use [0] at the end. So, here you have used [2] because, on the wikipedia page, you wanted to extract the awards and nominations table. Before this table, there were two more tables. One is called “infobox,” and the next is “Episodes” and to extract the infobox, you need to use [0] and for the episode table [1].

    + +

    + +

    + +

    Pandas read_html() method for ingesting different tables. Image by the the author.

    + +

    Remember that using read_html() is not a simple task.To get the exact table you are looking at, you need to play with your initial result without any frustration.

    + +

    For SQL

    + +

    Structured Query Language (SQL) is a standard language for storing, manipulating, and retrieving data in databases. Reading data from a database is a two-step process. You first make a way to connect to a database, then query it with SQL and Pandas. In Python, to connect to a SQL server, you need to have either SQLAlchemy connectable or sqlite3.

    + +
      +
    • method: read_sql_query()
    • +
    • extension: .db
    • +
    + +

    Unlike other formats, for SQL you will have to write a few more lines of code. You first make a connection with the database. Then you will use Pandas’s read_sql_query() function to convert the output to a dataframe and write a SQL query to import all columns from the database.

    + +

    For now, the demo my_aquarium.db is created with a single table called “fish” with the following columns: name, species, tank_number.

    + +

    #import the required libraries
    +**import sqlite3
    +import pandas
    #prepare a connection object and Pass the Database name as a parameter
    +connection = sqlite3.connect(“aquarium.db”)#use read_sql_query method and Pass SELECT query and connection object as parameter
    +data_Sql = pd.read_sql_query(“SELECT * FROM fish”, connection)#**view the dataset as pandas dataframe object
    +**print(data_Sql)
    #close the connection object
    +**connection.close()

    + +

    Output:

    + +

    Output obtained from read_sql_query() with fish table as Pandas dataframe. Image by the author. Data Ingestion in Python Pandas.

    + +

    Output obtained from read_sql_query() with fish table as Pandas dataframe. Image by the author.

    + +

    Output obtained from read_sql_query() with fish table as Pandas dataframe. Image by the author. Data Ingestion in Python Pandas.

    + +

    Pandas read_sql_query() method. Image by the author.

    + +

    Remember to close the database connection every time you open it.

    + +

    For JSON

    + +

    JavaScript Object Notation (JSON) is the most common file format preferred by web developers and data engineers. It’s used widely across the internet for almost every single API that you will access.

    + +
      +
    • method: read_json()
    • +
    • extension: .json
    • +
    + +

    You will use data from One Piece Anime from Kaggle stored as openPiece.json

    + +

    Snapshot of One piece anime from Kaggle. Image by author. pd.read_json() example data ingestion in pandas python.

    + +

    Snapshot of One piece anime from Kaggle. Image by author.

    + +

    #import the Pandas library
    +import pandas#import html data and store as data_json dataframe
    +**data_json = pd.read_json(“opnePiece.json”)
    #view the dataset as pandas dataframe object**
    +data_json.head()

    + +

    Output:

    + +

    Snapshot of One piece anime from Kaggle. Image by author. pd.read_json() example data ingestion in pandas python.

    + +

    Output obtained from read_json() as Pandas DataFrame. Image by the author.

    + +

    pd.read_json() example data ingestion in pandas python.

    + +

    Pandas read_json() method. Image by the author.

    + +

    In this manner, you can obtain data in a variety of formats.

    + +
    +

    Remember: Acquiring data is just the beginning.

    +
    + +

    Of course, acquiring data is just the beginning. After this, you need to explore data and play with it before you get deep into a data science project. But if you need ideas on where to go next, go with exploratory data analysis for begineers.

    + +

    PS: I was able to delve deeper into this because of the Data Fellowship opportunity provided by Code For Nepal.I’d like to express my gratitude to Code for Nepal for providing a fantastic opportunity to the Nepali community, as well as the DataCampfor believing in Code for Nepal.

    + +

    If you have any queries regarding the article or want to work together on your next data engineering or data science project, ping me on LinkedIn.

    + +

    Originally published at Mala’s Medium blog

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/05/23/prey-predators-equation.html b/2022/05/23/prey-predators-equation.html new file mode 100644 index 00000000..ae4e2936 --- /dev/null +++ b/2022/05/23/prey-predators-equation.html @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Use of Python in the biological environment- Prey Predators Equation (Lotka–Volterra model) | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Use of Python in the biological environment- Prey Predators Equation (Lotka–Volterra model)

    +

    23 May 2022 - Ashma Subedi

    +

    +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    + +

    Use of Python in the biological environment- Prey Predators Equation (Lotka–Volterra model)

    + +

    The relation and interactions between predators and their prey are important factors when it comes to conservation and ecosystem stability. In an ecosystem, the predator/prey relationship provides enough stability for an essentially unlimited number of species to coexist. Predators, for example, enhance predation and reduce the number of prey when the number of prey is high. Ecosystems are more stable and can support a greater number of species as a result of these predator/prey relationships. 

    + +

    Let’s see an example of prey and predator of Chitwan National Park. Every day, deer or wild boar must run faster than the fastest tiger or get unnoticeable around the tiger, if not it will be killed. Likewise, the tiger knows it must outrun the slowest deer or it will starve to death. 

    + +

    + +

    Source: https://suleimansultan.artstation.com/projects/zOXLl6 

    + +

    So what are the laws that govern the dynamics of these prey and predator’s complicated systems and how do these species interact? To answer these questions ordinary differential equation (ODE) model can be used, which consists of two animal species, one that acts as a predator species and the other as its prey: the prey-predator model, also known as Lotka–Volterra equations.

    + +

    To understand the interesting relationship between prey and predators and to get the answer to the above-mentioned questions, I took the initiative to work on a biological model  “Dynamics of Biological Systems in which Tiger and Deer interact” using Python. 

    + +

    This blog will highlight some of the Python skills (such as the use of matplotlib module and its application to plot trajectories, directions fields, etc.) which I have acquired from Data Fellowship, Code for Nepal. The main objective of this blog is to describe the dynamics of ecological systems in which two species interact.

    + +

    The  Lotka–Volterra Model

    + +

    The populations change through time according to the pair of equations:

    + +
    du/dt =a*u-b*u*v(dv/dt)=-c*v +d*b*u*v
    +
    + +

    with the following notations: 

    + +

    u: number of preys (for example, deer)
    +v: number of predators (for example, tigers)
    +a, b, c, d are constant parameters defining the behavior of the population:
    +a is the natural growth rate of deer when there’s no tiger
    +b is the natural death rate of deer, due to predation
    +c is the natural death rate of tigers when there’s no deer
    +d is the factor describing how many caught deer let’s create a new tiger

    + +

    Here a, b, c, and d are some given constants.

    + +

    Firstly, all the necessary libraries were imported and the constant parameters were defined (example: a= 1, b=0.1, c=1.5, d=0.75). 

    + +

    Population equilibrium and stability of fixed points

    + +

    When neither of the population levels changes, i.e. when both of the derivatives are equal to 0, the model is said to be in population equilibrium. This results in two fixed points, and the stability of the fixed point at the origin can be determined using partial derivatives and linearization.

    + +

    A saddle point on the surface of a function’s graph, where the slopes (derivatives) in orthogonal directions are all zero, is the function’s origin (a critical point). This point is important because it shows the stability of the function. If the system is stable, then the extinction of both species would be very unlikely. However, since the origin point is unstable, it is hard to predict the extinction of both species. If the predators are intentionally destroyed, then the prey population would only grow, and the predators would die of starvation. This scenario would only occur if the populations of both the predators and the prey are destroyed. Prey and predator populations can go infinitesimally near to extinction and still recover.

    + +

    Integrating the ordinary differential equations using scipy.integrate

    + +

    This module has an odeint function for integrating ODEs that can be used by importing a library (from scipy import integrate). After the integration, the following figure is obtained which shows the possible solutions to the Lotka-Volterra equations.

    + +

    + +

    The example exemplifies the model’s key qualitative behavior and its ever-changing character. These variations are unavoidable in a real-world system. When predators are few, the prey population has a chance to expand since predators may catch fewer animals than new prey are born. However, if the prey population is large enough, many predators will be content enough to have progeny. 

    + +

    The rising predator population will consume more prey until it reaches a point where consumption exceeds prey reproduction. After that, the prey population will begin to dwindle. Because of the decreased supply of food, the predator population will soon follow, resulting in mass starvation. The ecology will be in a position where there are few preys and few predators, allowing the prey population to rise once more, and history will repeat itself. 

    + +

    Different starting points between the extinction of both species were plotted in a phase plane, and Matplotlib’s colormap was used to define colors for the trajectories.

    + +

    + +

    Figure: Phase-space plot for the predator and prey

    + +

    + +

    Changing the tiger or deer population can have unexpected consequences. If tigers are introduced to reduce the number of deers, this may result in an increase of deers, in the long run, depending on the timing of the intervention.

    + +

    In conclusion, ecologists and biologists can use this model to predict what will happen when two species compete for the same resources. Furthermore, predators influence the dynamics of their prey in ways that cascade across ecosystems, altering processes such as productivity, biodiversity, nutrient cycles, disease dynamics, carbon storage, etc. However, this model requires certain assumptions (as made here also) that may or may not be true in the natural world. Some assumptions include: the prey population always has enough food, the population’s rate of change is proportional to its size, predators have an insatiable desire, etc.

    + +

    Because of Code For Nepal’s Data Fellowship program in partnership with DataCamp Donates, I was able to take the initiative to learn more about the Lotka–Volterra model and its applications. I am grateful to Code for Nepal for providing me with the opportunity to study advanced Python.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/08/29/mann-kendall.html b/2022/08/29/mann-kendall.html new file mode 100644 index 00000000..cd8176cc --- /dev/null +++ b/2022/08/29/mann-kendall.html @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Performing a Mann-Kendall Trend Test for Temperature Data in Python | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Performing a Mann-Kendall Trend Test for Temperature Data in Python

    +

    29 Aug 2022 - Ashma Subedi

    +

    +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    + +

    Why determining the climate trend is important?

    + +

    Trend analysis of climate variables such as temperature and precipitation, which offers an overall assessment of the changes in the climate variables, is a fundamental procedure in determining the state of a country’s/ district’s/ municipality’s climate. There is various trend test to determine the climatic variations. Here, in this blog, I will be explaining why I used the Mann-Kendall Trend Test and how this test will determine whether a climatic trend is significant or not using python. The Mann-Kendall Trend Test is used to detect whether time series data has a trend or not. It’s a non-parametric test, which means there’s no underlying assumption about the data’s normality. It can be used in climatic studies to investigate the significance of growing average temperatures over a region over a period of time, as shown below.

    + +

    How the Test Works +This test works by using a hypotheses test. The hypotheses for the test are:

    + +
      +
    • H0: It is a null hypothesis which means there is no trend present in the data.
    • +
    • H1: It is an alternative hypothesis which means there is a trend present in the data. Here, the trend can be a positive trend as well as a negative trend.
    • +
    + +

    If the test’s p-value is less than a certain threshold (typical thresholds include 0.10, 0.05, and 0.01), there is statistically substantial evidence that a trend exists in the time series data.

    + +

    Example: Mann-Kendall Trend Test in Python

    + +

    The pymannkendall package must be installed in order to execute a Mann-Kendall Trend Test in Python. After that, all the necessary libraries are imported.

    + +
    import numpy as np
    +import pandas as pd
    +import pymannkendall as mk
    +import matplotlib.pyplot as plt
    +import statsmodels.api as sm
    +%matplotlib inline
    +
    +

    To calculate the trend analysis, the temperature data of one of the weather stations in Nepal was collected from the Department of Hydrology and Meteorology, Kathmandu. The maximum temperature and minimum temperature data were collected from the year 1992 to 2020.

    +
    #read dataset
    +data = pd.read_csv('D:/M/excel/tmax.csv')
    +data
    +
    +
    plt.plot(data.Year,data.Tmax, 'g')
    +plt.xlabel('Year')
    +plt.ylabel('Maximum Temperature')
    +
    +#calculate equation for trendline
    +z = np.polyfit(data.Year, data.Tmax, 1)
    +p = np.poly1d(z)
    +
    +#add trendline to plot
    +plt.plot(data.Year, p(data.Year), 'b--')
    +
    +

    + +

    Autocorrelation graphs are a common method for determining the randomness of data collection. The randomness of data values at different time lags is determined by computing autocorrelation.

    +
    from datetime import datetime
    +data['dated'] = pd.to_datetime(data['Year'])
    +df = data.set_index('dated')
    +df.drop(['Year'], axis=1, inplace=True)
    +fig, ax = plt.subplots(figsize=(12, 8))
    +sm.graphics.tsa.plot_acf(df, lags=20, ax=ax)
    +plt.show()
    +
    +

    + +
    d = mk.original_test(df, alpha=0.05)
    +d
    +
    +

    + +

    Here is how to interpret the output of the test:

    +
      +
    • trend: This tells the trend i.e. whether the data has an increasing, decreasing, or no trend.
    • +
    • h: True if the trend is present. False if no trend is present.
    • +
    • p: The p-value of the test.
    • +
    • z: The normalized test statistic.
    • +
    • Tau: Kendall Tau.
    • +
    • s: Mann-Kendal’s score
    • +
    • var_s: Variance S
    • +
    • slope: Sen slope (used to assess the magnitude of meteorological parameters, which refers to how much an increase or reduction occurs each year.)
    • +
    • intercept: Intercept of Kendall-Theil Robust Line
    • +
    + +

    Here, the test trend shows there is an increasing trend in the maximum temperature data with a p-value less than 0.05 which means our null hypothesis is rejected and our alternative hypothesis is accepted. That is, there is a significant positive change in the trend in the last 28 years. The sen slope is 0.16 meaning that the maximum temperature has increased by 0.16 degree per year.

    + +

    Using a similar code, the trend for minimum temperature and average temperature from 1992 to 2020 was also calculated.

    + +

    Plotting minimum temperature data using plt.plot

    + +

    +

    + +

    The initial lag indicates minor autocorrelation in this ACF plot. So, we can disregard it. Now, calculating the trend using above- mentioned code, we get: +

    + +

    We can conclude that there is a substantial trend in this dataset based on the above result. h=True because the p-value is less than alpha=0.05. The trend is significantly decreasing with a value of -0.125 for the trend/slope. Lastly, the average temperature trend from 1992 to 2020 was calculated using the same code. Plotting the average temperature

    + +

    +

    + +

    + +

    Here, the test trend shows there is an increasing trend in the average temperature data with a p-value less than 0.05. That is, there is a significant positive change in the trend in the last 28 years with a sen slope of 0.019.

    + +

    From testing all the three data sets (maximum temperature, minimum temperature, and average temperature), it can be said that the trend analysis reveals a positive trend (maximum temperature and average temperature) and a negative trend in minimum temperature and statistical significance. Because the estimated p-value is less than the alpha (significance threshold), the null hypothesis should be rejected and the alternative hypothesis accepted.

    + +

    I’m attempting to demonstrate how a trend can be tested using my blog. More datasets, such as those from the last 50 years, can be used to produce more trustworthy trend test results. I simply ran one trend test here; however, when working with climatic/meteorological data, it is required to run multiple trend tests. Moreover, there are a few things that need to be considered before using the Mann-Kendall Trend Test such as the data collected should not be seasonal i.e. only summer or winter months as the test won’t work or give reliable trend; and there should be no missing values, if there are some it can be filled using fillna().

    + +

    The Mann-Kendall test is a powerful trend test for analyzing seasonal and annual trends in environmental data and climate data, and this test is preferred over others because it can be used with time-series data that does not follow a statistical distribution.

    + +

    Despite the fact that the code appears simple and the data visualization appears appealing, I found it difficult to get there. This was only possible because of Code for Nepal, and I’d like to express my gratitude to them for giving me the opportunity to study Python through DataCamp and DataCamp Donates.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2022/12/15/Nepali-workers-might-have-lost-100M-in-2020.html b/2022/12/15/Nepali-workers-might-have-lost-100M-in-2020.html new file mode 100644 index 00000000..80d7a915 --- /dev/null +++ b/2022/12/15/Nepali-workers-might-have-lost-100M-in-2020.html @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nepali workers might have lost $100M in 2020 due to lack of digital skills | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Nepali workers might have lost $100M in 2020 due to lack of digital skills

    +

    15 Dec 2022 - CodeforNepal

    +

    +

    + +

    Nepalis migrant workers in Gulf countries might have forgone at least $100 million dollars in potential wages in 2020 due to lack of basic digital skills. In this post, we outline the process and the assumptions we made for this analysis.

    + +

    As large infrastructure projects come to a close, such as those that happened for the World Cup in Qatar, it is likely that the there will be a shift in demand for more digitally-skilled labor – for instance for the running, upkeep, and maintenance of the infrastructure. Given this, migrant workers will likely derive large benefits from even basic digital skills training. Hence, it will be useful for Ministry of Labor and the Department of Foreign Employment to prioritize digital skills training or related capacity building among potential candidates forforeign employment.

    + +

    According to the Government of Nepal, despite mobility restrictions, 650,000 Nepalis left the country on foreign employment contracts in 2020, of whom 9 out of 10 went to the Gulf countries for jobs. In Qatar, the average monthly salary of a Nepali “unskilled” and “semi-skilled” migrant worker is $275 and the basic salary of a “computer operator” is $600. This difference in salary is largely consistent with the 2022 study conducted by Amazon Web Services, and Gallup, which found that across 19 countries (largely high-income and middle income countries) workers with intermediate digital skills on the job earn 40 percent more than workers who do not use computer at work.

    + +

    Ofcourse, there are assumptions necessary for an analysis such as this. To that end, here is a list of assumptions underpinning our claim:

    + +
      +
    • We assume there was enough demand for computer skills jobs in gulf countries to provide employment opportunities for the newly trained 5 percent Nepalis migrant workers with computer skills.
    • +
    • We assume the demand for “computer operator” would not have been filled from workers of other countries.
    • +
    • We also assume that salaries of unskilled and semi-skilled workers, and computer operators in Qatar were equal or similar to salaries in the rest of the gulf countries. For this analysis, we have extrapolated salaries of workers in Qatar to the rest of gulf countries.
    • +
    + +

    For calculations and sources of data, please see below.

    + + + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/02/16/analysis-of-the-trend-of-internet-usage-in-nepal.html b/2023/02/16/analysis-of-the-trend-of-internet-usage-in-nepal.html new file mode 100644 index 00000000..e66419b9 --- /dev/null +++ b/2023/02/16/analysis-of-the-trend-of-internet-usage-in-nepal.html @@ -0,0 +1,403 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Analysis of the trend of internet usage in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Analysis of the trend of internet usage in Nepal

    +

    16 Feb 2023 - Pujan Oli

    +

    +

    Since the introduction of the Internet in 1993 in Nepal, the country has witnessed the exponential growth of the internet in the last decade, especially in the 2010s. With the increase in digitalization, the internet has become the most essential tool in diverse sectors all over Nepal. And especially after the proclamation of the Federal Democratic Constitution in 2015 AD, the Internet became vital for services in government and most of the commercial sectors. It was during this period that social media also became increasingly popular, and with the introduction of smartphones, the platform has exploded. One of the most prominent examples is that of the Tik Tok. In the last two years, the percentage of internet users who responded to using TikTok rose from 3% to 55%. Last but not least, according to Google Trends, Nepal is the second most searched country for “chatGPT” terms.

    + +

    So it becomes vital to analyze and interpret the data of the internet world in order to understand the current trends and predict the possible prospects of the internet in Nepal’s growth and development. It is also a very significant challenge to keep the internet secure and stop the exploitation of the user’s data, which seems to be a subject matter of far less concern in Nepal. In regards to the context, I have collected some data about the internet usage in Nepal and tried to perform a visual analysis of it using the concepts I learned during the data fellowship. The sources of data are The World Bank and Data Reportal. I have used Python and its libraries on a small set of data and attempted to derive some conclusions based on it.

    + +

    The data provided contains information about the number of users, access to the internet, and usage of social media in the years 2017–2022. In this project, we will analyze this data and see the trend of internet usage over the years.

    + +

    Importing Libraries and Loading Data

    + +

    To start with the analysis, we first need to import the necessary libraries. We will use the Pandas library for data manipulation and analysis, Matplotlib for visualization, and Numpy for mathematical operations.

    + +
    import pandas as pd
    +
    +import matplotlib.pyplot as plt
    +
    +import numpy as np
    +
    + +

    Now, we need to load the data into a Pandas data frame. We will use the read_csv function from the Pandas library to load the data from the CSV file named “Nepal_Internet_data.csv.”

    + +
    data = pd.read_csv('Nepal_Internet_data.csv')
    +
    + +

    After we have loaded the data, we can begin to explore it. This can be done by using the “head()” and “tail()” functions to check the first and last five rows of the data. Furthermore, the info() and describe() functions can also be used to get more information about the data.

    + +

    Visualization of data:

    + +

    We now need to create some visualizations to get a more precise and clear understanding of the internet usage trend in Nepal. For this, the matplotlib library is used to create these visualizations, which are illustrated below.

    + +

    Line Plot:

    + +

    We will create a line plot to show the trend of access to the internet and social media usage over the years. It can be said that access to the internet has expanded rapidly to the point where almost 90% of the population had access to the internet in 2022.

    + +
    plt.plot(data[‘Years’], data[‘Access to Internet’], label=’Access to Internet’)
    +
    +plt.plot(data[‘Years’], data[‘Users’], label=’Ïnternet users’)
    +
    +plt.xlabel(‘Years’)
    +
    +plt.ylabel(‘Usage’)
    +
    +plt.title(‘Trend of Internet Usage’)
    +
    +plt.legend()
    +
    +plt.show()
    +
    + +

    + +

    Bar Plot

    + +

    The bar plot below depicts the comparison between access to the internet and social media usage in different years.

    + +

    + +

    Scatter plot

    + +

    The scatterplot shows the relationship between the number of users and access to the internet. Each data point in the scatter plot represents a year, and the x-axis represents the number of users while the y-axis represents the access to the internet (in %)

    + +

    + +

    From the scatterplot, we can observe that as the number of users increases, access to the internet also increases. This shows that there is a positive correlation between the number of users and access to the internet. The trend line indicates that the relationship between the two variables is linear, meaning that the rate of increase in access to the internet is constant as the number of users increases.

    + +

    Calculation of correlation:

    + +

    The Numpy library can also be used to calculate the correlation coefficient between the two variables, which will give us a numerical value for the strength of the relationship between them. The correlation coefficient ranges from -1 to 1, where -1 indicates a strong negative correlation, 0 indicates no correlation, and 1 indicates a strong positive correlation.

    + +

    Code:

    + +
    correlation = np.corrcoef(data["Users"], data["Access to Internet"])
    +
    +print("Correlation Coefficient:", correlation[0, 1])
    +
    + +

    Output:

    + +

    + +

    In this case, the correlation coefficient is close to 1, which indicates that there is a strong positive correlation between the number of users and access to the internet. Therefore, the positive correlation between the two variables suggests that, as the number of users increases, access to the internet also increases.

    + +

    Analyzing the internet services of Nepal

    + +

    In this case, the data about internet service facilities is collected because it is vital to know about the internet infrastructure development in our country. So I have performed visualization using Matplotlib, and the below-given figure clearly indicates that fixed broadband subscriptions have increased over the last five years, while mobile cellular subscriptions have witnessed a slight decrease within the last three years. However, cellular subscriptions remain high compared to broadband subscriptions.

    + +

    code:

    + +
    # Load the data into a pandas DataFrame
    +
    +df = pd.read_csv(“Services_data.csv”)
    +
    +# Perform some basic analysis on the data
    +
    +print(“Data summary:”)
    +
    +print(df.describe())
    +
    +# Visualize the data using matplotlib
    +
    +plt.plot(df[‘Years’], df[‘Mobile cellular subscriptions’], label=’Mobile cellular subscription’)
    +
    +plt.plot(df[‘Years’], df[‘Fixed broadband subscriptions’], label=’Fixed broadband subscriptions’)
    +
    +plt.legend()
    +
    +plt.xlabel(‘Years’)
    +
    +plt.ylabel(‘Number of Subscriptions (in million)’)
    +
    +plt.title(‘Subscriptions over the years’)
    +
    +plt.show()
    +
    +
    +
    + +

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Pujan, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/02/16/use-of-transfer-learning-in-early-pneumonia-detection.html b/2023/02/16/use-of-transfer-learning-in-early-pneumonia-detection.html new file mode 100644 index 00000000..db195b2a --- /dev/null +++ b/2023/02/16/use-of-transfer-learning-in-early-pneumonia-detection.html @@ -0,0 +1,369 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Use of Transfer Learning in Early Pneumonia Detection | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Use of Transfer Learning in Early Pneumonia Detection

    +

    16 Feb 2023 - Arisha Prasai

    +

    +

    Transfer learning is a technique in machine learning where a pre-trained model is used as a starting point for a new task, rather than training a new model from scratch. It is beneficial for disease detection because it can leverage the features learned from a large dataset to improve the accuracy of smaller datasets, leading to faster and more efficient diagnosis.
    +Now, let’s apply this concept to detecting diseases like pneumonia. Traditional machine learning models require large datasets to learn from, which can be a challenge in the medical field where data is often scarce or private. But with transfer learning, we can take advantage of pre-trained models that have already learned complex features from huge datasets of images. By fine-tuning these models on smaller datasets of medical images, we can achieve higher accuracy and faster diagnoses.

    + +

    Why Pneumonia Detection?

    + +
      +
    • Pneumonia is more common among children below 5 years of age.
    • +
    + +

    -According to the UNICEF report 2019, it causes death of a child in every 39 seconds in Nepal.

    + +

    -Most deaths due to pneumonia occur among children of poorest households who are affected by the convergence of poor nutrition, poor hygiene and poor immunization rates.

    + +

    This project is a small example of how a pre-trained model can be used for early disease detection. We will be using VGG-19 which is a popular deep learning architecture that has been widely used in computer vision tasks and for medical imaging. Moreover, VGG19 has been pre-trained on a large dataset of natural images of size 224 * 224 , which allows it to recognize patterns and shapes that are common to many images. This pre-training enables transfer learning, which is especially beneficial for medical imaging tasks where data is limited. And by fine-tuning the pre-trained VGG19 model on a smaller dataset of X-ray images of pneumonic and non-pneumonic patients on Kaggle, it can quickly learn to recognize specific disease patterns and help clinicians diagnose diseases at an earlier stage.

    + +

    There are many other pre-trained models like VGG-19 including ResNet, DenseNet, Inception, U-Net or even CovidNet. We could have used any one but for the sake of this post, we will be using VGG-19.

    + +

    Now, lets dive into it.

    + +

    The dataset can be found here:
    +https://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia

    + +

    IMPORTING LIBRARIES

    + +

    Importing the libraries and other dependencies is the first step before dealing with any data . So, we do that in the code below. Also, since it is time consuming to download the whole dataset from Kaggle, we use Kaggle API to avoid that.

    + +

    + +

    + +

    Now since every ML model takes numbers as input, we need to find a way to represent each image in form of numbers. So, we create a function to that takes image as input and converts into a matrix of (150,150).Although VGG-19 was trained on input images of (224,224), the reason for creating a (150,150) matrix is because sessions kept on crashing on Google Colab. So there is definite loss of data but hopefully not so much.

    + +

    + +

    NORMALISING THE DATA
    +Normalizing image data is an important step in preprocessing image data before feeding it into a machine learning model. One reason for normalizing image data is to reduce the effects of lighting and color variations in the input data. This is especially important in medical imaging, where images may have different brightness and contrast levels due to variations in imaging equipment, patient positioning, or lighting conditions.

    + +

    Likewise, another reason for normalizing image data is to prevent numerical instability during model training. Some machine learning algorithms are sensitive to the scale of the input data, and may not perform well if the input values are too large or too small. We do this by dividing by 255.0 of each value in the matrix because the pixels range from 0–255. This will make all values to align to the same scale of rane 0–1 like shown in the code snippet below:

    + +

    + +

    DEFINING TARGET VARIABLES

    + +

    Next, we define target variables and apply image augmentation technique. Image augmentation is used to increase the size of the training dataset, improve model generalization, reduce overfitting, introduce noise, and increase model robustness to image variations and distortions by zooming, altering the orientations, adding filler values and so on.

    + +

    + +

    + +

    In the code above, we use flow_from_directory and ImageDataGenerator class in Keras that saves input data in the form of NumPy arrays, which are a commonly used data structure in Python for numerical computing.

    + +

    COMPILING THE VGG-19 MODEL

    + +

    Since we are using a pre-trained model, its is necessary to NOT TRAIN the weights of the first 19 layers . Then, we flatten the ouput of the model to connect it with other 2 Dense layers. The last Dense layer has only one neuron as this use case is a binary classification i.e. the patient is either pneumonic or normal. We have set sigmoid function as activation that gives probability from 0–1, where having 0.5 or greater value means the model predicted patient to have pneumonia and lesser than 0.5 indicates that the model predicted that the patient doesn’t have pneumonia. In this way, a fully connected neural network is made using pre-trained model.

    + +

    + +

    Below is the snippet of the neural networks formed. Notice that the parameters that are trainable are the parameters of the last two Dense layers.

    + +

    + +

    + +

    TRAINING THE MODEL ON THE DATA

    + +

    + +

    RESULT

    + +

    Data augmentation has been used as this was an imbalanced dataset to prevent overfitting. The model scored an accuracy of 89% on the training set and 87% on the validation set. The model is still overfitting to some extent.

    + +

    We then save this model as an h5 file and later into a joblib file which can later be used for direct prediction without having to train again.

    + +

    DEMO OF THE MODEL

    + +

    In the demo below, 3/3 images of untrained dataset of pneumonic and normal X-rays were used to predict the result. In this case, the model seemed to have performed well by classifying all of them correctly.

    + +

    + +

    However, the model may still be improved using hyperparameter techniques to prevent overfitting and gradually increasing the accuracy. This can be done by changing the number of layers ,neurons or trying different activation techniques.

    + +

    In conclusion, transfer learning makes life easier by enabling us to make our own customized model for wide variety of computer vision use cases. Computer aided diagnostics using DL models can assist doctors in early and accurate disease detection, aid human decision making, save time and resources or can even simplify complex procedures. Hence, the use of transfer learning in early disease detection is ample.

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Arisha, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/02/21/data-pipeline-with-apache-airflow-and-fast-api.html b/2023/02/21/data-pipeline-with-apache-airflow-and-fast-api.html new file mode 100644 index 00000000..c93ea696 --- /dev/null +++ b/2023/02/21/data-pipeline-with-apache-airflow-and-fast-api.html @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Data Pipeline with Apache Airflow and Fast API | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Data Pipeline with Apache Airflow and Fast API

    +

    21 Feb 2023 - Prashant Manandhar

    +

    +

    The word Pipeline in general triggers a connections like image in our mind. Well data pipelines are no differ from that. These days organizations/institutions have huge volume of data which are generated through various sources, these data are known as “Big Data”. For processing these big data efficiently such that it saves time and improves results we require data pipeline.Data pipelines are created for ETL process, where data is collected from various sources, it is then transformed into desired format and finally stored.

    + +

    What is DAG? 

    + +

    DAG stands for Directed Acyclic Graph. In apache airflow DAGs represents a workflow of task that we program in python. According to the task flow that we desire the graph is made.It can be visualized from the UI as well. The priority of task is given by upstream task and downstream task.Task in DAG can be anything i.e request data from API, transforming in desired format, storing data in database and many more.

    + +

    What is API

    + +

    API i.e Application Programming Interface is kind of like a messenger. Well when ever we access data using API, its acts as a middle person between the main system and the user.We can understand this by an example. Suppose we need to access data from a system A, scenario is system A donot allow direct access and provides API, when the user send data request to API, API send request to the system A, in similar fashion system A either returns data or error which eventually is received by the user. Besides API requests are not unlimited and general APIs are accesses with the help of API keys for security.

    + +

    Fast API 

    + +

    Fast API is a framework which can be used to build APIs with the help of python programming language. Fast API is simple ad easy to use. With few lines of code, simple API can be built.We will see the details in the code.

    + +

    Apache Airflow

    + +

    For creating data processing pipelines, Apache Airflow is a very useful open source work flow management tool.With the knowledge of python programming language, Airflow can be used to create data processing pipelines. While data from various sources needs to be extracted , transformed and stored, this tool proves to be just perfect.The web UI of Apache airflow is quiet handy while creating a data pipeline.All the DAGs(Direct Acyclic Graphs) that we have created is listed and we can checkout active DAGs and paused DAGs as-well. Individual DAGs can be triggered from the UI as well also we can go through multiple options in UI. There are various operators and sensors that can be used as requirement such as BinaryOperator, PythonOperator, FileSensors etc, Here we will be Using PythonOperator since we require function calling. Also we have op tions for executors in apache airflow i.e Sequential Executor, Local Executor,Celery Executor, where default executor is Sequential Executor.Sequential Executor is only used for testing purpose and executes single task sequentially.

    + +

    Steps to setup Apache Airflow (in Linux environment)

    + +
      +
    • open vs code in a new folder
    • +
    • Makesure the path in “apache.cfg” is exactly where your DAG is.
    • +
    • +

      export the AIRFLOWHOME environment variable

      + +

      +
    • +
    • +

      initialize the database

      + +

      +
    • +
    • +

      Schedule the task

      + +

      +
    • +
    • +

      To open the apache airflow UI in web browser

      + +

      +
    • +
    + +

    The web UI looks like following.

    + +

    The login username and password is added from terminal with following instruction: In the given instruction, we can specify username, firstname, lastname, password, email and role(viewer,Admin etc).

    + +

    + +

    Once the user is created then we can see following message: Then login with the credentials and we will navigate to homepage. Where we will see our DAG. The homepage has many options to explore.

    + +

    + +

    Code with Description 

    + +

    Python is one of the popular programming language. Using python we can create a data processing pipeline that collects data from the API end point.I have created both API end points as well as DAG . Following libraries and modules have been use

    + +

    + +

    where DAG is used to create a DAG which we will see in further code. As i have mentioned above, PythonOperator is used from airflow.operators.python, datetime and timedelta for date and scheduling interval. BaseModel is imported from the Pydantic library to define data model.Request module is used to fetch data from the API end point.csv module is used to store final data in csv format. Since API is created using Fast API so the shown libraries are used where corsmiddleware is used to resolve cross origin error.

    + +

    Lets start with how API endpoints are built using Fast API for this project. Here FastAPI

    + +

    + +

    is instantiated and assigned to app. To overcome the cross origin error middle ware is added which allows basically any origin to exchange data and communicate. In this case data is transferred from localhost:5000 to localhost 8000. Next a class of User is made with the data model containing Username and salary with respective datatypes using BaseModel. The List of User is assigned to mydata where list of users according to data model is stored. One example data is also stored. Here two api end points are specified i.e one for get request and one for post request. User data is posted form the API UI. Now with the following command fast api is started (api is name of my python file i.e api.py)

    + +

    uvicorn api:app –port 5000 –host 0.0.0.0 –reload

    + +

    **
    +**

    + +

    Next lets see the data pipeline for collecting data from the api end point.

    + +

    Function fetchdata collects data from the endpoint http://localhost:5000/getuser

    + +

    + +

    After taking the response in json format we unpack the dictionary and assign it to my data, finally store the data in csv format. DAG i.e Directed Acyclic Graph is created and assigned the name fetchdatafromapi.

    + +

    + +

    + +

    The default argument is assigned with args which contains owner as airflow and start date. Also the DAG is schedule of running once for every 10 hours and start from current date. PythonOperator is used with the taskid fetchdata. The function fetchdata is called

    + +

    + +

    from pythoncallable and the value of dag is assigned.

    + +

    Output 

    + +

    Finally after running the code we will see data.csv in folder structure.

    + +

    + +

    Conclusion

    + +

    Hence this is simple datapipeline to extract data from the API endpoints. Well depending upon the needs of user many modifications can be made.

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Prashant, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/03/16/A-B-testing-implementation-using-python.html b/2023/03/16/A-B-testing-implementation-using-python.html new file mode 100644 index 00000000..cf5f5ed6 --- /dev/null +++ b/2023/03/16/A-B-testing-implementation-using-python.html @@ -0,0 +1,415 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A/B testing Implementation Using Python | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    A/B testing Implementation Using Python

    +

    16 Mar 2023 - Sakar Mainali

    +

    +

    In the business domain, it’s important to recognize the significance of using data to make informed decisions that can improve the efficacy of the product or marketing strategies. A/B testing or Bucket testing is a widely used and highly effective statistical method for optimizing digital assets such as web pages, emails, and ads. By testing different variations of these assets, businesses can gather valuable data on how each version performs and use that information to make data-driven decisions about which elements to include or remove. A/B testing can be used to optimize a variety of factors, including headlines, images, copy, calls-to-action, and more, and can lead to significant improvements in key metrics such as click-through rates, conversion rates, and revenue. This blog post will guide you through a detailed process for implementing A/B testing along with an example implementation using python.

    + +

    A/B Testing Steps

    + +

    Step 1: Define Your Hypothesis

    + +

    Before you begin your A/B test, you need to define your hypothesis. What is it that you want to test? What is the outcome you want to achieve? Your hypothesis should be specific, measurable, and achievable. For example, your hypothesis might be that changing the color of your call-to-action button will increase click-through rates.

    + +

    Step 2: Identify Your Variables & Variations

    + +

    Once you have defined your hypothesis, you need to identify the variables you will test. In the example above, the variable you will test is the color of your call-to-action button. You might test different variations, such as red, green, or blue.

    + +

    Next, you need to create your variations. You might use a website optimization tool, such as Optimizely or Google Optimize, to create different versions of your webpage or you might manually create different variations of your marketing campaign.

    + +

    Step 3: Split Your Traffic & Collect Data

    + +

    Once you have created your variations, you need to split your users traffic evenly between them. This can be done using a randomization tool or by manually splitting your traffic.

    + +

    After the traffic is split, you need to collect data on how each variation performs. You might track metrics such as click-through rates, conversion rates, or revenue generated.

    + +

    Step 4: Analyze Your Data

    + +

    After you have collected data, you need to analyze it to determine which variation performed better. This can be done using statistical analysis tools, such as Excel, R, or Python. You might use a t-test or chi-square test to determine statistical significance.

    + +

    Step 5: Draw Conclusions

    + +

    Based on your analysis, you can draw conclusions about which variation performed better and why. You can then use these insights to make data-driven decisions about how to improve your website or marketing campaign.

    + +

    Implementation Example in Python

    + +

    Suppose you run an online store and you want to test whether a new version of your product page leads to increased revenue. You have two versions of the product page: the original version (control) and the new version (variant). You want to test which version leads to more revenue generation. For this, we’re taking one suitable example dataset from kaggle. We’ll be exploring this dataset in details afterwards but for now lets go through each steps in A/B testing

    + +

    Step 1: Define Your Hypothesis

    + +

    As we want to test which version leads to more revenue generation, let us define our hypothesis below:

    + +

    Hypothesis: The new version of the product page (variant) will lead to more revenue than the original version (control).

    + +

    NULL Hypothesis : There is no statistically significant difference in revenue between the two versions of the product page.

    + +

    Step 2: Identify Your Variables & Variations

    + +

    Variable: Version of the product page (control or variant)

    + +

    Step 3: Split Your Traffic & Collect Data

    + +

    As mentioned earlier, we’re taking an example dataset from kaggle dataset: (https://www.kaggle.com/datasets/sergylog/ab-test-data). Let’s import and explore this dataset

    + +

    + +

    As we can see that the dataset consists of three fields:

    + +

    USER_ID — Unique identifier to track each user

    + +

    VARIANT_NAME — Version of the page i.e. the original version (control) and the new version (variant)

    + +

    REVENUE — Income brought by the user

    + +

    Lets us check unique values in each fields and descriptive summary statistics

    + +

    + +

    + +

    Let us check how the data is distributed using a box plot

    + +

    + +

    It can be seen from the plot that there is a strong outlier in the data. Lets find this by sorting these revenue values in descending order and looking at the top 10 values

    + +

    + +

    Here we can observe that user with id : 3342 has a high outlier revenue data

    + +

    + +

    We see that there is only one outlier, so we’ll remove this entry and look at the distribution of data again

    + +

    + +

    Now lets split revenue between the two versions of the page i.e. the original version (control) and the new version (variant).

    + +

    + +

    + +

    It is usually recommended to split the variant and control group equally in A/B testing to ensure that any differences in the test results are not due to an uneven distribution of participants between the groups. Let’s go ahead by taking a minimum sample size and randomly sample equal number of data points from each group

    + +

    + +
    # Randomly sample equal number of data points from each group
    +
    +#For control group\
    +control = np.random.choice(control, size=min_sample_size, replace=False)
    +
    +#For variation group\
    +variation = np.random.choice(variation, size=min_sample_size, replace=False)
    +
    + +

    Step 4: Analyze Your Data

    + +

    Here we want to test whether a new version of the product page leads to increased revenue. For this, we can use a t-test to determine if there is a statistically significant difference in the revenue between two versions of the product page. Here we’re using test_ind module from scipy python library to calculate the t-test for the revenues.

    + +

    + +

    Here we can see that the p-value obtained from the t-test is around 0.4

    + +

    Step 5: Draw Conclusions

    + +

    If the p-value is less than 0.05, we can reject the null hypothesis and conclude that there is a statistically significant difference in revenue between the two versions of the product page. Furthermore in this case we can conclude that the variation or control versions of the product page led to higher revenues based on their means. Otherwise we have to accept the null hypothesis. Lets implement this in code

    + +

    + +

    Finally we can conclude that there is no statistically significant difference in the revenues between the control and variation groups. So our original hypothesis:” The new version of the product page (variant) will lead to more revenue than the original version (control). “ can be rejected. So now you should be confident to change the current variation in the web page and began experimenting with other variations.

    + +

    Conclusion

    + +

    In conclusion, A/B testing is an essential tool for businesses to improve their website’s performance, user engagement, and ultimately, their bottom line. With the help of Python and its various libraries, implementing A/B testing has become much more accessible and streamlined. By following the steps outlined in this blog post, you can get started with A/B testing in Python, create reliable experiments, and analyze the results to make data-driven decisions. Finally keep in mind that A/B testing is an iterative process, and it’s essential to continually analyze and improve your experiments to achieve the best results.

    + +

    Kaggle Notebook : https://www.kaggle.com/code/sakarmainali/a-b-testing-implementation-using-python/

    + +

    REFERENCES

    + + + +

    Code for Nepal would like to thank DataCamp Donates for providing Sakar, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/03/27/workflow-of-data-engineering-on-aws.html b/2023/03/27/workflow-of-data-engineering-on-aws.html new file mode 100644 index 00000000..2f372aca --- /dev/null +++ b/2023/03/27/workflow-of-data-engineering-on-aws.html @@ -0,0 +1,459 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Workflow of Data Engineering Project on AWS | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Workflow of Data Engineering Project on AWS

    +

    27 Mar 2023 - Ravi Pandit

    +

    +

    1.    Architecture Diagram:
    +

    + +

    Figure 1: Architecture Diagram

    + +
      +
    • Amazon S3: Amazon S3 (Simple Storage Service) is a highly scalable and secure cloud storage service provided by Amazon Web Services (AWS). It allows users to store and retrieve any amount of data from anywhere on the web, with high durability, availability, and performance. S3 provides a simple web interface, as well as an API, to manage and access the data stored in it. Users can create buckets (i.e., containers for objects) in S3 and upload files (i.e., objects) to them.
    • +
    • Crawler (to extract all the schema & information): AWS provides a managed service called AWS Glue Crawler, which is a fully-managed data crawler that automatically discovers, categorizes, and registers metadata about your data assets in AWS.
    • +
    • Amazon Athena: Amazon Athena is an interactive query service provided by AWS that allows users to analyze data in Amazon S3 using standard SQL queries. It is a serverless service, which means that users do not need to manage any infrastructure or perform any database administration tasks. Athena automatically scales query processing based on the amount of data being queried, so users can run ad-hoc queries on large datasets with ease.
    • +
    • AWS Glue: AWS Glue is a fully-managed extract, transform, and load (ETL) service provided by AWS that allows users to move data between different data stores and data lakes. It provides a serverless environment for running ETL jobs, which means that users do not need to manage any infrastructure or perform any database administration tasks.
    • +
    • Amazon Redshift: Amazon Redshift is a fully-managed cloud data warehouse provided by AWS that allows users to store and analyze large amounts of structured and semi-structured data. It is designed to be fast, scalable, and cost-effective, making it a popular choice for big data analytics.
    • +
    • VPC: VPCs provide a flexible and secure way for users to launch and run their AWS resources in a private and isolated network environment.
    • +
    + +

    2.    Dataset:

    + +

            For this project, covid-19 dataset will be used, provided by the aws. Structure of dataset and information related to dataset can be studied through this blog:

    + +

    Dataset Link

    + +

    Only selective datasets are downloaded as shown in the figure:

    + + + + + + + + + + + + + + +
      
    + +

    Figure 2:  Dataset

    + +

    3.    Storing downloaded Dataset in Amazon S3:

    + +

    + +

    Figure 3: Storing the downloaded Dataset in Amazon S3

    + +

    4.    Analyzing the data (Schema Crawling and Table Building):

    + +

    Crawler is created for each and every csv data files where crawler crawls on all the dataset stored in S3 and extract all the schema and information.

    + +

    + +

    Figure 4 : Crawler

    + +

    After completion of crawler task, Amazon Athena is used to analyze each and every data (studying the datasets) extracted by crawler.

    + +

     

    + +

    Figure 5: Amazon Athena

    + +

     5.    Building Data Models:

    + +

                   After analyzing the data, to understand the overall flow of the Data, Data Model is created.

    + +

    Here, fips is primary key in most of the table which can also be studied from the data source of the dataset.

    + +

    + +

    6.    Schema:

    + +

                   Here, the fact table is factCovid and there are 3 different dimension table (i.e dimHospital, dimRegion, dimDate). Most of the information is redundant across most of the table in above Data model, thus schema is created because it is more simpler to analyze data in data warehouse when there is less table.

    + +

    + +

    7.    Use of Jupyter Notebook:

    + +
      +
    • Libraries:
    • +
    + +

    import boto3

    + +

    import pandas as pd

    + +

    from io import StringIO

    + +
      +
    • Access Case:
    • +
    + +

    + +
      +
    • Connect to Athena and Query Data
    • +
    + +

    + +
      +
    • Function:
    • +
    + +

    This function basically take boto3 object and dictionary and run query in Athena and store the output in S3 i.e in staging_dir

    + +

    + +
      +
    • Query Response:
    • +
    + +

    + +

    + +

            Similarly, this process is repeated for all other 9 tables created using crawler shown in figure 4.

    + +
      +
    • Fixing errors’ found in table:
    • +
    + +

    + +
      +
    • Transformation (ETL job in python):
    • +
    + +

    + +

                    Changing Dimension Table(Date) property as explained in figure of schema:

    + +

    + +

    + +

    + +
      +
    • Save results to S3:
    • +
    + +

    + +

            Herespecify the S3 bucket name in place of bucket.

    + +

            Similarly, this process is repeated for all other 9 tables created using crawler shown in figure 4.

    + +
      +
    • Extracting Schema out of the DataFrame:
    • +
    + +

    + +

                Note: These schema will be needed while creating table in Amazon Redshift.

    + +

    8.    Creating a Redshift Namespace (Cluster)

    + +

    + +

    9.    AWS Glue Job

    + +

    In AWS, AWS Glue Jobs are used for the ETL (Extract, Transform, Load) process to move data from one location to another. AWS Glue is a fully managed ETL service that makes it easy to move data between different data stores and data lakes.

    + +

    AWS Glue Jobs are used to run ETL scripts and perform data transformations on data stored in various data sources such as Amazon S3, Amazon RDS, Amazon DynamoDB, Amazon Redshift, and more. AWS Glue Jobs can be written in Python or Scala, and they can be run on a serverless infrastructure. This means that AWS Glue Jobs can scale automatically and can handle any amount of data processing.

    + +

    Table is created in Amazon Redshift with the help create table command and copy command is used to copy the dimension table and fact table from S3 to Redshift. These all process is done by creating a job in AWS Glue Job. 

    + +

    + +

    Once the AWS Glue Jobs’ task is completed, data can be queried and viewed in Redshift query editor as shown in figure below:

    + +

    + +

    Finally, this data can be used by Data Analyst and Data Scientist to derive insights and decision making.

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Ravi, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/03/28/survey-form-deployment.html b/2023/03/28/survey-form-deployment.html new file mode 100644 index 00000000..14b8480b --- /dev/null +++ b/2023/03/28/survey-form-deployment.html @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Survey Form Deployment and Data Pipeline | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Survey Form Deployment and Data Pipeline

    +

    28 Mar 2023 - Sudip Shrestha

    +

    +

    This project is about collecting data by doing survey. Simply, survey data on social media usage is collected. We will be using deploying a single page that contains the survey form to the public internet. We will collect all the data on the MongoDB database. We will create an API that helps to fetch all the survey data from the MongoDB database. You can see the deployed survey form in this link.
    +After deploying the survey form, we will create a data pipeline that consists of fetching the data from the database and cleaning the data for further use in visualization and analysis. We will be using Airflow for scheduling these two processes one after another. Airflow is an open-source platform for developing, scheduling, and monitoring different workloads. It provides a graphical user interface to manage our workloads.

    + +

    Code Availability
    +Survey Form here
    +Data Pipeline here

    + +

    Technology Used
    +HTML, CSS, Javascript
    +Nodejs(version 16.17.0), MongoDB
    +Airflow

    + +

    Steps for deploying and pipelining

    + +

    Step 1: Create a Survey Form
    +Create a directory named your_directory_name. Create a simple survey form in index.html about social media usage by individuals inside your_directory_name. The field includes the name, age, sex, social media preferred, and frequency of usage.

    + +

    Step 2: Create a node.js server
    +On your_directory_name run, the command npm init –y. After that install express, body-parser, and mongoose.
    +npm install express body-parser mongoose
    +_**Create a Model folder and create a file named **_Survey.js
    This file includes the schema for the database. Write the following code to create a mongoose schema.

    + +
    const mongoose = require('mongoose');  
    +const Schema = mongoose.Schema;  
    +const surveySchema = new Schema({  
    +    name: {  
    +        type: String,  
    +        default: 'Anonymous'  
    +    },  
    +    age: {  
    +        type: String,  
    +        default: 'Not Specified'  
    +    },  
    +    sex:{  
    +        type: String,  
    +        default: 'Not Specified'  
    +    },  
    +    platform:{  
    +        type: String,  
    +        default: 'Not Specified'  
    +    },  
    +    frequency:{  
    +        type: String,  
    +        default: 'Not Specified'  
    +    }  
    +});  
    +module.exports = mongoose.model('Survey', surveySchema);
    +
    +

    After that,Create a server.js file. Write the following code to start the server at port 3000.

    +
    const express = require('express');  
    +const app = express();  
    +const bodyParser = require('body-parser');  
    +app.use(bodyParser.json());  
    +const port = 3000;  
    +const survey = require('./Model/Survey');  
    +//connect to mongodb  
    +const mongoose = require('mongoose');  
    +mongoose.connect('mongodb+srv://<your_mongodb_username>:<your_mongod_password>@cluster0.iwq7e3d.mongodb.net/<collection_name>', {useNewUrlParser: true, useUnifiedTopology: true})  
    +.then(() => console.log('Connected to MongoDB...'))  
    +.catch(err => console.error('Could not connect to MongoDB...'));  
    +app.listen(port, () => {  
    +    console.log(`Example app listening at http://localhost:${port}`);  
    +});
    +
    +

    Add this code to serve the index.html on running the localhost:3000/

    +
    app.get('/', (req, res) => {  
    +    //respond the static index.html file  
    +    res.sendFile(__dirname + '/index.html');  
    +});
    +
    +

    Now create an endpoint that handles the post request of saving the survey data to the MongoDB database.

    +
    app.post('/survey', async(req, res) => {  
    +    const obj = new survey({  
    +        name: req.body.name,  
    +        age: req.body.age,  
    +        sex : req.body.sex,  
    +        platform: req.body.socialMedia,  
    +        frequency: req.body.frequency  
    +    });  
    +    await obj.save().then((data)=>{  
    +        res.status(200).send('Data saved successfully');         
    +    })  
    +    .catch(err => {  
    +        res.status(400).send('Unable to save to database');  
    +        console.log(err);  
    +    });  
    +});
    +
    +

    To provide all the data, add this code to endpoint “/data”

    +
    app.get('/data', async(req, res) => {  
    +    try {  
    +        const data = await survey.find();  
    +        res.json(data);  
    +    } catch (err) {  
    +        console.error(err);  
    +        res.status(500).send('Server Error');  
    +    }  
    +});
    +
    +

    After that, we need to send the post request from the frontend part so, add this code to index.html.

    +
    await fetch('http://localhost:3000/survey',{  
    +      method:'POST',  
    +      headers:{  
    +          'Content-Type':'application/json'  
    +      },  
    +      body:JSON.stringify(data)  
    +  }).then((res)=>{ //your code here  
    +  }).catch((err)=>{ //your code here  
    +})
    +
    +

    Step 3: Deploying to Render Platform
    +To deploy the application, we need to create a repository in our GitHub. After pushing all the code to the repository. We can log in to the rendering platform with a GitHub account. Click on the new button, list of services will be seen. Click on web service. It provides a free plan for web services. Click on the free plan. A new page appears where you can connect your repository.
    +You can visit this youtube link for guidelines.
    +Note*: Sometimes node engine errors might arrive during deployment. Add .nvmrc in your directory with the specific required version of the node engine.
    +After that, you need to change the endpoint with deployed URL in index.html. Update the endpoint by removing ‘http://localhost:3000/survey’ to render the service URL like https://your-webserviceurl.com/survey

    + +

    Step 4: Data pipelining using Airflow
    +We need to install airflow. I have to install airflow in windows(wsl). You can install it by watching this guideline video link.
    +Under the file directory dags, create a new dag for fetching and cleaning the data fecthingandclean.py. Also, create new folder data with a subfolder surveyData as shown in the figure.

    + +

    + +

    dags and data folder

    + +

    In fetchingandclean.py, we need to import the necessary files first.

    +
    import requests  
    +from airflow import DAG  
    +from airflow.operators.python import PythonOperator  
    +from datetime import datetime  
    +import pandas as pd  
    +import os  
    +import csv  
    +import json
    +
    +

    After that, we define a function that performs the workload of fetching the data from MongoDB collection. The response from the URL is in string form so, we need to convert it to a list using a JSON package.

    +
    def fetchData():  
    +    try:  
    +        url = “https://your-webserviceurl.com/data”  
    +        response = requests.request("GET", url)  
    +        data= response.text  
    +        data = json.loads(data)  
    +        flocation="yourpath/data/surveyData/surveyData.csv"  
    +        if not os.path.exists(flocation):  
    +            open(flocation,'w').close()  
    +            with open(flocation, 'w', newline='') as f:  
    +            # Create a csv writer object  
    +                writer = csv.writer(f)                  
    +                # Write the header row  
    +                writer.writerow(data[0].keys())                  
    +                # Write the data rows  
    +                for row in data:  
    +                    writer.writerow(row.values())  
    +        else:  
    +            with open(flocation, 'w', newline='') as f:  
    +            # Create a csv writer object  
    +                writer = csv.writer(f)                  
    +                # Write the header row  
    +                writer.writerow(data[0].keys())                  
    +                # Write the response.text rows  
    +                for row in data:                      
    +                    writer.writerow(row.values())  
    +    except:  
    +        print("error while fetching")
    +
    +

    After that, create a cleanData function workload.

    +
    def cleanData():  
    +    try:  
    +        flocation="yourpath/data/surveyData/surveyDataClean.csv"  
    +        if not os.path.exists(flocation):  
    +            open(flocation,'w').close()  
    +        df= pd.read_csv("yourpath/data/surveyData/surveyData.csv")  
    +        #remove duplicates  
    +        df = df.drop('__v', axis=1)  
    +        df = df.rename(columns={'_id': 'userID'})  
    +        df= df.drop_duplicates()  
    +        df.to_csv(flocation,index=False)  
    +    except:  
    +        print("Could not clean the data!!!")
    +
    +

    Now create a DAG

    +
    with DAG(dag_id="SURVEY-DATA",  
    +        start_date=datetime(2023,3,25),  
    +        schedule_interval="@hourly",  
    +        catchup=False) as dag:      
    +        fetch = PythonOperator(  
    +            task_id="Fetch_from_API",  
    +            python_callable=fetchData  
    +        )  
    +        clean = PythonOperator(  
    +            task_id="clean_the_data",  
    +            python_callable=cleanData  
    +        )  
    +fetch >> clean
    +
    +

    Step 5: To run this you can type the following code in a different terminal.

    +
    airflow webserver  
    +airflow scheduler  
    +
    +

    Now you can visit the airflow home page at “localhost:8080”. Select the SURVEY-DATA dag and you trigger it to run. You can view the graph from UI.

    + +

    + +

    After running the dags, the data folder must have two files shown below.

    + +

    + +

    We have successfully deployed the survey form and made a data pipeline using airflow. The collection of data and cleaning can be scheduled at certain intervals of time like hourly which is written in the DAG code above.

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Sudip, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/04/11/code-for-nepal-datacamp-partnership.html b/2023/04/11/code-for-nepal-datacamp-partnership.html new file mode 100644 index 00000000..42f742a0 --- /dev/null +++ b/2023/04/11/code-for-nepal-datacamp-partnership.html @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal and DataCamp Partnership: Empowering Data Literacy and Career Growth | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Code for Nepal and DataCamp Partnership: Empowering Data Literacy and Career Growth

    +

    11 Apr 2023 - Ayush Subedi

    +

    +

    Code for Nepal is a non-profit organization that aims to increase digital literacy and access to technology in Nepal. We focus on providing training and resources for coding and data literacy, as well as advocating for policies and programs that support technology education and access. Code for Nepal also works to promote the use of technology to address social issues and improve the lives of Nepali people.

    + +

    We introduced the Code for Nepal Data Fellowship in 2020, and this has been one of our success stories. Our partnership with DataCamp Donates enables our fellows access to an amazing learning platform that offers interactive courses in data science, analytics, and programming. Additionally, as part of the fellowship they also join a supportive community, collaborate with like-minded individuals, receive guidance from experienced mentors, and even earn an income. Fellows have the opportunity to share their knowledge and insights by writing blogs. We believe this program offers a unique chance for individuals to develop their skills and contribute to the tech industry in Nepal and globally.

    + +

    + +

    + +

    + +

    DataCamp provides a range of courses on topics such as Python programming, data analysis, data visualization, machine learning, and many more. DataCamp courses are interactive and include hands-on coding exercises, quizzes, and projects that allow learners to apply their skills in real-world scenarios. The platform is designed to be user-friendly and accessible to learners of all levels, from beginners to experts. Additionally, DataCamp offers career tracks, skill assessments, and a personalized learning experience through its adaptive learning technology.

    + +

    + +

    Recently, we surveyed our alumni to request information regarding if the Code for Nepal partnership with DataCamp helped them kickstart their career in data.

    + +

    Most of the respondents stated that DataCamp helped them to learn or enhance their programming skills, specifically in Python, SQL, and data analysis. Some respondents are students who are still learning and looking for internships, while others secured jobs or internships after completing DataCamp courses. A few respondents also mentioned that DataCamp provided them with a platform to learn about AI/ML and big data. One respondent mentioned that DataCamp has been a crucial resource for them in developing their data analysis skills, and they were able to secure a full-time position at a clinical tech company.

    + +

    From the survey responses, the following companies were mentioned where participants secured jobs or internships after learning through DataCamp: Accenture, Fusemachines, Cloudfactory, Cotiviti Nepal, Plieger Group, Mediflow Solutions, and Nimble Clinical Research. However, some participants did not mention the companies they secured jobs/internships with or were still seeking opportunities.

    + +

    + +

    The responses provided by different individuals suggest that the partnership has helped them in various ways to enhance their knowledge and skills in the field of data science, engineering, and analysis. Many individuals reported that DataCamp helped them to learn Python programming language, which is widely used in the field of data science, and also introduced them to various tools and modules available in Python, such as Numpy, Pandas, and Matplotlib.

    + +

    Some individuals mentioned that DataCamp helped them gain SQL skills and provided them with a brief overview of the field of data engineering. Others reported that DataCamp helped them to hone their AI/ML skills, learn important concepts such as data manipulation, data visualization, machine learning algorithms, and deep learning techniques, and build practical projects to showcase their abilities to potential employers.

    + +

    Many individuals expressed their gratitude towards DataCamp for providing them with an excellent platform to learn and improve their skills in data science, engineering, and analysis. They appreciated the interactive and impactful nature of the courses and projects, which helped them to test their understanding of the material and identify their areas of weakness. Some individuals also mentioned that DataCamp helped them to advance in their careers in data science and analysis.

    + +

    The responses suggest that DataCamp has been a valuable resource for individuals interested in data science, engineering, and analysis, providing them with the necessary tools and knowledge to succeed in these fields.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/04/12/building-my-own-imdb-dataset-using-scrapy.html b/2023/04/12/building-my-own-imdb-dataset-using-scrapy.html new file mode 100644 index 00000000..ccedd0c2 --- /dev/null +++ b/2023/04/12/building-my-own-imdb-dataset-using-scrapy.html @@ -0,0 +1,574 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Building my own IMDB movies dataset using Scrapy | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Building my own IMDB movies dataset using Scrapy

    +

    12 Apr 2023 - Shyamron Dongol

    +

    +

    Scrapy, a free and open-source web crawling framework, was first release on June 26, 2008 licensed under BSD. It is used for web scraping and extracting structured data. Scrapy is widely used by many employers, for both freelancing and in-house jobs for various applications from data mining to monitoring websites. or changes. Scrapy is popularly used due to its ability to handle requests asynchronously, i.e., it can execute multiple tasks concurrently, such as making requests, processing responses, and saving data. It allows you to focus on the data extraction process utilizing CSS selectors and XPath expressions rather than the complex internals of how spiders are supposed to function. With Scrapy, you can easily build complex scraping pipelines that can handle multiple pages, parse complex HTML structures, and store data in various formats.

    + +

    Web scraping is a technique for gathering data or information on web pages. Web crawling is usually the first step of data tasks. This blog discusses how powerful scrapy is and how it can be implemented using Python. Movies information such as title, rating, no. of reviews, genres and other information are scraped from imdb.com site. Obtaining this information is the first step towards tasks such as movie recommendation systems, discover trends on movies, visualize how movies’ popularity is dependent on various factors and other visualizations and evaluations.

    + +

    For example, you can analyze the genres of movies that are currently popular and see how they have changed over time. Furthermore, you can analyze the movie information obtained from Scrapy to see which actors, directors, or production companies are associated with popular movies and use this information to predict the success of future movies.

    + +

    This blog provides a step-by-step guide on creating a Scrapy project and a spider to scrape data from IMDB. Let’s get going.

    + +

    Getting Started (Prerequisites)

    + +
      +
    1. Install scrapy.
    2. +
    + +

    Firstly, we have to install scrapy. If you are using anaconda, you can use conda to install scrapy such as:

    + +

    conda install -c conda-forge scrapy

    + +

    Or using pip as:

    + +

    pip install scrapy

    + +

    Creating our scrapy project

    + +

    Step 1:

    + +

    To create our scrapy project, run following command in your appropriate directory.

    + +

    scrapy startproject imdbscrapy

    + +

    Here, imdbscrapy is the scrapy project name and our scrapy project folder would look like this:

    + +

    + +

    The created project folder contains multiple files each having specific purpose.

    + +

    Scrapy.cfg — Deploys configuration file.

    + +

    init.py — Initialization file

    + +

    Item.py — Project items definition file

    + +

    Middlewares.py — Project middle wares file

    + +

    Pipelines.py — Project pipelines file

    + +

    Setting.py — Project settings file

    + +

    Spiders/ — A directory where later you will put your spiders.

    + +

    Spiders are classes that you define and that Scrapy uses to scrape information from websites.

    + +

    Step 2:

    + +

    Creating spider: To create a spider, we navigate towards the spider folder and run following command:

    + +

    scrapy genspider imdb_movies imdb.com

    + +

    After executing above command, python file named imdb_movies is created in spiders directory with start URL https://www.imdb.com. All the commands will be written here to scrape the information.

    + +

    + +

    imdb_movies.py would contain python code given as follows.

    + +

    + +

    Step 3:

    + +

    Now, navigating toward Feature Film, Action, English (Sorted by IMDb Rating Descending) — IMDb, i.e., the movies with genre “action” web URL are selected to scrape. It consists of more than 20k+ action movies separated in multiple pages with each page containing maximum 50 movies.

    + +

    We would want to scrape following features from each action movies:

    + +
      +
    1. Title
    2. +
    3. Rating
    4. +
    5. No. of reviews
    6. +
    7. Directors and Actors
    8. +
    9. Genres
    10. +
    11. Year
    12. +
    13. Runtime
    14. +
    + +

    + +

    Step 4:

    + +

    In imdb_movies.py, specify our required urls and genres lists. In this case, since we are only scraping for ‘action’ genre, so genre is a list containing ‘action’. If you want to scrape other genres, you can add it on the list.

    + +

    Now, yield scrapy request for each url in urls list. In this case there is only one url i.e., for ‘action’ genre.

    + +
    class ImdbMoviesSpider(scrapy.Spider):
    +    name = 'imdb_movies'
    +    allowed_domains = ['www.imdb.com']
    +    start_urls = 'http://www.imdb.com/'
    +    genres=['action']
    +
    +    def start_requests(self):
    +        urls=[]
    +        for genre in self.genres:\
    +            urls.append(f"{self.start_urls}/search/title/?genres={genre}&languages=en&sort=user_rating,desc&title_type=feature")
    +        for url in urls:
    +            yield scrapy.Request(url=url,callback=self.parse)
    +
    +    def parse(self, response):
    +        pass
    +
    +
    +

    Step 5: +——-

    + +

    We can use CSS or Xpath to select elements from the websites. First thing to do is navigate towards the required website and right click on the mouse and Inspect. This will display he website’s HTML, CSS, and JavaScript code.

    + +

    + +

    Select Ctrl+ shift + c and click on required elements in the web that you want to extract. This will display the HTML code for the specific feature.

    + +

    + +

    + +

    Here, the div class lister-list contains all the movies each separated under div class list-item mode-advanced. Each required items are selected again using span, div or p.

    + +

    As default, the features variables are set to empty string (‘ ‘) , as all the movies may not have values.

    + +
    def parse(self, response):
    +    movies_list=response.css('div.lister-list')
    +    for movie in movies_list:
    +        movies=movie.css('div.lister-item.mode-advanced')
    +        year=''
    +        title=''
    +        rating=''
    +        reviews=''
    +        directors_actors=''
    +        genres=''
    +        gross=''
    +        runtime=''
    +
    + +

    If the div class name is unique then we can directly use the class name. If the same class name is used for other divisions as well, we may want to be specific about which division we want to scrape. Following is the illustration using CSS expression:

    + +

    for items in movies: + rating=items.css(“div.inline-block.ratings-imdb-rating strong::text”).get() + runtime=items.css(“span.runtime::text”).get() + year=items.css(‘span.lister-item-year.text-muted.unbold::text’).get()

    + +

    Referencing to figure above, to extract title text, we can use ‘a’ tag, but other divisions also have ‘a’ tag, so we specify the unique division that title ‘a’ tag belong to and then scrape within the division.

    + +

    title=items.css(“h3.lister-item-header a::text”).get()
    +genres=items.css(“p.text-muted span.genre::text”).get()

    + +

    Syntax:

    + +

    feature = response.css(“div.parent-class div.child-class::text”).get()

    + +

    Step 6:

    + +

    Another way of writing expressions is using nth-child. Code snapshot is:

    + +
    for item in items.css('p.sort-num_votes-visible'):
    +    reviews=item.css("span:nth-child(2)::text").get()
    +    gross=item.css('span:nth-child(5)::text').get()
    +
    + +

    In above code, the second and fifth child span within element ‘p’ are being accessed to obtain number of reviews and gross obtained from the movie

    + +

    Step 7:

    + +

    We can also use Xpath for extracting elements.

    + +
    for item in items.css('div.lister-item-content'):
    +    for names in item.xpath('.//p[3]'):
    +        directors_actors = [name.strip() for name in names.css('::text').extract()]
    +
    +
    +
    + +

    Here, actors and directors’ names are extracted from third ‘p’ element within div class lister-item-content.

    + + + + + + + + +
    If you want to learn more about detailed information and syntax relating to scrapy Xpath and CSS expressions, refer this tutorial [Scrapy Python: How to Make Web Crawler in PythonDataCamp](https://www.datacamp.com/tutorial/making-web-crawlers-scrapy-python) .
    + +

    Step 8:

    + +

    Doing this will extract required elements from one page of website. We can further modify the code to extract from multiple pages.

    + +

    + +

    Code snippet is:

    + +
    next_page = response.css('a.lister-page-next.next-page').attrib['href']
    +next_page = f"{self.start_urls}/{next_page}"
    +print(f"temp:{next_page}")
    +if next_page is not None:
    +    yield response.follow(next_page,callback=self.parse)
    +
    +
    +

    In this code, href is extracted from ‘a’ element to navigate to next page. This code allows the spider to follow links to the next page of search results until there are no more pages.

    + +

    Step 9:

    + +

    The spider is run by following command:

    + +

    scrapy crawl imdb_movies -O movies.csv

    + +

    A dataset name movies.csv is obtained.

    + +

    Compiling all the code snippets, complete code for our spider is:

    + +
    import scrapy\
    +class ImdbMoviesSpider(scrapy.Spider):
    +    name = 'imdb_movies'
    +    allowed_domains = ['www.imdb.com']
    +    start_urls = 'http://www.imdb.com/'
    +    genres=['action']
    +
    +    def start_requests(self):
    +        urls=[]
    +        for genre in self.genres:
    +            urls.append(f"{self.start_urls}/search/title/?genres={genre}&languages=en&sort=user_rating,desc&title_type=feature")
    +        for url in urls:
    +            yield scrapy.Request(url=url,callback=self.parse)
    +
    +    def parse(self, response):
    +        movies_list=response.css('div.lister-list')
    +        for movie in movies_list:
    +            movies=movie.css('div.lister-item.mode-advanced')
    +            year=''
    +            title=''
    +            rating=''
    +            reviews=''
    +            directors_actors=''
    +            genres=''
    +            gross=''
    +            runtime=''
    +            for items in movies:
    +                rating=items.css("div.inline-block.ratings-imdb-rating strong::text").get()
    +                runtime=items.css("span.runtime::text").get()
    +                year=items.css('span.lister-item-year.text-muted.unbold::text').get()
    +                title=items.css("h3.lister-item-header a::text").get()\
    +                genres=items.css("p.text-muted  span.genre::text").get()
    +
    +                for item in items.css('p.sort-num_votes-visible'):
    +                    reviews=item.css("span:nth-child(2)::text").get()
    +                    gross=item.css('span:nth-child(5)::text').get()
    +
    +                for item in items.css('div.lister-item-content'):
    +                    for names in item.xpath('.//p[3]'):
    +                        directors_actors = [name.strip() for name in names.css('::text').extract()]
    +                yield{\
    +                    "year":year,
    +                    "title":title,
    +                    'rating':rating,
    +                    'no_of_reviews':reviews,
    +                    'directors_actors':directors_actors,
    +                    'genres':genres.strip(),
    +                    'runtime':runtime,
    +                    'gross':gross
    +                }
    +
    +        next_page = response.css('a.lister-page-next.next-page').attrib['href']
    +        next_page = f"{self.start_urls}/{next_page}"
    +        print(f"temp:{next_page}")
    +        if next_page is not None:
    +            yield response.follow(next_page,callback=self.parse)
    +
    +
    + +

    After executing the spider, all 20,464 action movies from IMDB were extracted. The dataset contains a lot of dirty values and empty cells. Data manipulations and data preprocessing can be done before applying the data to proper use. Complete code along with extracted dataset can be found in GitHub here.

    + +

    Conclusion

    + +

    By implementing the spider code, 20k+ action movies were scraped in about 15–20 minutes. This clearly show how power scrapy is. You can explore further about scrapy here to scrape your own dataset.

    + +

    References:

    + + + +

    Code for Nepal would like to thank DataCamp Donates for providing Shyamron, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/05/24/harnessing-data-science-for-agricultural-crops-prediction.html b/2023/05/24/harnessing-data-science-for-agricultural-crops-prediction.html new file mode 100644 index 00000000..976c0774 --- /dev/null +++ b/2023/05/24/harnessing-data-science-for-agricultural-crops-prediction.html @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Harnessing Data Science For Agricultural Crops Prediction | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Harnessing Data Science For Agricultural Crops Prediction

    +

    24 May 2023 - Sadhana Panthi

    +

    +

    Using AI to determine optimal crop selection can have a significant impact on ending world hunger, particularly in poor developing countries like Nepal. Even though Nepal is an agricultural country, we import a huge amount of food materials every year which make the trade deficit of Nepal even worse. By leveraging AI technologies such as machine learning and data analysis, we can analyze various factors like climate, soil quality, market demand, and available resources. This data-driven approach helps farmers make informed decisions about which crops to plant, increasing agricultural productivity and improving food security. AI algorithms can provide personalized recommendations based on local conditions, enabling farmers to optimize their yields, reduce crop failures, and maximize profits. Ultimately, AI-driven crop selection can contribute to sustainable farming practices, alleviate poverty, and combat hunger in Nepal and similar regions worldwide.

    + +

    I personally believe that even the uneducated people in the remote parts of the world should get equal opportunity to make their life better leveraging the power of AI and ML. This projects aims to help such people by recommending right kind of crops to maximize their production and profit.

    + +

    + +

    In this blog post, we will explore a data science project focused on agricultural crop prediction, highlighting its significance, methodology, and potential benefits.

    + +

    Dataset

    + +

    The dataset that we’ll be using is: httpswww.kaggle.com/datasets/manikantasanjayv/crop-recommender-dataset-with-soil-nutrients

    + +

    This is what the dataset looks like:

    + +

    + +

    Importing Libraries and Loading Data

    + +

    To begin, we import necessary libraries such as NumPy, Pandas, Seaborn, Matplotlib, and IPython Widgets. These libraries will help us manipulate and visualize the data effectively. Additionally, we import the dataset containing soil and climate information using the Pandas library.

    + +

    import numpy as np

    + +

    import pandas as pd

    + +

    import seaborn as sns

    + +

    import matplotlib.pyplot as plt

    + +

    from ipywidgets import interact

    + +

    import warnings

    + +

    warnings.filterwarnings(‘ignore’)

    + +

    data=pd.read_csv(“Crop_recommendation.csv”)

    + +

    Next, we utilize the Pandas DataFrame to calculate and display the average ratios of nitrogen (N), phosphorous (P), and potassium (K) in the soil. These nutrients are essential for plant growth and provide valuable insights into soil fertility. The code snippet then proceeds to calculate and display the average temperature, relative humidity, pH value of the soil, and rainfall. These climatic factors play a crucial role in determining suitable crop choices.

    + +

    Exploratory Data Analysis

    + +

    Now ,we utilize the popular data visualization libraries, Matplotlib and Seaborn, to create a grid of subplots. Each subplot represents the distribution of a specific agricultural condition for different crops.

    + +

    + +

    The first subplot focuses on nitrogen levels (N) in the soil. By utilizing a histogram plot, we can observe the frequency and spread of nitrogen levels across different crops. Similarly, the second subplot showcases the distribution of phosphorous (P) levels, while the third subplot displays the distribution of potassium (K) levels. Moving on to the fourth subplot, it represents the distribution of temperature. Temperature plays a crucial role in crop growth and development, and understanding its distribution helps identify suitable temperature ranges for specific crops. The fifth subplot focuses on rainfall, providing insights into the amount and frequency of precipitation. Next, the sixth subplot examines the distribution of humidity, which is another critical factor affecting crop health and productivity. The seventh subplot visualizes the distribution of soil pH levels. pH level directly influences nutrient availability and crop performance, making it vital to assess its distribution across different crops.

    + +

    Evaluation Metrics

    + +

    Since this is a supervised classification learning, following metrics have been used:

    + +
      +
    1. Accuracy
    2. +
    3. Precision
    4. +
    5. Recall
    6. +
    7. F1 Score
    8. +
    + +

    Determining Optimum Clusters

    + +

    K-means clustering is a widely used algorithm that partitions data points into clusters based on their similarity. The code snippet begins by importing the necessary libraries, including scikit-learn’s KMeans module. Then, it prepares the data for clustering by removing the labels column and selecting all the values from the dataset. The shape of the data is then printed to gain an understanding of its dimensions.

    + +

    from sklearn.cluster import KMeans

    + +

    #removing the labels column

    + +

    x = data.drop([‘label’], axis=1)

    + +

    #selecting all the values of data

    + +

    x = x.values

    + +

    #checking the shape

    + +

    print(x.shape)

    + +

    (2200, 7)

    + +

    Moving on to the main part of the code, we define an empty list called wcss (Within-Cluster Sum of Squares). This list will store the calculated WCSS values for different numbers of clusters.A loop is then executed from 1 to 10, where each iteration creates a KMeans object with a specific number of clusters. To gain insights into the optimal number of clusters, the Matplotlib library is used to create a line plot.

    + +

    plt.rcParams[‘figure.figsize’] = (10,4)

    + +

    wcss = []

    + +

    for i in range(1,11):

    + +

    km = KMeans(n_clusters = i, init = ’k-means++’, max_iter = 2000, n_init = 10, random_state = 0)

    + +

    km.fit(x)

    + +

    wcss.append(km.inertia_)

    + +

    #Plotting the results

    + +

    plt.plot(range(1,11), wcss)

    + +

    plt.title(‘Elbow Method’, fontsize = 20)

    + +

    plt.xlabel(‘No of Clusters’)

    + +

    plt.ylabel(‘wcss’)

    + +

    plt.show()

    + +

    + +

    The resulting plot is known as the Elbow Method plot. It helps us identify the point of inflection or the “elbow” in the curve.

    + +

    Splitting the Dataset and analyzing correlation

    + +

    Next, we split the dataset into input features and target variables for predictive modeling. Additionally, we will analyze the correlations between different variables using a heatmap visualization.

    + +

    + +

    Data Preprocessing and Training

    + +

    We standardize and tidy up our data to improve model performance.Here, we standardize our data using StandardScaler().The ColumnTransformer is used to create a transformer object that applies the StandardScaler to the numeric columns in the dataset, ensuring that all features are on the same scale.Also, the dataset is split into training and testing sets.

    + +

    from sklearn.preprocessing import StandardScaler

    + +

    from sklearn.compose import ColumnTransformer

    + +

    transformer = ColumnTransformer([(‘num’, StandardScaler(), x.columns)])

    + +

    Moving on to the model training phase, the code creates an SVM pipeline using the Pipeline module from sklearn.pipeline. The pipeline includes the preprocessing transformer and the SVM model from sklearn.svm. This ensures that the preprocessing steps are seamlessly applied to the data before training the SVM model.

    + +

    from sklearn.pipeline import Pipeline

    + +

    from sklearn.svm import SVC

    + +

    svm_pipe = Pipeline(steps=[(‘preprocessing’, transformer), (‘model’, SVC())])

    + +

    svm_pipe.fit(x_train, y_train)

    + +

    y_pred = svm_pipe.predict(x_test)

    + +

    evaluate_model(“SVM”, y_pred, y_test)

    + +

    show_confusion_matrix(y_pred, y_test)

    + +

    Additionally, the show_confusion_matrix() function visualizes the confusion matrix using seaborn’s heatmap. The confusion matrix provides insights into the performance of the model by showing the number of true positives, true negatives, false positives, and false negatives.

    + +

    + +

    SVM

    + +

    accuracy: 0.9772727272727273

    + +

    f1_score 0.9773200952744351

    + +

    precision 0.9799524821583645

    + +

    recall 0.9772727272727273

    + +

    Decision Tree Classifier

    + +

    from sklearn.tree import DecisionTreeClassifier

    + +

    tree_pipe = Pipeline(steps=[(“preprocessing”, transformer), (“model”, DecisionTreeClassifier())])

    + +

    tree_pipe.fit(x_train, y_train)

    + +

    y_pred = tree_pipe.predict(x_test)

    + +

    evaluate_model(“DecisionTreeClassifier” ,y_pred, y_test)

    + +

    show_confusion_matrix(y_pred, y_test)

    + +

    DecisionTreeClassifier

    + +

    accuracy: 0.9886363636363636

    + +

    f1_score 0.9886072979597981

    + +

    precision 0.9890874125874125

    + +

    recall 0.9886363636363636

    + +

    Model Selection

    + +

    I played around with different algorithms to see which model fits the data best and generalizes well to test data. Logistic regressions, SVM and decision tree worked well but I chose decision tree classifier model as final model. 98% accuracy in test data proves that the decision tree is generalizing well in real-world examples.

    + +

    Making predictions and Displaying the suggested Crop

    + +

    Finally, we create a dictionary and input values which represent the climatic conditions and the soil nutrients for which we seek crop recommendations. We utilize our trained machine learning model to predict the suggested crop based on the provided climatic data. Since we are using a pipeline, we do not need to perform data preprocessing manually while predicting. The pipeline does the preprocessing and gets the prediction using the learned model. Furthermore, I have saved the weights and biases in a pickle file so that we do not need to train the model every time we need to predict. Once the prediction is made, it prints the suggested crop based on the given climatic conditions.

    + +

    This is how a user can give input values to get the recommendation:

    + +

    + +

    Scope and benefits

    + +
      +
    1. Enhanced yield
    2. +
    3. Risk mitigation
    4. +
    5. Sustainable farming practices
    6. +
    7. Improved decision making
    8. +
    9. The model can continue learning and be better
    10. +
    11. Knowledge transfer
    12. +
    13. Improved financial condition
    14. +
    15. Betterment of the lifestyle of poor communities.
    16. +
    17. This is a very lightweight model and is freely available for anyone to use.
    18. +
    + +

    Conclusion

    + +

    While crop recommendation systems offer tremendous potential, certain challenges must be addressed. These include the need for reliable data sources, accessibility for farmers in remote areas, and user-friendly interfaces. However, advancements in technology and increased connectivity hold promise for overcoming these obstacles and extending the reach of these systems to a wider user base.

    + +

    Looking ahead, crop recommendation systems can be further enhanced by incorporating real-time data, remote sensing techniques, and artificial intelligence algorithms. This would provide farmers with even more precise recommendations, leading to better crop management, increased sustainability, and improved food security.

    + +

    Github repo: https://github.com/sadhana70/agricultural-crop-recommendation

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Sadhana, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/06/24/analysis-of-growth-and-distribution-of-registered-companies-in-nepal.html b/2023/06/24/analysis-of-growth-and-distribution-of-registered-companies-in-nepal.html new file mode 100644 index 00000000..a4cd9d95 --- /dev/null +++ b/2023/06/24/analysis-of-growth-and-distribution-of-registered-companies-in-nepal.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Analysis of the growth and distribution of registered companies in Nepal | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Analysis of the growth and distribution of registered companies in Nepal

    +

    24 Jun 2023 - Piyush Rimal

    +

    +

    + +

    Image source: myrepublica

    + +

    Nepal has been enabling the development of new firms for around 86 years, beginning with the first registered company, “Biratnagar Jute Mill,” in 1993 BS and continuing to new developing startups. As companies play an considerable part in the economic prosperity, their growth is always beneficial to the nation’s economy.

    + +

    The advancement of technology has undoubtedly aided the expansion of various businesses in recent years more than ever before. Startups are expanding across the country, from enterprises producing food and natural goods to computer startups developing software and IT solutions.

    + +

    Bearing this in mind, I have gathered a collection of data comprising lists of various sorts of registered corporations/companies in various districts of Nepal from 2002 BS to 2072 BS.

    + +

    So, let’s conduct a comprehensive data analysis and evaluate the outcomes.

    + +

    First, importing necessary python libraries:

    + +
    import pandas as pd
    +import seaborn as sns
    +import matplotlib.pyplot as plt
    +
    +

    In this data analysis project, we will use pandas for data analysis, cleaning, and exploration, and matplotlib and seaborn for data visualization.

    + +

    Next, importing necessary csv files.

    + +

    We have a total of 11 csv files, each consisting needed fiscal year’s data.

    + +

    Source: https://opendatanepal.com/

    +
    df1 = pd.read_csv('./csv_files/FY_2002-2062.csv')
    +dfs = []
    +for i in range(63, 73):
    +    filename = f'./csv_files/FY_20{i}.csv'
    +    dfs.append(pd.read_csv(filename))
    +
    +df2 = pd.concat(dfs)
    +df = pd.concat([df1, df2])
    +
    +

    Now that the files have been concatenated into a single data frame, let’s observe the structure of data.

    + +
    df.head()
    +
    + +

    + +

    As we can see, the data is organized into five distinct columns.

    + +

    Visualizing Data

    + +

    Bar Plots:

    + +

    First, determine the number of registered firms per company type. Then we’ll create a bar graph that shows the number of registered firms by company type.

    +
    dfs = [df]
    +df_bar = df.copy()
    +for df_bar in dfs:
    +    df_bar.loc[df_bar['COMPANY_TYPE'].str.startswith('Pri'), 'COMPANY_TYPE'] = 'Private'
    +company_counts = df_bar['COMPANY_TYPE'].value_counts(normalize=True)
    +plt.figure(figsize=(10, 5))
    +ax = sns.countplot(x='COMPANY_TYPE', data=df_bar, palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF'])
    +plt.title('Distribution of Companies by Type')
    +plt.xlabel('Company Type')
    +plt.ylabel('Logarithmic scale')
    +for p in ax.containers:
    +    ax.bar_label(p, label_type='edge', fontsize=10, padding=0)
    +plt.yscale('log')
    +plt.yticks([100, 1000, 10000, 100000], [100, '1k', '10k', '100k'])
    +plt.show()
    +
    + +

    + +

    The plot shows that the number of registered private enterprises is exponentially more than the other groups. This illustrates that over the past 86 years, private enterprises have been serving towards the country’s economy.

    + +

    Let us make another bar plot to depict the distribution of enterprises by district. For this, we shall split the districts into provinces and regions for this purpose.

    + +

    We will require a csv file with the names of districts, as well as their corresponding regions and provinces.

    + +
    df_district = pd.read_csv('./csv_files/disct.csv')
    +
    +

    We will now merge the df_district and df data frames. The integrated data frame will then be saved as a CSV file.

    + +
    df_merged = pd.merge(df, df_district, on='DISTRICT')
    +df_merged = df_merged.drop('id', axis=1)
    +df_merged = df_merged.drop('_id', axis=1)
    +df_merged.insert(0, 'id', range(1, len(df_merged) + 1))
    +df_merged.to_csv('./csv_files/merged.csv', index=False)
    +
    + +

    Let us look at the structure of the new data frame now.

    + +
    df_merged.head()
    +
    + +

    + +

    The data has now been arranged into seven columns, as we can see.

    + +

    Visualization below shall show the distribution of various sorts of firms by province.

    +
    dfs = [df_merged]
    +for df_merged in dfs:
    +    df_merged.loc[df_merged['COMPANY_TYPE'].str.startswith('Pri'), 'COMPANY_TYPE'] = 'Private'
    +
    +plt.figure(figsize=(12,5))
    +ax = sns.countplot(data=df_merged, x='province', hue='COMPANY_TYPE', palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF'], saturation=0.8)
    +plt.title('Distribution of Companies by Province and Company Type')
    +plt.xlabel('Province')
    +plt.ylabel('Logarithmic Scale')
    +plt.yscale('log')
    +for p in ax.containers:
    +    ax.bar_label(p, label_type='edge', fontsize=10, padding=0)
    +ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.15), ncol=4)
    +plt.yticks([1, 10, 100, 1000, 10000, 100000], [1, 10, 100, '1k', '10k', '100k'])
    +plt.show()
    +
    + +

    + +

    According to the chart, Province 3 (Bagmati Province) has the most registered firms of all categories, while Province 6 (Karnal Province) has the fewest registered companies of all types.

    + +

    This leads to the conclusion that Bagmati Province is the most developed, whereas Karnali Province is the least developed.

    + +

    Similarly, no foreign enterprises are registered in Province 1, Karnali Province, or Lumbini Province which indicates the lack of foreign reach and influence in these areas.

    + +

    Once again, a graphic representation below shall show the prevalence of various sorts of companies by area.

    + +
    plt.figure(figsize=(10,5))
    +ax = sns.countplot(data=df_merged, x='region', hue='COMPANY_TYPE', palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF'], saturation=0.8)
    +plt.title('Distribution of Companies by Region and Company type')
    +plt.xlabel('Region')
    +plt.ylabel('Logarithmic Scale')
    +plt.yscale('log')
    +for p in ax.containers:
    +    ax.bar_label(p, label_type='edge', fontsize=10, padding=0)
    +ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.15), ncol=4)
    +plt.yticks([10, 100, 1000, 10000, 100000], [10, 100, '1k', '10k', '100k'])
    +plt.show()
    +
    + +

    + +

    The figure shows that the hilly part of Nepal has the most number of registered firms, while the Himalayan region has the fewest.

    + +

    This supports the notion that the hilly region is the most developed, whereas the Himalayan region is the least developed.This is probably due to the fact that Kathmandu lies in the hilly region which has the most registered number of firms.

    + +

    Similarly, there are no registered foreign enterprises in the Himalayan area, which again indicates the lack of foreign influence and reach in this area.

    + +

    Now, consider the distribution of registered firms by district in relation to their region.

    + +
    regions = df_merged['region'].unique()
    +fig, axs = plt.subplots(1, len(regions), figsize=(6*len(regions), 10))
    +
    +for i, region in enumerate(regions):
    +    region_df = df_merged[df_merged['region']==region]
    +    ax = axs[i]
    +    sns.countplot(data=region_df, y='DISTRICT', ax=ax,
    +                  palette = ['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF'], saturation=0.8)
    +    ax.set_title(f'Distribution of Companies in {region} region by district')
    +    ax.set_xlabel('Logarithmic Scale')
    +    ax.set_ylabel('')
    +    ax.set_xscale('log')
    +    for p in ax.containers:
    +        ax.bar_label(p, label_type='center', fontsize=10, padding=0, color='black')
    +    plt.subplots_adjust(wspace=0.4)
    +
    +plt.show()
    +
    + +

    + +

    According to the plots above, the hilly region has more districts, which benefits the overall number of registered enterprises in that region.

    + +

    Manang, Jajarkot and Bardia are the districts with lowest number of companies in himalayan, hilly and tyerai region respectively out of which Manang has the lowest and Bardia has the highest number of companies among the three. This indicates that these three districts are some of the least developed districts of Nepal with Manang coming at the last position.

    + +

    Again, let’s visualize the distribution of registered companies by districts with respect to their province.

    + +
    provinces = df_merged['province'].unique()
    +fig, axs = plt.subplots(len(provinces)//2 + len(provinces)%2, 2, figsize=(16, 8*len(provinces)//2 + 5*len(provinces)%2))
    +
    +for i, province in enumerate(provinces):
    +    row = i // 2
    +    col = i % 2
    +    province_df = df_merged[df_merged['province']==province]
    +    ax = axs[row, col]
    +    sns.countplot(data=province_df, x='DISTRICT', hue='COMPANY_TYPE', ax=ax,
    +                  palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00'], saturation=0.8)
    +    ax.set_title(f'Distribution of Companies in {province} by District and Company Type')
    +    ax.set_xlabel('')
    +    ax.set_ylabel('')
    +    ax.set_yscale('log')
    +    ax.set_yticks([1, 10, 100, 1000, 10000, 100000], [1, 10, 100, '1k', '10k', '100k'])
    +    for p in ax.containers:
    +        ax.bar_label(p, label_type='edge', fontsize=10, padding=0, rotation=15)
    +    ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.2), ncol=3)
    +    ax.set_xticklabels(ax.get_xticklabels(), rotation=45)
    +
    +if len(provinces) % 2 != 0:
    +    fig.delaxes(axs[-1,-1])
    +
    +plt.tight_layout()
    +plt.show()
    +
    + +

    + +

    The above array of multivariate bar plots depicts the distribution of various types of registered firms in each district and province of Nepal.

    + +

    Based on the plots, it is obvious that Kathmandu has the most registered firms. Because of the constantly growing number of registered firms in Kathmandu, Province 3 (Bagmati Province) is the province with the most registered companies and hence the most developed province in Nepal.

    + +

    Similarly, Province 6 has the least number of companies making it the least devleoped province of Nepal.

    + +

    Now, let us make a distribution table that lists the top ten and bottom ten districts with the most and least firms, as well as their categories, regions, and provinces.

    + +
    table = pd.crosstab(index=[df_merged['DISTRICT'], df_merged['province'], df_merged['region']], columns=df_merged['COMPANY_TYPE'], margins=True)
    +table = table.sort_values(by=['All'], ascending=False)
    +table = table.iloc[:-1, :-1]
    +table1 = table.loc[table.sum(axis=1).sort_values(ascending=False)[:10].index]
    +
    +table1
    +
    +

    + +
    table = pd.crosstab(index=[df_merged['DISTRICT'], df_merged['province'], df_merged['region']], columns=df_merged['COMPANY_TYPE'], margins=True)
    +table = table.sort_values(by=['All'], ascending=True)
    +table = table.iloc[:-1, :-1]
    +table2 = table.loc[table.sum(axis=1).sort_values(ascending=True)[:10].index]
    +
    +table2
    +
    +

    + +

    We can see from the distribution tables above that:

    + +
      +
    • The bulk of the districts with the most firms are in mountainous areas and province 3 (Bagmati Province).
    • +
    • The Himalayan area and province 6 (Karnali Province) have the bulk of the districts with the fewest firms.
    • +
    + +

    This leads us to the conclusion that the hilly area and Bagmati province are Nepal’s most developed regions and provinces, respectively. Similarly, the Himalayan area and Karnali province are Nepal’s least developed regions and provinces, respectively.

    + +

    Furthermore, because Kathmandu and Manang have the most and least registered enterprises, respectively, we infer that:

    + +
      +
    • Kathmandu is Nepal’s most developed district.
    • +
    • Manang is the most underdeveloped.
    • +
    + +
    df_merged['REGISTRATION_DATE'] = pd.to_datetime(df_merged['REGISTRATION_DATE'], format='%Y')
    +first_companies = df_merged.groupby('COMPANY_TYPE').first()
    +first_companies = first_companies[['ENGLISH_NAME', 'DISTRICT', 'province', 'region', 'REGISTRATION_DATE']]
    +first_companies = first_companies.rename(columns={'REGISTRATION_DATE': 'FIRST_REGISTRATION_YEAR'})
    +first_companies['FIRST_REGISTRATION_YEAR'] = first_companies['FIRST_REGISTRATION_YEAR'].dt.year
    +first_companies = first_companies.sort_values('FIRST_REGISTRATION_YEAR')
    +
    +first_companies
    +
    + +

    + +

    The distribution table above indicates when the first of each form of company was registered after 2002 BS. The chart gives a unique glimpse into how, in the early years, Sankhuwasabha, a district in Nepal’s Himalayan region, was a popular location for business registration.

    + +

    Line Plot:

    + +

    Let’s make a line graph that will illustrate the rise in the number of registered businesses from 2002 BS to 2072 BS.

    +
    plt.figure(figsize=(10, 5))
    +sns.lineplot(x='REGISTRATION_DATE', y='id', data=df_merged.groupby(['REGISTRATION_DATE'])['id'].count().reset_index())
    +plt.title("Growth of registered companies (2002-2072)")
    +plt.xlabel("Fiscal year")
    +plt.ylabel("Number of companies")
    +plt.show()
    +
    +

    + +

    The number of registered firms has expanded rapidly during a 70-year period (2002–2072 BS), with intermittent dips between 2060 and 2070. The growth took off exponentially from around 2055 B.S.

    + +

    Let us now illustrate the growth of various sorts of enterprises throughout time.

    +
    df_merged['REGISTRATION_DATE'] = pd.to_datetime(df_merged['REGISTRATION_DATE'], format='%Y')
    +df_grouped = df_merged.groupby(['REGISTRATION_DATE', 'COMPANY_TYPE']).size().reset_index(name='count')
    +plt.figure(figsize=(10, 6))
    +sns.lineplot(x='REGISTRATION_DATE', y='count', hue='COMPANY_TYPE', data=df_grouped)
    +plt.title("Growth of different types of companies (2002-2072)")
    +plt.xlabel("Fiscal year")
    +plt.xticks(pd.date_range(start='2002', end='2082', freq='10Y').strftime('%Y'))
    +plt.ylabel("Number of companies")
    +plt.yscale('log')
    +plt.yticks([1, 10, 100, 1000, 10000, 100000], [1, 10, 100, '1k', '10k', '100k'])
    +plt.show()
    +
    +

    + +

    From 2002 to 2072 BS, the line plot above depicts the growth tendency of four main types of enterprises in Nepal. While private enterprises have had exponential growth since 2003 BS, other sorts of firms have only witnessed development in recent years.

    + +

    Extracting Conclusions

    + +

    We used bar and line graphs to show the data and created a few distributive tables.

    + +

    Each of these visualizations highlighted the following trends and conclusions:

    + +
      +
    • The great majority of registered corporations are owned by individuals.
    • +
    • Kathmandu has the most registered businesses.
    • +
    • In terms of the number of registered enterprises, Bagmati province is the most developed, while Karnali province is the least developed.
    • +
    • In terms of the number of firms, the hilly region is the most developed, while the Himalayan region is the least developed.
    • +
    • Manang is the least developed district, with only 17 registered businesses, while Kathmandu is the most developed, with 84994 registered businesses as of 2072 BS.
    • +
    • During its early years, Sankhuwasabha was a prominent location for company formation in a Himalayan area.
    • +
    • The number of enterprises has increased dramatically from 2002 to 2072 BS and is expected to continue to grow in the coming years.
    • +
    + +

    Finally, computing the relationship between the rise in the number of businesses and the years they were registered.

    +
    df_merged['year'] = pd.DatetimeIndex(df_merged['REGISTRATION_DATE']).year
    +total_companies_by_year = df_merged.groupby(['year'])['id'].count().reset_index()
    +corr_coef = total_companies_by_year['year'].corr(total_companies_by_year['id'])
    +
    +print("Correlation coefficient: ", round(corr_coef, ndigits=3))
    +
    +

    We got a correlation coefficient of 0.773.

    + +

    Since, the coefficient calculated is more than 0.7, there is a strong positive correlation between the number of firms and their respective registration years. This indicates that the number of companies will continue to grow as the year progresses.

    + +

    Note: Refer to my github repository by clicking this link for more details.

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Piyush, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/07/06/exploring-nepals-export.html b/2023/07/06/exploring-nepals-export.html new file mode 100644 index 00000000..79f7a995 --- /dev/null +++ b/2023/07/06/exploring-nepals-export.html @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Exploring Nepal’s Exports: Building an Interactive Dashboard for Easy Data Access | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Exploring Nepal’s Exports: Building an Interactive Dashboard for Easy Data Access

    +

    06 Jul 2023 - Anupam Bajra

    +

    +

    The government has published the data regarding the imports & exports of the country for Fiscal Year B.S. 2079/80(Mid July 2022 to Mid July 2023). Because there are news everyday regarding the current economic situation of the country, it is a good idea to understand the area through which we can strengthen the economy which is exports.

    + +

    I went through data through the Department of Customs for this data and going even through the tabular form data there were many insights to grasp. When discussing this with friends, they were curious but found the original data hard to understand.

    + +

    While the government might be working on improving this data, my focus was on learning to make such information more understandable & accessible. This article lays the foundation for a web dashboard that lets the user search and see visualizations of export data. Though creating such a proper website will be a resource and time taking process, in this article I have tried in getting the foundations for it ready.

    + +

    Installing necessary Python libraries

    + +

    First, we install the necessary Python libraries for data processing (pandas), interactive visualizations (plotly), and building web applications (dash)

    + +

    pip install pandas plotly dash

    + +

    Importing Panda Library & needed CSV file

    + +

    import pandas as pd

    + +

    file_path = r”C:\Users\ACER\Desktop\Tasks\Data Article\7980exports.csv”

    + +

    df = pd.read_csv(file_path, encoding=’latin-1’)

    + +

    Data Source: https://www.customs.gov.np/page/fts-fy-207980

    + +

    Now, we import the Pandas library so that we can do data manipulation & analysis. We have also provided the file path to read the CSV file from the specified path into a Pandas DataFrame. In this step, we have been able to lead this data into the data frame through which we can move for processing and visualization.

    + +

    Importing Dash Framework

    + +

    import dash

    + +

    from dash import dcc

    + +

    from dash import html

    + +

    from dash.dependencies import Input, Output

    + +

    We are now importing the Dash framework since it is great for creating interactive web applications with Python. For this project, we especially need its web-based data visualizations and interactive components.

    + +

    We are also importing the dcc module of Dash as it contains the core components such as graphs, dropdowns, & sliders which are useful elements for this project. Through this step, we now have the modules for a Dash web application along with defining the user interface.

    + +

    Initializing Dash app

    + +

    # Initialize the Dash app

    + +

    app = dash.Dash(name)

    + +

    Now, we create the instance for the application along with providing the unique identifier.

    + +

    Defining the layout through Search bar for filtering data & Graph component to display the data

    + +

    # Define the layout of the web application

    + +

    app.layout = html.Div([

    + +

    # Search bar for filtering data

    + +

    dcc.Input(id=’search-bar’, type=’text’, placeholder=’Search by Item…’),

    + +

    # Graph component to display the data

    + +

    html.Div([

    + +

    dcc.Graph(id=’export-graph’, config={‘displayModeBar’: False}),

    + +

    ]),

    + +

    ])

    + +

    The layout of the web application is being set up now with the first structure of the web page being set up using the Dash HTML components which includes the search bar & graph that we need since we want the user to search for items & represent it through a graph.

    + +

    Then, we use dcc.input to create the needed text input field for this search bar and name it as Search by Item which the user will see it as. We also create the graph component to display the data through this framework.

    + +

    Callback to update the graph based on search input

    + +

    @app.callback(

    + +

    Output(‘export-graph’, ‘figure’),

    + +

    [Input(‘search-bar’, ‘value’)]

    + +

    )

    + +

    Defining the callback function so that it responds to changes to the search bar the user makes. Here, we also define that the input is the search term that the user enters and output is the export graph through which the necessary item will be updated in the displayed graph.

    + +

    Updating graph based on search term

    + +

    def update_graph(search_term):

    + +

    if search_term:

    + +

    # Filter the data based on the search input

    + +

    filtered_df = df[df[‘Item’].str.contains(search_term, case=False)]

    + +

    else:

    + +

    # If no search input, show all data

    + +

    filtered_df = df

    + +

    Here, we are creating some important functions for the graph. If there is no search input then the entire Data Frame will show up which will be like the default setting. Also, the words the user types will be case insensitive.

    + +

    Create the bar chart using Plotly

    + +

    # Create the bar chart using Plotly (showing ‘Total Revenue’)

    + +

    figure = {

    + +

    ‘data’: [

    + +

    {‘x’: filtered_df[‘Item’], ‘y’: filtered_df[‘Exports_Value’], ‘type’: ‘bar’, ‘name’: ‘Total Revenue’},

    + +

    ],

    + +

    ‘layout’: {

    + +

    ‘title’: “Nepal’s Export Data”,

    + +

    ‘xaxis’: {‘title’: ‘Item’},

    + +

    ‘yaxis’: {‘title’: ‘Value’},

    + +

    ‘barmode’: ‘group’

    + +

    }

    + +

    }

    + +

    return figure

    + +

    The bar chart is now constructed with the Total Revenue data through the filtered dataframe. In the bar chart the X values have been defined as the Item and the Y values as the Exports Value i.e. Total Revenue.

    + +

    Running the web application

    + +

    # Run the web application

    + +

    if name == ‘main’:

    + +

    app.run_server(debug=True)

    + +

    Now, we do the fun part and see the result that has come from the above process.

    + + + +

    + +

    Through this dashboard, now it is very easy to search for items you want to know the revenue for exports. We can gain insights now faster and in a more accessible way, that too with context of other similar products and their revenues for exports.

    + +

    For me, I found it interesting that even items such as Yarchagumba are bringing in around Rs. 44 crores of revenue per year. Another surprise for me was that Dog/Cat food did Rs. 3.40 arba in revenue which is a very big amount of revenue that provides tons of employment opportunity in Nepal especially in the village areas.

    + +

    Thus, by exploring this dashboard and finding out the revenue of different items, we can also map out what kind of opportunity is present to sell Nepali items in the global market too.

    + +

    Conclusion

    + +

    Now that I’ve worked on this project, I can see there are many kinds of data we can make accessible through turning the raw data into a more accessible format. If you want to further work on this project then the next steps would be to find a way to make it accessible on the internet to people through platforms like Heroku and then test the prototype out.

    + +

    Thanks to Code For Nepal’s Data Fellowship program with DataCamp Donates, I got the chance to explore creating tools with Python. I’m thankful to Code for Nepal for giving me the opportunity to learn such Python skills.

    + +

    By: Anupam Bajra

    + +

    Linkedin: https://www.linkedin.com/in/anupam-bajra/

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Anupam, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/07/06/getting-started-with-GreatAPI.html b/2023/07/06/getting-started-with-GreatAPI.html new file mode 100644 index 00000000..301d6c59 --- /dev/null +++ b/2023/07/06/getting-started-with-GreatAPI.html @@ -0,0 +1,550 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Getting Started with GreatAPI - A Comprehensive Tutorial | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Getting Started with GreatAPI - A Comprehensive Tutorial

    +

    06 Jul 2023 - Sahaj Raj Malla

    +

    +

    + +

    GreatAPI is a powerful Python framework that aims to simplify and accelerate the process of building web applications, endpoints for Machine Learning models, and general APIs using FastAPI. This comprehensive tutorial will guide you through the installation and setup process of GreatAPI, and you will learn how to create a new project, manage apps, run the server, and build your API logic using GreatAPI.

    + +

    Introduction

    + +

    GreatAPI offers a range of compelling features that make it an attractive choice for developers seeking to build robust web applications and APIs. With its integrated Administrative UI, users gain effortless control over registered models, simplifying data management tasks. Additionally, the framework includes a built-in authentication system, boosting application security by facilitating user authentication and authorization. Furthermore, GreatAPI provides an intuitive project template, streamlining project setup and offering a structured foundation for rapid and collaborative development. GreatAPI’s seamless integration with FastAPI makes it a compelling tool for developing efficient, secure, and user-friendly applications. Embrace the boundless possibilities of web development, creating endpoints for AI models, and creating general APIs with GreatAPI and elevate your projects to new heights. Embark on an exceptional journey of innovation and excellence with GreatAPI at your side. Some of the major features of GreatAPI.

    + +

    Requirements

    + +

    Before we dive into the tutorial, make sure you have the following requirements in place:

    + +
      +
    • Python 3.6 or higher and PIP installed on your system.
    • +
    • Familiarity with Python programming language concepts.
    • +
    + +

    GreatAPI is built upon the foundation of the following robust libraries:

    + +
      +
    • FastAPI: A modern, fast, web framework for building APIs with Python.
    • +
    • uvicorn: ASGI server that runs FastAPI applications.
    • +
    • typer: A command-line interface library for building CLI applications.
    • +
    • jinja2: A templating engine for Python.
    • +
    • SQLAlchemy: A powerful Object-Relational Mapping (ORM) library for Python.
    • +
    + +

    Installation

    + +

    To install GreatAPI and its dependencies, use pip:

    + +
    pip install greatapi
    +
    + +

    Getting Started

    + +

    Step 1: Start a New Project

    + +

    To begin working with GreatAPI, let’s create a new project. Open your terminal and execute the following command:

    + +
    greatapi startproject myproject
    +
    + +

    This will create a new directory named “myproject” with the basic structure to get you started.

    + +

    myproject/

    + +

    ├──init.py

    + +

    ├──settings.py

    + +

    main.py

    + +

    Step 2: Create a New App

    + +

    An app in GreatAPI is a modular unit that encapsulates specific functionality of your project. To create a new app, run the following command:

    + +

    greatapi startapp myapp

    + +

    This will generate a new directory named “myapp” containing the necessary files and folders for your app.

    + +

    myapp/

    + +

    ├──init.py

    + +

    ├──models.py

    + +

    ├──repository.py

    + +

    ├──router.py

    + +

    ├──schemas.py

    + +

    Step 3: Run the Server

    + +

    Now, it’s time to run the development server which will also create tables in the database for creating superuser in the next step. Execute the following command:

    + +
    greatapi runserver
    +
    + +

    Step 4: Creating a Superuser

    + +

    After running the server, let’s create a superuser to manage the administration of your project. Execute the following command:

    + +
    greatapi createsuperuser
    +
    + +

    Follow the prompts to create the superuser account which will be used to login into GreatAPI Administrator.

    + +

    The server will start, and you can access your application at http://localhost:8000/. Additionally, GreatAPI provides a beautifully designed built-in Admin Panel accessible at http://localhost:8000/admin.

    + +

    + +

    Landing page for Admin view

    + +

    Building API Logic

    + +

    GreatAPI is built on top of FastAPI, which allows you to easily implement your API logic for building a powerful API[such as blogs in this case]. Here’s a quick guide on how to do that:

    + +

    Step 1: Add Models

    + +

    Define your data models in the myapp/models.py file using SQLAlchemy syntax. For example:

    +
    from greatapi.db.admin.user import User
    +from greatapi.db.database import Base
    +
    +from sqlalchemy import Column, Integer, String, ForeignKey
    +from sqlalchemy.orm import relationship
    +
    +class Blog(Base):
    +    __tablename__ = "blogs"
    +
    +    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    +    title = Column(String)
    +    body = Column(String)
    +    user_id = Column(Integer, ForeignKey(User.id))
    +
    +    user = relationship(User)
    +
    + +

    Step 2: Add Schemas

    + +

    Create Pydantic schemas in myapp/schemas.py to define the data validation and serialization for your API. For example:

    + +
    from pydantic import BaseModel
    +
    +class BlogBase(BaseModel):
    +    title: str
    +    body: str
    +    user_id: int  # Add the user_id field to represent the foreign key relationship
    +
    +class BlogCreate(BlogBase):
    +    pass
    +
    +class BlogSchema(BlogBase):
    +    id: int
    +
    +    class Config:
    +        orm_mode = True
    +
    + +

    Step 3: Add CRUD Operations

    + +

    Define the CRUD (Create, Read, Update, Delete) operations in myapp/repository.py using SQLAlchemy and your defined models and schemas. For example:

    + +
    from sqlalchemy.orm import Session
    +from myapp.models import Blog
    +from myapp.schemas import BlogCreate
    +
    +def create_blog(db: Session, blog: BlogCreate):
    +    new_blog = Blog(**blog.dict())
    +    db.add(new_blog)
    +    db.commit()
    +    db.refresh(new_blog)
    +    return new_blog
    +
    +def read_blog(db: Session, blog_id: int):
    +    return db.query(Blog).filter(Blog.id == blog_id).first()
    +
    +def update_blog(db: Session, blog_id: int, blog: BlogCreate):
    +    existing_blog = db.query(Blog).filter(Blog.id == blog_id).first()
    +    if existing_blog:
    +        for key, value in blog.dict().items():
    +            setattr(existing_blog, key, value)
    +        db.commit()
    +        db.refresh(existing_blog)
    +    return existing_blog
    +
    +def delete_blog(db: Session, blog_id: int):
    +    blog = db.query(Blog).filter(Blog.id == blog_id).first()
    +    if blog:
    +        db.delete(blog)
    +        db.commit()
    +    return blog
    +
    +def list_blogs(db: Session, skip: int = 0, limit: int = 10):
    +    return db.query(Blog).offset(skip).limit(limit).all()
    +
    + +

    Step 4: Create API Endpoints

    + +

    Finally, define the API endpoints in myapp/router.py using FastAPI’s APIRouter. Link your CRUD operations to these endpoints. For example:

    + +
    from fastapi import APIRouter, Depends
    +from sqlalchemy.orm import Session
    +from greatapi.db.database import get_db
    +from myapp.schemas import BlogSchema, BlogCreate
    +from myapp.repository import (
    +    create_blog,
    +    read_blog,
    +    update_blog,
    +    delete_blog,
    +    list_blogs
    +)
    +
    +from typing import List
    +
    +myapp_router = APIRouter(tags=["MyApp"])
    +
    +@myapp_router.post("/blogs/", response_model=BlogSchema)
    +def create_blog_route(blog: BlogCreate, db: Session = Depends(get_db)):
    +    return create_blog(db, blog)
    +
    +@myapp_router.get("/blogs/{blog_id}", response_model=BlogSchema)
    +def read_blog_route(blog_id: int, db: Session = Depends(get_db)):
    +    return read_blog(db, blog_id)
    +
    +@myapp_router.put("/blogs/{blog_id}", response_model=BlogSchema)
    +def update_blog_route(blog_id: int, blog: BlogCreate, db: Session = Depends(get_db)):
    +    return update_blog(db, blog_id, blog)
    +
    +@myapp_router.delete("/blogs/{blog_id}", response_model=BlogSchema)
    +def delete_blog_route(blog_id: int, db: Session = Depends(get_db)):
    +    return delete_blog(db, blog_id)
    +
    +@myapp_router.get("/blogs/", response_model=List[BlogSchema])
    +def list_blogs_route(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
    +    return list_blogs(db, skip, limit)
    +
    + +

    Step 5: Register Models and Endpoints

    + +

    Import your models and API endpoints into the main application file main.py and register them with GreatAPI:

    + +
    # ... (existing code)
    +from myapp.router import myapp_router
    +from myapp.models import Base as MyAppBase
    +
    +# ... (existing code)
    +admin.AdminBase.metadata.create_all(engine)
    +admin.UserBase.metadata.create_all(engine)
    +MyAppBase.metadata.create_all(engine) # new code added
    +
    +# ... (existing code)
    +app.include_router(admin_router)
    +app.include_router(auth_router)
    +app.include_router(user_router)
    +app.include_router(test_auth_router)
    +app.include_router(history_router)
    +app.include_router(myapp_router) # new code added
    +
    + +

    Finally, register your models in settings.py by appending the models into the REGISTERED_ADMINS such as:

    + +
    from __future__ import annotations
    +
    +from greatapi.db.admin.user import User
    +from greatapi.db.admin.default import History
    +from myapp.models import Blog # new code added
    +
    +REGISTERED_ADMINS = [
    +    User,
    +    History,
    +    Blog, # new code added
    +]
    +
    +
    +

    With these steps, you have successfully set up your project, created an app, defined models, and built API endpoints using GreatAPI.

    + +

    Conclusion

    + +

    In this tutorial, you learned how to get started with GreatAPI, a powerful Python framework that aims to simplify and accelerate the process of building web applications, endpoints for Machine Learning models, and general APIs. You now know how to create projects, manage apps, run the server, and build API logic using GreatAPI. The combination of GreatAPI’s features and the elegance of FastAPI allows you to develop robust and efficient applications with ease. Now, it’s your turn to explore further and build amazing web applications with GreatAPI.

    + +

    Happy programming!

    + +

    Code for Nepal would like to thank DataCamp Donates for providing Sahaj, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/12/18/deciphering-trends-in-ev-adoption.html b/2023/12/18/deciphering-trends-in-ev-adoption.html new file mode 100644 index 00000000..a05303ab --- /dev/null +++ b/2023/12/18/deciphering-trends-in-ev-adoption.html @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deciphering Trends and Patterns in Electric Vehicle Adoption, A Comprehensive Analysis | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Deciphering Trends and Patterns in Electric Vehicle Adoption, A Comprehensive Analysis

    +

    18 Dec 2023 - Pradipti Simkhada

    +

    +

    The world of electric vehicles (EVs) is evolving rapidly, marked by technological advancements and a growing shift towards sustainable transportation. With a dataset encompassing 32,783 entries and 17 columns sourced from (https://catalog.data.gov/dataset/electricvehiclepopulationdata), my analysis focused on understanding various facets of this transformative landscape.

    + +

    Dataset Overview

    + +

    This dataset offered a comprehensive view of EVs, detailing aspects such as VIN (Vehicle Identification Number), model year, make, model, electric range, base manufacturer’s suggested retail price (MSRP), and geographic distribution.

    + +

    Data Preprocessing

    + +

    To streamline the analysis, we initially narrowed our focus to cars manufactured in 2022 onwards, creating a subset called electric_v_from2022. This subset comprised 12,655 entries
    +and underwent essential preprocessing steps. Null values were identified in columns like ‘Model’ and ‘Legislative District,’ amounting to 68 and
    +3 missing entries, respectively. These missing ‘Model’ values were meticulously filled based on ‘Model Year’ and ‘Make’ using a mapping technique, ensuring data integrity. Additionally, columns like ‘Postal Code,’ ‘Legislative District,’ ‘DOL Vehicle ID,’ and ‘Vehicle Location’ were deemed irrelevant for our analysis and were dropped, refining the dataset further.

    + +

    Key Insights

    + +

    Make wise Distribution

    + +

    The dataset revealed Tesla as the dominant player in the EV market, with 15,510 entries, followed by Nissan (3,150) and Chevrolet (2,611). This highlighted Tesla’s significant presence compared to other manufacturers in the EV space.

    + +

    + + + +

    An analysis based on the number of cars manufactured each year showcased a substantial
    +increase in 2022, with 7,016 entries, followed by 2023 (5,632) and 2021 (4,429). This indicated
    +a rising trend in the production of EVs, particularly in recent years.

    + +

    + +

    State-wise Manufacturer Preferences

    + +

    Geographical distribution of EVs across states and counties, although not provided directly, was visualized through bar plots and count plots, shedding light on regional preferences and adoption rates.

    + +

    + +

    Further exploration into specific states, like Washington State, portrayed the prevalence of different electric vehicle makes across counties. This analysis shed light on regional preferences, offering insights into localized consumer choices.

    + +

    + +

    Manufacturer Analysis

    +

    Delving deeper into manufacturer trends, it’s evident that each manufacturer has its average electric range. Brands like Tesla, Toyota, and Mitsubishi showcase high average electric ranges, indicating a strong focus on longer-range vehicles.

    + +

    + +

    Conclusion

    + +

    This analysis serves as a testament to the diverse landscape of electric vehicles, highlighting trends in manufacturing, makewise distribution, and regional preferences. It underscores the growing importance of sustainable transportation and the significant role data analysis plays in
    +understanding and navigating this transformative industry.

    + +

    As the world shifts towards greener alternatives, the insights gleaned from this analysis can guide stakeholders in policymaking, manufacturing strategies, and consumer preferences within the electric vehicle domain.

    + +
    +

    Code for Nepal would like to thank DataCamp Donates for providing Pradipti, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/12/18/ml-red-wine-quality.html b/2023/12/18/ml-red-wine-quality.html new file mode 100644 index 00000000..8f415676 --- /dev/null +++ b/2023/12/18/ml-red-wine-quality.html @@ -0,0 +1,679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Using Machine Learning for Finding out the Red Wine Quality | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Using Machine Learning for Finding out the Red Wine Quality

    +

    18 Dec 2023 - Prabesh Bashyal

    +

    +

    We all know about the significance of red wine these days. It is also better to know better about its quality and the factors which can affect its quality. In these terms, we can use our computer knowledge of ML, and predict ourselves the quality based on the different physicochemical properties. Now, this will be an estimation on the quality and people will be aware about that.

    + +

    + +

    Personally, I feel like people should learn the concepts of ML not for something as hesitant, but for the study and learning the nature of relationships and predictions based on our algorithms. That way they can be confident in their results and seek better results not just on some particular aspects but on everything that has target and response variables.

    + +

    Here, for the quality of red wine, I am using the dataset from 2009 from the Kaggle. I will be highlighting the procedure on the data visualization, preprocessing and model prediction and finally will focus on its significance.

    + +

    I. Dataset

    + +

    The dataset is from the following link in Kaggle:

    + +

    https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009 ?datasetId=4458&sortBy=voteCount. Here is a quick snapshot of the data frame.

    + +

    + +

    We carry a basis test on the data frame to check whether there are any null entries or not and are there any duplicated items and perform the summary statistics on the dataset and the result is as follows. There were no null entries but 240 duplicated rows and we dropped those duplicated rows.

    + +

    + +

    + +

    II. Data Preprocessing

    + +

    Now, we import the libraries, and we did a bit of analysis on the data by visualizing the probability density as it gives us insight on the distribution of data. We have already imported pandas and displayed the data, so we won’t be importing the dataset and named the dataset as redwine_df_cp.

    + +
    import seaborn as sns
    +import matplotlib.pyplot as plt
    +import numpy as np
    +import warnings
    +
    +warnings.filterwarnings('ignore')
    +plt.style.use('seaborn')
    +fig = plt.figure(figsize=(15,15))
    +
    +for index, column in enumerate(redwine_df_cp.columns):
    +  plt.subplot(4,3,index+1)
    +  sns.distplot(x = redwine_df_cp.loc[:, column], color = 'lightseagreen')
    +  plt.title(column, size = 13)
    +  fig.tight_layout()
    +  plt.grid(True)
    +plt.show()
    +
    +

    The result was as follows:

    + +

    + +

    Here, we can see that there are some datasets like chlorides which are right tailed in distribution that might be due to outliers. Now for simplicity we don’t touch outliers yet and will simply explore the dataset.

    + +

    Now, we will try to check the correlation between different variables using the correlation coefficient and seaborn heatmap.

    + +

    + +

    From the above heatmap, we can see that there is a positive correlation with alcohol of quality and negative with volatile acidity the most. So, we will be taking these two as prime factors for now and will be seeing their scatterplot/catplot and will see whether they are related or not.

    + +
    sns.catplot(data=redwine_df_cp, x="quality", y="alcohol", hue="quality")
    +plt.show()
    +sns.catplot(data=redwine_df_cp, x="quality", y="volatile acidity", hue="quality")
    +plt.show()
    +
    + +

    The result of the categorical plot is as follows:

    + +

    + +

    + +

    Here, we can see that there is indeed a positive correlation with quality of alcohol as we can think about and negative with volatile acidity. But it is better if we group the quality as a group of three categories as low, medium and high quality wines. That way data visualization and training is easy and less mundane.

    + +

    So, we create another copy of the dataframe to preserve the structure of the dataset.

    + +
    
    +redwine_test_df = redwine_df_cp.copy()
    +redwine_test_df.head()
    +
    +# Let's define a function to help us.
    +def quality_value(value):
    +  value = str(value)
    +  if value == '3':
    +    value = value.replace('3','low')
    +    return value
    +  elif value == '4':
    +    value = value.replace('4','low')
    +    return value
    +  elif value == '5':
    +    value = value.replace('5','medium')
    +    return value
    +  elif value == '6':
    +    value = value.replace('6','medium')
    +    return value
    +  elif value == '7':
    +    value = value.replace('7','high')
    +    return value
    +  elif value == '8':
    +    value = value.replace('8','high')
    +    return value
    +
    +
    +redwine_test_df['quality'] = redwine_test_df['quality'].apply(quality_value)
    +redwine_test_df["quality"].unique()
    +
    +
    + +

    Now, we will again see the categorical plot of the alcohol and volatile acidity with quality.

    + +

    + +

    + +

    As we can see now, it’s much more visual and definitive to say that there is indeed positive correlation and negative correlation of alcohol and volatile acidity with quality respectively.

    + +

    Now, we will visualize this for the rest of the variables.

    + +

    + +

    + +

    + +

    + +

    + +

    + +

    + +

    + +

    + +

    Hence, we can infer that as a whole all these factors contribute to the quality of red wine, with alcohol and volatile acidity as key factors.

    + +

    Now, we will get onto seeing the dataset and visualizing the outliers for this we use seaborn boxplot.

    + +
    
    +fig = plt.figure(figsize=(15,15))
    +for index,column in enumerate(list(redwine_test_df.columns[:-1])):
    +  plt.subplot(4,3,index+1)
    +  sns.boxplot(y =redwine_test_df.loc[:, column], x =redwine_test_df['quality'],
    +  linewidth=2.5)
    +  plt.title(column, size = 12)
    +fig.tight_layout()
    +
    +
    + +

    + +

    Here, we can see the outliers in the physicochemical properties, but we won’t clear them all out. We highlight the outlier with high distribution i.e. chlorides for this purpose and we will impute median in the outlier. The code is as follows:

    + +
    
    +df_chlorides = redwine_test_df['chlorides']
    +# distribution of the variable before cleaning
    +plt.figure(figsize=(8,5))
    +plt.title('With Outliers')
    +sns.distplot(x = df_chlorides, color = '#967bb6')
    +# setting the threshold value
    +Q1 = df_chlorides.quantile(0.25)
    +Q3 = df_chlorides.quantile(0.75)
    +# interquartile range
    +IQR = Q3 - Q1
    +lower_limit = Q1 - 1.5 * IQR
    +upper_limit = Q3 + 1.5 * IQR
    +# catching outliers
    +upper_outlier = (df_chlorides > upper_limit)
    +# determining the mean and median values
    +mean = df_chlorides.mean()
    +median = df_chlorides.median()
    +# assigning outliers to median due to its suitability
    +df_chlorides[upper_outlier] = median
    +# distribution of the data without outliers
    +plt.figure(figsize=(8,5))
    +plt.title('Without Outliers')
    +sns.distplot(x = df_chlorides, color = 'lightseagreen')
    +
    +
    + +

    The result before and after is as follows for chloride column:

    + +

    + +

    + +

    As, we can see the change in the dataset before and after the outlier. We will see its effect in the model performance and accuracy later on. For now, we will stick with other outliers as looking at the boxplot, other outliers don’t have much impact on the model accuracy and performance.

    + +

    III. Classification

    + +

    Now, we import all the libraries required for classification.

    + +
    
    +from imblearn.over_sampling import SMOTE
    +from sklearn.preprocessing import StandardScaler
    +from sklearn.model_selection import train_test_split, cross_val_score
    +from sklearn.metrics import accuracy_score, confusion_matrix,
    +classification_report
    +import catboost as cb
    +import xgboost as xgb
    +import lightgbm as lgb
    +from sklearn.naive_bayes import GaussianNB
    +from sklearn.svm import SVC
    +from sklearn.tree import DecisionTreeClassifier
    +from sklearn.neighbors import KNeighborsClassifier
    +from sklearn.linear_model import LogisticRegression
    +from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
    +
    + +

    Here some classifiers needs the quality column to be values such as 0, 1,2 so we switch it back accordingly.

    + +
    redwine_test_df['quality'] = redwine_test_df['quality'].map({'high': 2, 'medium':
    +1, 'low': 0})
    +redwine_test_df['quality'].unique()
    +
    + +

    Now, we separate the dataset into dependent and independent variables.

    + +
    y = redwine_test_df["quality"]
    +x = redwine_test_df.drop(["quality"], axis=1)
    +X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2,
    +random_state=40)
    +
    + +

    Now, the main thing here is Standardizing the data. The reason behind the standardization is making the data comparable by eliminating the difference in measurement units in the table. For this we use standard scalar.

    + +
    scaler = StandardScaler()
    +X_train = scaler.fit_transform(X_train)
    +X_test = scaler.transform(X_test)
    +
    + +

    Then, we use SMOTE technique for removing the class imbalance

    + +
    smote = SMOTE(random_state=40)
    +X_train, y_train = smote.fit_resample(X_train, y_train)
    +sns.countplot(y=y_train)
    +plt.show()
    +
    + +

    + +

    + +

    After and Before SMOTE Technique

    + +

    Now, we use the models for applying the ML.

    + +
    models = [
    +('Logistic Regression', LogisticRegression()),
    +('Support Vector Classifier', SVC()),
    +('Naive Bayes', GaussianNB()),
    +('KNN', KNeighborsClassifier()),
    +('Decision Tree', DecisionTreeClassifier()),
    +('Random Forest', RandomForestClassifier()),
    +('XGBoost', xgb.XGBClassifier()),
    +('LightGBM', lgb.LGBMClassifier()),
    +('CatBoost', cb.CatBoostClassifier(verbose=0)),
    +('AdaBoost', AdaBoostClassifier())
    +]
    +
    +conf_matrices = []
    +class_reports = []
    +outcomes = []
    +
    +for model_name, model in models:
    +  cv_results = cross_val_score(model, X_train, y_train, cv=5)
    +  mean_accuracy = cv_results.mean()
    +  model.fit(X_train, y_train)
    +  y_pred = model.predict(X_test)
    +  accuracy = accuracy_score(y_test, y_pred)
    +  cm = confusion_matrix(y_test, y_pred)
    +  cr = classification_report(y_test, y_pred)
    +  conf_matrices.append((model_name, cm))
    +  class_reports.append((model_name, cr))
    +  outcomes.append((model_name, mean_accuracy, accuracy))
    +
    +df_results = pd.DataFrame(outcomes, columns=['Model', 'Cross-Validation
    +Accuracy', 'Test Accuracy'])
    +df_results.sort_values('Cross-Validation Accuracy', ascending=False,
    +inplace=True)
    +
    +df_results
    +
    +

    The result of the test accuracy and other reports are as follows:

    + +

    + +

    Here, we can see that CatBoost and XGBoost are high in test accuracy, but let’s see the classification report and confusion matrices to find out which model to use and tune.

    + +
    plt.figure(figsize=(12, 8))
    +for i, (model_name, cm) in enumerate(conf_matrices, 1):
    +  plt.subplot(3, 4, i)
    +  plt.title(model_name)
    +  sns.heatmap(cm, annot=True, fmt='d')
    +  plt.xlabel('Predicted Label')
    +  plt.ylabel('True Label')
    +
    +plt.tight_layout()
    +plt.show()
    +
    +
    +

    The confusion matrices are depicted below:

    + +

    + +

    The classification reports are as follows:

    +
    for model_name, cr in class_reports:
    +  print(f'033[1m{model_name}:033[0m')
    +  print(f'033[1mClassification Report:033[0m')
    +  print(cr)
    +  print('-'*60)
    +
    + +

    + +

    + +

    + +

    + +

    + +

    Now, looking at the classification report, we chose CatBoost as our classifier and as our model. Now, we tune the model for its best performance and accuracy. For this we use optuna for tuning the model.

    + +
    
    +import optuna
    +
    +def objective(trial):
    +  model = cb.CatBoostClassifier(
    +  iterations=trial.suggest_int("iterations", 100, 1000),
    +  learning_rate=trial.suggest_float("learning_rate", 1e-3, 1e-1, log=True),
    +  depth=trial.suggest_int("depth", 4, 10),
    +  l2_leaf_reg=trial.suggest_float("l2_leaf_reg", 1e-8, 100.0, log=True),
    +  bootstrap_type=trial.suggest_categorical("bootstrap_type", ["Bayesian"]),
    +  random_strength=trial.suggest_float("random_strength", 1e-8, 10.0,
    +  log=True),
    +  bagging_temperature=trial.suggest_float("bagging_temperature", 0.0,
    +  10.0),
    +  od_type=trial.suggest_categorical("od_type", ["IncToDec", "Iter"]),
    +  od_wait=trial.suggest_int("od_wait", 10, 50),
    +  verbose=False
    +  )
    +  model.fit(X_train, y_train)
    +  y_pred = model.predict(X_test)
    +  return accuracy_score(y_test, y_pred)
    +
    +study = optuna.create_study(direction='maximize')
    +study.optimize(objective, n_trials=30)
    +print('Best hyperparameters:', study.best_params)
    +print('Best Accuracy:', study.best_value)
    +
    +
    + +

    After this, the tuned parameters were passed into the model and we got the final accuracy of the model and our model was devised to the test accuracy of 77.57% which is higher.

    + +
    model = cb.CatBoostClassifier(**study.best_params)
    +model.fit(X_train, y_train)
    +y_pred = model.predict(X_test)
    +acc_score = accuracy_score(y_test, y_pred)
    +acc_score
    +
    +
    + +

    Hence, we can now predict the quality from the array of constituents value.

    + +
    # taking the input
    +df_columns = list(redwine_test_df.columns)
    +test_array = []
    +for col_name in df_columns:
    +  if col_name == "quality":
    +    continue
    +  else:
    +    data = float(input(f"Enter the {col_name} quantity
    +    [{redwine_test_df[col_name].min()} - {redwine_test_df[col_name].max()}]: "))
    +    test_array.append(data)
    +
    +# giving the data to our model
    +q_value = model.predict(test_array)
    +if q_value == 1:
    +  print("The red wine is of medium quality!")
    +elif q_value == 2:
    +  print("The red wine is of high quality!")
    +else:
    +  print("The red wine is of poor quality!")
    +
    + +

    Here, we tested a random sample of wine and we got the wine quality as average. Clearly helping with the outliers of the chloride really made improvement in our model.

    + +

    IV. Significance

    + +

    So, the question may arise about its significance. Companies can use this technique of ML for creating better models and by using the dataset with thousands of data. This is just a simple dataset for devising a method for relating the quality of red wine with its physicochemical properties. General laymen can indeed know about what factors can affect the quality of red wine by analyzing the dataset in the visualization part. These algorithms and techniques can not only be used here but in every field of response and target variables, which can indeed boost our capabilities.

    + +

    The link for the github repository for this project is here:

    + +
    +

    Code for Nepal would like to thank DataCamp Donates for providing Prabesh, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2023/12/20/comprehensive-analysis-of-superstore-sales-trends-and-performance-analysis.html b/2023/12/20/comprehensive-analysis-of-superstore-sales-trends-and-performance-analysis.html new file mode 100644 index 00000000..34cf0aba --- /dev/null +++ b/2023/12/20/comprehensive-analysis-of-superstore-sales-trends-and-performance-analysis.html @@ -0,0 +1,428 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Comprehensive Examination of Superstore Sales Trends and Performance Analysis | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Comprehensive Examination of Superstore Sales Trends and Performance Analysis

    +

    20 Dec 2023 - Ayush Adhikari

    +

    +

    Data analysis is pivotal in fostering business growth. Owners must possess a comprehensive understanding of their business analytics to strategically elevate profitability. However, meticulously tracking every sales pattern, discerning customer behaviors, and assessing profitability proves challenging for owners. This is where Data Analysis becomes indispensable. A proficient Data Analyst adeptly uncovers latent sales patterns, delineates diverse trends, and establishes correlations between various parameters. Equipped with this invaluable information, owners gain the ability to target and fortify weaker aspects of their business.

    + +

    For example, manufacturing companies often record the runtime, downtime, and work queue for various machines and then analyze the data to better plan workloads so the machines operate closer to peak capacity.

    + +

    Now, let’s examine the sales data from a big store worldwide. This project serves as a concise illustration of the diverse sales patterns perceivable within data, offering valuable insights and actionable conclusions that hold the potential to positively impact your business operations.

    + +

    We’ll use the Pandas library to handle our data — importing, cleaning, and organizing it. For visualizing the data, we’ll turn to Matplotlib and Seaborn libraries.

    + +

    DATASET

    + +

    https://www.kaggle.com/datasets/fatihilhan/global-superstore-dataset

    + +

    Importing Libraries

    + +

    We have used “read_csv()” function from Pandas library to import the dataset.

    + +

    + +

    A First Glimpse

    + +

    + +

    We’ve got 51,290 rows and 27 columns in our data. The products are categorized into ‘categories’ and ‘sub-categories’ columns. Each row has details like product name, customer, order date, order ID, profit, discount, and more.

    + +

    We’ve got an unspecified column that needs to be removed. After that, we’ll dig into each feature in our dataset to gather insights.

    + +

    + +

    Once we’ve gathered plenty of info about our data, it’s time to visualize and extract insights.

    + +

    Visualizing the Data

    + +

    Let’s check what is the number of orders per category.

    + +

    + +

    + +

    This graph tells us that around 60% of orders are for Office Supplies, followed by Technology and Furniture categories.

    + +

    + +

    Looking at the chart, we see that around 55% of sub-categories belong to Office Supplies. This explains why 60% of orders are for this category. Similarly, Binders are popular compared to others, followed by Storage and Art sub-categories.

    + +

    Now, let’s look at the Discount column.

    + +

    + +

    Out of 51,290 orders, 22,281 were made with discounts, roughly 45%. It looks like most people prefer buying discounted items. On average, the discount is around 15%.

    + +

    Next, we’ll group the discount percentages into categories: none, low discount (0–25%), medium discount (25%-50%), high discount (50%-75%), and very high discount (75% and above) to gain deeper insights.

    + +

    + +

    Let’s plot the chart of orders per discount category

    + +

    + +

    When we look at the chart, it’s clear that ‘Office Supplies’ gets higher discounts. Most orders have low discounts, but a few have high discounts.

    + +

    Let’s find out which types of customers are more likely to order.

    + +

    + +

    The chart shows most orders come from customers, followed by corporations and the Home Office. All categories seem equally popular among these segments. There isn’t a specific category that stands out for any particular segment.

    + +

    Now, let’s see which shipping mode is used the most.

    + +

    + +

    From this figure, we can say Standard Class shipping mode is mostly used roughly 55- 60%.

    + +

    Now, let’s check sales in each market.

    + +

    + +

    The Asia-Pacific region has the highest sales, followed by the US, EU, and LATAM regions. Sales are lowest in Canada.

    + +

    + +

    Most orders are from the US superstore (9994), followed by Australia (2837), France (2827), Mexico (2644), and Germany (2065). Supermarkets in South Sudan, Chad, and Swaziland have the fewest orders.

    + +

    Let’s explore the profits now.

    + +

    + +

    + +

    This chart reveals that the technology category has the highest net profit, followed by office supplies and furniture.

    + +

    When it comes to average profit per order, Technology leads, followed by Furniture, while Office supplies have the lowest average profit per order.

    + +

    Even though the office supplies category has more products, the Technology category sees a much higher average profit per order and net profit.

    + +

    Let’s check the scenario for each sub-category.

    + +

    + +

    This chart highlights that Copiers generate the highest average profit across all categories, making $116.315 per order, followed by Appliances at $81. However, the Table category incurs a loss, averaging at -$75 per order.

    + +

    Next up, let’s check profits by country.

    + +

    + +

    + +

    + +

    + +

    This chart shows that the supermarket in Montenegro is making the highest av. profit of 321.69 dollars, whereas Lithuania is making av. loss of 180 dollars.

    + +

    Total profit per country:

    + +

    + +

    + +

    However, in the US, supermarkets are making the highest profit, totaling $29,000. And, Turkey, they’re facing the highest loss, amounting to $99,000, followed by Nigeria with a loss of $80,000.

    + +

    A line plot showing the total profit per market across three years:

    + +

    + +

    This line plot indicates that the total profit in the Asia-Pacific region has steadily increased and is the highest among the tracked periods.

    + +

    Conclusions and suggestion

    + +
      +
    1. The Office Supplies category has lots of products but makes less average profit compared to Technology.
    2. +
    3. Since Technology has the highest profit, focusing on more products in this category could boost business.
    4. +
    5. Customers are attracted by discounts. Offering around 15% off might increase sales.
    6. +
    7. Careful discount allocation shows the company’s smart strategy.
    8. +
    9. Most use the Standard Class shipping. Investing here could improve profits.
    10. +
    11. Even though the US has a lower average profit per order, high sales result in high profits for supermarkets.
    12. +
    13. The Table category faces significant losses, suggesting discontinuation.
    14. +
    15. Asia-Pacific markets have good customer numbers and profitability
    16. +
    + +

    This project vividly demonstrates the transformative power of data analysis in optimizing business strategies. The utilization of graphs and tables unveils invaluable insights pivotal for business expansion. However, it’s crucial to recognize that data analysis isn’t confined solely to business realms; its influence spans across disciplines like scientific research, machine learning, and beyond. By embracing and mastering data analysis, individuals not only empower businesses but also contribute significantly to advancements in diverse fields. Ultimately, learning this skill emerges as a catalyst for personal and professional growth, opening doors to a multitude of opportunities.

    + +
    +

    Code for Nepal would like to thank DataCamp Donates for providing Ayush, and several other fellows access to DataCamp, to learn and grow.

    + +

    +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 00000000..37dab743 --- /dev/null +++ b/404.html @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + +
    +

    404

    + +

    Page not found :(

    +

    The requested page could not be found.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..3d008a41 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +codefornepal.org diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..6b46ceb9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM ruby:2.7 + +# Install dependencies +RUN apt-get update && apt-get install -y build-essential + +# Set the working directory +WORKDIR /app + +# Copy the Gemfile and Gemfile.lock +COPY Gemfile Gemfile.lock ./ + +# Install bundler and the Ruby gems +RUN gem install bundler && bundle install + +# Copy the rest of the application code +COPY . . + +# Expose the default port for the application +EXPOSE 4000 + +# Set the command to run the application +CMD ["jekyll", "serve", "-H", "0.0.0.0", "-P", "4000"] + diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..261eeb9e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 00000000..0868cac8 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# codefornepal.github.io + +To build a new device agnostic and low bandwidth friendly website of Code for Nepal. + +Jekyll instance of codefornepal.org + +## Design Guidelines + +These are our brand color schemes. +``` +Red: #E00015 +Blue: #00ADEF +White: #FFFFFF  +Light gray: #FCFBFB +``` + +## Install in Linux Fedora / Ubuntu + +### Step 1 + +- Fedora + +```console +$ sudo dnf install ruby-devel +``` + +```console +$ sudo dnf groupinstall development-tools rpm-development-tools c-development +``` + +- Ubuntu + +```console +$ sudo apt-get install ruby-full +``` + +```console +$ sudo apt-get install build-essential zlib1g-dev +``` + +### Step 2 + +```console +$ gem install bundler +``` + +### Step 3 + +- Fork **https://github.com/CodeforNepal/codefornepal.github.io.git** +- and then +```console +$ git clone https://github.com//codefornepal.github.io.git +$ cd codefornepal.github.io/ +$ git remote add upstream https://github.com/CodeforNepal/codefornepal.github.io.git +``` + +### Step 4 + +```console +$ bundle install +``` + +### Step 5 + +```console +$ bundle exec jekyll serve +``` +Go to -> http://127.0.0.1:4000/ + +### Optional + +- To make server accessible in **Network** and in diffrent **port** + +```console +$ bundle exec jekyll serve --host=0.0.0.0 --port=3000 +``` +Go to -> http://``:3000/ + +## Keep Fork Updated + +```console +$ git fetch upstream +$ git pull upstream master +$ git push origin master +``` + + + diff --git a/about/index.html b/about/index.html new file mode 100644 index 00000000..18094f09 --- /dev/null +++ b/about/index.html @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + About | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at jekyllrb.com

    + +

    You can find the source code for Minima at GitHub: +jekyll / +minima

    + +

    You can find the source code for Jekyll at GitHub: +jekyll / +jekyll

    + + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/config.yml b/admin/config.yml new file mode 100644 index 00000000..0d6c150d --- /dev/null +++ b/admin/config.yml @@ -0,0 +1,20 @@ +# config.yml + +backend: + name: github + repo: CodeforNepal/codefornepal.github.io + branch: master +media_folder: "assets/uploads" +collections: + - name: 'blog' + label: 'Blog' + folder: '_posts/' + create: true + slug: '{{year}}-{{month}}-{{day}}-{{slug}}' + editor: + preview: false + fields: + - { label: 'Layout', name: 'layout', widget: 'hidden', default: 'post' } + - { label: 'Title', name: 'title', widget: 'string' } + - { label: 'Publish Date', name: 'date', widget: 'datetime' } + - { label: 'Body', name: 'body', widget: 'markdown' } \ No newline at end of file diff --git a/admin/index.html b/admin/index.html new file mode 100644 index 00000000..02702c6f --- /dev/null +++ b/admin/index.html @@ -0,0 +1,13 @@ + + + + + + + Content Manager + + + + + + \ No newline at end of file diff --git a/assets/certificates/Piyush_Rimal.pdf b/assets/certificates/Piyush_Rimal.pdf new file mode 100644 index 00000000..90326517 Binary files /dev/null and b/assets/certificates/Piyush_Rimal.pdf differ diff --git a/assets/certificates/Ravi_Pandit.pdf b/assets/certificates/Ravi_Pandit.pdf new file mode 100644 index 00000000..930bb3e1 Binary files /dev/null and b/assets/certificates/Ravi_Pandit.pdf differ diff --git a/assets/certificates/Sadhana_Panthi.pdf b/assets/certificates/Sadhana_Panthi.pdf new file mode 100644 index 00000000..27ae6b88 Binary files /dev/null and b/assets/certificates/Sadhana_Panthi.pdf differ diff --git a/assets/certificates/Sakar_mainali.pdf b/assets/certificates/Sakar_mainali.pdf new file mode 100644 index 00000000..363784ee Binary files /dev/null and b/assets/certificates/Sakar_mainali.pdf differ diff --git a/assets/certificates/Shyamaron_Dongol.pdf b/assets/certificates/Shyamaron_Dongol.pdf new file mode 100644 index 00000000..65172e4a Binary files /dev/null and b/assets/certificates/Shyamaron_Dongol.pdf differ diff --git a/assets/certificates/Sudip_Shrestha.pdf b/assets/certificates/Sudip_Shrestha.pdf new file mode 100644 index 00000000..340b529f Binary files /dev/null and b/assets/certificates/Sudip_Shrestha.pdf differ diff --git a/assets/certificates/arisha_prasain.pdf b/assets/certificates/arisha_prasain.pdf new file mode 100644 index 00000000..e516e81f Binary files /dev/null and b/assets/certificates/arisha_prasain.pdf differ diff --git a/assets/certificates/prashant_manandhar.pdf b/assets/certificates/prashant_manandhar.pdf new file mode 100644 index 00000000..cc849ade Binary files /dev/null and b/assets/certificates/prashant_manandhar.pdf differ diff --git a/assets/certificates/pujan_oli.pdf b/assets/certificates/pujan_oli.pdf new file mode 100644 index 00000000..4276eb6a Binary files /dev/null and b/assets/certificates/pujan_oli.pdf differ diff --git a/assets/css/agency.css b/assets/css/agency.css new file mode 100644 index 00000000..99cb4bad --- /dev/null +++ b/assets/css/agency.css @@ -0,0 +1,2647 @@ +body { overflow-x: hidden; } + +p { line-height: 1.75; } + +a { color: #54bfff; } + +a:hover { color: #21acff; } + +.text-primary { color: #54bfff !important; } + +h1, h2, h3, h4, h5, h6 { font-weight: 700; } + +.page-section { padding: 100px 0; } + +.page-section h2.section-heading { font-size: 40px; margin-top: 0; margin-bottom: 20px; } + +.page-section h3.section-heading { font-size: 24px; margin-top: 0; margin-bottom: 12px; } + +.page-section h3.section-subheading { font-size: 16px; font-weight: 400; font-style: italic; margin-bottom: 75px; text-transform: none; } + +@media (min-width: 768px) { section { padding: 0px 0; } } + +::-moz-selection { background: #54bfff; text-shadow: none; } + +::selection { background: #54bfff; text-shadow: none; } + +img::selection { background: transparent; } + +img::-moz-selection { background: transparent; } + +.blog-list { list-style: none; } + +.blog-list .blog-list-item { margin: 3% 0 3% 0; } + +.paginator-links-list { list-style: none; } + +.clean-text, .container.blog p, .container.blog span, body { letter-spacing: -0.003em; line-height: 32px; font-weight: 200 !important; } + +.clean-text, .container.blog p, .container.blog span { font-size: 21px; margin: 30px 0; } + +.btn { font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; font-weight: 700; } + +.btn-xl { font-size: 18px; padding: 20px 40px; } + +.btn-primary { background-color: #54bfff; margin: 0.1rem; border-color: #54bfff; } + +.btn-primary:active, .btn-primary:focus, .btn-primary:hover { background-color: #2eb1ff !important; border-color: #2eb1ff !important; color: white; } + +.btn-primary:active, .btn-primary:focus { box-shadow: 0 0 0 0.2rem rgba(254, 209, 55, 0.5) !important; } + +#mainNav { background-color: #212529; } + +#mainNav .navbar-toggler { font-size: 12px; right: 0; padding: 12px; text-transform: uppercase; color: white; border: 0; background-color: #54bfff; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +#mainNav .navbar-brand { color: #54bfff; font-family: 'Kaushan Script', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +#mainNav .navbar-brand.active, #mainNav .navbar-brand:active, #mainNav .navbar-brand:focus, #mainNav .navbar-brand:hover { opacity: 0.6; } + +#mainNav .navbar-nav .nav-item .nav-link { font-size: 90%; font-weight: 400; letter-spacing: 1px; color: white; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +#mainNav .navbar-nav .nav-item .nav-link.active, #mainNav .navbar-nav .nav-item .nav-link:hover { color: #54bfff; } + +@media (min-width: 992px) { #mainNav { -webkit-transition: padding-top 0.3s, padding-bottom 0.3s; -moz-transition: padding-top 0.3s, padding-bottom 0.3s; transition: padding-top 0.3s, padding-bottom 0.3s; border: none; background-color: #212529; } #mainNav .navbar-brand { font-size: 1.75em; -webkit-transition: all 0.3s; -moz-transition: all 0.3s; transition: all 0.3s; } #mainNav .navbar-nav .nav-item .nav-link { padding: 0em 1em !important; } #mainNav.navbar-shrink { padding-top: 0; padding-bottom: 0; background-color: #212529; } #mainNav.navbar-shrink .navbar-brand { font-size: 1.25em; padding: 2px 0; } #mainNav form { padding-left: 15px; } } + +#scrolling-clients { display: flex; flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; } + +#col-md-3 col-sm-6 { flex: 0 0 auto; } + +header.masthead { text-align: center; color: white; background-image: url("../img/header-bg.jpg"); background-repeat: no-repeat; background-attachment: scroll; background-position: center center; background-size: cover; } + +header.masthead .image-overlay { width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); } + +header.masthead .intro-text { padding-top: 30%; padding-bottom: 10%; } + +header.masthead .intro-text .intro-heading { font-size: 40px; font-weight: 600; line-height: 50px; margin-bottom: 25px; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +header.masthead .intro-text .intro-lead-in { font-size: 26px; line-height: 2px; margin-bottom: 8em; font-family: 'Droid Serif', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +@media (min-width: 768px) { header.masthead .intro-text { padding-top: 30%; padding-bottom: 10%; } header.masthead .intro-text .intro-heading { font-size: 40px; font-weight: 600; line-height: 75px; margin-bottom: 25px; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } header.masthead .intro-text .intro-lead-in { font-size: 26px; line-height: 40px; margin-bottom: 8em; font-family: 'Droid Serif', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } } + +.service-heading { margin: 15px 0; text-transform: none; } + +.no-logo { font-size: 55px; color: #E00015; font-weight: 400 !important; } + +.no-logo span { color: #00ADEF !important; } + +.no-logo:hover { color: #E00015; } + +#portfolio .portfolio-item { right: 0; margin: 0 0 15px; } + +#portfolio .portfolio-item .portfolio-link { position: relative; display: block; max-width: 400px; margin: 0 auto; cursor: pointer; } + +#portfolio .portfolio-item .portfolio-link .portfolio-hover { position: absolute; width: 100%; height: 100%; -webkit-transition: all ease 0.5s; -moz-transition: all ease 0.5s; transition: all ease 0.5s; opacity: 0; background: rgba(84, 191, 255, 0.9); } + +#portfolio .portfolio-item .portfolio-link .portfolio-hover:hover { opacity: 1; } + +#portfolio .portfolio-item .portfolio-link .portfolio-hover .portfolio-hover-content { font-size: 20px; position: absolute; top: 50%; width: 100%; height: 20px; margin-top: -12px; text-align: center; color: white; } + +#portfolio .portfolio-item .portfolio-link .portfolio-hover .portfolio-hover-content i { margin-top: -12px; } + +#portfolio .portfolio-item .portfolio-link .portfolio-hover .portfolio-hover-content h3, #portfolio .portfolio-item .portfolio-link .portfolio-hover .portfolio-hover-content h4 { margin: 0; } + +#portfolio .portfolio-item .portfolio-caption { max-width: 400px; margin: 0 auto; padding: 25px; text-align: center; background-color: #FFF; } + +#portfolio .portfolio-item .portfolio-caption h4 { margin: 0; text-transform: none; } + +#portfolio .portfolio-item .portfolio-caption p { font-size: 16px; font-style: italic; margin: 0; font-family: 'Droid Serif', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +#portfolio * { z-index: 2; } + +@media (min-width: 767px) { #portfolio .portfolio-item { margin: 0 0 30px; } } + +.portfolio-modal .modal-dialog { margin: 1rem; max-width: 100vw; } + +.portfolio-modal .modal-content { padding: 100px 0; text-align: center; } + +.portfolio-modal .modal-content h2 { font-size: 3em; margin-bottom: 15px; } + +.portfolio-modal .modal-content p { margin-bottom: 30px; } + +.portfolio-modal .modal-content p.item-intro { font-size: 16px; font-style: italic; margin: 20px 0 30px; font-family: 'Droid Serif', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +.portfolio-modal .modal-content ul.list-inline { margin-top: 0; margin-bottom: 30px; } + +.portfolio-modal .modal-content img { margin-bottom: 30px; } + +.portfolio-modal .modal-content button { cursor: pointer; } + +.portfolio-modal .close-modal { position: absolute; top: 25px; right: 25px; width: 75px; height: 75px; cursor: pointer; background-color: transparent; } + +.portfolio-modal .close-modal:hover { opacity: 0.3; } + +.portfolio-modal .close-modal .lr { /* Safari and Chrome */ z-index: 1051; width: 1px; height: 75px; margin-left: 35px; /* IE 9 */ -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); background-color: #212529; } + +.portfolio-modal .close-modal .lr .rl { /* Safari and Chrome */ z-index: 1052; width: 1px; height: 75px; /* IE 9 */ -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); background-color: #212529; } + +.timeline { position: relative; padding: 0; list-style: none; } + +.timeline:before { position: absolute; top: 0; bottom: 0; left: 40px; width: 2px; margin-left: -1.5px; content: ""; background-color: #e9ecef; } + +.timeline > li { position: relative; min-height: 50px; margin-bottom: 50px; } + +.timeline > li:after, .timeline > li:before { display: table; content: " "; } + +.timeline > li:after { clear: both; } + +.timeline > li .timeline-panel { position: relative; float: right; width: 100%; padding: 0 20px 0 100px; text-align: left; } + +.timeline > li .timeline-panel:before { right: auto; left: -15px; border-right-width: 15px; border-left-width: 0; } + +.timeline > li .timeline-panel:after { right: auto; left: -14px; border-right-width: 14px; border-left-width: 0; } + +.timeline > li .timeline-image { position: absolute; z-index: 100; left: 0; width: 80px; height: 80px; margin-left: 0; text-align: center; color: #FFF; border: 7px solid #e9ecef; border-radius: 100%; background-color: #54bfff; } + +.timeline > li .timeline-image h4 { font-size: 10px; line-height: 14px; margin-top: 12px; } + +.timeline > li.timeline-inverted > .timeline-panel { float: right; padding: 0 20px 0 100px; text-align: left; } + +.timeline > li.timeline-inverted > .timeline-panel:before { right: auto; left: -15px; border-right-width: 15px; border-left-width: 0; } + +.timeline > li.timeline-inverted > .timeline-panel:after { right: auto; left: -14px; border-right-width: 14px; border-left-width: 0; } + +.timeline > li:last-child { margin-bottom: 0; } + +.timeline .timeline-heading h4 { margin-top: 0; color: inherit; } + +.timeline .timeline-heading h4.subheading { text-transform: none; } + +.timeline .timeline-body > ul, .timeline .timeline-body > p { margin-bottom: 0; } + +.timeline .timeline-end p a { color: white !important; } + +@media (min-width: 768px) { .timeline:before { left: 50%; } .timeline > li { min-height: 100px; margin-bottom: 100px; } .timeline > li .timeline-panel { float: left; width: 41%; padding: 0 20px 20px 30px; text-align: right; } .timeline > li .timeline-image { left: 50%; width: 100px; height: 100px; margin-left: -50px; } .timeline > li .timeline-image h4 { font-size: 13px; line-height: 18px; margin-top: 16px; } .timeline > li.timeline-inverted > .timeline-panel { float: right; padding: 0 30px 20px 20px; text-align: left; } } + +@media (min-width: 992px) { .timeline > li { min-height: 150px; } .timeline > li .timeline-panel { padding: 0 20px 20px; } .timeline > li .timeline-image { width: 150px; height: 150px; margin-left: -75px; } .timeline > li .timeline-image h4 { font-size: 18px; line-height: 26px; margin-top: 30px; } .timeline > li.timeline-inverted > .timeline-panel { padding: 0 20px 20px; } } + +@media (min-width: 1200px) { .timeline > li { min-height: 170px; } .timeline > li .timeline-panel { padding: 0 20px 20px 100px; } .timeline > li .timeline-image { width: 170px; height: 170px; margin-left: -85px; } .timeline > li .timeline-image h4 { margin-top: 40px; } .timeline > li.timeline-inverted > .timeline-panel { padding: 0 100px 20px 20px; } } + +.team-member { margin-bottom: 50px; text-align: center; } + +.team-member img { width: 225px; height: 225px; border: 7px solid rgba(255, 64, 64, 0.1); } + +.team-member h4 { margin-top: 25px; margin-bottom: 0; text-transform: none; } + +.team-member p { margin-top: 0; } + +section#contact { background-color: #f8f9fa !important; background-image: url(""); background-repeat: no-repeat; background-position: center; } + +section#contact .section-heading { color: black; } + +section#contact .form-group { margin-bottom: 25px; } + +section#contact .form-group input, section#contact .form-group textarea { padding: 20px; } + +section#contact .form-group input.form-control { height: auto; } + +section#contact .form-group textarea.form-control { height: 248px; } + +section#contact .form-control:focus { border-color: #54bfff; box-shadow: none; } + +section#contact ::-webkit-input-placeholder { font-weight: 700; color: #ced4da; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +section#contact :-moz-placeholder { font-weight: 700; color: #ced4da; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +section#contact ::-moz-placeholder { font-weight: 700; color: #ced4da; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +section#contact :-ms-input-placeholder { font-weight: 700; color: #ced4da; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +.footer { padding: 25px 0; text-align: center; background-color: #343a40; } + +.footer span.copyright { font-size: 90%; line-height: 40px; text-transform: none; color: white; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +.footer span.code { font-size: 90%; line-height: 40px; color: white; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +.footer ul.quicklinks { font-size: 90%; line-height: 40px; margin-bottom: 0; text-transform: none; font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +.footer ul.quicklinks a { color: white; } + +ul.social-buttons { margin-bottom: 0; } + +ul.social-buttons li a { font-size: 20px; line-height: 50px; display: block; width: 50px; height: 50px; -webkit-transition: all 0.3s; -moz-transition: all 0.3s; transition: all 0.3s; color: white; border-radius: 100%; outline: none; background-color: #495057; } + +ul.social-buttons li a:active, ul.social-buttons li a:focus, ul.social-buttons li a:hover { background-color: #54bfff; } + +form { padding-top: 20px; } + +#donate-btn { width: 110px; position: relative; top: -10px !important; text-transform: uppercase; } + +.card img { width: 100% !important; } + +.container.blog { max-width: 800px; } + +@media only screen and (min-width: 560px) { .container.blog { padding: 0 64px; } } + +.container.blog img { width: 100%; } + +.container.blog .title { font-weight: 400; font-size: 40px; margin-bottom: 20px; } + +.container.blog figcaption { margin-top: 8px; font-size: 14px; } + +#joinus strong { color: #54bfff; } + +#joinus a:hover em { color: #54bfff; } + +.sponsors img { max-height: 70px; } + +/*! Bootstrap v4.5.2 (https://getbootstrap.com/) Copyright 2011-2020 The Bootstrap Authors Copyright 2011-2020 Twitter, Inc. Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ +:root { --blue: #007bff; --indigo: #6610f2; --purple: #6f42c1; --pink: #e83e8c; --red: #dc3545; --orange: #fd7e14; --yellow: #ffc107; --green: #28a745; --teal: #20c997; --cyan: #17a2b8; --white: #FFF; --gray: #868e96; --gray-dark: #343a40; --primary: #54bfff; --secondary: #868e96; --success: #28a745; --info: #17a2b8; --warning: #ffc107; --danger: #dc3545; --light: #f8f9fa; --dark: #343a40; --breakpoint-xs: 0; --breakpoint-sm: 576px; --breakpoint-md: 768px; --breakpoint-lg: 992px; --breakpoint-xl: 1200px; --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +*, *::before, *::after { box-sizing: border-box; } + +html { font-family: sans-serif; line-height: 1.15; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: rgba(255, 64, 64, 0); } + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { display: block; } + +body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 1rem; font-weight: 400; line-height: 1.5; color: #212529; text-align: left; background-color: #FFF; } + +[tabindex="-1"]:focus:not(:focus-visible) { outline: 0 !important; } + +hr { box-sizing: content-box; height: 0; overflow: visible; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 0.5rem; } + +p { margin-top: 0; margin-bottom: 1rem; } + +abbr[title], abbr[data-original-title] { text-decoration: underline; text-decoration: underline dotted; cursor: help; border-bottom: 0; text-decoration-skip-ink: none; } + +address { margin-bottom: 1rem; font-style: normal; line-height: inherit; } + +ol, ul, dl { margin-top: 0; margin-bottom: 1rem; } + +ol ol, ul ul, ol ul, ul ol { margin-bottom: 0; } + +dt { font-weight: 700; } + +dd { margin-bottom: .5rem; margin-left: 0; } + +blockquote { margin: 0 0 1rem; } + +b, strong { font-weight: bolder; } + +small { font-size: 80%; } + +sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } + +sub { bottom: -.25em; } + +sup { top: -.5em; } + +a { color: #54bfff; text-decoration: none; background-color: transparent; } + +a:hover { color: #08a2ff; text-decoration: underline; } + +a:not([href]):not([class]) { color: inherit; text-decoration: none; } + +a:not([href]):not([class]):hover { color: inherit; text-decoration: none; } + +pre, code, kbd, samp { font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1em; } + +pre { margin-top: 0; margin-bottom: 1rem; overflow: auto; -ms-overflow-style: scrollbar; } + +figure { margin: 0 0 1rem; } + +img { vertical-align: middle; border-style: none; } + +svg { overflow: hidden; vertical-align: middle; } + +table { border-collapse: collapse; } + +caption { padding-top: 0.75rem; padding-bottom: 0.75rem; color: #868e96; text-align: left; caption-side: bottom; } + +th { text-align: inherit; } + +label { display: inline-block; margin-bottom: 0.5rem; } + +button { border-radius: 0; } + +button:focus { outline: 1px dotted; outline: 5px auto -webkit-focus-ring-color; } + +input, button, select, optgroup, textarea { margin: 0; font-family: inherit; font-size: inherit; line-height: inherit; } + +button, input { overflow: visible; } + +button, select { text-transform: none; } + +[role="button"] { cursor: pointer; } + +select { word-wrap: normal; } + +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +button:not(:disabled), [type="button"]:not(:disabled), [type="reset"]:not(:disabled), [type="submit"]:not(:disabled) { cursor: pointer; } + +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { padding: 0; border-style: none; } + +input[type="radio"], input[type="checkbox"] { box-sizing: border-box; padding: 0; } + +textarea { overflow: auto; resize: vertical; } + +fieldset { min-width: 0; padding: 0; margin: 0; border: 0; } + +legend { display: block; width: 100%; max-width: 100%; padding: 0; margin-bottom: .5rem; font-size: 1.5rem; line-height: inherit; color: inherit; white-space: normal; } + +progress { vertical-align: baseline; } + +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +[type="search"] { outline-offset: -2px; -webkit-appearance: none; } + +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +::-webkit-file-upload-button { font: inherit; -webkit-appearance: button; } + +output { display: inline-block; } + +summary { display: list-item; cursor: pointer; } + +template { display: none; } + +[hidden] { display: none !important; } + +h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; } + +h1, .h1 { font-size: 2.5rem; } + +h2, .h2 { font-size: 2rem; } + +h3, .h3 { font-size: 1.75rem; } + +h4, .h4 { font-size: 1.5rem; } + +h5, .h5 { font-size: 1.25rem; } + +h6, .h6 { font-size: 1rem; } + +.lead { font-size: 1.25rem; font-weight: 300; } + +.display-1 { font-size: 6rem; font-weight: 300; line-height: 1.2; } + +.display-2 { font-size: 5.5rem; font-weight: 300; line-height: 1.2; } + +.display-3 { font-size: 4.5rem; font-weight: 300; line-height: 1.2; } + +.display-4 { font-size: 3.5rem; font-weight: 300; line-height: 1.2; } + +hr { margin-top: 1rem; margin-bottom: 1rem; border: 0; border-top: 1px solid rgba(255, 64, 64, 0.1); } + +small, .small { font-size: 80%; font-weight: 400; } + +mark, .mark { padding: 0.2em; background-color: #fcf8e3; } + +.list-unstyled { padding-left: 0; list-style: none; } + +.list-inline { padding-left: 0; list-style: none; } + +.list-inline-item { display: inline-block; } + +.list-inline-item:not(:last-child) { margin-right: 0.5rem; } + +.initialism { font-size: 90%; text-transform: uppercase; } + +.blockquote { margin-bottom: 1rem; font-size: 1.25rem; } + +.blockquote-footer { display: block; font-size: 80%; color: #868e96; } + +.blockquote-footer::before { content: "\2014\00A0"; } + +.img-fluid { max-width: 100%; height: auto; } + +.img-thumbnail { padding: 0.25rem; background-color: #FFF; border: 1px solid #dee2e6; border-radius: 0.25rem; max-width: 100%; height: auto; } + +.figure { display: inline-block; } + +.figure-img { margin-bottom: 0.5rem; line-height: 1; } + +.figure-caption { font-size: 90%; color: #868e96; } + +code { font-size: 87.5%; color: #e83e8c; word-wrap: break-word; } + +a > code { color: inherit; } + +kbd { padding: 0.2rem 0.4rem; font-size: 87.5%; color: #FFF; background-color: #212529; border-radius: 0.2rem; } + +kbd kbd { padding: 0; font-size: 100%; font-weight: 700; } + +pre { display: block; font-size: 87.5%; color: #212529; } + +pre code { font-size: inherit; color: inherit; word-break: normal; } + +.pre-scrollable { max-height: 340px; overflow-y: scroll; } + +.container, .container-fluid, .container-xl, .container-lg, .container-md, .container-sm { width: 100%; padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } + +@media (min-width: 576px) { .container-sm, .container { max-width: 540px; } } + +@media (min-width: 768px) { .container-md, .container-sm, .container { max-width: 720px; } } + +@media (min-width: 992px) { .container-lg, .container-md, .container-sm, .container { max-width: 960px; } } + +@media (min-width: 1200px) { .container-xl, .container-lg, .container-md, .container-sm, .container { max-width: 1140px; } } + +.row { display: flex; flex-wrap: wrap; margin-right: -15px; margin-left: -15px; } + +.no-gutters { margin-right: 0; margin-left: 0; } + +.no-gutters > .col, .no-gutters > [class*="col-"] { padding-right: 0; padding-left: 0; } + +.col-xl, .col-xl-auto, .col-xl-12, .col-xl-11, .col-xl-10, .col-xl-9, .col-xl-8, .col-xl-7, .col-xl-6, .col-xl-5, .col-xl-4, .col-xl-3, .col-xl-2, .col-xl-1, .col-lg, .col-lg-auto, .col-lg-12, .col-lg-11, .col-lg-10, .col-lg-9, .col-lg-8, .col-lg-7, .col-lg-6, .col-lg-5, .col-lg-4, .col-lg-3, .col-lg-2, .col-lg-1, .col-md, .col-md-auto, .col-md-12, .col-md-11, .col-md-10, .col-md-9, .col-md-8, .col-md-7, .col-md-6, .col-md-5, .col-md-4, .col-md-3, .col-md-2, .col-md-1, .col-sm, .col-sm-auto, .col-sm-12, .col-sm-11, .col-sm-10, .col-sm-9, .col-sm-8, .col-sm-7, .col-sm-6, .col-sm-5, .col-sm-4, .col-sm-3, .col-sm-2, .col-sm-1, .col, .col-auto, .col-12, .col-11, .col-10, .col-9, .col-8, .col-7, .col-6, .col-5, .col-4, .col-3, .col-2, .col-1 { position: relative; width: 100%; padding-right: 15px; padding-left: 15px; } + +.col { flex-basis: 0; flex-grow: 1; max-width: 100%; } + +.row-cols-1 > * { flex: 0 0 100%; max-width: 100%; } + +.row-cols-2 > * { flex: 0 0 50%; max-width: 50%; } + +.row-cols-3 > * { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } + +.row-cols-4 > * { flex: 0 0 25%; max-width: 25%; } + +.row-cols-5 > * { flex: 0 0 20%; max-width: 20%; } + +.row-cols-6 > * { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } + +.col-auto { flex: 0 0 auto; width: auto; max-width: 100%; } + +.col-1 { flex: 0 0 8.3333333333%; max-width: 8.3333333333%; } + +.col-2 { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } + +.col-3 { flex: 0 0 25%; max-width: 25%; } + +.col-4 { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } + +.col-5 { flex: 0 0 41.6666666667%; max-width: 41.6666666667%; } + +.col-6 { flex: 0 0 50%; max-width: 50%; } + +.col-7 { flex: 0 0 58.3333333333%; max-width: 58.3333333333%; } + +.col-8 { flex: 0 0 66.6666666667%; max-width: 66.6666666667%; } + +.col-9 { flex: 0 0 75%; max-width: 75%; } + +.col-10 { flex: 0 0 83.3333333333%; max-width: 83.3333333333%; } + +.col-11 { flex: 0 0 91.6666666667%; max-width: 91.6666666667%; } + +.col-12 { flex: 0 0 100%; max-width: 100%; } + +.order-first { order: -1; } + +.order-last { order: 13; } + +.order-0 { order: 0; } + +.order-1 { order: 1; } + +.order-2 { order: 2; } + +.order-3 { order: 3; } + +.order-4 { order: 4; } + +.order-5 { order: 5; } + +.order-6 { order: 6; } + +.order-7 { order: 7; } + +.order-8 { order: 8; } + +.order-9 { order: 9; } + +.order-10 { order: 10; } + +.order-11 { order: 11; } + +.order-12 { order: 12; } + +.offset-1 { margin-left: 8.3333333333%; } + +.offset-2 { margin-left: 16.6666666667%; } + +.offset-3 { margin-left: 25%; } + +.offset-4 { margin-left: 33.3333333333%; } + +.offset-5 { margin-left: 41.6666666667%; } + +.offset-6 { margin-left: 50%; } + +.offset-7 { margin-left: 58.3333333333%; } + +.offset-8 { margin-left: 66.6666666667%; } + +.offset-9 { margin-left: 75%; } + +.offset-10 { margin-left: 83.3333333333%; } + +.offset-11 { margin-left: 91.6666666667%; } + +@media (min-width: 576px) { .col-sm { flex-basis: 0; flex-grow: 1; max-width: 100%; } .row-cols-sm-1 > * { flex: 0 0 100%; max-width: 100%; } .row-cols-sm-2 > * { flex: 0 0 50%; max-width: 50%; } .row-cols-sm-3 > * { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .row-cols-sm-4 > * { flex: 0 0 25%; max-width: 25%; } .row-cols-sm-5 > * { flex: 0 0 20%; max-width: 20%; } .row-cols-sm-6 > * { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-sm-auto { flex: 0 0 auto; width: auto; max-width: 100%; } .col-sm-1 { flex: 0 0 8.3333333333%; max-width: 8.3333333333%; } .col-sm-2 { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-sm-3 { flex: 0 0 25%; max-width: 25%; } .col-sm-4 { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .col-sm-5 { flex: 0 0 41.6666666667%; max-width: 41.6666666667%; } .col-sm-6 { flex: 0 0 50%; max-width: 50%; } .col-sm-7 { flex: 0 0 58.3333333333%; max-width: 58.3333333333%; } .col-sm-8 { flex: 0 0 66.6666666667%; max-width: 66.6666666667%; } .col-sm-9 { flex: 0 0 75%; max-width: 75%; } .col-sm-10 { flex: 0 0 83.3333333333%; max-width: 83.3333333333%; } .col-sm-11 { flex: 0 0 91.6666666667%; max-width: 91.6666666667%; } .col-sm-12 { flex: 0 0 100%; max-width: 100%; } .order-sm-first { order: -1; } .order-sm-last { order: 13; } .order-sm-0 { order: 0; } .order-sm-1 { order: 1; } .order-sm-2 { order: 2; } .order-sm-3 { order: 3; } .order-sm-4 { order: 4; } .order-sm-5 { order: 5; } .order-sm-6 { order: 6; } .order-sm-7 { order: 7; } .order-sm-8 { order: 8; } .order-sm-9 { order: 9; } .order-sm-10 { order: 10; } .order-sm-11 { order: 11; } .order-sm-12 { order: 12; } .offset-sm-0 { margin-left: 0; } .offset-sm-1 { margin-left: 8.3333333333%; } .offset-sm-2 { margin-left: 16.6666666667%; } .offset-sm-3 { margin-left: 25%; } .offset-sm-4 { margin-left: 33.3333333333%; } .offset-sm-5 { margin-left: 41.6666666667%; } .offset-sm-6 { margin-left: 50%; } .offset-sm-7 { margin-left: 58.3333333333%; } .offset-sm-8 { margin-left: 66.6666666667%; } .offset-sm-9 { margin-left: 75%; } .offset-sm-10 { margin-left: 83.3333333333%; } .offset-sm-11 { margin-left: 91.6666666667%; } } + +@media (min-width: 768px) { .col-md { flex-basis: 0; flex-grow: 1; max-width: 100%; } .row-cols-md-1 > * { flex: 0 0 100%; max-width: 100%; } .row-cols-md-2 > * { flex: 0 0 50%; max-width: 50%; } .row-cols-md-3 > * { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .row-cols-md-4 > * { flex: 0 0 25%; max-width: 25%; } .row-cols-md-5 > * { flex: 0 0 20%; max-width: 20%; } .row-cols-md-6 > * { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-md-auto { flex: 0 0 auto; width: auto; max-width: 100%; } .col-md-1 { flex: 0 0 8.3333333333%; max-width: 8.3333333333%; } .col-md-2 { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-md-3 { flex: 0 0 25%; max-width: 25%; } .col-md-4 { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .col-md-5 { flex: 0 0 41.6666666667%; max-width: 41.6666666667%; } .col-md-6 { flex: 0 0 50%; max-width: 50%; } .col-md-7 { flex: 0 0 58.3333333333%; max-width: 58.3333333333%; } .col-md-8 { flex: 0 0 66.6666666667%; max-width: 66.6666666667%; } .col-md-9 { flex: 0 0 75%; max-width: 75%; } .col-md-10 { flex: 0 0 83.3333333333%; max-width: 83.3333333333%; } .col-md-11 { flex: 0 0 91.6666666667%; max-width: 91.6666666667%; } .col-md-12 { flex: 0 0 100%; max-width: 100%; } .order-md-first { order: -1; } .order-md-last { order: 13; } .order-md-0 { order: 0; } .order-md-1 { order: 1; } .order-md-2 { order: 2; } .order-md-3 { order: 3; } .order-md-4 { order: 4; } .order-md-5 { order: 5; } .order-md-6 { order: 6; } .order-md-7 { order: 7; } .order-md-8 { order: 8; } .order-md-9 { order: 9; } .order-md-10 { order: 10; } .order-md-11 { order: 11; } .order-md-12 { order: 12; } .offset-md-0 { margin-left: 0; } .offset-md-1 { margin-left: 8.3333333333%; } .offset-md-2 { margin-left: 16.6666666667%; } .offset-md-3 { margin-left: 25%; } .offset-md-4 { margin-left: 33.3333333333%; } .offset-md-5 { margin-left: 41.6666666667%; } .offset-md-6 { margin-left: 50%; } .offset-md-7 { margin-left: 58.3333333333%; } .offset-md-8 { margin-left: 66.6666666667%; } .offset-md-9 { margin-left: 75%; } .offset-md-10 { margin-left: 83.3333333333%; } .offset-md-11 { margin-left: 91.6666666667%; } } + +@media (min-width: 992px) { .col-lg { flex-basis: 0; flex-grow: 1; max-width: 100%; } .row-cols-lg-1 > * { flex: 0 0 100%; max-width: 100%; } .row-cols-lg-2 > * { flex: 0 0 50%; max-width: 50%; } .row-cols-lg-3 > * { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .row-cols-lg-4 > * { flex: 0 0 25%; max-width: 25%; } .row-cols-lg-5 > * { flex: 0 0 20%; max-width: 20%; } .row-cols-lg-6 > * { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-lg-auto { flex: 0 0 auto; width: auto; max-width: 100%; } .col-lg-1 { flex: 0 0 8.3333333333%; max-width: 8.3333333333%; } .col-lg-2 { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-lg-3 { flex: 0 0 25%; max-width: 25%; } .col-lg-4 { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .col-lg-5 { flex: 0 0 41.6666666667%; max-width: 41.6666666667%; } .col-lg-6 { flex: 0 0 50%; max-width: 50%; } .col-lg-7 { flex: 0 0 58.3333333333%; max-width: 58.3333333333%; } .col-lg-8 { flex: 0 0 66.6666666667%; max-width: 66.6666666667%; } .col-lg-9 { flex: 0 0 75%; max-width: 75%; } .col-lg-10 { flex: 0 0 83.3333333333%; max-width: 83.3333333333%; } .col-lg-11 { flex: 0 0 91.6666666667%; max-width: 91.6666666667%; } .col-lg-12 { flex: 0 0 100%; max-width: 100%; } .order-lg-first { order: -1; } .order-lg-last { order: 13; } .order-lg-0 { order: 0; } .order-lg-1 { order: 1; } .order-lg-2 { order: 2; } .order-lg-3 { order: 3; } .order-lg-4 { order: 4; } .order-lg-5 { order: 5; } .order-lg-6 { order: 6; } .order-lg-7 { order: 7; } .order-lg-8 { order: 8; } .order-lg-9 { order: 9; } .order-lg-10 { order: 10; } .order-lg-11 { order: 11; } .order-lg-12 { order: 12; } .offset-lg-0 { margin-left: 0; } .offset-lg-1 { margin-left: 8.3333333333%; } .offset-lg-2 { margin-left: 16.6666666667%; } .offset-lg-3 { margin-left: 25%; } .offset-lg-4 { margin-left: 33.3333333333%; } .offset-lg-5 { margin-left: 41.6666666667%; } .offset-lg-6 { margin-left: 50%; } .offset-lg-7 { margin-left: 58.3333333333%; } .offset-lg-8 { margin-left: 66.6666666667%; } .offset-lg-9 { margin-left: 75%; } .offset-lg-10 { margin-left: 83.3333333333%; } .offset-lg-11 { margin-left: 91.6666666667%; } } + +@media (min-width: 1200px) { .col-xl { flex-basis: 0; flex-grow: 1; max-width: 100%; } .row-cols-xl-1 > * { flex: 0 0 100%; max-width: 100%; } .row-cols-xl-2 > * { flex: 0 0 50%; max-width: 50%; } .row-cols-xl-3 > * { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .row-cols-xl-4 > * { flex: 0 0 25%; max-width: 25%; } .row-cols-xl-5 > * { flex: 0 0 20%; max-width: 20%; } .row-cols-xl-6 > * { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-xl-auto { flex: 0 0 auto; width: auto; max-width: 100%; } .col-xl-1 { flex: 0 0 8.3333333333%; max-width: 8.3333333333%; } .col-xl-2 { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; } .col-xl-3 { flex: 0 0 25%; max-width: 25%; } .col-xl-4 { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; } .col-xl-5 { flex: 0 0 41.6666666667%; max-width: 41.6666666667%; } .col-xl-6 { flex: 0 0 50%; max-width: 50%; } .col-xl-7 { flex: 0 0 58.3333333333%; max-width: 58.3333333333%; } .col-xl-8 { flex: 0 0 66.6666666667%; max-width: 66.6666666667%; } .col-xl-9 { flex: 0 0 75%; max-width: 75%; } .col-xl-10 { flex: 0 0 83.3333333333%; max-width: 83.3333333333%; } .col-xl-11 { flex: 0 0 91.6666666667%; max-width: 91.6666666667%; } .col-xl-12 { flex: 0 0 100%; max-width: 100%; } .order-xl-first { order: -1; } .order-xl-last { order: 13; } .order-xl-0 { order: 0; } .order-xl-1 { order: 1; } .order-xl-2 { order: 2; } .order-xl-3 { order: 3; } .order-xl-4 { order: 4; } .order-xl-5 { order: 5; } .order-xl-6 { order: 6; } .order-xl-7 { order: 7; } .order-xl-8 { order: 8; } .order-xl-9 { order: 9; } .order-xl-10 { order: 10; } .order-xl-11 { order: 11; } .order-xl-12 { order: 12; } .offset-xl-0 { margin-left: 0; } .offset-xl-1 { margin-left: 8.3333333333%; } .offset-xl-2 { margin-left: 16.6666666667%; } .offset-xl-3 { margin-left: 25%; } .offset-xl-4 { margin-left: 33.3333333333%; } .offset-xl-5 { margin-left: 41.6666666667%; } .offset-xl-6 { margin-left: 50%; } .offset-xl-7 { margin-left: 58.3333333333%; } .offset-xl-8 { margin-left: 66.6666666667%; } .offset-xl-9 { margin-left: 75%; } .offset-xl-10 { margin-left: 83.3333333333%; } .offset-xl-11 { margin-left: 91.6666666667%; } } + +.table { width: 100%; margin-bottom: 1rem; color: #212529; } + +.table th, .table td { padding: 0.75rem; vertical-align: top; border-top: 1px solid #dee2e6; } + +.table thead th { vertical-align: bottom; border-bottom: 2px solid #dee2e6; } + +.table tbody + tbody { border-top: 2px solid #dee2e6; } + +.table-sm th, .table-sm td { padding: 0.3rem; } + +.table-bordered { border: 1px solid #dee2e6; } + +.table-bordered th, .table-bordered td { border: 1px solid #dee2e6; } + +.table-bordered thead th, .table-bordered thead td { border-bottom-width: 2px; } + +.table-borderless th, .table-borderless td, .table-borderless thead th, .table-borderless tbody + tbody { border: 0; } + +.table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255, 64, 64, 0.05); } + +.table-hover tbody tr:hover { color: #212529; background-color: rgba(255, 64, 64, 0.075); } + +.table-primary, .table-primary > th, .table-primary > td { background-color: #cfedff; } + +.table-primary th, .table-primary td, .table-primary thead th, .table-primary tbody + tbody { border-color: #a6deff; } + +.table-hover .table-primary:hover { background-color: #b6e3ff; } + +.table-hover .table-primary:hover > td, .table-hover .table-primary:hover > th { background-color: #b6e3ff; } + +.table-secondary, .table-secondary > th, .table-secondary > td { background-color: #dddfe2; } + +.table-secondary th, .table-secondary td, .table-secondary thead th, .table-secondary tbody + tbody { border-color: #c0c4c8; } + +.table-hover .table-secondary:hover { background-color: #cfd2d6; } + +.table-hover .table-secondary:hover > td, .table-hover .table-secondary:hover > th { background-color: #cfd2d6; } + +.table-success, .table-success > th, .table-success > td { background-color: #c3e6cb; } + +.table-success th, .table-success td, .table-success thead th, .table-success tbody + tbody { border-color: #8fd19e; } + +.table-hover .table-success:hover { background-color: #b1dfbb; } + +.table-hover .table-success:hover > td, .table-hover .table-success:hover > th { background-color: #b1dfbb; } + +.table-info, .table-info > th, .table-info > td { background-color: #bee5eb; } + +.table-info th, .table-info td, .table-info thead th, .table-info tbody + tbody { border-color: #86cfda; } + +.table-hover .table-info:hover { background-color: #abdde5; } + +.table-hover .table-info:hover > td, .table-hover .table-info:hover > th { background-color: #abdde5; } + +.table-warning, .table-warning > th, .table-warning > td { background-color: #ffeeba; } + +.table-warning th, .table-warning td, .table-warning thead th, .table-warning tbody + tbody { border-color: #ffdf7e; } + +.table-hover .table-warning:hover { background-color: #ffe8a1; } + +.table-hover .table-warning:hover > td, .table-hover .table-warning:hover > th { background-color: #ffe8a1; } + +.table-danger, .table-danger > th, .table-danger > td { background-color: #f5c6cb; } + +.table-danger th, .table-danger td, .table-danger thead th, .table-danger tbody + tbody { border-color: #ed969e; } + +.table-hover .table-danger:hover { background-color: #f1b0b7; } + +.table-hover .table-danger:hover > td, .table-hover .table-danger:hover > th { background-color: #f1b0b7; } + +.table-light, .table-light > th, .table-light > td { background-color: #fdfdfe; } + +.table-light th, .table-light td, .table-light thead th, .table-light tbody + tbody { border-color: #fbfcfc; } + +.table-hover .table-light:hover { background-color: #ececf6; } + +.table-hover .table-light:hover > td, .table-hover .table-light:hover > th { background-color: #ececf6; } + +.table-dark, .table-dark > th, .table-dark > td { background-color: #c6c8ca; } + +.table-dark th, .table-dark td, .table-dark thead th, .table-dark tbody + tbody { border-color: #95999c; } + +.table-hover .table-dark:hover { background-color: #b9bbbe; } + +.table-hover .table-dark:hover > td, .table-hover .table-dark:hover > th { background-color: #b9bbbe; } + +.table-active, .table-active > th, .table-active > td { background-color: rgba(255, 64, 64, 0.075); } + +.table-hover .table-active:hover { background-color: rgba(255, 39, 39, 0.075); } + +.table-hover .table-active:hover > td, .table-hover .table-active:hover > th { background-color: rgba(255, 39, 39, 0.075); } + +.table .thead-dark th { color: #FFF; background-color: #343a40; border-color: #454d55; } + +.table .thead-light th { color: #495057; background-color: #e9ecef; border-color: #dee2e6; } + +.table-dark { color: #FFF; background-color: #343a40; } + +.table-dark th, .table-dark td, .table-dark thead th { border-color: #454d55; } + +.table-dark.table-bordered { border: 0; } + +.table-dark.table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255, 255, 255, 0.05); } + +.table-dark.table-hover tbody tr:hover { color: #FFF; background-color: rgba(255, 255, 255, 0.075); } + +@media (max-width: 575.98px) { .table-responsive-sm { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; } .table-responsive-sm > .table-bordered { border: 0; } } + +@media (max-width: 767.98px) { .table-responsive-md { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; } .table-responsive-md > .table-bordered { border: 0; } } + +@media (max-width: 991.98px) { .table-responsive-lg { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; } .table-responsive-lg > .table-bordered { border: 0; } } + +@media (max-width: 1199.98px) { .table-responsive-xl { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; } .table-responsive-xl > .table-bordered { border: 0; } } + +.table-responsive { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; } + +.table-responsive > .table-bordered { border: 0; } + +.form-control { display: block; width: 100%; height: calc(1.5em + 0.75rem + 2px); padding: 0.375rem 0.75rem; font-size: 1rem; font-weight: 400; line-height: 1.5; color: #495057; background-color: #FFF; background-clip: padding-box; border: 1px solid #ced4da; border-radius: 0.25rem; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media (prefers-reduced-motion: reduce) { .form-control { transition: none; } } + +.form-control::-ms-expand { background-color: transparent; border: 0; } + +.form-control:-moz-focusring { color: transparent; text-shadow: 0 0 0 #495057; } + +.form-control:focus { color: #495057; background-color: #FFF; border-color: #d4efff; outline: 0; box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.form-control::placeholder { color: #868e96; opacity: 1; } + +.form-control:disabled, .form-control[readonly] { background-color: #e9ecef; opacity: 1; } + +input.form-control[type="date"], input.form-control[type="time"], input.form-control[type="datetime-local"], input.form-control[type="month"] { appearance: none; } + +select.form-control:focus::-ms-value { color: #495057; background-color: #FFF; } + +.form-control-file, .form-control-range { display: block; width: 100%; } + +.col-form-label { padding-top: calc(0.375rem + 1px); padding-bottom: calc(0.375rem + 1px); margin-bottom: 0; font-size: inherit; line-height: 1.5; } + +.col-form-label-lg { padding-top: calc(0.5rem + 1px); padding-bottom: calc(0.5rem + 1px); font-size: 1.25rem; line-height: 1.5; } + +.col-form-label-sm { padding-top: calc(0.25rem + 1px); padding-bottom: calc(0.25rem + 1px); font-size: 0.875rem; line-height: 1.5; } + +.form-control-plaintext { display: block; width: 100%; padding: 0.375rem 0; margin-bottom: 0; font-size: 1rem; line-height: 1.5; color: #212529; background-color: transparent; border: solid transparent; border-width: 1px 0; } + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { padding-right: 0; padding-left: 0; } + +.form-control-sm { height: calc(1.5em + 0.5rem + 2px); padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; border-radius: 0.2rem; } + +.form-control-lg { height: calc(1.5em + 1rem + 2px); padding: 0.5rem 1rem; font-size: 1.25rem; line-height: 1.5; border-radius: 0.3rem; } + +select.form-control[size], select.form-control[multiple] { height: auto; } + +textarea.form-control { height: auto; } + +.form-group { margin-bottom: 1rem; } + +.form-text { display: block; margin-top: 0.25rem; } + +.form-row { display: flex; flex-wrap: wrap; margin-right: -5px; margin-left: -5px; } + +.form-row > .col, .form-row > [class*="col-"] { padding-right: 5px; padding-left: 5px; } + +.form-check { position: relative; display: block; padding-left: 1.25rem; } + +.form-check-input { position: absolute; margin-top: 0.3rem; margin-left: -1.25rem; } + +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { color: #868e96; } + +.form-check-label { margin-bottom: 0; } + +.form-check-inline { display: inline-flex; align-items: center; padding-left: 0; margin-right: 0.75rem; } + +.form-check-inline .form-check-input { position: static; margin-top: 0; margin-right: 0.3125rem; margin-left: 0; } + +.valid-feedback { display: none; width: 100%; margin-top: 0.25rem; font-size: 80%; color: #28a745; } + +.valid-tooltip { position: absolute; top: 100%; left: 0; z-index: 5; display: none; max-width: 100%; padding: 0.25rem 0.5rem; margin-top: .1rem; font-size: 0.875rem; line-height: 1.5; color: #FFF; background-color: rgba(40, 167, 69, 0.9); border-radius: 0.25rem; } + +.was-validated :valid ~ .valid-feedback, .was-validated :valid ~ .valid-tooltip, .is-valid ~ .valid-feedback, .is-valid ~ .valid-tooltip { display: block; } + +.was-validated .form-control:valid, .form-control.is-valid { border-color: #28a745; padding-right: calc(1.5em + 0.75rem); background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right calc(0.375em + 0.1875rem) center; background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { border-color: #28a745; box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { padding-right: calc(1.5em + 0.75rem); background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } + +.was-validated .custom-select:valid, .custom-select.is-valid { border-color: #28a745; padding-right: calc(0.75em + 2.3125rem); background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #FFF no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + +.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { border-color: #28a745; box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { color: #28a745; } + +.was-validated .form-check-input:valid ~ .valid-feedback, .was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, .form-check-input.is-valid ~ .valid-tooltip { display: block; } + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { color: #28a745; } + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { border-color: #28a745; } + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { border-color: #34ce57; background-color: #34ce57; } + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { border-color: #28a745; } + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { border-color: #28a745; } + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { border-color: #28a745; box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.invalid-feedback { display: none; width: 100%; margin-top: 0.25rem; font-size: 80%; color: #dc3545; } + +.invalid-tooltip { position: absolute; top: 100%; left: 0; z-index: 5; display: none; max-width: 100%; padding: 0.25rem 0.5rem; margin-top: .1rem; font-size: 0.875rem; line-height: 1.5; color: #FFF; background-color: rgba(220, 53, 69, 0.9); border-radius: 0.25rem; } + +.was-validated :invalid ~ .invalid-feedback, .was-validated :invalid ~ .invalid-tooltip, .is-invalid ~ .invalid-feedback, .is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated .form-control:invalid, .form-control.is-invalid { border-color: #dc3545; padding-right: calc(1.5em + 0.75rem); background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right calc(0.375em + 0.1875rem) center; background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { border-color: #dc3545; box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { padding-right: calc(1.5em + 0.75rem); background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } + +.was-validated .custom-select:invalid, .custom-select.is-invalid { border-color: #dc3545; padding-right: calc(0.75em + 2.3125rem); background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #FFF no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + +.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { border-color: #dc3545; box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { color: #dc3545; } + +.was-validated .form-check-input:invalid ~ .invalid-feedback, .was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, .form-check-input.is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { color: #dc3545; } + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { border-color: #dc3545; } + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { border-color: #e4606d; background-color: #e4606d; } + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { border-color: #dc3545; } + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { border-color: #dc3545; } + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { border-color: #dc3545; box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.form-inline { display: flex; flex-flow: row wrap; align-items: center; } + +.form-inline .form-check { width: 100%; } + +@media (min-width: 576px) { .form-inline label { display: flex; align-items: center; justify-content: center; margin-bottom: 0; } .form-inline .form-group { display: flex; flex: 0 0 auto; flex-flow: row wrap; align-items: center; margin-bottom: 0; } .form-inline .form-control { display: inline-block; width: auto; vertical-align: middle; } .form-inline .form-control-plaintext { display: inline-block; } .form-inline .input-group, .form-inline .custom-select { width: auto; } .form-inline .form-check { display: flex; align-items: center; justify-content: center; width: auto; padding-left: 0; } .form-inline .form-check-input { position: relative; flex-shrink: 0; margin-top: 0; margin-right: 0.25rem; margin-left: 0; } .form-inline .custom-control { align-items: center; justify-content: center; } .form-inline .custom-control-label { margin-bottom: 0; } } + +.btn { display: inline-block; font-weight: 400; color: #212529; text-align: center; vertical-align: middle; user-select: none; background-color: transparent; border: 1px solid transparent; padding: 0.375rem 0.75rem; font-size: 1rem; line-height: 1.5; border-radius: 0.25rem; transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media (prefers-reduced-motion: reduce) { .btn { transition: none; } } + +.btn:hover { color: #212529; text-decoration: none; } + +.btn:focus, .btn.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.btn.disabled, .btn:disabled { opacity: 0.65; } + +.btn:not(:disabled):not(.disabled) { cursor: pointer; } + +a.btn.disabled, fieldset:disabled a.btn { pointer-events: none; } + +.btn-primary { color: #212529; background-color: #54bfff; border-color: #54bfff; } + +.btn-primary:hover { color: #FFF; background-color: #2eb1ff; border-color: #21acff; } + +.btn-primary:focus, .btn-primary.focus { color: #FFF; background-color: #2eb1ff; border-color: #21acff; box-shadow: 0 0 0 0.2rem rgba(76, 168, 223, 0.5); } + +.btn-primary.disabled, .btn-primary:disabled { color: #212529; background-color: #54bfff; border-color: #54bfff; } + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary.active:not(:disabled):not(.disabled), .show > .btn-primary.dropdown-toggle { color: #FFF; background-color: #21acff; border-color: #14a7ff; } + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary.active:not(:disabled):not(.disabled):focus, .show > .btn-primary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(76, 168, 223, 0.5); } + +.btn-secondary { color: #FFF; background-color: #868e96; border-color: #868e96; } + +.btn-secondary:hover { color: #FFF; background-color: #727b84; border-color: #6c757d; } + +.btn-secondary:focus, .btn-secondary.focus { color: #FFF; background-color: #727b84; border-color: #6c757d; box-shadow: 0 0 0 0.2rem rgba(152, 159, 166, 0.5); } + +.btn-secondary.disabled, .btn-secondary:disabled { color: #FFF; background-color: #868e96; border-color: #868e96; } + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary.active:not(:disabled):not(.disabled), .show > .btn-secondary.dropdown-toggle { color: #FFF; background-color: #6c757d; border-color: #666e76; } + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary.active:not(:disabled):not(.disabled):focus, .show > .btn-secondary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(152, 159, 166, 0.5); } + +.btn-success { color: #FFF; background-color: #28a745; border-color: #28a745; } + +.btn-success:hover { color: #FFF; background-color: #218838; border-color: #1e7e34; } + +.btn-success:focus, .btn-success.focus { color: #FFF; background-color: #218838; border-color: #1e7e34; box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); } + +.btn-success.disabled, .btn-success:disabled { color: #FFF; background-color: #28a745; border-color: #28a745; } + +.btn-success:not(:disabled):not(.disabled):active, .btn-success.active:not(:disabled):not(.disabled), .show > .btn-success.dropdown-toggle { color: #FFF; background-color: #1e7e34; border-color: #1c7430; } + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success.active:not(:disabled):not(.disabled):focus, .show > .btn-success.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); } + +.btn-info { color: #FFF; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-info:hover { color: #FFF; background-color: #138496; border-color: #117a8b; } + +.btn-info:focus, .btn-info.focus { color: #FFF; background-color: #138496; border-color: #117a8b; box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + +.btn-info.disabled, .btn-info:disabled { color: #FFF; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-info:not(:disabled):not(.disabled):active, .btn-info.active:not(:disabled):not(.disabled), .show > .btn-info.dropdown-toggle { color: #FFF; background-color: #117a8b; border-color: #10707f; } + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info.active:not(:disabled):not(.disabled):focus, .show > .btn-info.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + +.btn-warning { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-warning:hover { color: #212529; background-color: #e0a800; border-color: #d39e00; } + +.btn-warning:focus, .btn-warning.focus { color: #212529; background-color: #e0a800; border-color: #d39e00; box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); } + +.btn-warning.disabled, .btn-warning:disabled { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning.active:not(:disabled):not(.disabled), .show > .btn-warning.dropdown-toggle { color: #212529; background-color: #d39e00; border-color: #c69500; } + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning.active:not(:disabled):not(.disabled):focus, .show > .btn-warning.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); } + +.btn-danger { color: #FFF; background-color: #dc3545; border-color: #dc3545; } + +.btn-danger:hover { color: #FFF; background-color: #c82333; border-color: #bd2130; } + +.btn-danger:focus, .btn-danger.focus { color: #FFF; background-color: #c82333; border-color: #bd2130; box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); } + +.btn-danger.disabled, .btn-danger:disabled { color: #FFF; background-color: #dc3545; border-color: #dc3545; } + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger.active:not(:disabled):not(.disabled), .show > .btn-danger.dropdown-toggle { color: #FFF; background-color: #bd2130; border-color: #b21f2d; } + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger.active:not(:disabled):not(.disabled):focus, .show > .btn-danger.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); } + +.btn-light { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-light:hover { color: #212529; background-color: #e2e6ea; border-color: #dae0e5; } + +.btn-light:focus, .btn-light.focus { color: #212529; background-color: #e2e6ea; border-color: #dae0e5; box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + +.btn-light.disabled, .btn-light:disabled { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-light:not(:disabled):not(.disabled):active, .btn-light.active:not(:disabled):not(.disabled), .show > .btn-light.dropdown-toggle { color: #212529; background-color: #dae0e5; border-color: #d3d9df; } + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light.active:not(:disabled):not(.disabled):focus, .show > .btn-light.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + +.btn-dark { color: #FFF; background-color: #343a40; border-color: #343a40; } + +.btn-dark:hover { color: #FFF; background-color: #23272b; border-color: #1d2124; } + +.btn-dark:focus, .btn-dark.focus { color: #FFF; background-color: #23272b; border-color: #1d2124; box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + +.btn-dark.disabled, .btn-dark:disabled { color: #FFF; background-color: #343a40; border-color: #343a40; } + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark.active:not(:disabled):not(.disabled), .show > .btn-dark.dropdown-toggle { color: #FFF; background-color: #1d2124; border-color: #171a1d; } + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark.active:not(:disabled):not(.disabled):focus, .show > .btn-dark.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + +.btn-outline-primary { color: #54bfff; border-color: #54bfff; } + +.btn-outline-primary:hover { color: #212529; background-color: #54bfff; border-color: #54bfff; } + +.btn-outline-primary:focus, .btn-outline-primary.focus { box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.5); } + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { color: #54bfff; background-color: transparent; } + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary.active:not(:disabled):not(.disabled), .show > .btn-outline-primary.dropdown-toggle { color: #212529; background-color: #54bfff; border-color: #54bfff; } + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-primary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.5); } + +.btn-outline-secondary { color: #868e96; border-color: #868e96; } + +.btn-outline-secondary:hover { color: #FFF; background-color: #868e96; border-color: #868e96; } + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); } + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { color: #868e96; background-color: transparent; } + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary.active:not(:disabled):not(.disabled), .show > .btn-outline-secondary.dropdown-toggle { color: #FFF; background-color: #868e96; border-color: #868e96; } + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-secondary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); } + +.btn-outline-success { color: #28a745; border-color: #28a745; } + +.btn-outline-success:hover { color: #FFF; background-color: #28a745; border-color: #28a745; } + +.btn-outline-success:focus, .btn-outline-success.focus { box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + +.btn-outline-success.disabled, .btn-outline-success:disabled { color: #28a745; background-color: transparent; } + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success.active:not(:disabled):not(.disabled), .show > .btn-outline-success.dropdown-toggle { color: #FFF; background-color: #28a745; border-color: #28a745; } + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-success.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + +.btn-outline-info { color: #17a2b8; border-color: #17a2b8; } + +.btn-outline-info:hover { color: #FFF; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-outline-info:focus, .btn-outline-info.focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-outline-info.disabled, .btn-outline-info:disabled { color: #17a2b8; background-color: transparent; } + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info.active:not(:disabled):not(.disabled), .show > .btn-outline-info.dropdown-toggle { color: #FFF; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-info.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-outline-warning { color: #ffc107; border-color: #ffc107; } + +.btn-outline-warning:hover { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-outline-warning:focus, .btn-outline-warning.focus { box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { color: #ffc107; background-color: transparent; } + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning.active:not(:disabled):not(.disabled), .show > .btn-outline-warning.dropdown-toggle { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-warning.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + +.btn-outline-danger { color: #dc3545; border-color: #dc3545; } + +.btn-outline-danger:hover { color: #FFF; background-color: #dc3545; border-color: #dc3545; } + +.btn-outline-danger:focus, .btn-outline-danger.focus { box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { color: #dc3545; background-color: transparent; } + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger.active:not(:disabled):not(.disabled), .show > .btn-outline-danger.dropdown-toggle { color: #FFF; background-color: #dc3545; border-color: #dc3545; } + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-danger.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + +.btn-outline-light { color: #f8f9fa; border-color: #f8f9fa; } + +.btn-outline-light:hover { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-outline-light:focus, .btn-outline-light.focus { box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-outline-light.disabled, .btn-outline-light:disabled { color: #f8f9fa; background-color: transparent; } + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light.active:not(:disabled):not(.disabled), .show > .btn-outline-light.dropdown-toggle { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-light.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-outline-dark { color: #343a40; border-color: #343a40; } + +.btn-outline-dark:hover { color: #FFF; background-color: #343a40; border-color: #343a40; } + +.btn-outline-dark:focus, .btn-outline-dark.focus { box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { color: #343a40; background-color: transparent; } + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark.active:not(:disabled):not(.disabled), .show > .btn-outline-dark.dropdown-toggle { color: #FFF; background-color: #343a40; border-color: #343a40; } + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-dark.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.btn-link { font-weight: 400; color: #54bfff; text-decoration: none; } + +.btn-link:hover { color: #08a2ff; text-decoration: underline; } + +.btn-link:focus, .btn-link.focus { text-decoration: underline; } + +.btn-link:disabled, .btn-link.disabled { color: #868e96; pointer-events: none; } + +.btn-lg, .btn-group-lg > .btn { padding: 0.5rem 1rem; font-size: 1.25rem; line-height: 1.5; border-radius: 0.3rem; } + +.btn-sm, .btn-group-sm > .btn { padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; border-radius: 0.2rem; } + +.btn-block { display: block; width: 100%; } + +.btn-block + .btn-block { margin-top: 0.5rem; } + +input.btn-block[type="submit"], input.btn-block[type="reset"], input.btn-block[type="button"] { width: 100%; } + +.fade { transition: opacity 0.15s linear; } + +@media (prefers-reduced-motion: reduce) { .fade { transition: none; } } + +.fade:not(.show) { opacity: 0; } + +.collapse:not(.show) { display: none; } + +.collapsing { position: relative; height: 0; overflow: hidden; transition: height 0.35s ease; } + +@media (prefers-reduced-motion: reduce) { .collapsing { transition: none; } } + +.dropup, .dropright, .dropdown, .dropleft { position: relative; } + +.dropdown-toggle { white-space: nowrap; } + +.dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0.3em solid; border-right: 0.3em solid transparent; border-bottom: 0; border-left: 0.3em solid transparent; } + +.dropdown-toggle:empty::after { margin-left: 0; } + +.dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 10rem; padding: 0.5rem 0; margin: 0.125rem 0 0; font-size: 1rem; color: #212529; text-align: left; list-style: none; background-color: #FFF; background-clip: padding-box; border: 1px solid rgba(255, 64, 64, 0.15); border-radius: 0.25rem; } + +.dropdown-menu-left { right: auto; left: 0; } + +.dropdown-menu-right { right: 0; left: auto; } + +@media (min-width: 576px) { .dropdown-menu-sm-left { right: auto; left: 0; } .dropdown-menu-sm-right { right: 0; left: auto; } } + +@media (min-width: 768px) { .dropdown-menu-md-left { right: auto; left: 0; } .dropdown-menu-md-right { right: 0; left: auto; } } + +@media (min-width: 992px) { .dropdown-menu-lg-left { right: auto; left: 0; } .dropdown-menu-lg-right { right: 0; left: auto; } } + +@media (min-width: 1200px) { .dropdown-menu-xl-left { right: auto; left: 0; } .dropdown-menu-xl-right { right: 0; left: auto; } } + +.dropup .dropdown-menu { top: auto; bottom: 100%; margin-top: 0; margin-bottom: 0.125rem; } + +.dropup .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0; border-right: 0.3em solid transparent; border-bottom: 0.3em solid; border-left: 0.3em solid transparent; } + +.dropup .dropdown-toggle:empty::after { margin-left: 0; } + +.dropright .dropdown-menu { top: 0; right: auto; left: 100%; margin-top: 0; margin-left: 0.125rem; } + +.dropright .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0.3em solid transparent; border-right: 0; border-bottom: 0.3em solid transparent; border-left: 0.3em solid; } + +.dropright .dropdown-toggle:empty::after { margin-left: 0; } + +.dropright .dropdown-toggle::after { vertical-align: 0; } + +.dropleft .dropdown-menu { top: 0; right: 100%; left: auto; margin-top: 0; margin-right: 0.125rem; } + +.dropleft .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; } + +.dropleft .dropdown-toggle::after { display: none; } + +.dropleft .dropdown-toggle::before { display: inline-block; margin-right: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0.3em solid transparent; border-right: 0.3em solid; border-bottom: 0.3em solid transparent; } + +.dropleft .dropdown-toggle:empty::after { margin-left: 0; } + +.dropleft .dropdown-toggle::before { vertical-align: 0; } + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { right: auto; bottom: auto; } + +.dropdown-divider { height: 0; margin: 0.5rem 0; overflow: hidden; border-top: 1px solid #e9ecef; } + +.dropdown-item { display: block; width: 100%; padding: 0.25rem 1.5rem; clear: both; font-weight: 400; color: #212529; text-align: inherit; white-space: nowrap; background-color: transparent; border: 0; } + +.dropdown-item:hover, .dropdown-item:focus { color: #16181b; text-decoration: none; background-color: #f8f9fa; } + +.dropdown-item.active, .dropdown-item:active { color: #FFF; text-decoration: none; background-color: #54bfff; } + +.dropdown-item.disabled, .dropdown-item:disabled { color: #868e96; pointer-events: none; background-color: transparent; } + +.dropdown-menu.show { display: block; } + +.dropdown-header { display: block; padding: 0.5rem 1.5rem; margin-bottom: 0; font-size: 0.875rem; color: #868e96; white-space: nowrap; } + +.dropdown-item-text { display: block; padding: 0.25rem 1.5rem; color: #212529; } + +.btn-group, .btn-group-vertical { position: relative; display: inline-flex; vertical-align: middle; } + +.btn-group > .btn, .btn-group-vertical > .btn { position: relative; flex: 1 1 auto; } + +.btn-group > .btn:hover, .btn-group-vertical > .btn:hover { z-index: 1; } + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn.active { z-index: 1; } + +.btn-toolbar { display: flex; flex-wrap: wrap; justify-content: flex-start; } + +.btn-toolbar .input-group { width: auto; } + +.btn-group > .btn:not(:first-child), .btn-group > .btn-group:not(:first-child) { margin-left: -1px; } + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), .btn-group > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.btn-group > .btn:not(:first-child), .btn-group > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.dropdown-toggle-split { padding-right: 0.5625rem; padding-left: 0.5625rem; } + +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { margin-left: 0; } + +.dropleft .dropdown-toggle-split::before { margin-right: 0; } + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { padding-right: 0.375rem; padding-left: 0.375rem; } + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { padding-right: 0.75rem; padding-left: 0.75rem; } + +.btn-group-vertical { flex-direction: column; align-items: flex-start; justify-content: center; } + +.btn-group-vertical > .btn, .btn-group-vertical > .btn-group { width: 100%; } + +.btn-group-vertical > .btn:not(:first-child), .btn-group-vertical > .btn-group:not(:first-child) { margin-top: -1px; } + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), .btn-group-vertical > .btn-group:not(:last-child) > .btn { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } + +.btn-group-vertical > .btn:not(:first-child), .btn-group-vertical > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-top-right-radius: 0; } + +.btn-group-toggle > .btn, .btn-group-toggle > .btn-group > .btn { margin-bottom: 0; } + +.btn-group-toggle > .btn input[type="radio"], .btn-group-toggle > .btn input[type="checkbox"], .btn-group-toggle > .btn-group > .btn input[type="radio"], .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; } + +.input-group { position: relative; display: flex; flex-wrap: wrap; align-items: stretch; width: 100%; } + +.input-group > .form-control, .input-group > .form-control-plaintext, .input-group > .custom-select, .input-group > .custom-file { position: relative; flex: 1 1 auto; width: 1%; min-width: 0; margin-bottom: 0; } + +.input-group > .form-control + .form-control, .input-group > .form-control + .custom-select, .input-group > .form-control + .custom-file, .input-group > .form-control-plaintext + .form-control, .input-group > .form-control-plaintext + .custom-select, .input-group > .form-control-plaintext + .custom-file, .input-group > .custom-select + .form-control, .input-group > .custom-select + .custom-select, .input-group > .custom-select + .custom-file, .input-group > .custom-file + .form-control, .input-group > .custom-file + .custom-select, .input-group > .custom-file + .custom-file { margin-left: -1px; } + +.input-group > .form-control:focus, .input-group > .custom-select:focus, .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { z-index: 3; } + +.input-group > .custom-file .custom-file-input:focus { z-index: 4; } + +.input-group > .form-control:not(:last-child), .input-group > .custom-select:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.input-group > .form-control:not(:first-child), .input-group > .custom-select:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.input-group > .custom-file { display: flex; align-items: center; } + +.input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.input-group > .custom-file:not(:first-child) .custom-file-label { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.input-group-prepend, .input-group-append { display: flex; } + +.input-group-prepend .btn, .input-group-append .btn { position: relative; z-index: 2; } + +.input-group-prepend .btn:focus, .input-group-append .btn:focus { z-index: 3; } + +.input-group-prepend .btn + .btn, .input-group-prepend .btn + .input-group-text, .input-group-prepend .input-group-text + .input-group-text, .input-group-prepend .input-group-text + .btn, .input-group-append .btn + .btn, .input-group-append .btn + .input-group-text, .input-group-append .input-group-text + .input-group-text, .input-group-append .input-group-text + .btn { margin-left: -1px; } + +.input-group-prepend { margin-right: -1px; } + +.input-group-append { margin-left: -1px; } + +.input-group-text { display: flex; align-items: center; padding: 0.375rem 0.75rem; margin-bottom: 0; font-size: 1rem; font-weight: 400; line-height: 1.5; color: #495057; text-align: center; white-space: nowrap; background-color: #e9ecef; border: 1px solid #ced4da; border-radius: 0.25rem; } + +.input-group-text input[type="radio"], .input-group-text input[type="checkbox"] { margin-top: 0; } + +.input-group-lg > .form-control:not(textarea), .input-group-lg > .custom-select { height: calc(1.5em + 1rem + 2px); } + +.input-group-lg > .form-control, .input-group-lg > .custom-select, .input-group-lg > .input-group-prepend > .input-group-text, .input-group-lg > .input-group-append > .input-group-text, .input-group-lg > .input-group-prepend > .btn, .input-group-lg > .input-group-append > .btn { padding: 0.5rem 1rem; font-size: 1.25rem; line-height: 1.5; border-radius: 0.3rem; } + +.input-group-sm > .form-control:not(textarea), .input-group-sm > .custom-select { height: calc(1.5em + 0.5rem + 2px); } + +.input-group-sm > .form-control, .input-group-sm > .custom-select, .input-group-sm > .input-group-prepend > .input-group-text, .input-group-sm > .input-group-append > .input-group-text, .input-group-sm > .input-group-prepend > .btn, .input-group-sm > .input-group-append > .btn { padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; border-radius: 0.2rem; } + +.input-group-lg > .custom-select, .input-group-sm > .custom-select { padding-right: 1.75rem; } + +.input-group > .input-group-prepend > .btn, .input-group > .input-group-prepend > .input-group-text, .input-group > .input-group-append:not(:last-child) > .btn, .input-group > .input-group-append:not(:last-child) > .input-group-text, .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.input-group > .input-group-append > .btn, .input-group > .input-group-append > .input-group-text, .input-group > .input-group-prepend:not(:first-child) > .btn, .input-group > .input-group-prepend:not(:first-child) > .input-group-text, .input-group > .input-group-prepend:first-child > .btn:not(:first-child), .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.custom-control { position: relative; z-index: 1; display: block; min-height: 1.5rem; padding-left: 1.5rem; } + +.custom-control-inline { display: inline-flex; margin-right: 1rem; } + +.custom-control-input { position: absolute; left: 0; z-index: -1; width: 1rem; height: 1.25rem; opacity: 0; } + +.custom-control-input:checked ~ .custom-control-label::before { color: #FFF; border-color: #54bfff; background-color: #54bfff; } + +.custom-control-input:focus ~ .custom-control-label::before { box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { border-color: #d4efff; } + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { color: #FFF; background-color: white; border-color: white; } + +.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label { color: #868e96; } + +.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before { background-color: #e9ecef; } + +.custom-control-label { position: relative; margin-bottom: 0; vertical-align: top; } + +.custom-control-label::before { position: absolute; top: 0.25rem; left: -1.5rem; display: block; width: 1rem; height: 1rem; pointer-events: none; content: ""; background-color: #FFF; border: #adb5bd solid 1px; } + +.custom-control-label::after { position: absolute; top: 0.25rem; left: -1.5rem; display: block; width: 1rem; height: 1rem; content: ""; background: no-repeat 50% / 50% 50%; } + +.custom-checkbox .custom-control-label::before { border-radius: 0.25rem; } + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23FFF' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e"); } + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { border-color: #54bfff; background-color: #54bfff; } + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23FFF' d='M0 2h4'/%3e%3c/svg%3e"); } + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { background-color: rgba(84, 191, 255, 0.5); } + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { background-color: rgba(84, 191, 255, 0.5); } + +.custom-radio .custom-control-label::before { border-radius: 50%; } + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23FFF'/%3e%3c/svg%3e"); } + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { background-color: rgba(84, 191, 255, 0.5); } + +.custom-switch { padding-left: 2.25rem; } + +.custom-switch .custom-control-label::before { left: -2.25rem; width: 1.75rem; pointer-events: all; border-radius: 0.5rem; } + +.custom-switch .custom-control-label::after { top: calc(0.25rem + 2px); left: calc(-2.25rem + 2px); width: calc(1rem - 4px); height: calc(1rem - 4px); background-color: #adb5bd; border-radius: 0.5rem; transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media (prefers-reduced-motion: reduce) { .custom-switch .custom-control-label::after { transition: none; } } + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { background-color: #FFF; transform: translateX(0.75rem); } + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { background-color: rgba(84, 191, 255, 0.5); } + +.custom-select { display: inline-block; width: 100%; height: calc(1.5em + 0.75rem + 2px); padding: 0.375rem 1.75rem 0.375rem 0.75rem; font-size: 1rem; font-weight: 400; line-height: 1.5; color: #495057; vertical-align: middle; background: #FFF url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; border: 1px solid #ced4da; border-radius: 0.25rem; appearance: none; } + +.custom-select:focus { border-color: #d4efff; outline: 0; box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.custom-select:focus::-ms-value { color: #495057; background-color: #FFF; } + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { height: auto; padding-right: 0.75rem; background-image: none; } + +.custom-select:disabled { color: #868e96; background-color: #e9ecef; } + +.custom-select::-ms-expand { display: none; } + +.custom-select:-moz-focusring { color: transparent; text-shadow: 0 0 0 #495057; } + +.custom-select-sm { height: calc(1.5em + 0.5rem + 2px); padding-top: 0.25rem; padding-bottom: 0.25rem; padding-left: 0.5rem; font-size: 0.875rem; } + +.custom-select-lg { height: calc(1.5em + 1rem + 2px); padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; font-size: 1.25rem; } + +.custom-file { position: relative; display: inline-block; width: 100%; height: calc(1.5em + 0.75rem + 2px); margin-bottom: 0; } + +.custom-file-input { position: relative; z-index: 2; width: 100%; height: calc(1.5em + 0.75rem + 2px); margin: 0; opacity: 0; } + +.custom-file-input:focus ~ .custom-file-label { border-color: #d4efff; box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.custom-file-input[disabled] ~ .custom-file-label, .custom-file-input:disabled ~ .custom-file-label { background-color: #e9ecef; } + +.custom-file-input:lang(en) ~ .custom-file-label::after { content: "Browse"; } + +.custom-file-input ~ .custom-file-label[data-browse]::after { content: attr(data-browse); } + +.custom-file-label { position: absolute; top: 0; right: 0; left: 0; z-index: 1; height: calc(1.5em + 0.75rem + 2px); padding: 0.375rem 0.75rem; font-weight: 400; line-height: 1.5; color: #495057; background-color: #FFF; border: 1px solid #ced4da; border-radius: 0.25rem; } + +.custom-file-label::after { position: absolute; top: 0; right: 0; bottom: 0; z-index: 3; display: block; height: calc(1.5em + 0.75rem); padding: 0.375rem 0.75rem; line-height: 1.5; color: #495057; content: "Browse"; background-color: #e9ecef; border-left: inherit; border-radius: 0 0.25rem 0.25rem 0; } + +.custom-range { width: 100%; height: 1.4rem; padding: 0; background-color: transparent; appearance: none; } + +.custom-range:focus { outline: none; } + +.custom-range:focus::-webkit-slider-thumb { box-shadow: 0 0 0 1px #FFF, 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.custom-range:focus::-moz-range-thumb { box-shadow: 0 0 0 1px #FFF, 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.custom-range:focus::-ms-thumb { box-shadow: 0 0 0 1px #FFF, 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.custom-range::-moz-focus-outer { border: 0; } + +.custom-range::-webkit-slider-thumb { width: 1rem; height: 1rem; margin-top: -0.25rem; background-color: #54bfff; border: 0; border-radius: 1rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; appearance: none; } + +@media (prefers-reduced-motion: reduce) { .custom-range::-webkit-slider-thumb { transition: none; } } + +.custom-range::-webkit-slider-thumb:active { background-color: white; } + +.custom-range::-webkit-slider-runnable-track { width: 100%; height: 0.5rem; color: transparent; cursor: pointer; background-color: #dee2e6; border-color: transparent; border-radius: 1rem; } + +.custom-range::-moz-range-thumb { width: 1rem; height: 1rem; background-color: #54bfff; border: 0; border-radius: 1rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; appearance: none; } + +@media (prefers-reduced-motion: reduce) { .custom-range::-moz-range-thumb { transition: none; } } + +.custom-range::-moz-range-thumb:active { background-color: white; } + +.custom-range::-moz-range-track { width: 100%; height: 0.5rem; color: transparent; cursor: pointer; background-color: #dee2e6; border-color: transparent; border-radius: 1rem; } + +.custom-range::-ms-thumb { width: 1rem; height: 1rem; margin-top: 0; margin-right: 0.2rem; margin-left: 0.2rem; background-color: #54bfff; border: 0; border-radius: 1rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; appearance: none; } + +@media (prefers-reduced-motion: reduce) { .custom-range::-ms-thumb { transition: none; } } + +.custom-range::-ms-thumb:active { background-color: white; } + +.custom-range::-ms-track { width: 100%; height: 0.5rem; color: transparent; cursor: pointer; background-color: transparent; border-color: transparent; border-width: 0.5rem; } + +.custom-range::-ms-fill-lower { background-color: #dee2e6; border-radius: 1rem; } + +.custom-range::-ms-fill-upper { margin-right: 15px; background-color: #dee2e6; border-radius: 1rem; } + +.custom-range:disabled::-webkit-slider-thumb { background-color: #adb5bd; } + +.custom-range:disabled::-webkit-slider-runnable-track { cursor: default; } + +.custom-range:disabled::-moz-range-thumb { background-color: #adb5bd; } + +.custom-range:disabled::-moz-range-track { cursor: default; } + +.custom-range:disabled::-ms-thumb { background-color: #adb5bd; } + +.custom-control-label::before, .custom-file-label, .custom-select { transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media (prefers-reduced-motion: reduce) { .custom-control-label::before, .custom-file-label, .custom-select { transition: none; } } + +.nav { display: flex; flex-wrap: wrap; padding-left: 0; margin-bottom: 0; list-style: none; } + +.nav-link { display: block; padding: 0.5rem 1rem; } + +.nav-link:hover, .nav-link:focus { text-decoration: none; } + +.nav-link.disabled { color: #868e96; pointer-events: none; cursor: default; } + +.nav-tabs { border-bottom: 1px solid #dee2e6; } + +.nav-tabs .nav-item { margin-bottom: -1px; } + +.nav-tabs .nav-link { border: 1px solid transparent; border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; } + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { border-color: #e9ecef #e9ecef #dee2e6; } + +.nav-tabs .nav-link.disabled { color: #868e96; background-color: transparent; border-color: transparent; } + +.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { color: #495057; background-color: #FFF; border-color: #dee2e6 #dee2e6 #FFF; } + +.nav-tabs .dropdown-menu { margin-top: -1px; border-top-left-radius: 0; border-top-right-radius: 0; } + +.nav-pills .nav-link { border-radius: 0.25rem; } + +.nav-pills .nav-link.active, .nav-pills .show > .nav-link { color: #FFF; background-color: #54bfff; } + +.nav-fill > .nav-link, .nav-fill .nav-item { flex: 1 1 auto; text-align: center; } + +.nav-justified > .nav-link, .nav-justified .nav-item { flex-basis: 0; flex-grow: 1; text-align: center; } + +.tab-content > .tab-pane { display: none; } + +.tab-content > .active { display: block; } + +.navbar { position: relative; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; padding: 0.5rem 1rem; } + +.navbar .container, .navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; } + +.navbar-brand { display: inline-block; padding-top: 0.3125rem; padding-bottom: 0.3125rem; margin-right: 1rem; font-size: 1.25rem; line-height: inherit; white-space: nowrap; } + +.navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } + +.navbar-nav { display: flex; flex-direction: column; padding-left: 0; margin-bottom: 0; list-style: none; } + +.navbar-nav .nav-link { padding-right: 0; padding-left: 0; } + +.navbar-nav .dropdown-menu { position: static; float: none; } + +.navbar-text { display: inline-block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +.navbar-collapse { flex-basis: 100%; flex-grow: 1; align-items: center; } + +.navbar-toggler { padding: 0.25rem 0.75rem; font-size: 1.25rem; line-height: 1; background-color: transparent; border: 1px solid transparent; border-radius: 0.25rem; } + +.navbar-toggler:hover, .navbar-toggler:focus { text-decoration: none; } + +.navbar-toggler-icon { display: inline-block; width: 1.5em; height: 1.5em; vertical-align: middle; content: ""; background: no-repeat center center; background-size: 100% 100%; } + +@media (max-width: 575.98px) { .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { padding-right: 0; padding-left: 0; } } + +@media (min-width: 576px) { .navbar-expand-sm { flex-flow: row nowrap; justify-content: flex-start; } .navbar-expand-sm .navbar-nav { flex-direction: row; } .navbar-expand-sm .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-sm .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { flex-wrap: nowrap; } .navbar-expand-sm .navbar-collapse { display: flex !important; flex-basis: auto; } .navbar-expand-sm .navbar-toggler { display: none; } } + +@media (max-width: 767.98px) { .navbar-expand-md > .container, .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { padding-right: 0; padding-left: 0; } } + +@media (min-width: 768px) { .navbar-expand-md { flex-flow: row nowrap; justify-content: flex-start; } .navbar-expand-md .navbar-nav { flex-direction: row; } .navbar-expand-md .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-md .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-md > .container, .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { flex-wrap: nowrap; } .navbar-expand-md .navbar-collapse { display: flex !important; flex-basis: auto; } .navbar-expand-md .navbar-toggler { display: none; } } + +@media (max-width: 991.98px) { .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { padding-right: 0; padding-left: 0; } } + +@media (min-width: 992px) { .navbar-expand-lg { flex-flow: row nowrap; justify-content: flex-start; } .navbar-expand-lg .navbar-nav { flex-direction: row; } .navbar-expand-lg .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-lg .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { flex-wrap: nowrap; } .navbar-expand-lg .navbar-collapse { display: flex !important; flex-basis: auto; } .navbar-expand-lg .navbar-toggler { display: none; } } + +@media (max-width: 1199.98px) { .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { padding-right: 0; padding-left: 0; } } + +@media (min-width: 1200px) { .navbar-expand-xl { flex-flow: row nowrap; justify-content: flex-start; } .navbar-expand-xl .navbar-nav { flex-direction: row; } .navbar-expand-xl .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-xl .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { flex-wrap: nowrap; } .navbar-expand-xl .navbar-collapse { display: flex !important; flex-basis: auto; } .navbar-expand-xl .navbar-toggler { display: none; } } + +.navbar-expand { flex-flow: row nowrap; justify-content: flex-start; } + +.navbar-expand > .container, .navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { padding-right: 0; padding-left: 0; } + +.navbar-expand .navbar-nav { flex-direction: row; } + +.navbar-expand .navbar-nav .dropdown-menu { position: absolute; } + +.navbar-expand .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } + +.navbar-expand > .container, .navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { flex-wrap: nowrap; } + +.navbar-expand .navbar-collapse { display: flex !important; flex-basis: auto; } + +.navbar-expand .navbar-toggler { display: none; } + +.navbar-light .navbar-brand { color: rgba(255, 64, 64, 0.9); } + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { color: rgba(255, 64, 64, 0.9); } + +.navbar-light .navbar-nav .nav-link { color: rgba(255, 64, 64, 0.5); } + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { color: rgba(255, 64, 64, 0.7); } + +.navbar-light .navbar-nav .nav-link.disabled { color: rgba(255, 64, 64, 0.3); } + +.navbar-light .navbar-nav .show > .nav-link, .navbar-light .navbar-nav .active > .nav-link, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .nav-link.active { color: rgba(255, 64, 64, 0.9); } + +.navbar-light .navbar-toggler { color: rgba(255, 64, 64, 0.5); border-color: rgba(255, 64, 64, 0.1); } + +.navbar-light .navbar-toggler-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 64, 64, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } + +.navbar-light .navbar-text { color: rgba(255, 64, 64, 0.5); } + +.navbar-light .navbar-text a { color: rgba(255, 64, 64, 0.9); } + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { color: rgba(255, 64, 64, 0.9); } + +.navbar-dark .navbar-brand { color: #FFF; } + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { color: #FFF; } + +.navbar-dark .navbar-nav .nav-link { color: rgba(255, 255, 255, 0.5); } + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { color: rgba(255, 255, 255, 0.75); } + +.navbar-dark .navbar-nav .nav-link.disabled { color: rgba(255, 255, 255, 0.25); } + +.navbar-dark .navbar-nav .show > .nav-link, .navbar-dark .navbar-nav .active > .nav-link, .navbar-dark .navbar-nav .nav-link.show, .navbar-dark .navbar-nav .nav-link.active { color: #FFF; } + +.navbar-dark .navbar-toggler { color: rgba(255, 255, 255, 0.5); border-color: rgba(255, 255, 255, 0.1); } + +.navbar-dark .navbar-toggler-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } + +.navbar-dark .navbar-text { color: rgba(255, 255, 255, 0.5); } + +.navbar-dark .navbar-text a { color: #FFF; } + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { color: #FFF; } + +.card { position: relative; display: flex; flex-direction: column; min-width: 0; word-wrap: break-word; background-color: #FFF; background-clip: border-box; border: 1px solid rgba(255, 64, 64, 0.125); border-radius: 0.25rem; } + +.card > hr { margin-right: 0; margin-left: 0; } + +.card > .list-group { border-top: inherit; border-bottom: inherit; } + +.card > .list-group:first-child { border-top-width: 0; border-top-left-radius: calc(0.25rem - 1px); border-top-right-radius: calc(0.25rem - 1px); } + +.card > .list-group:last-child { border-bottom-width: 0; border-bottom-right-radius: calc(0.25rem - 1px); border-bottom-left-radius: calc(0.25rem - 1px); } + +.card > .card-header + .list-group, .card > .list-group + .card-footer { border-top: 0; } + +.card-body { flex: 1 1 auto; min-height: 1px; padding: 1.25rem; } + +.card-title { margin-bottom: 0.75rem; } + +.card-subtitle { margin-top: -0.375rem; margin-bottom: 0; } + +.card-text:last-child { margin-bottom: 0; } + +.card-link:hover { text-decoration: none; } + +.card-link + .card-link { margin-left: 1.25rem; } + +.card-header { padding: 0.75rem 1.25rem; margin-bottom: 0; background-color: rgba(255, 64, 64, 0.03); border-bottom: 1px solid rgba(255, 64, 64, 0.125); } + +.card-header:first-child { border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } + +.card-footer { padding: 0.75rem 1.25rem; background-color: rgba(255, 64, 64, 0.03); border-top: 1px solid rgba(255, 64, 64, 0.125); } + +.card-footer:last-child { border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } + +.card-header-tabs { margin-right: -0.625rem; margin-bottom: -0.75rem; margin-left: -0.625rem; border-bottom: 0; } + +.card-header-pills { margin-right: -0.625rem; margin-left: -0.625rem; } + +.card-img-overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding: 1.25rem; border-radius: calc(0.25rem - 1px); } + +.card-img, .card-img-top, .card-img-bottom { flex-shrink: 0; width: 100%; } + +.card-img, .card-img-top { border-top-left-radius: calc(0.25rem - 1px); border-top-right-radius: calc(0.25rem - 1px); } + +.card-img, .card-img-bottom { border-bottom-right-radius: calc(0.25rem - 1px); border-bottom-left-radius: calc(0.25rem - 1px); } + +.card-deck .card { margin-bottom: 15px; } + +@media (min-width: 576px) { .card-deck { display: flex; flex-flow: row wrap; margin-right: -15px; margin-left: -15px; } .card-deck .card { flex: 1 0 0%; margin-right: 15px; margin-bottom: 0; margin-left: 15px; } } + +.card-group > .card { margin-bottom: 15px; } + +@media (min-width: 576px) { .card-group { display: flex; flex-flow: row wrap; } .card-group > .card { flex: 1 0 0%; margin-bottom: 0; } .card-group > .card + .card { margin-left: 0; border-left: 0; } .card-group > .card:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .card-group > .card:not(:last-child) .card-img-top, .card-group > .card:not(:last-child) .card-header { border-top-right-radius: 0; } .card-group > .card:not(:last-child) .card-img-bottom, .card-group > .card:not(:last-child) .card-footer { border-bottom-right-radius: 0; } .card-group > .card:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } .card-group > .card:not(:first-child) .card-img-top, .card-group > .card:not(:first-child) .card-header { border-top-left-radius: 0; } .card-group > .card:not(:first-child) .card-img-bottom, .card-group > .card:not(:first-child) .card-footer { border-bottom-left-radius: 0; } } + +.card-columns .card { margin-bottom: 0.75rem; } + +@media (min-width: 576px) { .card-columns { column-count: 3; column-gap: 1.25rem; orphans: 1; widows: 1; } .card-columns .card { display: inline-block; width: 100%; } } + +.accordion { overflow-anchor: none; } + +.accordion > .card { overflow: hidden; } + +.accordion > .card:not(:last-of-type) { border-bottom: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } + +.accordion > .card:not(:first-of-type) { border-top-left-radius: 0; border-top-right-radius: 0; } + +.accordion > .card > .card-header { border-radius: 0; margin-bottom: -1px; } + +.breadcrumb { display: flex; flex-wrap: wrap; padding: 0.75rem 1rem; margin-bottom: 1rem; list-style: none; background-color: #e9ecef; border-radius: 0.25rem; } + +.breadcrumb-item { display: flex; } + +.breadcrumb-item + .breadcrumb-item { padding-left: 0.5rem; } + +.breadcrumb-item + .breadcrumb-item::before { display: inline-block; padding-right: 0.5rem; color: #868e96; content: "/"; } + +.breadcrumb-item + .breadcrumb-item:hover::before { text-decoration: underline; } + +.breadcrumb-item + .breadcrumb-item:hover::before { text-decoration: none; } + +.breadcrumb-item.active { color: #868e96; } + +.pagination { display: flex; padding-left: 0; list-style: none; border-radius: 0.25rem; } + +.page-link { position: relative; display: block; padding: 0.5rem 0.75rem; margin-left: -1px; line-height: 1.25; color: #54bfff; background-color: #FFF; border: 1px solid #dee2e6; } + +.page-link:hover { z-index: 2; color: #08a2ff; text-decoration: none; background-color: #e9ecef; border-color: #dee2e6; } + +.page-link:focus { z-index: 3; outline: 0; box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.25); } + +.page-item:first-child .page-link { margin-left: 0; border-top-left-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } + +.page-item:last-child .page-link { border-top-right-radius: 0.25rem; border-bottom-right-radius: 0.25rem; } + +.page-item.active .page-link { z-index: 3; color: #FFF; background-color: #54bfff; border-color: #54bfff; } + +.page-item.disabled .page-link { color: #868e96; pointer-events: none; cursor: auto; background-color: #FFF; border-color: #dee2e6; } + +.pagination-lg .page-link { padding: 0.75rem 1.5rem; font-size: 1.25rem; line-height: 1.5; } + +.pagination-lg .page-item:first-child .page-link { border-top-left-radius: 0.3rem; border-bottom-left-radius: 0.3rem; } + +.pagination-lg .page-item:last-child .page-link { border-top-right-radius: 0.3rem; border-bottom-right-radius: 0.3rem; } + +.pagination-sm .page-link { padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; } + +.pagination-sm .page-item:first-child .page-link { border-top-left-radius: 0.2rem; border-bottom-left-radius: 0.2rem; } + +.pagination-sm .page-item:last-child .page-link { border-top-right-radius: 0.2rem; border-bottom-right-radius: 0.2rem; } + +.badge { display: inline-block; padding: 0.25em 0.4em; font-size: 75%; font-weight: 700; line-height: 1; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: 0.25rem; transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media (prefers-reduced-motion: reduce) { .badge { transition: none; } } + +a.badge:hover, a.badge:focus { text-decoration: none; } + +.badge:empty { display: none; } + +.btn .badge { position: relative; top: -1px; } + +.badge-pill { padding-right: 0.6em; padding-left: 0.6em; border-radius: 10rem; } + +.badge-primary { color: #212529; background-color: #54bfff; } + +a.badge-primary:hover, a.badge-primary:focus { color: #212529; background-color: #21acff; } + +a.badge-primary:focus, a.badge-primary.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(84, 191, 255, 0.5); } + +.badge-secondary { color: #FFF; background-color: #868e96; } + +a.badge-secondary:hover, a.badge-secondary:focus { color: #FFF; background-color: #6c757d; } + +a.badge-secondary:focus, a.badge-secondary.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); } + +.badge-success { color: #FFF; background-color: #28a745; } + +a.badge-success:hover, a.badge-success:focus { color: #FFF; background-color: #1e7e34; } + +a.badge-success:focus, a.badge-success.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + +.badge-info { color: #FFF; background-color: #17a2b8; } + +a.badge-info:hover, a.badge-info:focus { color: #FFF; background-color: #117a8b; } + +a.badge-info:focus, a.badge-info.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.badge-warning { color: #212529; background-color: #ffc107; } + +a.badge-warning:hover, a.badge-warning:focus { color: #212529; background-color: #d39e00; } + +a.badge-warning:focus, a.badge-warning.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + +.badge-danger { color: #FFF; background-color: #dc3545; } + +a.badge-danger:hover, a.badge-danger:focus { color: #FFF; background-color: #bd2130; } + +a.badge-danger:focus, a.badge-danger.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + +.badge-light { color: #212529; background-color: #f8f9fa; } + +a.badge-light:hover, a.badge-light:focus { color: #212529; background-color: #dae0e5; } + +a.badge-light:focus, a.badge-light.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.badge-dark { color: #FFF; background-color: #343a40; } + +a.badge-dark:hover, a.badge-dark:focus { color: #FFF; background-color: #1d2124; } + +a.badge-dark:focus, a.badge-dark.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.jumbotron { padding: 2rem 1rem; margin-bottom: 2rem; background-color: #e9ecef; border-radius: 0.3rem; } + +@media (min-width: 576px) { .jumbotron { padding: 4rem 2rem; } } + +.jumbotron-fluid { padding-right: 0; padding-left: 0; border-radius: 0; } + +.alert { position: relative; padding: 0.75rem 1.25rem; margin-bottom: 1rem; border: 1px solid transparent; border-radius: 0.25rem; } + +.alert-heading { color: inherit; } + +.alert-link { font-weight: 700; } + +.alert-dismissible { padding-right: 4rem; } + +.alert-dismissible .close { position: absolute; top: 0; right: 0; padding: 0.75rem 1.25rem; color: inherit; } + +.alert-primary { color: #a682a3; background-color: #ddf2ff; border-color: #cfedff; } + +.alert-primary hr { border-top-color: #b6e3ff; } + +.alert-primary .alert-link { color: #8f668c; } + +.alert-secondary { color: #c0696d; background-color: #e7e8ea; border-color: #dddfe2; } + +.alert-secondary hr { border-top-color: #cfd2d6; } + +.alert-secondary .alert-link { color: #ad494d; } + +.alert-success { color: #8f7643; background-color: #d4edda; border-color: #c3e6cb; } + +.alert-success hr { border-top-color: #b1dfbb; } + +.alert-success .alert-link { color: #6c5933; } + +.alert-info { color: #86737e; background-color: #d1ecf1; border-color: #bee5eb; } + +.alert-info hr { border-top-color: #abdde5; } + +.alert-info .alert-link { color: #6b5b64; } + +.alert-warning { color: #ff8322; background-color: #fff3cd; border-color: #ffeeba; } + +.alert-warning hr { border-top-color: #ffe8a1; } + +.alert-warning .alert-link { color: #ee6800; } + +.alert-danger { color: #ed3a43; background-color: #f8d7da; border-color: #f5c6cb; } + +.alert-danger hr { border-top-color: #f1b0b7; } + +.alert-danger .alert-link { color: #e0141f; } + +.alert-light { color: #fba0a1; background-color: #fefefe; border-color: #fdfdfe; } + +.alert-light hr { border-top-color: #ececf6; } + +.alert-light .alert-link { color: #f96f71; } + +.alert-dark { color: #953d40; background-color: #d6d8d9; border-color: #c6c8ca; } + +.alert-dark hr { border-top-color: #b9bbbe; } + +.alert-dark .alert-link { color: #712e30; } + +@keyframes progress-bar-stripes { from { background-position: 1rem 0; } + to { background-position: 0 0; } } + +.progress { display: flex; height: 1rem; overflow: hidden; line-height: 0; font-size: 0.75rem; background-color: #e9ecef; border-radius: 0.25rem; } + +.progress-bar { display: flex; flex-direction: column; justify-content: center; overflow: hidden; color: #FFF; text-align: center; white-space: nowrap; background-color: #54bfff; transition: width 0.6s ease; } + +@media (prefers-reduced-motion: reduce) { .progress-bar { transition: none; } } + +.progress-bar-striped { background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-size: 1rem 1rem; } + +.progress-bar-animated { animation: progress-bar-stripes 1s linear infinite; } + +@media (prefers-reduced-motion: reduce) { .progress-bar-animated { animation: none; } } + +.media { display: flex; align-items: flex-start; } + +.media-body { flex: 1; } + +.list-group { display: flex; flex-direction: column; padding-left: 0; margin-bottom: 0; border-radius: 0.25rem; } + +.list-group-item-action { width: 100%; color: #495057; text-align: inherit; } + +.list-group-item-action:hover, .list-group-item-action:focus { z-index: 1; color: #495057; text-decoration: none; background-color: #f8f9fa; } + +.list-group-item-action:active { color: #212529; background-color: #e9ecef; } + +.list-group-item { position: relative; display: block; padding: 0.75rem 1.25rem; background-color: #FFF; border: 1px solid rgba(255, 64, 64, 0.125); } + +.list-group-item:first-child { border-top-left-radius: inherit; border-top-right-radius: inherit; } + +.list-group-item:last-child { border-bottom-right-radius: inherit; border-bottom-left-radius: inherit; } + +.list-group-item.disabled, .list-group-item:disabled { color: #868e96; pointer-events: none; background-color: #FFF; } + +.list-group-item.active { z-index: 2; color: #FFF; background-color: #54bfff; border-color: #54bfff; } + +.list-group-item + .list-group-item { border-top-width: 0; } + +.list-group-item + .list-group-item.active { margin-top: -1px; border-top-width: 1px; } + +.list-group-horizontal { flex-direction: row; } + +.list-group-horizontal > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } + +.list-group-horizontal > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } + +.list-group-horizontal > .list-group-item.active { margin-top: 0; } + +.list-group-horizontal > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } + +.list-group-horizontal > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } + +@media (min-width: 576px) { .list-group-horizontal-sm { flex-direction: row; } .list-group-horizontal-sm > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } .list-group-horizontal-sm > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } .list-group-horizontal-sm > .list-group-item.active { margin-top: 0; } .list-group-horizontal-sm > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } .list-group-horizontal-sm > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } } + +@media (min-width: 768px) { .list-group-horizontal-md { flex-direction: row; } .list-group-horizontal-md > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } .list-group-horizontal-md > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } .list-group-horizontal-md > .list-group-item.active { margin-top: 0; } .list-group-horizontal-md > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } .list-group-horizontal-md > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } } + +@media (min-width: 992px) { .list-group-horizontal-lg { flex-direction: row; } .list-group-horizontal-lg > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } .list-group-horizontal-lg > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } .list-group-horizontal-lg > .list-group-item.active { margin-top: 0; } .list-group-horizontal-lg > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } .list-group-horizontal-lg > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } } + +@media (min-width: 1200px) { .list-group-horizontal-xl { flex-direction: row; } .list-group-horizontal-xl > .list-group-item:first-child { border-bottom-left-radius: 0.25rem; border-top-right-radius: 0; } .list-group-horizontal-xl > .list-group-item:last-child { border-top-right-radius: 0.25rem; border-bottom-left-radius: 0; } .list-group-horizontal-xl > .list-group-item.active { margin-top: 0; } .list-group-horizontal-xl > .list-group-item + .list-group-item { border-top-width: 1px; border-left-width: 0; } .list-group-horizontal-xl > .list-group-item + .list-group-item.active { margin-left: -1px; border-left-width: 1px; } } + +.list-group-flush { border-radius: 0; } + +.list-group-flush > .list-group-item { border-width: 0 0 1px; } + +.list-group-flush > .list-group-item:last-child { border-bottom-width: 0; } + +.list-group-item-primary { color: #a682a3; background-color: #cfedff; } + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { color: #a682a3; background-color: #b6e3ff; } + +.list-group-item-primary.list-group-item-action.active { color: #FFF; background-color: #a682a3; border-color: #a682a3; } + +.list-group-item-secondary { color: #c0696d; background-color: #dddfe2; } + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { color: #c0696d; background-color: #cfd2d6; } + +.list-group-item-secondary.list-group-item-action.active { color: #FFF; background-color: #c0696d; border-color: #c0696d; } + +.list-group-item-success { color: #8f7643; background-color: #c3e6cb; } + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { color: #8f7643; background-color: #b1dfbb; } + +.list-group-item-success.list-group-item-action.active { color: #FFF; background-color: #8f7643; border-color: #8f7643; } + +.list-group-item-info { color: #86737e; background-color: #bee5eb; } + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { color: #86737e; background-color: #abdde5; } + +.list-group-item-info.list-group-item-action.active { color: #FFF; background-color: #86737e; border-color: #86737e; } + +.list-group-item-warning { color: #ff8322; background-color: #ffeeba; } + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { color: #ff8322; background-color: #ffe8a1; } + +.list-group-item-warning.list-group-item-action.active { color: #FFF; background-color: #ff8322; border-color: #ff8322; } + +.list-group-item-danger { color: #ed3a43; background-color: #f5c6cb; } + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { color: #ed3a43; background-color: #f1b0b7; } + +.list-group-item-danger.list-group-item-action.active { color: #FFF; background-color: #ed3a43; border-color: #ed3a43; } + +.list-group-item-light { color: #fba0a1; background-color: #fdfdfe; } + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { color: #fba0a1; background-color: #ececf6; } + +.list-group-item-light.list-group-item-action.active { color: #FFF; background-color: #fba0a1; border-color: #fba0a1; } + +.list-group-item-dark { color: #953d40; background-color: #c6c8ca; } + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { color: #953d40; background-color: #b9bbbe; } + +.list-group-item-dark.list-group-item-action.active { color: #FFF; background-color: #953d40; border-color: #953d40; } + +.close { float: right; font-size: 1.5rem; font-weight: 700; line-height: 1; color: #ff4040; text-shadow: 0 1px 0 #FFF; opacity: .5; } + +.close:hover { color: #ff4040; text-decoration: none; } + +.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { opacity: .75; } + +button.close { padding: 0; background-color: transparent; border: 0; } + +a.close.disabled { pointer-events: none; } + +.toast { flex-basis: 350px; max-width: 350px; font-size: 0.875rem; background-color: rgba(255, 255, 255, 0.85); background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 0.25rem 0.75rem rgba(255, 64, 64, 0.1); opacity: 0; border-radius: 0.25rem; } + +.toast:not(:last-child) { margin-bottom: 0.75rem; } + +.toast.showing { opacity: 1; } + +.toast.show { display: block; opacity: 1; } + +.toast.hide { display: none; } + +.toast-header { display: flex; align-items: center; padding: 0.25rem 0.75rem; color: #868e96; background-color: rgba(255, 255, 255, 0.85); background-clip: padding-box; border-bottom: 1px solid rgba(0, 0, 0, 0.05); border-top-left-radius: calc(0.25rem - 1px); border-top-right-radius: calc(0.25rem - 1px); } + +.toast-body { padding: 0.75rem; } + +.modal-open { overflow: hidden; } + +.modal-open .modal { overflow-x: hidden; overflow-y: auto; } + +.modal { position: fixed; top: 0; left: 0; z-index: 1050; display: none; width: 100%; height: 100%; overflow: hidden; outline: 0; } + +.modal-dialog { position: relative; width: auto; margin: 0.5rem; pointer-events: none; } + +.modal.fade .modal-dialog { transition: transform 0.3s ease-out; transform: translate(0, -50px); } + +@media (prefers-reduced-motion: reduce) { .modal.fade .modal-dialog { transition: none; } } + +.modal.show .modal-dialog { transform: none; } + +.modal.modal-static .modal-dialog { transform: scale(1.02); } + +.modal-dialog-scrollable { display: flex; max-height: calc(100% - 1rem); } + +.modal-dialog-scrollable .modal-content { max-height: calc(100vh - 1rem); overflow: hidden; } + +.modal-dialog-scrollable .modal-header, .modal-dialog-scrollable .modal-footer { flex-shrink: 0; } + +.modal-dialog-scrollable .modal-body { overflow-y: auto; } + +.modal-dialog-centered { display: flex; align-items: center; min-height: calc(100% - 1rem); } + +.modal-dialog-centered::before { display: block; height: calc(100vh - 1rem); height: min-content; content: ""; } + +.modal-dialog-centered.modal-dialog-scrollable { flex-direction: column; justify-content: center; height: 100%; } + +.modal-dialog-centered.modal-dialog-scrollable .modal-content { max-height: none; } + +.modal-dialog-centered.modal-dialog-scrollable::before { content: none; } + +.modal-content { position: relative; display: flex; flex-direction: column; width: 100%; pointer-events: auto; background-color: #FFF; background-clip: padding-box; border: 1px solid rgba(255, 64, 64, 0.2); border-radius: 0.3rem; outline: 0; } + +.modal-backdrop { position: fixed; top: 0; left: 0; z-index: 1040; width: 100vw; height: 100vh; background-color: #ff4040; } + +.modal-backdrop.fade { opacity: 0; } + +.modal-backdrop.show { opacity: 0.5; } + +.modal-header { display: flex; align-items: flex-start; justify-content: space-between; padding: 1rem 1rem; border-bottom: 1px solid #dee2e6; border-top-left-radius: calc(0.3rem - 1px); border-top-right-radius: calc(0.3rem - 1px); } + +.modal-header .close { padding: 1rem 1rem; margin: -1rem -1rem -1rem auto; } + +.modal-title { margin-bottom: 0; line-height: 1.5; } + +.modal-body { position: relative; flex: 1 1 auto; padding: 1rem; } + +.modal-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; padding: 0.75rem; border-top: 1px solid #dee2e6; border-bottom-right-radius: calc(0.3rem - 1px); border-bottom-left-radius: calc(0.3rem - 1px); } + +.modal-footer > * { margin: 0.25rem; } + +.modal-scrollbar-measure { position: absolute; top: -9999px; width: 50px; height: 50px; overflow: scroll; } + +@media (min-width: 576px) { .modal-dialog { max-width: 500px; margin: 1.75rem auto; } .modal-dialog-scrollable { max-height: calc(100% - 3.5rem); } .modal-dialog-scrollable .modal-content { max-height: calc(100vh - 3.5rem); } .modal-dialog-centered { min-height: calc(100% - 3.5rem); } .modal-dialog-centered::before { height: calc(100vh - 3.5rem); height: min-content; } .modal-sm { max-width: 300px; } } + +@media (min-width: 992px) { .modal-lg, .modal-xl { max-width: 800px; } } + +@media (min-width: 1200px) { .modal-xl { max-width: 1140px; } } + +.tooltip { position: absolute; z-index: 1070; display: block; margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-style: normal; font-weight: 400; line-height: 1.5; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; white-space: normal; line-break: auto; font-size: 0.875rem; word-wrap: break-word; opacity: 0; } + +.tooltip.show { opacity: 0.9; } + +.tooltip .arrow { position: absolute; display: block; width: 0.8rem; height: 0.4rem; } + +.tooltip .arrow::before { position: absolute; content: ""; border-color: transparent; border-style: solid; } + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { padding: 0.4rem 0; } + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { bottom: 0; } + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { top: 0; border-width: 0.4rem 0.4rem 0; border-top-color: #ff4040; } + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { padding: 0 0.4rem; } + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { left: 0; width: 0.4rem; height: 0.8rem; } + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { right: 0; border-width: 0.4rem 0.4rem 0.4rem 0; border-right-color: #ff4040; } + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { padding: 0.4rem 0; } + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { top: 0; } + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { bottom: 0; border-width: 0 0.4rem 0.4rem; border-bottom-color: #ff4040; } + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { padding: 0 0.4rem; } + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { right: 0; width: 0.4rem; height: 0.8rem; } + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { left: 0; border-width: 0.4rem 0 0.4rem 0.4rem; border-left-color: #ff4040; } + +.tooltip-inner { max-width: 200px; padding: 0.25rem 0.5rem; color: #FFF; text-align: center; background-color: #ff4040; border-radius: 0.25rem; } + +.popover { position: absolute; top: 0; left: 0; z-index: 1060; display: block; max-width: 276px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-style: normal; font-weight: 400; line-height: 1.5; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; white-space: normal; line-break: auto; font-size: 0.875rem; word-wrap: break-word; background-color: #FFF; background-clip: padding-box; border: 1px solid rgba(255, 64, 64, 0.2); border-radius: 0.3rem; } + +.popover .arrow { position: absolute; display: block; width: 1rem; height: 0.5rem; margin: 0 0.3rem; } + +.popover .arrow::before, .popover .arrow::after { position: absolute; display: block; content: ""; border-color: transparent; border-style: solid; } + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { margin-bottom: 0.5rem; } + +.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { bottom: calc(-0.5rem - 1px); } + +.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { bottom: 0; border-width: 0.5rem 0.5rem 0; border-top-color: rgba(255, 64, 64, 0.25); } + +.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { bottom: 1px; border-width: 0.5rem 0.5rem 0; border-top-color: #FFF; } + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { margin-left: 0.5rem; } + +.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { left: calc(-0.5rem - 1px); width: 0.5rem; height: 1rem; margin: 0.3rem 0; } + +.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { left: 0; border-width: 0.5rem 0.5rem 0.5rem 0; border-right-color: rgba(255, 64, 64, 0.25); } + +.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { left: 1px; border-width: 0.5rem 0.5rem 0.5rem 0; border-right-color: #FFF; } + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { margin-top: 0.5rem; } + +.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { top: calc(-0.5rem - 1px); } + +.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { top: 0; border-width: 0 0.5rem 0.5rem 0.5rem; border-bottom-color: rgba(255, 64, 64, 0.25); } + +.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { top: 1px; border-width: 0 0.5rem 0.5rem 0.5rem; border-bottom-color: #FFF; } + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { position: absolute; top: 0; left: 50%; display: block; width: 1rem; margin-left: -0.5rem; content: ""; border-bottom: 1px solid #f7f7f7; } + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { margin-right: 0.5rem; } + +.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { right: calc(-0.5rem - 1px); width: 0.5rem; height: 1rem; margin: 0.3rem 0; } + +.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { right: 0; border-width: 0.5rem 0 0.5rem 0.5rem; border-left-color: rgba(255, 64, 64, 0.25); } + +.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { right: 1px; border-width: 0.5rem 0 0.5rem 0.5rem; border-left-color: #FFF; } + +.popover-header { padding: 0.5rem 0.75rem; margin-bottom: 0; font-size: 1rem; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-top-left-radius: calc(0.3rem - 1px); border-top-right-radius: calc(0.3rem - 1px); } + +.popover-header:empty { display: none; } + +.popover-body { padding: 0.5rem 0.75rem; color: #212529; } + +.carousel { position: relative; } + +.carousel.pointer-event { touch-action: pan-y; } + +.carousel-inner { position: relative; width: 100%; overflow: hidden; } + +.carousel-inner::after { display: block; clear: both; content: ""; } + +.carousel-item { position: relative; display: none; float: left; width: 100%; margin-right: -100%; backface-visibility: hidden; transition: transform 0.6s ease-in-out; } + +@media (prefers-reduced-motion: reduce) { .carousel-item { transition: none; } } + +.carousel-item.active, .carousel-item-next, .carousel-item-prev { display: block; } + +.carousel-item-next:not(.carousel-item-left), .active.carousel-item-right { transform: translateX(100%); } + +.carousel-item-prev:not(.carousel-item-right), .active.carousel-item-left { transform: translateX(-100%); } + +.carousel-fade .carousel-item { opacity: 0; transition-property: opacity; transform: none; } + +.carousel-fade .carousel-item.active, .carousel-fade .carousel-item-next.carousel-item-left, .carousel-fade .carousel-item-prev.carousel-item-right { z-index: 1; opacity: 1; } + +.carousel-fade .active.carousel-item-left, .carousel-fade .active.carousel-item-right { z-index: 0; opacity: 0; transition: opacity 0s 0.6s; } + +@media (prefers-reduced-motion: reduce) { .carousel-fade .active.carousel-item-left, .carousel-fade .active.carousel-item-right { transition: none; } } + +.carousel-control-prev, .carousel-control-next { position: absolute; top: 0; bottom: 0; z-index: 1; display: flex; align-items: center; justify-content: center; width: 15%; color: #FFF; text-align: center; opacity: 0.5; transition: opacity 0.15s ease; } + +@media (prefers-reduced-motion: reduce) { .carousel-control-prev, .carousel-control-next { transition: none; } } + +.carousel-control-prev:hover, .carousel-control-prev:focus, .carousel-control-next:hover, .carousel-control-next:focus { color: #FFF; text-decoration: none; outline: 0; opacity: 0.9; } + +.carousel-control-prev { left: 0; } + +.carousel-control-next { right: 0; } + +.carousel-control-prev-icon, .carousel-control-next-icon { display: inline-block; width: 20px; height: 20px; background: no-repeat 50% / 100% 100%; } + +.carousel-control-prev-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FFF' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e"); } + +.carousel-control-next-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23FFF' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e"); } + +.carousel-indicators { position: absolute; right: 0; bottom: 0; left: 0; z-index: 15; display: flex; justify-content: center; padding-left: 0; margin-right: 15%; margin-left: 15%; list-style: none; } + +.carousel-indicators li { box-sizing: content-box; flex: 0 1 auto; width: 30px; height: 3px; margin-right: 3px; margin-left: 3px; text-indent: -999px; cursor: pointer; background-color: #FFF; background-clip: padding-box; border-top: 10px solid transparent; border-bottom: 10px solid transparent; opacity: .5; transition: opacity 0.6s ease; } + +@media (prefers-reduced-motion: reduce) { .carousel-indicators li { transition: none; } } + +.carousel-indicators .active { opacity: 1; } + +.carousel-caption { position: absolute; right: 15%; bottom: 20px; left: 15%; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: #FFF; text-align: center; } + +@keyframes spinner-border { to { transform: rotate(360deg); } } + +.spinner-border { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; border: 0.25em solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spinner-border .75s linear infinite; } + +.spinner-border-sm { width: 1rem; height: 1rem; border-width: 0.2em; } + +@keyframes spinner-grow { 0% { transform: scale(0); } + 50% { opacity: 1; + transform: none; } } + +.spinner-grow { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; background-color: currentColor; border-radius: 50%; opacity: 0; animation: spinner-grow .75s linear infinite; } + +.spinner-grow-sm { width: 1rem; height: 1rem; } + +.align-baseline { vertical-align: baseline !important; } + +.align-top { vertical-align: top !important; } + +.align-middle { vertical-align: middle !important; } + +.align-bottom { vertical-align: bottom !important; } + +.align-text-bottom { vertical-align: text-bottom !important; } + +.align-text-top { vertical-align: text-top !important; } + +.bg-primary { background-color: #54bfff !important; } + +a.bg-primary:hover, a.bg-primary:focus, button.bg-primary:hover, button.bg-primary:focus { background-color: #21acff !important; } + +.bg-secondary { background-color: #868e96 !important; } + +a.bg-secondary:hover, a.bg-secondary:focus, button.bg-secondary:hover, button.bg-secondary:focus { background-color: #6c757d !important; } + +.bg-success { background-color: #28a745 !important; } + +a.bg-success:hover, a.bg-success:focus, button.bg-success:hover, button.bg-success:focus { background-color: #1e7e34 !important; } + +.bg-info { background-color: #17a2b8 !important; } + +a.bg-info:hover, a.bg-info:focus, button.bg-info:hover, button.bg-info:focus { background-color: #117a8b !important; } + +.bg-warning { background-color: #ffc107 !important; } + +a.bg-warning:hover, a.bg-warning:focus, button.bg-warning:hover, button.bg-warning:focus { background-color: #d39e00 !important; } + +.bg-danger { background-color: #dc3545 !important; } + +a.bg-danger:hover, a.bg-danger:focus, button.bg-danger:hover, button.bg-danger:focus { background-color: #bd2130 !important; } + +.bg-light { background-color: #f8f9fa !important; } + +a.bg-light:hover, a.bg-light:focus, button.bg-light:hover, button.bg-light:focus { background-color: #dae0e5 !important; } + +.bg-dark { background-color: #343a40 !important; } + +a.bg-dark:hover, a.bg-dark:focus, button.bg-dark:hover, button.bg-dark:focus { background-color: #1d2124 !important; } + +.bg-white { background-color: #FFF !important; } + +.bg-transparent { background-color: transparent !important; } + +.border { border: 1px solid #dee2e6 !important; } + +.border-top { border-top: 1px solid #dee2e6 !important; } + +.border-right { border-right: 1px solid #dee2e6 !important; } + +.border-bottom { border-bottom: 1px solid #dee2e6 !important; } + +.border-left { border-left: 1px solid #dee2e6 !important; } + +.border-0 { border: 0 !important; } + +.border-top-0 { border-top: 0 !important; } + +.border-right-0 { border-right: 0 !important; } + +.border-bottom-0 { border-bottom: 0 !important; } + +.border-left-0 { border-left: 0 !important; } + +.border-primary { border-color: #54bfff !important; } + +.border-secondary { border-color: #868e96 !important; } + +.border-success { border-color: #28a745 !important; } + +.border-info { border-color: #17a2b8 !important; } + +.border-warning { border-color: #ffc107 !important; } + +.border-danger { border-color: #dc3545 !important; } + +.border-light { border-color: #f8f9fa !important; } + +.border-dark { border-color: #343a40 !important; } + +.border-white { border-color: #FFF !important; } + +.rounded-sm { border-radius: 0.2rem !important; } + +.rounded { border-radius: 0.25rem !important; } + +.rounded-top { border-top-left-radius: 0.25rem !important; border-top-right-radius: 0.25rem !important; } + +.rounded-right { border-top-right-radius: 0.25rem !important; border-bottom-right-radius: 0.25rem !important; } + +.rounded-bottom { border-bottom-right-radius: 0.25rem !important; border-bottom-left-radius: 0.25rem !important; } + +.rounded-left { border-top-left-radius: 0.25rem !important; border-bottom-left-radius: 0.25rem !important; } + +.rounded-lg { border-radius: 0.3rem !important; } + +.rounded-circle { border-radius: 50% !important; } + +.rounded-pill { border-radius: 50rem !important; } + +.rounded-0 { border-radius: 0 !important; } + +.clearfix::after { display: block; clear: both; content: ""; } + +.d-none { display: none !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-block { display: block !important; } + +.d-table { display: table !important; } + +.d-table-row { display: table-row !important; } + +.d-table-cell { display: table-cell !important; } + +.d-flex { display: flex !important; } + +.d-inline-flex { display: inline-flex !important; } + +@media (min-width: 576px) { .d-sm-none { display: none !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-block { display: block !important; } .d-sm-table { display: table !important; } .d-sm-table-row { display: table-row !important; } .d-sm-table-cell { display: table-cell !important; } .d-sm-flex { display: flex !important; } .d-sm-inline-flex { display: inline-flex !important; } } + +@media (min-width: 768px) { .d-md-none { display: none !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-block { display: block !important; } .d-md-table { display: table !important; } .d-md-table-row { display: table-row !important; } .d-md-table-cell { display: table-cell !important; } .d-md-flex { display: flex !important; } .d-md-inline-flex { display: inline-flex !important; } } + +@media (min-width: 992px) { .d-lg-none { display: none !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-block { display: block !important; } .d-lg-table { display: table !important; } .d-lg-table-row { display: table-row !important; } .d-lg-table-cell { display: table-cell !important; } .d-lg-flex { display: flex !important; } .d-lg-inline-flex { display: inline-flex !important; } } + +@media (min-width: 1200px) { .d-xl-none { display: none !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-block { display: block !important; } .d-xl-table { display: table !important; } .d-xl-table-row { display: table-row !important; } .d-xl-table-cell { display: table-cell !important; } .d-xl-flex { display: flex !important; } .d-xl-inline-flex { display: inline-flex !important; } } + +@media print { .d-print-none { display: none !important; } .d-print-inline { display: inline !important; } .d-print-inline-block { display: inline-block !important; } .d-print-block { display: block !important; } .d-print-table { display: table !important; } .d-print-table-row { display: table-row !important; } .d-print-table-cell { display: table-cell !important; } .d-print-flex { display: flex !important; } .d-print-inline-flex { display: inline-flex !important; } } + +.embed-responsive { position: relative; display: block; width: 100%; padding: 0; overflow: hidden; } + +.embed-responsive::before { display: block; content: ""; } + +.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video { position: absolute; top: 0; bottom: 0; left: 0; width: 100%; height: 100%; border: 0; } + +.embed-responsive-21by9::before { padding-top: 42.8571428571%; } + +.embed-responsive-16by9::before { padding-top: 56.25%; } + +.embed-responsive-4by3::before { padding-top: 75%; } + +.embed-responsive-1by1::before { padding-top: 100%; } + +.flex-row { flex-direction: row !important; } + +.flex-column { flex-direction: column !important; } + +.flex-row-reverse { flex-direction: row-reverse !important; } + +.flex-column-reverse { flex-direction: column-reverse !important; } + +.flex-wrap { flex-wrap: wrap !important; } + +.flex-nowrap { flex-wrap: nowrap !important; } + +.flex-wrap-reverse { flex-wrap: wrap-reverse !important; } + +.flex-fill { flex: 1 1 auto !important; } + +.flex-grow-0 { flex-grow: 0 !important; } + +.flex-grow-1 { flex-grow: 1 !important; } + +.flex-shrink-0 { flex-shrink: 0 !important; } + +.flex-shrink-1 { flex-shrink: 1 !important; } + +.justify-content-start { justify-content: flex-start !important; } + +.justify-content-end { justify-content: flex-end !important; } + +.justify-content-center { justify-content: center !important; } + +.justify-content-between { justify-content: space-between !important; } + +.justify-content-around { justify-content: space-around !important; } + +.align-items-start { align-items: flex-start !important; } + +.align-items-end { align-items: flex-end !important; } + +.align-items-center { align-items: center !important; } + +.align-items-baseline { align-items: baseline !important; } + +.align-items-stretch { align-items: stretch !important; } + +.align-content-start { align-content: flex-start !important; } + +.align-content-end { align-content: flex-end !important; } + +.align-content-center { align-content: center !important; } + +.align-content-between { align-content: space-between !important; } + +.align-content-around { align-content: space-around !important; } + +.align-content-stretch { align-content: stretch !important; } + +.align-self-auto { align-self: auto !important; } + +.align-self-start { align-self: flex-start !important; } + +.align-self-end { align-self: flex-end !important; } + +.align-self-center { align-self: center !important; } + +.align-self-baseline { align-self: baseline !important; } + +.align-self-stretch { align-self: stretch !important; } + +@media (min-width: 576px) { .flex-sm-row { flex-direction: row !important; } .flex-sm-column { flex-direction: column !important; } .flex-sm-row-reverse { flex-direction: row-reverse !important; } .flex-sm-column-reverse { flex-direction: column-reverse !important; } .flex-sm-wrap { flex-wrap: wrap !important; } .flex-sm-nowrap { flex-wrap: nowrap !important; } .flex-sm-wrap-reverse { flex-wrap: wrap-reverse !important; } .flex-sm-fill { flex: 1 1 auto !important; } .flex-sm-grow-0 { flex-grow: 0 !important; } .flex-sm-grow-1 { flex-grow: 1 !important; } .flex-sm-shrink-0 { flex-shrink: 0 !important; } .flex-sm-shrink-1 { flex-shrink: 1 !important; } .justify-content-sm-start { justify-content: flex-start !important; } .justify-content-sm-end { justify-content: flex-end !important; } .justify-content-sm-center { justify-content: center !important; } .justify-content-sm-between { justify-content: space-between !important; } .justify-content-sm-around { justify-content: space-around !important; } .align-items-sm-start { align-items: flex-start !important; } .align-items-sm-end { align-items: flex-end !important; } .align-items-sm-center { align-items: center !important; } .align-items-sm-baseline { align-items: baseline !important; } .align-items-sm-stretch { align-items: stretch !important; } .align-content-sm-start { align-content: flex-start !important; } .align-content-sm-end { align-content: flex-end !important; } .align-content-sm-center { align-content: center !important; } .align-content-sm-between { align-content: space-between !important; } .align-content-sm-around { align-content: space-around !important; } .align-content-sm-stretch { align-content: stretch !important; } .align-self-sm-auto { align-self: auto !important; } .align-self-sm-start { align-self: flex-start !important; } .align-self-sm-end { align-self: flex-end !important; } .align-self-sm-center { align-self: center !important; } .align-self-sm-baseline { align-self: baseline !important; } .align-self-sm-stretch { align-self: stretch !important; } } + +@media (min-width: 768px) { .flex-md-row { flex-direction: row !important; } .flex-md-column { flex-direction: column !important; } .flex-md-row-reverse { flex-direction: row-reverse !important; } .flex-md-column-reverse { flex-direction: column-reverse !important; } .flex-md-wrap { flex-wrap: wrap !important; } .flex-md-nowrap { flex-wrap: nowrap !important; } .flex-md-wrap-reverse { flex-wrap: wrap-reverse !important; } .flex-md-fill { flex: 1 1 auto !important; } .flex-md-grow-0 { flex-grow: 0 !important; } .flex-md-grow-1 { flex-grow: 1 !important; } .flex-md-shrink-0 { flex-shrink: 0 !important; } .flex-md-shrink-1 { flex-shrink: 1 !important; } .justify-content-md-start { justify-content: flex-start !important; } .justify-content-md-end { justify-content: flex-end !important; } .justify-content-md-center { justify-content: center !important; } .justify-content-md-between { justify-content: space-between !important; } .justify-content-md-around { justify-content: space-around !important; } .align-items-md-start { align-items: flex-start !important; } .align-items-md-end { align-items: flex-end !important; } .align-items-md-center { align-items: center !important; } .align-items-md-baseline { align-items: baseline !important; } .align-items-md-stretch { align-items: stretch !important; } .align-content-md-start { align-content: flex-start !important; } .align-content-md-end { align-content: flex-end !important; } .align-content-md-center { align-content: center !important; } .align-content-md-between { align-content: space-between !important; } .align-content-md-around { align-content: space-around !important; } .align-content-md-stretch { align-content: stretch !important; } .align-self-md-auto { align-self: auto !important; } .align-self-md-start { align-self: flex-start !important; } .align-self-md-end { align-self: flex-end !important; } .align-self-md-center { align-self: center !important; } .align-self-md-baseline { align-self: baseline !important; } .align-self-md-stretch { align-self: stretch !important; } } + +@media (min-width: 992px) { .flex-lg-row { flex-direction: row !important; } .flex-lg-column { flex-direction: column !important; } .flex-lg-row-reverse { flex-direction: row-reverse !important; } .flex-lg-column-reverse { flex-direction: column-reverse !important; } .flex-lg-wrap { flex-wrap: wrap !important; } .flex-lg-nowrap { flex-wrap: nowrap !important; } .flex-lg-wrap-reverse { flex-wrap: wrap-reverse !important; } .flex-lg-fill { flex: 1 1 auto !important; } .flex-lg-grow-0 { flex-grow: 0 !important; } .flex-lg-grow-1 { flex-grow: 1 !important; } .flex-lg-shrink-0 { flex-shrink: 0 !important; } .flex-lg-shrink-1 { flex-shrink: 1 !important; } .justify-content-lg-start { justify-content: flex-start !important; } .justify-content-lg-end { justify-content: flex-end !important; } .justify-content-lg-center { justify-content: center !important; } .justify-content-lg-between { justify-content: space-between !important; } .justify-content-lg-around { justify-content: space-around !important; } .align-items-lg-start { align-items: flex-start !important; } .align-items-lg-end { align-items: flex-end !important; } .align-items-lg-center { align-items: center !important; } .align-items-lg-baseline { align-items: baseline !important; } .align-items-lg-stretch { align-items: stretch !important; } .align-content-lg-start { align-content: flex-start !important; } .align-content-lg-end { align-content: flex-end !important; } .align-content-lg-center { align-content: center !important; } .align-content-lg-between { align-content: space-between !important; } .align-content-lg-around { align-content: space-around !important; } .align-content-lg-stretch { align-content: stretch !important; } .align-self-lg-auto { align-self: auto !important; } .align-self-lg-start { align-self: flex-start !important; } .align-self-lg-end { align-self: flex-end !important; } .align-self-lg-center { align-self: center !important; } .align-self-lg-baseline { align-self: baseline !important; } .align-self-lg-stretch { align-self: stretch !important; } } + +@media (min-width: 1200px) { .flex-xl-row { flex-direction: row !important; } .flex-xl-column { flex-direction: column !important; } .flex-xl-row-reverse { flex-direction: row-reverse !important; } .flex-xl-column-reverse { flex-direction: column-reverse !important; } .flex-xl-wrap { flex-wrap: wrap !important; } .flex-xl-nowrap { flex-wrap: nowrap !important; } .flex-xl-wrap-reverse { flex-wrap: wrap-reverse !important; } .flex-xl-fill { flex: 1 1 auto !important; } .flex-xl-grow-0 { flex-grow: 0 !important; } .flex-xl-grow-1 { flex-grow: 1 !important; } .flex-xl-shrink-0 { flex-shrink: 0 !important; } .flex-xl-shrink-1 { flex-shrink: 1 !important; } .justify-content-xl-start { justify-content: flex-start !important; } .justify-content-xl-end { justify-content: flex-end !important; } .justify-content-xl-center { justify-content: center !important; } .justify-content-xl-between { justify-content: space-between !important; } .justify-content-xl-around { justify-content: space-around !important; } .align-items-xl-start { align-items: flex-start !important; } .align-items-xl-end { align-items: flex-end !important; } .align-items-xl-center { align-items: center !important; } .align-items-xl-baseline { align-items: baseline !important; } .align-items-xl-stretch { align-items: stretch !important; } .align-content-xl-start { align-content: flex-start !important; } .align-content-xl-end { align-content: flex-end !important; } .align-content-xl-center { align-content: center !important; } .align-content-xl-between { align-content: space-between !important; } .align-content-xl-around { align-content: space-around !important; } .align-content-xl-stretch { align-content: stretch !important; } .align-self-xl-auto { align-self: auto !important; } .align-self-xl-start { align-self: flex-start !important; } .align-self-xl-end { align-self: flex-end !important; } .align-self-xl-center { align-self: center !important; } .align-self-xl-baseline { align-self: baseline !important; } .align-self-xl-stretch { align-self: stretch !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.float-none { float: none !important; } + +@media (min-width: 576px) { .float-sm-left { float: left !important; } .float-sm-right { float: right !important; } .float-sm-none { float: none !important; } } + +@media (min-width: 768px) { .float-md-left { float: left !important; } .float-md-right { float: right !important; } .float-md-none { float: none !important; } } + +@media (min-width: 992px) { .float-lg-left { float: left !important; } .float-lg-right { float: right !important; } .float-lg-none { float: none !important; } } + +@media (min-width: 1200px) { .float-xl-left { float: left !important; } .float-xl-right { float: right !important; } .float-xl-none { float: none !important; } } + +.user-select-all { user-select: all !important; } + +.user-select-auto { user-select: auto !important; } + +.user-select-none { user-select: none !important; } + +.overflow-auto { overflow: auto !important; } + +.overflow-hidden { overflow: hidden !important; } + +.position-static { position: static !important; } + +.position-relative { position: relative !important; } + +.position-absolute { position: absolute !important; } + +.position-fixed { position: fixed !important; } + +.position-sticky { position: sticky !important; } + +.fixed-top { position: fixed; top: 0; right: 0; left: 0; z-index: 1030; } + +.fixed-bottom { position: fixed; right: 0; bottom: 0; left: 0; z-index: 1030; } + +@supports (position: sticky) { .sticky-top { position: sticky; top: 0; z-index: 1020; } } + +.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal; } + +.shadow-sm { box-shadow: 0 0.125rem 0.25rem rgba(255, 64, 64, 0.075) !important; } + +.shadow { box-shadow: 0 0.5rem 1rem rgba(255, 64, 64, 0.15) !important; } + +.shadow-lg { box-shadow: 0 1rem 3rem rgba(255, 64, 64, 0.175) !important; } + +.shadow-none { box-shadow: none !important; } + +.w-25 { width: 25% !important; } + +.w-50 { width: 50% !important; } + +.w-75 { width: 75% !important; } + +.w-100 { width: 100% !important; } + +.w-auto { width: auto !important; } + +.h-25 { height: 25% !important; } + +.h-50 { height: 50% !important; } + +.h-75 { height: 75% !important; } + +.h-100 { height: 100% !important; } + +.h-auto { height: auto !important; } + +.mw-100 { max-width: 100% !important; } + +.mh-100 { max-height: 100% !important; } + +.min-vw-100 { min-width: 100vw !important; } + +.min-vh-100 { min-height: 100vh !important; } + +.vw-100 { width: 100vw !important; } + +.vh-100 { height: 100vh !important; } + +.m-0 { margin: 0 !important; } + +.mt-0, .my-0 { margin-top: 0 !important; } + +.mr-0, .mx-0 { margin-right: 0 !important; } + +.mb-0, .my-0 { margin-bottom: 0 !important; } + +.ml-0, .mx-0 { margin-left: 0 !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1, .my-1 { margin-top: 0.25rem !important; } + +.mr-1, .mx-1 { margin-right: 0.25rem !important; } + +.mb-1, .my-1 { margin-bottom: 0.25rem !important; } + +.ml-1, .mx-1 { margin-left: 0.25rem !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2, .my-2 { margin-top: 0.5rem !important; } + +.mr-2, .mx-2 { margin-right: 0.5rem !important; } + +.mb-2, .my-2 { margin-bottom: 0.5rem !important; } + +.ml-2, .mx-2 { margin-left: 0.5rem !important; } + +.m-3 { margin: 1rem !important; } + +.mt-3, .my-3 { margin-top: 1rem !important; } + +.mr-3, .mx-3 { margin-right: 1rem !important; } + +.mb-3, .my-3 { margin-bottom: 1rem !important; } + +.ml-3, .mx-3 { margin-left: 1rem !important; } + +.m-4 { margin: 1.5rem !important; } + +.mt-4, .my-4 { margin-top: 1.5rem !important; } + +.mr-4, .mx-4 { margin-right: 1.5rem !important; } + +.mb-4, .my-4 { margin-bottom: 1.5rem !important; } + +.ml-4, .mx-4 { margin-left: 1.5rem !important; } + +.m-5 { margin: 3rem !important; } + +.mt-5, .my-5 { margin-top: 3rem !important; } + +.mr-5, .mx-5 { margin-right: 3rem !important; } + +.mb-5, .my-5 { margin-bottom: 3rem !important; } + +.ml-5, .mx-5 { margin-left: 3rem !important; } + +.p-0 { padding: 0 !important; } + +.pt-0, .py-0 { padding-top: 0 !important; } + +.pr-0, .px-0 { padding-right: 0 !important; } + +.pb-0, .py-0 { padding-bottom: 0 !important; } + +.pl-0, .px-0 { padding-left: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1, .py-1 { padding-top: 0.25rem !important; } + +.pr-1, .px-1 { padding-right: 0.25rem !important; } + +.pb-1, .py-1 { padding-bottom: 0.25rem !important; } + +.pl-1, .px-1 { padding-left: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2, .py-2 { padding-top: 0.5rem !important; } + +.pr-2, .px-2 { padding-right: 0.5rem !important; } + +.pb-2, .py-2 { padding-bottom: 0.5rem !important; } + +.pl-2, .px-2 { padding-left: 0.5rem !important; } + +.p-3 { padding: 1rem !important; } + +.pt-3, .py-3 { padding-top: 1rem !important; } + +.pr-3, .px-3 { padding-right: 1rem !important; } + +.pb-3, .py-3 { padding-bottom: 1rem !important; } + +.pl-3, .px-3 { padding-left: 1rem !important; } + +.p-4 { padding: 1.5rem !important; } + +.pt-4, .py-4 { padding-top: 1.5rem !important; } + +.pr-4, .px-4 { padding-right: 1.5rem !important; } + +.pb-4, .py-4 { padding-bottom: 1.5rem !important; } + +.pl-4, .px-4 { padding-left: 1.5rem !important; } + +.p-5 { padding: 3rem !important; } + +.pt-5, .py-5 { padding-top: 3rem !important; } + +.pr-5, .px-5 { padding-right: 3rem !important; } + +.pb-5, .py-5 { padding-bottom: 3rem !important; } + +.pl-5, .px-5 { padding-left: 3rem !important; } + +.m-n1 { margin: -0.25rem !important; } + +.mt-n1, .my-n1 { margin-top: -0.25rem !important; } + +.mr-n1, .mx-n1 { margin-right: -0.25rem !important; } + +.mb-n1, .my-n1 { margin-bottom: -0.25rem !important; } + +.ml-n1, .mx-n1 { margin-left: -0.25rem !important; } + +.m-n2 { margin: -0.5rem !important; } + +.mt-n2, .my-n2 { margin-top: -0.5rem !important; } + +.mr-n2, .mx-n2 { margin-right: -0.5rem !important; } + +.mb-n2, .my-n2 { margin-bottom: -0.5rem !important; } + +.ml-n2, .mx-n2 { margin-left: -0.5rem !important; } + +.m-n3 { margin: -1rem !important; } + +.mt-n3, .my-n3 { margin-top: -1rem !important; } + +.mr-n3, .mx-n3 { margin-right: -1rem !important; } + +.mb-n3, .my-n3 { margin-bottom: -1rem !important; } + +.ml-n3, .mx-n3 { margin-left: -1rem !important; } + +.m-n4 { margin: -1.5rem !important; } + +.mt-n4, .my-n4 { margin-top: -1.5rem !important; } + +.mr-n4, .mx-n4 { margin-right: -1.5rem !important; } + +.mb-n4, .my-n4 { margin-bottom: -1.5rem !important; } + +.ml-n4, .mx-n4 { margin-left: -1.5rem !important; } + +.m-n5 { margin: -3rem !important; } + +.mt-n5, .my-n5 { margin-top: -3rem !important; } + +.mr-n5, .mx-n5 { margin-right: -3rem !important; } + +.mb-n5, .my-n5 { margin-bottom: -3rem !important; } + +.ml-n5, .mx-n5 { margin-left: -3rem !important; } + +.m-auto { margin: auto !important; } + +.mt-auto, .my-auto { margin-top: auto !important; } + +.mr-auto, .mx-auto { margin-right: auto !important; } + +.mb-auto, .my-auto { margin-bottom: auto !important; } + +.ml-auto, .mx-auto { margin-left: auto !important; } + +@media (min-width: 576px) { .m-sm-0 { margin: 0 !important; } .mt-sm-0, .my-sm-0 { margin-top: 0 !important; } .mr-sm-0, .mx-sm-0 { margin-right: 0 !important; } .mb-sm-0, .my-sm-0 { margin-bottom: 0 !important; } .ml-sm-0, .mx-sm-0 { margin-left: 0 !important; } .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1, .my-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1, .mx-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1, .my-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1, .mx-sm-1 { margin-left: 0.25rem !important; } .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2, .my-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2, .mx-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2, .my-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2, .mx-sm-2 { margin-left: 0.5rem !important; } .m-sm-3 { margin: 1rem !important; } .mt-sm-3, .my-sm-3 { margin-top: 1rem !important; } .mr-sm-3, .mx-sm-3 { margin-right: 1rem !important; } .mb-sm-3, .my-sm-3 { margin-bottom: 1rem !important; } .ml-sm-3, .mx-sm-3 { margin-left: 1rem !important; } .m-sm-4 { margin: 1.5rem !important; } .mt-sm-4, .my-sm-4 { margin-top: 1.5rem !important; } .mr-sm-4, .mx-sm-4 { margin-right: 1.5rem !important; } .mb-sm-4, .my-sm-4 { margin-bottom: 1.5rem !important; } .ml-sm-4, .mx-sm-4 { margin-left: 1.5rem !important; } .m-sm-5 { margin: 3rem !important; } .mt-sm-5, .my-sm-5 { margin-top: 3rem !important; } .mr-sm-5, .mx-sm-5 { margin-right: 3rem !important; } .mb-sm-5, .my-sm-5 { margin-bottom: 3rem !important; } .ml-sm-5, .mx-sm-5 { margin-left: 3rem !important; } .p-sm-0 { padding: 0 !important; } .pt-sm-0, .py-sm-0 { padding-top: 0 !important; } .pr-sm-0, .px-sm-0 { padding-right: 0 !important; } .pb-sm-0, .py-sm-0 { padding-bottom: 0 !important; } .pl-sm-0, .px-sm-0 { padding-left: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1, .py-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1, .px-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1, .py-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1, .px-sm-1 { padding-left: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2, .py-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2, .px-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2, .py-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2, .px-sm-2 { padding-left: 0.5rem !important; } .p-sm-3 { padding: 1rem !important; } .pt-sm-3, .py-sm-3 { padding-top: 1rem !important; } .pr-sm-3, .px-sm-3 { padding-right: 1rem !important; } .pb-sm-3, .py-sm-3 { padding-bottom: 1rem !important; } .pl-sm-3, .px-sm-3 { padding-left: 1rem !important; } .p-sm-4 { padding: 1.5rem !important; } .pt-sm-4, .py-sm-4 { padding-top: 1.5rem !important; } .pr-sm-4, .px-sm-4 { padding-right: 1.5rem !important; } .pb-sm-4, .py-sm-4 { padding-bottom: 1.5rem !important; } .pl-sm-4, .px-sm-4 { padding-left: 1.5rem !important; } .p-sm-5 { padding: 3rem !important; } .pt-sm-5, .py-sm-5 { padding-top: 3rem !important; } .pr-sm-5, .px-sm-5 { padding-right: 3rem !important; } .pb-sm-5, .py-sm-5 { padding-bottom: 3rem !important; } .pl-sm-5, .px-sm-5 { padding-left: 3rem !important; } .m-sm-n1 { margin: -0.25rem !important; } .mt-sm-n1, .my-sm-n1 { margin-top: -0.25rem !important; } .mr-sm-n1, .mx-sm-n1 { margin-right: -0.25rem !important; } .mb-sm-n1, .my-sm-n1 { margin-bottom: -0.25rem !important; } .ml-sm-n1, .mx-sm-n1 { margin-left: -0.25rem !important; } .m-sm-n2 { margin: -0.5rem !important; } .mt-sm-n2, .my-sm-n2 { margin-top: -0.5rem !important; } .mr-sm-n2, .mx-sm-n2 { margin-right: -0.5rem !important; } .mb-sm-n2, .my-sm-n2 { margin-bottom: -0.5rem !important; } .ml-sm-n2, .mx-sm-n2 { margin-left: -0.5rem !important; } .m-sm-n3 { margin: -1rem !important; } .mt-sm-n3, .my-sm-n3 { margin-top: -1rem !important; } .mr-sm-n3, .mx-sm-n3 { margin-right: -1rem !important; } .mb-sm-n3, .my-sm-n3 { margin-bottom: -1rem !important; } .ml-sm-n3, .mx-sm-n3 { margin-left: -1rem !important; } .m-sm-n4 { margin: -1.5rem !important; } .mt-sm-n4, .my-sm-n4 { margin-top: -1.5rem !important; } .mr-sm-n4, .mx-sm-n4 { margin-right: -1.5rem !important; } .mb-sm-n4, .my-sm-n4 { margin-bottom: -1.5rem !important; } .ml-sm-n4, .mx-sm-n4 { margin-left: -1.5rem !important; } .m-sm-n5 { margin: -3rem !important; } .mt-sm-n5, .my-sm-n5 { margin-top: -3rem !important; } .mr-sm-n5, .mx-sm-n5 { margin-right: -3rem !important; } .mb-sm-n5, .my-sm-n5 { margin-bottom: -3rem !important; } .ml-sm-n5, .mx-sm-n5 { margin-left: -3rem !important; } .m-sm-auto { margin: auto !important; } .mt-sm-auto, .my-sm-auto { margin-top: auto !important; } .mr-sm-auto, .mx-sm-auto { margin-right: auto !important; } .mb-sm-auto, .my-sm-auto { margin-bottom: auto !important; } .ml-sm-auto, .mx-sm-auto { margin-left: auto !important; } } + +@media (min-width: 768px) { .m-md-0 { margin: 0 !important; } .mt-md-0, .my-md-0 { margin-top: 0 !important; } .mr-md-0, .mx-md-0 { margin-right: 0 !important; } .mb-md-0, .my-md-0 { margin-bottom: 0 !important; } .ml-md-0, .mx-md-0 { margin-left: 0 !important; } .m-md-1 { margin: 0.25rem !important; } .mt-md-1, .my-md-1 { margin-top: 0.25rem !important; } .mr-md-1, .mx-md-1 { margin-right: 0.25rem !important; } .mb-md-1, .my-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1, .mx-md-1 { margin-left: 0.25rem !important; } .m-md-2 { margin: 0.5rem !important; } .mt-md-2, .my-md-2 { margin-top: 0.5rem !important; } .mr-md-2, .mx-md-2 { margin-right: 0.5rem !important; } .mb-md-2, .my-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2, .mx-md-2 { margin-left: 0.5rem !important; } .m-md-3 { margin: 1rem !important; } .mt-md-3, .my-md-3 { margin-top: 1rem !important; } .mr-md-3, .mx-md-3 { margin-right: 1rem !important; } .mb-md-3, .my-md-3 { margin-bottom: 1rem !important; } .ml-md-3, .mx-md-3 { margin-left: 1rem !important; } .m-md-4 { margin: 1.5rem !important; } .mt-md-4, .my-md-4 { margin-top: 1.5rem !important; } .mr-md-4, .mx-md-4 { margin-right: 1.5rem !important; } .mb-md-4, .my-md-4 { margin-bottom: 1.5rem !important; } .ml-md-4, .mx-md-4 { margin-left: 1.5rem !important; } .m-md-5 { margin: 3rem !important; } .mt-md-5, .my-md-5 { margin-top: 3rem !important; } .mr-md-5, .mx-md-5 { margin-right: 3rem !important; } .mb-md-5, .my-md-5 { margin-bottom: 3rem !important; } .ml-md-5, .mx-md-5 { margin-left: 3rem !important; } .p-md-0 { padding: 0 !important; } .pt-md-0, .py-md-0 { padding-top: 0 !important; } .pr-md-0, .px-md-0 { padding-right: 0 !important; } .pb-md-0, .py-md-0 { padding-bottom: 0 !important; } .pl-md-0, .px-md-0 { padding-left: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1, .py-md-1 { padding-top: 0.25rem !important; } .pr-md-1, .px-md-1 { padding-right: 0.25rem !important; } .pb-md-1, .py-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1, .px-md-1 { padding-left: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2, .py-md-2 { padding-top: 0.5rem !important; } .pr-md-2, .px-md-2 { padding-right: 0.5rem !important; } .pb-md-2, .py-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2, .px-md-2 { padding-left: 0.5rem !important; } .p-md-3 { padding: 1rem !important; } .pt-md-3, .py-md-3 { padding-top: 1rem !important; } .pr-md-3, .px-md-3 { padding-right: 1rem !important; } .pb-md-3, .py-md-3 { padding-bottom: 1rem !important; } .pl-md-3, .px-md-3 { padding-left: 1rem !important; } .p-md-4 { padding: 1.5rem !important; } .pt-md-4, .py-md-4 { padding-top: 1.5rem !important; } .pr-md-4, .px-md-4 { padding-right: 1.5rem !important; } .pb-md-4, .py-md-4 { padding-bottom: 1.5rem !important; } .pl-md-4, .px-md-4 { padding-left: 1.5rem !important; } .p-md-5 { padding: 3rem !important; } .pt-md-5, .py-md-5 { padding-top: 3rem !important; } .pr-md-5, .px-md-5 { padding-right: 3rem !important; } .pb-md-5, .py-md-5 { padding-bottom: 3rem !important; } .pl-md-5, .px-md-5 { padding-left: 3rem !important; } .m-md-n1 { margin: -0.25rem !important; } .mt-md-n1, .my-md-n1 { margin-top: -0.25rem !important; } .mr-md-n1, .mx-md-n1 { margin-right: -0.25rem !important; } .mb-md-n1, .my-md-n1 { margin-bottom: -0.25rem !important; } .ml-md-n1, .mx-md-n1 { margin-left: -0.25rem !important; } .m-md-n2 { margin: -0.5rem !important; } .mt-md-n2, .my-md-n2 { margin-top: -0.5rem !important; } .mr-md-n2, .mx-md-n2 { margin-right: -0.5rem !important; } .mb-md-n2, .my-md-n2 { margin-bottom: -0.5rem !important; } .ml-md-n2, .mx-md-n2 { margin-left: -0.5rem !important; } .m-md-n3 { margin: -1rem !important; } .mt-md-n3, .my-md-n3 { margin-top: -1rem !important; } .mr-md-n3, .mx-md-n3 { margin-right: -1rem !important; } .mb-md-n3, .my-md-n3 { margin-bottom: -1rem !important; } .ml-md-n3, .mx-md-n3 { margin-left: -1rem !important; } .m-md-n4 { margin: -1.5rem !important; } .mt-md-n4, .my-md-n4 { margin-top: -1.5rem !important; } .mr-md-n4, .mx-md-n4 { margin-right: -1.5rem !important; } .mb-md-n4, .my-md-n4 { margin-bottom: -1.5rem !important; } .ml-md-n4, .mx-md-n4 { margin-left: -1.5rem !important; } .m-md-n5 { margin: -3rem !important; } .mt-md-n5, .my-md-n5 { margin-top: -3rem !important; } .mr-md-n5, .mx-md-n5 { margin-right: -3rem !important; } .mb-md-n5, .my-md-n5 { margin-bottom: -3rem !important; } .ml-md-n5, .mx-md-n5 { margin-left: -3rem !important; } .m-md-auto { margin: auto !important; } .mt-md-auto, .my-md-auto { margin-top: auto !important; } .mr-md-auto, .mx-md-auto { margin-right: auto !important; } .mb-md-auto, .my-md-auto { margin-bottom: auto !important; } .ml-md-auto, .mx-md-auto { margin-left: auto !important; } } + +@media (min-width: 992px) { .m-lg-0 { margin: 0 !important; } .mt-lg-0, .my-lg-0 { margin-top: 0 !important; } .mr-lg-0, .mx-lg-0 { margin-right: 0 !important; } .mb-lg-0, .my-lg-0 { margin-bottom: 0 !important; } .ml-lg-0, .mx-lg-0 { margin-left: 0 !important; } .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1, .my-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1, .mx-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1, .my-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1, .mx-lg-1 { margin-left: 0.25rem !important; } .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2, .my-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2, .mx-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2, .my-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2, .mx-lg-2 { margin-left: 0.5rem !important; } .m-lg-3 { margin: 1rem !important; } .mt-lg-3, .my-lg-3 { margin-top: 1rem !important; } .mr-lg-3, .mx-lg-3 { margin-right: 1rem !important; } .mb-lg-3, .my-lg-3 { margin-bottom: 1rem !important; } .ml-lg-3, .mx-lg-3 { margin-left: 1rem !important; } .m-lg-4 { margin: 1.5rem !important; } .mt-lg-4, .my-lg-4 { margin-top: 1.5rem !important; } .mr-lg-4, .mx-lg-4 { margin-right: 1.5rem !important; } .mb-lg-4, .my-lg-4 { margin-bottom: 1.5rem !important; } .ml-lg-4, .mx-lg-4 { margin-left: 1.5rem !important; } .m-lg-5 { margin: 3rem !important; } .mt-lg-5, .my-lg-5 { margin-top: 3rem !important; } .mr-lg-5, .mx-lg-5 { margin-right: 3rem !important; } .mb-lg-5, .my-lg-5 { margin-bottom: 3rem !important; } .ml-lg-5, .mx-lg-5 { margin-left: 3rem !important; } .p-lg-0 { padding: 0 !important; } .pt-lg-0, .py-lg-0 { padding-top: 0 !important; } .pr-lg-0, .px-lg-0 { padding-right: 0 !important; } .pb-lg-0, .py-lg-0 { padding-bottom: 0 !important; } .pl-lg-0, .px-lg-0 { padding-left: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1, .py-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1, .px-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1, .py-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1, .px-lg-1 { padding-left: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2, .py-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2, .px-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2, .py-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2, .px-lg-2 { padding-left: 0.5rem !important; } .p-lg-3 { padding: 1rem !important; } .pt-lg-3, .py-lg-3 { padding-top: 1rem !important; } .pr-lg-3, .px-lg-3 { padding-right: 1rem !important; } .pb-lg-3, .py-lg-3 { padding-bottom: 1rem !important; } .pl-lg-3, .px-lg-3 { padding-left: 1rem !important; } .p-lg-4 { padding: 1.5rem !important; } .pt-lg-4, .py-lg-4 { padding-top: 1.5rem !important; } .pr-lg-4, .px-lg-4 { padding-right: 1.5rem !important; } .pb-lg-4, .py-lg-4 { padding-bottom: 1.5rem !important; } .pl-lg-4, .px-lg-4 { padding-left: 1.5rem !important; } .p-lg-5 { padding: 3rem !important; } .pt-lg-5, .py-lg-5 { padding-top: 3rem !important; } .pr-lg-5, .px-lg-5 { padding-right: 3rem !important; } .pb-lg-5, .py-lg-5 { padding-bottom: 3rem !important; } .pl-lg-5, .px-lg-5 { padding-left: 3rem !important; } .m-lg-n1 { margin: -0.25rem !important; } .mt-lg-n1, .my-lg-n1 { margin-top: -0.25rem !important; } .mr-lg-n1, .mx-lg-n1 { margin-right: -0.25rem !important; } .mb-lg-n1, .my-lg-n1 { margin-bottom: -0.25rem !important; } .ml-lg-n1, .mx-lg-n1 { margin-left: -0.25rem !important; } .m-lg-n2 { margin: -0.5rem !important; } .mt-lg-n2, .my-lg-n2 { margin-top: -0.5rem !important; } .mr-lg-n2, .mx-lg-n2 { margin-right: -0.5rem !important; } .mb-lg-n2, .my-lg-n2 { margin-bottom: -0.5rem !important; } .ml-lg-n2, .mx-lg-n2 { margin-left: -0.5rem !important; } .m-lg-n3 { margin: -1rem !important; } .mt-lg-n3, .my-lg-n3 { margin-top: -1rem !important; } .mr-lg-n3, .mx-lg-n3 { margin-right: -1rem !important; } .mb-lg-n3, .my-lg-n3 { margin-bottom: -1rem !important; } .ml-lg-n3, .mx-lg-n3 { margin-left: -1rem !important; } .m-lg-n4 { margin: -1.5rem !important; } .mt-lg-n4, .my-lg-n4 { margin-top: -1.5rem !important; } .mr-lg-n4, .mx-lg-n4 { margin-right: -1.5rem !important; } .mb-lg-n4, .my-lg-n4 { margin-bottom: -1.5rem !important; } .ml-lg-n4, .mx-lg-n4 { margin-left: -1.5rem !important; } .m-lg-n5 { margin: -3rem !important; } .mt-lg-n5, .my-lg-n5 { margin-top: -3rem !important; } .mr-lg-n5, .mx-lg-n5 { margin-right: -3rem !important; } .mb-lg-n5, .my-lg-n5 { margin-bottom: -3rem !important; } .ml-lg-n5, .mx-lg-n5 { margin-left: -3rem !important; } .m-lg-auto { margin: auto !important; } .mt-lg-auto, .my-lg-auto { margin-top: auto !important; } .mr-lg-auto, .mx-lg-auto { margin-right: auto !important; } .mb-lg-auto, .my-lg-auto { margin-bottom: auto !important; } .ml-lg-auto, .mx-lg-auto { margin-left: auto !important; } } + +@media (min-width: 1200px) { .m-xl-0 { margin: 0 !important; } .mt-xl-0, .my-xl-0 { margin-top: 0 !important; } .mr-xl-0, .mx-xl-0 { margin-right: 0 !important; } .mb-xl-0, .my-xl-0 { margin-bottom: 0 !important; } .ml-xl-0, .mx-xl-0 { margin-left: 0 !important; } .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1, .my-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1, .mx-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1, .my-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1, .mx-xl-1 { margin-left: 0.25rem !important; } .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2, .my-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2, .mx-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2, .my-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2, .mx-xl-2 { margin-left: 0.5rem !important; } .m-xl-3 { margin: 1rem !important; } .mt-xl-3, .my-xl-3 { margin-top: 1rem !important; } .mr-xl-3, .mx-xl-3 { margin-right: 1rem !important; } .mb-xl-3, .my-xl-3 { margin-bottom: 1rem !important; } .ml-xl-3, .mx-xl-3 { margin-left: 1rem !important; } .m-xl-4 { margin: 1.5rem !important; } .mt-xl-4, .my-xl-4 { margin-top: 1.5rem !important; } .mr-xl-4, .mx-xl-4 { margin-right: 1.5rem !important; } .mb-xl-4, .my-xl-4 { margin-bottom: 1.5rem !important; } .ml-xl-4, .mx-xl-4 { margin-left: 1.5rem !important; } .m-xl-5 { margin: 3rem !important; } .mt-xl-5, .my-xl-5 { margin-top: 3rem !important; } .mr-xl-5, .mx-xl-5 { margin-right: 3rem !important; } .mb-xl-5, .my-xl-5 { margin-bottom: 3rem !important; } .ml-xl-5, .mx-xl-5 { margin-left: 3rem !important; } .p-xl-0 { padding: 0 !important; } .pt-xl-0, .py-xl-0 { padding-top: 0 !important; } .pr-xl-0, .px-xl-0 { padding-right: 0 !important; } .pb-xl-0, .py-xl-0 { padding-bottom: 0 !important; } .pl-xl-0, .px-xl-0 { padding-left: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1, .py-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1, .px-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1, .py-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1, .px-xl-1 { padding-left: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2, .py-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2, .px-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2, .py-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2, .px-xl-2 { padding-left: 0.5rem !important; } .p-xl-3 { padding: 1rem !important; } .pt-xl-3, .py-xl-3 { padding-top: 1rem !important; } .pr-xl-3, .px-xl-3 { padding-right: 1rem !important; } .pb-xl-3, .py-xl-3 { padding-bottom: 1rem !important; } .pl-xl-3, .px-xl-3 { padding-left: 1rem !important; } .p-xl-4 { padding: 1.5rem !important; } .pt-xl-4, .py-xl-4 { padding-top: 1.5rem !important; } .pr-xl-4, .px-xl-4 { padding-right: 1.5rem !important; } .pb-xl-4, .py-xl-4 { padding-bottom: 1.5rem !important; } .pl-xl-4, .px-xl-4 { padding-left: 1.5rem !important; } .p-xl-5 { padding: 3rem !important; } .pt-xl-5, .py-xl-5 { padding-top: 3rem !important; } .pr-xl-5, .px-xl-5 { padding-right: 3rem !important; } .pb-xl-5, .py-xl-5 { padding-bottom: 3rem !important; } .pl-xl-5, .px-xl-5 { padding-left: 3rem !important; } .m-xl-n1 { margin: -0.25rem !important; } .mt-xl-n1, .my-xl-n1 { margin-top: -0.25rem !important; } .mr-xl-n1, .mx-xl-n1 { margin-right: -0.25rem !important; } .mb-xl-n1, .my-xl-n1 { margin-bottom: -0.25rem !important; } .ml-xl-n1, .mx-xl-n1 { margin-left: -0.25rem !important; } .m-xl-n2 { margin: -0.5rem !important; } .mt-xl-n2, .my-xl-n2 { margin-top: -0.5rem !important; } .mr-xl-n2, .mx-xl-n2 { margin-right: -0.5rem !important; } .mb-xl-n2, .my-xl-n2 { margin-bottom: -0.5rem !important; } .ml-xl-n2, .mx-xl-n2 { margin-left: -0.5rem !important; } .m-xl-n3 { margin: -1rem !important; } .mt-xl-n3, .my-xl-n3 { margin-top: -1rem !important; } .mr-xl-n3, .mx-xl-n3 { margin-right: -1rem !important; } .mb-xl-n3, .my-xl-n3 { margin-bottom: -1rem !important; } .ml-xl-n3, .mx-xl-n3 { margin-left: -1rem !important; } .m-xl-n4 { margin: -1.5rem !important; } .mt-xl-n4, .my-xl-n4 { margin-top: -1.5rem !important; } .mr-xl-n4, .mx-xl-n4 { margin-right: -1.5rem !important; } .mb-xl-n4, .my-xl-n4 { margin-bottom: -1.5rem !important; } .ml-xl-n4, .mx-xl-n4 { margin-left: -1.5rem !important; } .m-xl-n5 { margin: -3rem !important; } .mt-xl-n5, .my-xl-n5 { margin-top: -3rem !important; } .mr-xl-n5, .mx-xl-n5 { margin-right: -3rem !important; } .mb-xl-n5, .my-xl-n5 { margin-bottom: -3rem !important; } .ml-xl-n5, .mx-xl-n5 { margin-left: -3rem !important; } .m-xl-auto { margin: auto !important; } .mt-xl-auto, .my-xl-auto { margin-top: auto !important; } .mr-xl-auto, .mx-xl-auto { margin-right: auto !important; } .mb-xl-auto, .my-xl-auto { margin-bottom: auto !important; } .ml-xl-auto, .mx-xl-auto { margin-left: auto !important; } } + +.stretched-link::after { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1; pointer-events: auto; content: ""; background-color: rgba(0, 0, 0, 0); } + +.text-monospace { font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } + +.text-justify { text-align: justify !important; } + +.text-wrap { white-space: normal !important; } + +.text-nowrap { white-space: nowrap !important; } + +.text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.text-left { text-align: left !important; } + +.text-right { text-align: right !important; } + +.text-center { text-align: center !important; } + +@media (min-width: 576px) { .text-sm-left { text-align: left !important; } .text-sm-right { text-align: right !important; } .text-sm-center { text-align: center !important; } } + +@media (min-width: 768px) { .text-md-left { text-align: left !important; } .text-md-right { text-align: right !important; } .text-md-center { text-align: center !important; } } + +@media (min-width: 992px) { .text-lg-left { text-align: left !important; } .text-lg-right { text-align: right !important; } .text-lg-center { text-align: center !important; } } + +@media (min-width: 1200px) { .text-xl-left { text-align: left !important; } .text-xl-right { text-align: right !important; } .text-xl-center { text-align: center !important; } } + +.text-lowercase { text-transform: lowercase !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.text-capitalize { text-transform: capitalize !important; } + +.font-weight-light { font-weight: 300 !important; } + +.font-weight-lighter { font-weight: lighter !important; } + +.font-weight-normal { font-weight: 400 !important; } + +.font-weight-bold { font-weight: 700 !important; } + +.font-weight-bolder { font-weight: bolder !important; } + +.font-italic { font-style: italic !important; } + +.text-white { color: #FFF !important; } + +.text-primary { color: #54bfff !important; } + +a.text-primary:hover, a.text-primary:focus { color: #08a2ff !important; } + +.text-secondary { color: #868e96 !important; } + +a.text-secondary:hover, a.text-secondary:focus { color: #60686f !important; } + +.text-success { color: #28a745 !important; } + +a.text-success:hover, a.text-success:focus { color: #19692c !important; } + +.text-info { color: #17a2b8 !important; } + +a.text-info:hover, a.text-info:focus { color: #0f6674 !important; } + +.text-warning { color: #ffc107 !important; } + +a.text-warning:hover, a.text-warning:focus { color: #ba8b00 !important; } + +.text-danger { color: #dc3545 !important; } + +a.text-danger:hover, a.text-danger:focus { color: #a71d2a !important; } + +.text-light { color: #f8f9fa !important; } + +a.text-light:hover, a.text-light:focus { color: #cbd3da !important; } + +.text-dark { color: #343a40 !important; } + +a.text-dark:hover, a.text-dark:focus { color: #121416 !important; } + +.text-body { color: #212529 !important; } + +.text-muted { color: #868e96 !important; } + +.text-black-50 { color: rgba(255, 64, 64, 0.5) !important; } + +.text-white-50 { color: rgba(255, 255, 255, 0.5) !important; } + +.text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } + +.text-decoration-none { text-decoration: none !important; } + +.text-break { word-break: break-word !important; overflow-wrap: break-word !important; } + +.text-reset { color: inherit !important; } + +.visible { visibility: visible !important; } + +.invisible { visibility: hidden !important; } + +@media print { *, *::before, *::after { text-shadow: none !important; box-shadow: none !important; } a:not(.btn) { text-decoration: underline; } abbr[title]::after { content: " (" attr(title) ")"; } pre { white-space: pre-wrap !important; } pre, blockquote { border: 1px solid #adb5bd; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } @page { size: a3; } body { min-width: 992px !important; } .container { min-width: 992px !important; } .navbar { display: none; } .badge { border: 1px solid #ff4040; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #FFF !important; } .table-bordered th, .table-bordered td { border: 1px solid #dee2e6 !important; } .table-dark { color: inherit; } .table-dark th, .table-dark td, .table-dark thead th, .table-dark tbody + tbody { border-color: #dee2e6; } .table .thead-dark th { color: inherit; border-color: #dee2e6; } } + +/*# sourceMappingURL=agency.css.map */ \ No newline at end of file diff --git a/assets/css/agency.css.map b/assets/css/agency.css.map new file mode 100644 index 00000000..72a81a00 --- /dev/null +++ b/assets/css/agency.css.map @@ -0,0 +1,220 @@ +{ + "version": 3, + "file": "agency.css", + "sources": [ + "agency.scss", + "_sass/base/_variables.scss", + "_sass/base/_mixins.scss", + "_sass/base/_page.scss", + "_sass/components/_buttons.scss", + "_sass/components/_navbar.scss", + "_sass/components/client-scroll.scss", + "_sass/layout/_masthead.scss", + "_sass/layout/_services.scss", + "_sass/layout/_portfolio.scss", + "_sass/layout/_timeline.scss", + "_sass/layout/_team.scss", + "_sass/layout/_contact.scss", + "_sass/layout/_footer.scss", + "_sass/layout/_blogs.scss", + "_sass/layout/_joinus.scss", + "_sass/layout/_sponsors.scss", + "_sass/bootstrap/scss/bootstrap.scss", + "_sass/bootstrap/scss/_functions.scss", + "_sass/bootstrap/scss/_variables.scss", + "_sass/bootstrap/scss/_mixins.scss", + "_sass/bootstrap/scss/rfs/_rfs.scss", + "_sass/bootstrap/scss/mixins/_deprecate.scss", + "_sass/bootstrap/scss/mixins/_breakpoints.scss", + "_sass/bootstrap/scss/mixins/_hover.scss", + "_sass/bootstrap/scss/mixins/_image.scss", + "_sass/bootstrap/scss/mixins/_badge.scss", + "_sass/bootstrap/scss/mixins/_resize.scss", + "_sass/bootstrap/scss/mixins/_screen-reader.scss", + "_sass/bootstrap/scss/mixins/_size.scss", + "_sass/bootstrap/scss/mixins/_reset-text.scss", + "_sass/bootstrap/scss/mixins/_text-emphasis.scss", + "_sass/bootstrap/scss/mixins/_text-hide.scss", + "_sass/bootstrap/scss/mixins/_text-truncate.scss", + "_sass/bootstrap/scss/mixins/_visibility.scss", + "_sass/bootstrap/scss/mixins/_alert.scss", + "_sass/bootstrap/scss/mixins/_buttons.scss", + "_sass/bootstrap/scss/mixins/_caret.scss", + "_sass/bootstrap/scss/mixins/_pagination.scss", + "_sass/bootstrap/scss/mixins/_lists.scss", + "_sass/bootstrap/scss/mixins/_list-group.scss", + "_sass/bootstrap/scss/mixins/_nav-divider.scss", + "_sass/bootstrap/scss/mixins/_forms.scss", + "_sass/bootstrap/scss/mixins/_table-row.scss", + "_sass/bootstrap/scss/mixins/_background-variant.scss", + "_sass/bootstrap/scss/mixins/_border-radius.scss", + "_sass/bootstrap/scss/mixins/_box-shadow.scss", + "_sass/bootstrap/scss/mixins/_gradients.scss", + "_sass/bootstrap/scss/mixins/_transition.scss", + "_sass/bootstrap/scss/mixins/_clearfix.scss", + "_sass/bootstrap/scss/mixins/_grid-framework.scss", + "_sass/bootstrap/scss/mixins/_grid.scss", + "_sass/bootstrap/scss/mixins/_float.scss", + "_sass/bootstrap/scss/_root.scss", + "_sass/bootstrap/scss/_reboot.scss", + "_sass/bootstrap/scss/_type.scss", + "_sass/bootstrap/scss/_images.scss", + "_sass/bootstrap/scss/_code.scss", + "_sass/bootstrap/scss/_grid.scss", + "_sass/bootstrap/scss/_tables.scss", + "_sass/bootstrap/scss/_forms.scss", + "_sass/bootstrap/scss/_buttons.scss", + "_sass/bootstrap/scss/_transitions.scss", + "_sass/bootstrap/scss/_dropdown.scss", + "_sass/bootstrap/scss/_button-group.scss", + "_sass/bootstrap/scss/_input-group.scss", + "_sass/bootstrap/scss/_custom-forms.scss", + "_sass/bootstrap/scss/_nav.scss", + "_sass/bootstrap/scss/_navbar.scss", + "_sass/bootstrap/scss/_card.scss", + "_sass/bootstrap/scss/_breadcrumb.scss", + "_sass/bootstrap/scss/_pagination.scss", + "_sass/bootstrap/scss/_badge.scss", + "_sass/bootstrap/scss/_jumbotron.scss", + "_sass/bootstrap/scss/_alert.scss", + "_sass/bootstrap/scss/_progress.scss", + "_sass/bootstrap/scss/_media.scss", + "_sass/bootstrap/scss/_list-group.scss", + "_sass/bootstrap/scss/_close.scss", + "_sass/bootstrap/scss/_toasts.scss", + "_sass/bootstrap/scss/_modal.scss", + "_sass/bootstrap/scss/_tooltip.scss", + "_sass/bootstrap/scss/_popover.scss", + "_sass/bootstrap/scss/_carousel.scss", + "_sass/bootstrap/scss/_spinners.scss", + "_sass/bootstrap/scss/_utilities.scss", + "_sass/bootstrap/scss/utilities/_align.scss", + "_sass/bootstrap/scss/utilities/_background.scss", + "_sass/bootstrap/scss/utilities/_borders.scss", + "_sass/bootstrap/scss/utilities/_clearfix.scss", + "_sass/bootstrap/scss/utilities/_display.scss", + "_sass/bootstrap/scss/utilities/_embed.scss", + "_sass/bootstrap/scss/utilities/_flex.scss", + "_sass/bootstrap/scss/utilities/_float.scss", + "_sass/bootstrap/scss/utilities/_interactions.scss", + "_sass/bootstrap/scss/utilities/_overflow.scss", + "_sass/bootstrap/scss/utilities/_position.scss", + "_sass/bootstrap/scss/utilities/_screenreaders.scss", + "_sass/bootstrap/scss/utilities/_shadows.scss", + "_sass/bootstrap/scss/utilities/_sizing.scss", + "_sass/bootstrap/scss/utilities/_spacing.scss", + "_sass/bootstrap/scss/utilities/_stretched-link.scss", + "_sass/bootstrap/scss/utilities/_text.scss", + "_sass/bootstrap/scss/utilities/_visibility.scss", + "_sass/bootstrap/scss/_print.scss" + ], + "sourcesContent": [ + "@charset \"utf-8\";\n// Core variables and mixins\n@import \"base/variables.scss\";\n@import \"base/mixins.scss\";\n\n// Custom colors\n$primary: #54bfff !default;\n$white: #FFF !default;\n$black: #ff4040 !default;\n\n// Custom Images\n$header-image: \"../img/header-bg.jpg\";\n$contact-image: \"\";\n\n$theme-colors: (\n \"primary\": $primary,\n);\n\n// Global CSS\n@import \"base/page.scss\";\n\n// Components\n@import \"components/buttons.scss\";\n@import \"components/navbar.scss\";\n@import \"components/client-scroll.scss\";\n\n// Layout\n@import \"layout/masthead.scss\";\n@import \"layout/services.scss\";\n@import \"layout/portfolio.scss\";\n@import \"layout/timeline.scss\";\n@import \"layout/team.scss\";\n@import \"layout/contact.scss\";\n@import \"layout/footer.scss\";\n@import \"layout/blogs.scss\";\n@import \"layout/joinus.scss\";\n@import \"layout/sponsors.scss\";\n\n@import 'bootstrap/scss/bootstrap.scss';\n", + "// Variables\n$medium-gray: #a0a0a0;\n\n// Restated Bootstrap Variables\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #868e96 !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n\n$gray-900A: #212529a6 !default;\n\n\n$accent-color: #54bfff;", + "// Font Mixins\n@mixin serif-font {\n font-family: 'Droid Serif', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n}\n@mixin script-font {\n font-family: 'Kaushan Script', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n}\n@mixin body-font {\n font-family: /*'Roboto Slab',*/ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n}\n@mixin heading-font {\n font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n}\n\n\n$breakpoints: (\n 'phone': 400px,\n 'phone-wide': 480px,\n 'phablet': 560px,\n 'tablet-small': 640px,\n 'tablet': 768px,\n 'tablet-wide': 1024px,\n 'desktop': 1248px,\n 'desktop-wide': 1440px,\n);\n\n@mixin mq($width, $type: min) {\n @if map_has_key($breakpoints, $width) {\n $width: map_get($breakpoints, $width);\n @if $type == max {\n $width: $width - 1px;\n }\n @media only screen and (#{$type}-width: $width) {\n @content;\n }\n }\n}", + "// Global styling for this template\nbody {\n overflow-x: hidden;\n // @include body-font;\n @extend %base-font-style;\n}\n\np {\n line-height: 1.75;\n}\n\na {\n color: $primary;\n &:hover {\n color: darken($primary, 10%);\n }\n}\n\n.text-primary {\n color: $primary !important;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-weight: 700;\n // @include heading-font;\n}\n\n.page-section {\n padding: 100px 0;\n h2.section-heading {\n font-size: 40px;\n margin-top: 0;\n margin-bottom: 20px;\n }\n \n h3.section-heading {\n font-size: 24px;\n margin-top: 0;\n margin-bottom: 12px;\n }\n h3.section-subheading {\n font-size: 16px;\n font-weight: 400;\n font-style: italic;\n margin-bottom: 75px;\n text-transform: none;\n // @include serif-font;\n }\n}\n@media(min-width:768px) {\n section {\n padding: 0px 0;\n }\n}\n\n// Highlight color customization\n::-moz-selection {\n background: $primary;\n text-shadow: none;\n}\n\n::selection {\n background: $primary;\n text-shadow: none;\n}\n\nimg::selection {\n background: transparent;\n}\n\nimg::-moz-selection {\n background: transparent;\n}\n.blog-list {\n list-style: none;\n .blog-list-item {\n margin: 3% 0 3% 0;\n }\n}\n.paginator-links-list {\n list-style: none;\n}\n\n%base-font-style{\n letter-spacing: -0.003em;\n line-height: 32px;\n font-weight: 200 !important;\n}\n.clean-text {\n @extend %base-font-style;\n font-size: 21px;\n margin: 30px 0;\n}", + "// Button Styles\n.btn {\n @include heading-font;\n font-weight: 700;\n}\n\n.btn-xl {\n font-size: 18px;\n padding: 20px 40px;\n}\n\n.btn-primary {\n background-color: $primary;\n margin: 0.1rem;\n border-color: $primary;\n &:active,\n &:focus,\n &:hover {\n background-color: darken($primary, 7.5%) !important;\n border-color: darken($primary, 7.5%) !important;\n color: white;\n }\n &:active,\n &:focus {\n box-shadow: 0 0 0 0.2rem rgba(254, 209, 55,.5) !important;\n }\n}\n", + "// Styling for the navbar\n#mainNav {\n background-color: $gray-900;\n .navbar-toggler {\n font-size: 12px;\n right: 0;\n padding: 12px;\n text-transform: uppercase;\n color: white;\n border: 0;\n background-color: $primary;\n @include heading-font;\n }\n .navbar-brand {\n color: $primary;\n @include script-font;\n &.active,\n &:active,\n &:focus,\n &:hover {\n opacity: 0.6;\n }\n }\n .navbar-nav {\n .nav-item {\n .nav-link {\n font-size: 90%;\n font-weight: 400;\n letter-spacing: 1px;\n color: white;\n @include heading-font;\n &.active,\n &:hover {\n color: $primary;\n }\n }\n }\n }\n}\n@media(min-width:992px) {\n #mainNav {\n -webkit-transition: padding-top 0.3s, padding-bottom 0.3s;\n -moz-transition: padding-top 0.3s, padding-bottom 0.3s;\n transition: padding-top 0.3s, padding-bottom 0.3s;\n border: none;\n background-color: $gray-900;\n .navbar-brand {\n font-size: 1.75em;\n -webkit-transition: all 0.3s;\n -moz-transition: all 0.3s;\n transition: all 0.3s;\n }\n .navbar-nav {\n .nav-item {\n .nav-link {\n padding: 0em 1em !important;\n }\n }\n }\n &.navbar-shrink {\n padding-top: 0;\n padding-bottom: 0;\n background-color: $gray-900;\n .navbar-brand {\n font-size: 1.25em;\n padding: 2px 0;\n }\n }\n\n form {\n padding-left: 15px;\n }\n }\n}\n", + "// Styling for the horizontally scrolling clients section\n#scrolling-clients {\n display: flex;\n flex-wrap: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n}\n\n#col-md-3 col-sm-6 {\n flex: 0 0 auto;\n}\n", + "// Styling for the masthead\nheader.masthead {\n text-align: center;\n color: white;\n background-image: url(\"#{$header-image}\");\n background-repeat: no-repeat;\n background-attachment: scroll;\n background-position: center center;\n background-size: cover;\n \n .image-overlay {\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n }\n .intro-text {\n padding-top: 30%;\n padding-bottom: 10%;\n .intro-heading {\n font-size: 40px;\n font-weight: 600;\n line-height: 50px;\n margin-bottom: 25px;\n @include heading-font;\n }\n .intro-lead-in {\n font-size: 26px;\n line-height: 2px;\n margin-bottom: 8em;\n @include serif-font;\n }\n\n }\n}\n@media(min-width:768px) {\n header.masthead {\n .intro-text {\n padding-top: 30%;\n padding-bottom: 10%;\n .intro-heading {\n font-size: 40px;\n font-weight: 600;\n line-height: 75px;\n margin-bottom: 25px;\n @include heading-font;\n }\n .intro-lead-in {\n font-size: 26px;\n line-height: 40px;\n margin-bottom: 8em;\n @include serif-font;\n }\n }\n }\n}\n", + "// Styling for the services section\n.service-heading {\n margin: 15px 0;\n text-transform: none;\n}\n\n.no-logo{\n font-size: 55px;\n color:#E00015;\n font-weight: 400 !important;\n span{\n color: #00ADEF !important\n }\n &:hover{\n color:#E00015;\n }\n}", + "// Styling for the portfolio section\n#portfolio {\n .portfolio-item {\n right: 0;\n margin: 0 0 15px;\n .portfolio-link {\n position: relative;\n display: block;\n max-width: 400px;\n margin: 0 auto;\n cursor: pointer;\n .portfolio-hover {\n position: absolute;\n width: 100%;\n height: 100%;\n -webkit-transition: all ease 0.5s;\n -moz-transition: all ease 0.5s;\n transition: all ease 0.5s;\n opacity: 0;\n background: fade-out($primary, .1);\n &:hover {\n opacity: 1;\n }\n .portfolio-hover-content {\n font-size: 20px;\n position: absolute;\n top: 50%;\n width: 100%;\n height: 20px;\n margin-top: -12px;\n text-align: center;\n color: white;\n i {\n margin-top: -12px;\n }\n h3,\n h4 {\n margin: 0;\n }\n }\n }\n }\n .portfolio-caption {\n max-width: 400px;\n margin: 0 auto;\n padding: 25px;\n text-align: center;\n background-color: $white;\n h4 {\n margin: 0;\n text-transform: none;\n }\n p {\n font-size: 16px;\n font-style: italic;\n margin: 0;\n @include serif-font;\n }\n }\n }\n * {\n z-index: 2;\n }\n}\n@media(min-width:767px) {\n #portfolio {\n .portfolio-item {\n margin: 0 0 30px;\n }\n }\n}\n\n.portfolio-modal {\n .modal-dialog {\n margin: 1rem;\n max-width: 100vw;\n }\n .modal-content {\n padding: 100px 0;\n text-align: center;\n h2 {\n font-size: 3em;\n margin-bottom: 15px;\n }\n p {\n margin-bottom: 30px;\n }\n p.item-intro {\n font-size: 16px;\n font-style: italic;\n margin: 20px 0 30px;\n @include serif-font;\n }\n ul.list-inline {\n margin-top: 0;\n margin-bottom: 30px;\n }\n img {\n margin-bottom: 30px;\n }\n button {\n cursor: pointer;\n }\n }\n .close-modal {\n position: absolute;\n top: 25px;\n right: 25px;\n width: 75px;\n height: 75px;\n cursor: pointer;\n background-color: transparent;\n &:hover {\n opacity: 0.3;\n }\n .lr {\n /* Safari and Chrome */\n z-index: 1051;\n width: 1px;\n height: 75px;\n margin-left: 35px;\n /* IE 9 */\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n background-color: $gray-900;\n .rl {\n /* Safari and Chrome */\n z-index: 1052;\n width: 1px;\n height: 75px;\n /* IE 9 */\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n background-color: $gray-900;\n }\n }\n }\n}\n", + "// Styling for the timeline section\n.timeline {\n position: relative;\n padding: 0;\n list-style: none;\n &:before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 40px;\n width: 2px;\n margin-left: -1.5px;\n content: \"\";\n background-color: $gray-200;\n }\n > li {\n position: relative;\n min-height: 50px;\n margin-bottom: 50px;\n &:after,\n &:before {\n display: table;\n content: \" \";\n }\n &:after {\n clear: both;\n }\n .timeline-panel {\n position: relative;\n float: right;\n width: 100%;\n padding: 0 20px 0 100px;\n text-align: left;\n &:before {\n right: auto;\n left: -15px;\n border-right-width: 15px;\n border-left-width: 0;\n }\n &:after {\n right: auto;\n left: -14px;\n border-right-width: 14px;\n border-left-width: 0;\n }\n }\n .timeline-image {\n position: absolute;\n z-index: 100;\n left: 0;\n width: 80px;\n height: 80px;\n margin-left: 0;\n text-align: center;\n color: $white;\n border: 7px solid $gray-200;\n border-radius: 100%;\n background-color: $primary;\n h4 {\n font-size: 10px;\n line-height: 14px;\n margin-top: 12px;\n }\n }\n &.timeline-inverted > .timeline-panel {\n float: right;\n padding: 0 20px 0 100px;\n text-align: left;\n &:before {\n right: auto;\n left: -15px;\n border-right-width: 15px;\n border-left-width: 0;\n }\n &:after {\n right: auto;\n left: -14px;\n border-right-width: 14px;\n border-left-width: 0;\n }\n }\n &:last-child {\n margin-bottom: 0;\n }\n }\n .timeline-heading {\n h4 {\n margin-top: 0;\n color: inherit;\n &.subheading {\n text-transform: none;\n }\n }\n }\n .timeline-body {\n > ul,\n > p {\n margin-bottom: 0;\n }\n }\n\n .timeline-end p a {\n color: white !important;\n }\n}\n@media (min-width: 768px) {\n .timeline {\n &:before {\n left: 50%;\n }\n > li {\n min-height: 100px;\n margin-bottom: 100px;\n .timeline-panel {\n float: left;\n width: 41%;\n padding: 0 20px 20px 30px;\n text-align: right;\n }\n .timeline-image {\n left: 50%;\n width: 100px;\n height: 100px;\n margin-left: -50px;\n h4 {\n font-size: 13px;\n line-height: 18px;\n margin-top: 16px;\n }\n }\n &.timeline-inverted > .timeline-panel {\n float: right;\n padding: 0 30px 20px 20px;\n text-align: left;\n }\n }\n }\n}\n@media (min-width: 992px) {\n .timeline {\n > li {\n min-height: 150px;\n .timeline-panel {\n padding: 0 20px 20px;\n }\n .timeline-image {\n width: 150px;\n height: 150px;\n margin-left: -75px;\n h4 {\n font-size: 18px;\n line-height: 26px;\n margin-top: 30px;\n }\n }\n &.timeline-inverted > .timeline-panel {\n padding: 0 20px 20px;\n }\n }\n }\n}\n@media (min-width: 1200px) {\n .timeline {\n > li {\n min-height: 170px;\n .timeline-panel {\n padding: 0 20px 20px 100px;\n }\n .timeline-image {\n width: 170px;\n height: 170px;\n margin-left: -85px;\n h4 {\n margin-top: 40px;\n }\n }\n &.timeline-inverted > .timeline-panel {\n padding: 0 100px 20px 20px;\n }\n }\n }\n}\n", + "// Styling for the team section\n.team-member {\n margin-bottom: 50px;\n text-align: center;\n img {\n width: 225px;\n height: 225px;\n border: 7px solid fade-out($black, 0.9);\n }\n h4 {\n margin-top: 25px;\n margin-bottom: 0;\n text-transform: none;\n }\n p {\n margin-top: 0;\n }\n}\n", + "// Styling for the contact section\nsection#contact {\n background-color: $gray-100 !important;\n background-image: url(\"#{$contact-image}\");\n background-repeat: no-repeat;\n background-position: center;\n .section-heading {\n color: black;\n }\n .form-group {\n margin-bottom: 25px;\n input,\n textarea {\n padding: 20px;\n }\n input.form-control {\n height: auto;\n }\n textarea.form-control {\n height: 248px;\n }\n }\n .form-control:focus {\n border-color: $primary;\n box-shadow: none;\n }\n ::-webkit-input-placeholder {\n font-weight: 700;\n color: $gray-400;\n @include heading-font;\n }\n :-moz-placeholder {\n font-weight: 700;\n color: $gray-400;\n @include heading-font;\n }\n ::-moz-placeholder {\n font-weight: 700;\n color: $gray-400;\n @include heading-font;\n }\n :-ms-input-placeholder {\n font-weight: 700;\n color: $gray-400;\n @include heading-font;\n }\n}\n", + "// Styling for the footer\n.footer {\n padding: 25px 0;\n text-align: center;\n background-color: $gray-800;\n span.copyright {\n font-size: 90%;\n line-height: 40px;\n text-transform: none;\n color: white;\n @include heading-font;\n }\n span.code{\n font-size: 90%;\n line-height: 40px;\n color: white;\n @include heading-font;\n }\n ul.quicklinks {\n font-size: 90%;\n line-height: 40px;\n margin-bottom: 0;\n text-transform: none;\n @include heading-font;\n a {\n color: white;\n }\n }\n}\nul.social-buttons {\n margin-bottom: 0;\n li {\n a {\n font-size: 20px;\n line-height: 50px;\n display: block;\n width: 50px;\n height: 50px;\n -webkit-transition: all 0.3s;\n -moz-transition: all 0.3s;\n transition: all 0.3s;\n color: white;\n border-radius: 100%;\n outline: none;\n background-color: $gray-700;\n &:active,\n &:focus,\n &:hover {\n background-color: $primary;\n }\n }\n }\n}\n\nform {\n padding-top: 20px;\n }\n \n #donate-btn{\n width: 110px;\n position: relative; \n top: -10px!important;\n text-transform: uppercase;\n }\n", + ".card{\n // border:none;\n img{\n width: 100% !important;\n }\n}\n\n.container{\n &.blog{\n max-width: 800px;\n @include mq(phablet,min){\n padding: 0 64px;\n }\n img{\n width: 100%;\n }\n .title{\n font-weight: 400;\n font-size: 40px;\n margin-bottom: 20px;\n }\n figcaption{\n margin-top: 8px;\n font-size: 14px;\n }\n p,span{\n @extend .clean-text\n }\n }\n}", + "#joinus{\n strong{\n color: $accent-color;\n }\n a{\n &:hover{\n em{\n color: $accent-color;\n }\n }\n }\n}", + "// Styling for the team section\n.sponsors {\n \n img{\n max-height: 70px;\n }\n\n}\n", + "/*!\n * Bootstrap v4.5.2 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n", + "// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.\n\n// Ascending\n// Used to evaluate Sass maps like our grid breakpoints.\n@mixin _assert-ascending($map, $map-name) {\n $prev-key: null;\n $prev-num: null;\n @each $key, $num in $map {\n @if $prev-num == null or unit($num) == \"%\" or unit($prev-num) == \"%\" {\n // Do nothing\n } @else if not comparable($prev-num, $num) {\n @warn \"Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n } @else if $prev-num >= $num {\n @warn \"Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !\";\n }\n $prev-key: $key;\n $prev-num: $num;\n }\n}\n\n// Starts at zero\n// Used to ensure the min-width of the lowest breakpoint starts at 0.\n@mixin _assert-starts-at-zero($map, $map-name: \"$grid-breakpoints\") {\n @if length($map) > 0 {\n $values: map-values($map);\n $first-value: nth($values, 1);\n @if $first-value != 0 {\n @warn \"First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.\";\n }\n }\n}\n\n// Replace `$search` with `$replace` in `$string`\n// Used on our SVG icon backgrounds for custom forms.\n//\n// @author Hugo Giraudel\n// @param {String} $string - Initial string\n// @param {String} $search - Substring to replace\n// @param {String} $replace ('') - New value\n// @return {String} - Updated string\n@function str-replace($string, $search, $replace: \"\") {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n// See https://codepen.io/kevinweber/pen/dXWoRw\n@function escape-svg($string) {\n @if str-index($string, \"data:image/svg+xml\") {\n @each $char, $encoded in $escaped-characters {\n // Do not escape the url brackets\n @if str-index($string, \"url(\") == 1 {\n $string: url(\"#{str-replace(str-slice($string, 6, -3), $char, $encoded)}\");\n } @else {\n $string: str-replace($string, $char, $encoded);\n }\n }\n }\n\n @return $string;\n}\n\n// Color contrast\n@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {\n $r: red($color);\n $g: green($color);\n $b: blue($color);\n\n $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;\n\n @if ($yiq >= $yiq-contrasted-threshold) {\n @return $dark;\n } @else {\n @return $light;\n }\n}\n\n// Retrieve color Sass maps\n@function color($key: \"blue\") {\n @return map-get($colors, $key);\n}\n\n@function theme-color($key: \"primary\") {\n @return map-get($theme-colors, $key);\n}\n\n@function gray($key: \"100\") {\n @return map-get($grays, $key);\n}\n\n// Request a theme color level\n@function theme-color-level($color-name: \"primary\", $level: 0) {\n $color: theme-color($color-name);\n $color-base: if($level > 0, $black, $white);\n $level: abs($level);\n\n @return mix($color-base, $color, $level * $theme-color-interval);\n}\n\n// Return valid calc\n@function add($value1, $value2, $return-calc: true) {\n @if $value1 == null {\n @return $value2;\n }\n\n @if $value2 == null {\n @return $value1;\n }\n\n @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {\n @return $value1 + $value2;\n }\n\n @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(\" + \") + $value2);\n}\n\n@function subtract($value1, $value2, $return-calc: true) {\n @if $value1 == null and $value2 == null {\n @return null;\n }\n\n @if $value1 == null {\n @return -$value2;\n }\n\n @if $value2 == null {\n @return $value1;\n }\n\n @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {\n @return $value1 - $value2;\n }\n\n @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(\" - \") + $value2);\n}\n", + "// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n\n$grays: () !default;\n$grays: map-merge(\n (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n ),\n $grays\n);\n\n$blue: #007bff !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #28a745 !default;\n$teal: #20c997 !default;\n$cyan: #17a2b8 !default;\n\n$colors: () !default;\n$colors: map-merge(\n (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n ),\n $colors\n);\n\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n ),\n $theme-colors\n);\n\n// Set a specific jump point for requesting color jumps\n$theme-color-interval: 8% !default;\n\n// The yiq lightness value that determines when the lightness of color changes from \"dark\" to \"light\". Acceptable values are between 0 and 255.\n$yiq-contrasted-threshold: 150 !default;\n\n// Customize the light and dark text colors for use in our YIQ color contrast function.\n$yiq-text-dark: $gray-900 !default;\n$yiq-text-light: $white !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-prefers-reduced-motion-media-query: true !default;\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\n$enable-grid-classes: true !default;\n$enable-pointer-cursor-for-buttons: true !default;\n$enable-print-styles: true !default;\n$enable-responsive-font-sizes: false !default;\n$enable-validation-icons: true !default;\n$enable-deprecation-messages: true !default;\n\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n$spacer: 1rem !default;\n$spacers: () !default;\n$spacers: map-merge(\n (\n 0: 0,\n 1: ($spacer * .25),\n 2: ($spacer * .5),\n 3: $spacer,\n 4: ($spacer * 1.5),\n 5: ($spacer * 3)\n ),\n $spacers\n);\n\n// This variable affects the `.h-*` and `.w-*` classes.\n$sizes: () !default;\n$sizes: map-merge(\n (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n ),\n $sizes\n);\n\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: theme-color(\"primary\") !default;\n$link-decoration: none !default;\n$link-hover-color: darken($link-color, 15%) !default;\n$link-hover-decoration: underline !default;\n// Darken percentage for links with `.text-*` class (e.g. `.text-success`)\n$emphasized-link-hover-darken-percentage: 15% !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px\n) !default;\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px\n) !default;\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 30px !default;\n$grid-row-columns: 6 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n$line-height-lg: 1.5 !default;\n$line-height-sm: 1.5 !default;\n\n$border-width: 1px !default;\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-sm: .2rem !default;\n\n$rounded-pill: 50rem !default;\n\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n\n$component-active-color: $white !default;\n$component-active-bg: theme-color(\"primary\") !default;\n\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n\n$embed-responsive-aspect-ratios: () !default;\n$embed-responsive-aspect-ratios: join(\n (\n (21 9),\n (16 9),\n (4 3),\n (1 1),\n ),\n $embed-responsive-aspect-ratios\n);\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n$font-family-base: $font-family-sans-serif !default;\n// stylelint-enable value-keyword-case\n\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-lg: $font-size-base * 1.25 !default;\n$font-size-sm: $font-size-base * .875 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n$line-height-base: 1.5 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n\n$display1-size: 6rem !default;\n$display2-size: 5.5rem !default;\n$display3-size: 4.5rem !default;\n$display4-size: 3.5rem !default;\n\n$display1-weight: 300 !default;\n$display2-weight: 300 !default;\n$display3-weight: 300 !default;\n$display4-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: 80% !default;\n\n$text-muted: $gray-600 !default;\n\n$blockquote-small-color: $gray-600 !default;\n$blockquote-small-font-size: $small-font-size !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n\n$hr-border-color: rgba($black, .1) !default;\n$hr-border-width: $border-width !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n\n$hr-margin-y: $spacer !default;\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n$table-cell-padding: .75rem !default;\n$table-cell-padding-sm: .3rem !default;\n\n$table-color: $body-color !default;\n$table-bg: null !default;\n$table-accent-bg: rgba($black, .05) !default;\n$table-hover-color: $table-color !default;\n$table-hover-bg: rgba($black, .075) !default;\n$table-active-bg: $table-hover-bg !default;\n\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-head-bg: $gray-200 !default;\n$table-head-color: $gray-700 !default;\n\n$table-dark-color: $white !default;\n$table-dark-bg: $gray-800 !default;\n$table-dark-accent-bg: rgba($white, .05) !default;\n$table-dark-hover-color: $table-dark-color !default;\n$table-dark-hover-bg: rgba($white, .075) !default;\n$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;\n\n$table-striped-order: odd !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-level: -9 !default;\n$table-border-level: -6 !default;\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .2rem !default;\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n$input-btn-line-height-sm: $line-height-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n$input-btn-line-height-lg: $line-height-lg !default;\n\n$input-btn-border-width: $border-width !default;\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n$btn-line-height-sm: $input-btn-line-height-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n$btn-line-height-lg: $input-btn-line-height-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-disabled-color: $gray-600 !default;\n\n$btn-block-spacing-y: .5rem !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n\n// Forms\n\n$label-margin-bottom: .5rem !default;\n\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n$input-line-height-sm: $input-btn-line-height-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n$input-line-height-lg: $input-btn-line-height-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n\n$input-color: $gray-700 !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-lg: $border-radius-lg !default;\n$input-border-radius-sm: $border-radius-sm !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-text-margin-top: .25rem !default;\n\n$form-check-input-gutter: 1.25rem !default;\n$form-check-input-margin-y: .3rem !default;\n$form-check-input-margin-x: .25rem !default;\n\n$form-check-inline-margin-x: .75rem !default;\n$form-check-inline-input-margin-x: .3125rem !default;\n\n$form-grid-gutter-width: 10px !default;\n$form-group-margin-bottom: 1rem !default;\n\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n\n$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$custom-control-gutter: .5rem !default;\n$custom-control-spacer-x: 1rem !default;\n$custom-control-cursor: null !default;\n\n$custom-control-indicator-size: 1rem !default;\n$custom-control-indicator-bg: $input-bg !default;\n\n$custom-control-indicator-bg-size: 50% 50% !default;\n$custom-control-indicator-box-shadow: $input-box-shadow !default;\n$custom-control-indicator-border-color: $gray-500 !default;\n$custom-control-indicator-border-width: $input-border-width !default;\n\n$custom-control-label-color: null !default;\n\n$custom-control-indicator-disabled-bg: $input-disabled-bg !default;\n$custom-control-label-disabled-color: $gray-600 !default;\n\n$custom-control-indicator-checked-color: $component-active-color !default;\n$custom-control-indicator-checked-bg: $component-active-bg !default;\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\"primary\"), .5) !default;\n$custom-control-indicator-checked-box-shadow: null !default;\n$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;\n\n$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-control-indicator-focus-border-color: $input-focus-border-color !default;\n\n$custom-control-indicator-active-color: $component-active-color !default;\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-control-indicator-active-box-shadow: null !default;\n$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;\n\n$custom-checkbox-indicator-border-radius: $border-radius !default;\n$custom-checkbox-indicator-icon-checked: url(\"data:image/svg+xml,\") !default;\n\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n$custom-checkbox-indicator-icon-indeterminate: url(\"data:image/svg+xml,\") !default;\n$custom-checkbox-indicator-indeterminate-box-shadow: null !default;\n$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;\n\n$custom-radio-indicator-border-radius: 50% !default;\n$custom-radio-indicator-icon-checked: url(\"data:image/svg+xml,\") !default;\n\n$custom-switch-width: $custom-control-indicator-size * 1.75 !default;\n$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;\n$custom-switch-indicator-size: subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;\n\n$custom-select-padding-y: $input-padding-y !default;\n$custom-select-padding-x: $input-padding-x !default;\n$custom-select-font-family: $input-font-family !default;\n$custom-select-font-size: $input-font-size !default;\n$custom-select-height: $input-height !default;\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$custom-select-font-weight: $input-font-weight !default;\n$custom-select-line-height: $input-line-height !default;\n$custom-select-color: $input-color !default;\n$custom-select-disabled-color: $gray-600 !default;\n$custom-select-bg: $input-bg !default;\n$custom-select-disabled-bg: $gray-200 !default;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $gray-800 !default;\n$custom-select-indicator: url(\"data:image/svg+xml,\") !default;\n$custom-select-background: escape-svg($custom-select-indicator) no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)\n\n$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;\n$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$custom-select-border-width: $input-border-width !default;\n$custom-select-border-color: $input-border-color !default;\n$custom-select-border-radius: $border-radius !default;\n$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;\n\n$custom-select-focus-border-color: $input-focus-border-color !default;\n$custom-select-focus-width: $input-focus-width !default;\n$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;\n\n$custom-select-padding-y-sm: $input-padding-y-sm !default;\n$custom-select-padding-x-sm: $input-padding-x-sm !default;\n$custom-select-font-size-sm: $input-font-size-sm !default;\n$custom-select-height-sm: $input-height-sm !default;\n\n$custom-select-padding-y-lg: $input-padding-y-lg !default;\n$custom-select-padding-x-lg: $input-padding-x-lg !default;\n$custom-select-font-size-lg: $input-font-size-lg !default;\n$custom-select-height-lg: $input-height-lg !default;\n\n$custom-range-track-width: 100% !default;\n$custom-range-track-height: .5rem !default;\n$custom-range-track-cursor: pointer !default;\n$custom-range-track-bg: $gray-300 !default;\n$custom-range-track-border-radius: 1rem !default;\n$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\n\n$custom-range-thumb-width: 1rem !default;\n$custom-range-thumb-height: $custom-range-thumb-width !default;\n$custom-range-thumb-bg: $component-active-bg !default;\n$custom-range-thumb-border: 0 !default;\n$custom-range-thumb-border-radius: 1rem !default;\n$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge\n$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;\n$custom-range-thumb-disabled-bg: $gray-500 !default;\n\n$custom-file-height: $input-height !default;\n$custom-file-height-inner: $input-height-inner !default;\n$custom-file-focus-border-color: $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-focus-box-shadow !default;\n$custom-file-disabled-bg: $input-disabled-bg !default;\n\n$custom-file-padding-y: $input-padding-y !default;\n$custom-file-padding-x: $input-padding-x !default;\n$custom-file-line-height: $input-line-height !default;\n$custom-file-font-family: $input-font-family !default;\n$custom-file-font-weight: $input-font-weight !default;\n$custom-file-color: $input-color !default;\n$custom-file-bg: $input-bg !default;\n$custom-file-border-width: $input-border-width !default;\n$custom-file-border-color: $input-border-color !default;\n$custom-file-border-radius: $input-border-radius !default;\n$custom-file-box-shadow: $input-box-shadow !default;\n$custom-file-button-color: $custom-file-color !default;\n$custom-file-button-bg: $input-group-addon-bg !default;\n$custom-file-text: (\n en: \"Browse\"\n) !default;\n\n\n// Form validation\n\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $small-font-size !default;\n$form-feedback-valid-color: theme-color(\"success\") !default;\n$form-feedback-invalid-color: theme-color(\"danger\") !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n\n$form-validation-states: () !default;\n$form-validation-states: map-merge(\n (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n ),\n ),\n $form-validation-states\n);\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-modal-backdrop: 1040 !default;\n$zindex-modal: 1050 !default;\n$zindex-popover: 1060 !default;\n$zindex-tooltip: 1070 !default;\n\n\n// Navs\n\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-divider-color: $gray-200 !default;\n$nav-divider-margin-y: $spacer / 2 !default;\n\n\n// Navbar\n\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: $spacer !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n\n$navbar-dark-color: rgba($white, .5) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .5) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $gray-200 !default;\n$dropdown-divider-margin-y: $nav-divider-margin-y !default;\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: .25rem !default;\n$dropdown-item-padding-x: 1.5rem !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;\n\n\n// Pagination\n\n$pagination-padding-y: .5rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n$pagination-line-height: 1.25 !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n\n// Jumbotron\n\n$jumbotron-padding: 2rem !default;\n$jumbotron-color: null !default;\n$jumbotron-bg: $gray-200 !default;\n\n\n// Cards\n\n$card-spacer-y: .75rem !default;\n$card-spacer-x: 1.25rem !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n\n$card-img-overlay-padding: 1.25rem !default;\n\n$card-group-margin: $grid-gutter-width / 2 !default;\n$card-deck-margin: $card-group-margin !default;\n\n$card-columns-count: 3 !default;\n$card-columns-gap: 1.25rem !default;\n$card-columns-margin: $card-spacer-y !default;\n\n\n// Tooltips\n\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: .25rem !default;\n$tooltip-padding-x: .5rem !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n\n// Form tooltips must come after regular tooltips\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: $line-height-base !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n\n\n// Popovers\n\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\n\n$popover-header-bg: darken($popover-bg, 3%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: .75rem !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $popover-header-padding-y !default;\n$popover-body-padding-x: $popover-header-padding-x !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n\n\n// Toasts\n\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .25rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: .25rem !default;\n$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n\n\n// Badges\n\n$badge-font-size: 75% !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-padding-y: .25em !default;\n$badge-padding-x: .4em !default;\n$badge-border-radius: $border-radius !default;\n\n$badge-transition: $btn-transition !default;\n$badge-focus-width: $input-btn-focus-width !default;\n\n$badge-pill-padding-x: .6em !default;\n// Use a higher than normal value to ensure completely rounded edges when\n// customizing padding or font-size on labels.\n$badge-pill-border-radius: 10rem !default;\n\n\n// Modals\n\n// Padding applied to the modal body\n$modal-inner-padding: 1rem !default;\n\n// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: 1rem !default;\n$modal-header-padding-x: 1rem !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-xl: 1140px !default;\n$modal-lg: 800px !default;\n$modal-md: 500px !default;\n$modal-sm: 300px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n$alert-padding-y: .75rem !default;\n$alert-padding-x: 1.25rem !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n\n$alert-bg-level: -10 !default;\n$alert-border-level: -9 !default;\n$alert-color-level: 6 !default;\n\n\n// Progress bars\n\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: theme-color(\"primary\") !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n\n\n// List group\n\n$list-group-color: null !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: .75rem !default;\n$list-group-item-padding-x: 1.25rem !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n\n// Image thumbnails\n\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\n\n\n// Figures\n\n$figure-caption-font-size: 90% !default;\n$figure-caption-color: $gray-600 !default;\n\n\n// Breadcrumbs\n\n$breadcrumb-font-size: null !default;\n\n$breadcrumb-padding-y: .75rem !default;\n$breadcrumb-padding-x: 1rem !default;\n$breadcrumb-item-padding: .5rem !default;\n\n$breadcrumb-margin-bottom: 1rem !default;\n\n$breadcrumb-bg: $gray-200 !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n\n$breadcrumb-border-radius: $border-radius !default;\n\n\n// Carousel\n\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n\n$carousel-control-icon-width: 20px !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n\n// Spinners\n\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n\n\n// Close\n\n$close-font-size: $font-size-base * 1.5 !default;\n$close-font-weight: $font-weight-bold !default;\n$close-color: $black !default;\n$close-text-shadow: 0 1px 0 $white !default;\n\n\n// Code\n\n$code-font-size: 87.5% !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: $gray-900 !default;\n$pre-scrollable-max-height: 340px !default;\n\n\n// Utilities\n\n$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;\n$overflows: auto, hidden !default;\n$positions: static, relative, absolute, fixed, sticky !default;\n$user-selects: all, auto, none !default;\n\n\n// Printing\n\n$print-page-size: a3 !default;\n$print-body-min-width: map-get($grid-breakpoints, \"lg\") !default;\n", + "// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"rfs/rfs\";\n\n// Deprecate\n@import \"mixins/deprecate\";\n\n// Utilities\n@import \"mixins/breakpoints\";\n@import \"mixins/hover\";\n@import \"mixins/image\";\n@import \"mixins/badge\";\n@import \"mixins/resize\";\n@import \"mixins/screen-reader\";\n@import \"mixins/size\";\n@import \"mixins/reset-text\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-hide\";\n@import \"mixins/text-truncate\";\n@import \"mixins/visibility\";\n\n// Components\n@import \"mixins/alert\";\n@import \"mixins/buttons\";\n@import \"mixins/caret\";\n@import \"mixins/pagination\";\n@import \"mixins/lists\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/table-row\";\n\n// Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/box-shadow\";\n@import \"mixins/gradients\";\n@import \"mixins/transition\";\n\n// Layout\n@import \"mixins/clearfix\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n@import \"mixins/float\";\n", + "// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n", + "// Deprecate mixin\n//\n// This mixin can be used to deprecate mixins or functions.\n// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to\n// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)\n@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {\n @if ($enable-deprecation-messages != false and $ignore-warning != true) {\n @warn \"#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.\";\n }\n}\n", + "// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n", + "// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover() {\n &:hover { @content; }\n}\n\n@mixin hover-focus() {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus() {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active() {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n", + "// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid() {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n", + "@mixin badge-variant($bg) {\n color: color-yiq($bg);\n background-color: $bg;\n\n @at-root a#{&} {\n @include hover-focus() {\n color: color-yiq($bg);\n background-color: darken($bg, 10%);\n }\n\n &:focus,\n &.focus {\n outline: 0;\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\n }\n }\n}\n", + "// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n resize: $direction; // Options: horizontal, vertical, both\n}\n", + "// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only() {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable() {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n }\n}\n", + "// Sizing shortcuts\n\n@mixin size($width, $height: $width) {\n width: $width;\n height: $height;\n @include deprecate(\"`size()`\", \"v4.3.0\", \"v5\");\n}\n", + "@mixin reset-text() {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n}\n", + "// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color, $ignore-warning: false) {\n #{$parent} {\n color: $color !important;\n }\n @if $emphasized-link-hover-darken-percentage != 0 {\n a#{$parent} {\n @include hover-focus() {\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\n }\n }\n }\n @include deprecate(\"`text-emphasis-variant()`\", \"v4.4.0\", \"v5\", $ignore-warning);\n}\n", + "// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n\n @include deprecate(\"`text-hide()`\", \"v4.1.0\", \"v5\", $ignore-warning);\n}\n", + "// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n", + "// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n visibility: $visibility !important;\n @include deprecate(\"`invisible()`\", \"v4.3.0\", \"v5\");\n}\n", + "@mixin alert-variant($background, $border, $color) {\n color: $color;\n @include gradient-bg($background);\n border-color: $border;\n\n hr {\n border-top-color: darken($border, 5%);\n }\n\n .alert-link {\n color: darken($color, 10%);\n }\n}\n", + "// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n color: color-yiq($background);\n @include gradient-bg($background);\n border-color: $border;\n @include box-shadow($btn-box-shadow);\n\n @include hover() {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n }\n\n &:focus,\n &.focus {\n color: color-yiq($hover-background);\n @include gradient-bg($hover-background);\n border-color: $hover-border;\n @if $enable-shadows {\n @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n\n // Disabled comes first so active can properly restyle\n &.disabled,\n &:disabled {\n color: color-yiq($background);\n background-color: $background;\n border-color: $border;\n // Remove CSS gradients if they're enabled\n @if $enable-gradients {\n background-image: none;\n }\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n @if $enable-gradients {\n background-image: none; // Remove the gradient for the pressed/active state\n }\n border-color: $active-border;\n\n &:focus {\n @if $enable-shadows and $btn-active-box-shadow != none {\n @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\n }\n }\n }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n color: $color;\n border-color: $color;\n\n @include hover() {\n color: $color-hover;\n background-color: $active-background;\n border-color: $active-border;\n }\n\n &:focus,\n &.focus {\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n\n &.disabled,\n &:disabled {\n color: $color;\n background-color: transparent;\n }\n\n &:not(:disabled):not(.disabled):active,\n &:not(:disabled):not(.disabled).active,\n .show > &.dropdown-toggle {\n color: color-yiq($active-background);\n background-color: $active-background;\n border-color: $active-border;\n\n &:focus {\n @if $enable-shadows and $btn-active-box-shadow != none {\n @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n }\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n // Manually declare to provide an override to the browser default\n @include border-radius($border-radius, 0);\n}\n", + "@mixin caret-down() {\n border-top: $caret-width solid;\n border-right: $caret-width solid transparent;\n border-bottom: 0;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up() {\n border-top: 0;\n border-right: $caret-width solid transparent;\n border-bottom: $caret-width solid;\n border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right() {\n border-top: $caret-width solid transparent;\n border-right: 0;\n border-bottom: $caret-width solid transparent;\n border-left: $caret-width solid;\n}\n\n@mixin caret-left() {\n border-top: $caret-width solid transparent;\n border-right: $caret-width solid;\n border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down();\n } @else if $direction == up {\n @include caret-up();\n } @else if $direction == right {\n @include caret-right();\n }\n }\n\n @if $direction == left {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $caret-spacing;\n vertical-align: $caret-vertical-align;\n content: \"\";\n @include caret-left();\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n", + "// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n .page-link {\n padding: $padding-y $padding-x;\n @include font-size($font-size);\n line-height: $line-height;\n }\n\n .page-item {\n &:first-child {\n .page-link {\n @include border-left-radius($border-radius);\n }\n }\n &:last-child {\n .page-link {\n @include border-right-radius($border-radius);\n }\n }\n }\n}\n", + "// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled() {\n padding-left: 0;\n list-style: none;\n}\n", + "// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: $color;\n background-color: $background;\n\n &.list-group-item-action {\n @include hover-focus() {\n color: $color;\n background-color: darken($background, 5%);\n }\n\n &.active {\n color: $white;\n background-color: $color;\n border-color: $color;\n }\n }\n }\n}\n", + "// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) {\n height: 0;\n margin: $margin-y 0;\n overflow: hidden;\n border-top: 1px solid $color;\n @include deprecate(\"The `nav-divider()` mixin\", \"v4.4.0\", \"v5\", $ignore-warning);\n}\n", + "// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus($ignore-warning: false) {\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n @if $enable-shadows {\n @include box-shadow($input-box-shadow, $input-focus-box-shadow);\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: $input-focus-box-shadow;\n }\n }\n @include deprecate(\"The `form-control-focus()` mixin\", \"v4.4.0\", \"v5\", $ignore-warning);\n}\n\n// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n@mixin form-validation-state-selector($state) {\n @if ($state == \"valid\" or $state == \"invalid\") {\n .was-validated #{if(&, \"&\", \"\")}:#{$state},\n #{if(&, \"&\", \"\")}.is-#{$state} {\n @content;\n }\n } @else {\n #{if(&, \"&\", \"\")}.is-#{$state} {\n @content;\n }\n }\n}\n\n@mixin form-validation-state($state, $color, $icon) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: color-yiq($color);\n background-color: rgba($color, $form-feedback-tooltip-opacity);\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n @include form-validation-state-selector($state) {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n\n .form-control {\n @include form-validation-state-selector($state) {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: escape-svg($icon);\n background-repeat: no-repeat;\n background-position: right $input-height-inner-quarter center;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n @include form-validation-state-selector($state) {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .custom-select {\n @include form-validation-state-selector($state) {\n border-color: $color;\n\n @if $enable-validation-icons {\n padding-right: $custom-select-feedback-icon-padding-right;\n background: $custom-select-background, escape-svg($icon) $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;\n }\n\n &:focus {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n\n .form-check-input {\n @include form-validation-state-selector($state) {\n ~ .form-check-label {\n color: $color;\n }\n\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n }\n\n .custom-control-input {\n @include form-validation-state-selector($state) {\n ~ .custom-control-label {\n color: $color;\n\n &::before {\n border-color: $color;\n }\n }\n\n &:checked {\n ~ .custom-control-label::before {\n border-color: lighten($color, 10%);\n @include gradient-bg(lighten($color, 10%));\n }\n }\n\n &:focus {\n ~ .custom-control-label::before {\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n\n &:not(:checked) ~ .custom-control-label::before {\n border-color: $color;\n }\n }\n }\n }\n\n // custom file\n .custom-file-input {\n @include form-validation-state-selector($state) {\n ~ .custom-file-label {\n border-color: $color;\n }\n\n &:focus {\n ~ .custom-file-label {\n border-color: $color;\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n }\n }\n }\n }\n}\n", + "// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover() {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n", + "// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color, $ignore-warning: false) {\n #{$parent} {\n background-color: $color !important;\n }\n a#{$parent},\n button#{$parent} {\n @include hover-focus() {\n background-color: darken($color, 10%) !important;\n }\n }\n @include deprecate(\"The `bg-variant` mixin\", \"v4.4.0\", \"v5\", $ignore-warning);\n}\n\n@mixin bg-gradient-variant($parent, $color, $ignore-warning: false) {\n #{$parent} {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n }\n @include deprecate(\"The `bg-gradient-variant` mixin\", \"v4.5.0\", \"v5\", $ignore-warning);\n}\n", + "// stylelint-disable property-blacklist\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n $return: ();\n @each $value in $radius {\n @if type-of($value) == number {\n $return: append($return, max($value, 0));\n } @else {\n $return: append($return, $value);\n }\n }\n @return $return;\n}\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: valid-radius($radius);\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n", + "@mixin box-shadow($shadow...) {\n @if $enable-shadows {\n $result: ();\n\n @if (length($shadow) == 1) {\n // We can pass `@include box-shadow(none);`\n $result: $shadow;\n } @else {\n // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`\n @for $i from 1 through length($shadow) {\n @if nth($shadow, $i) != \"none\" {\n $result: append($result, nth($shadow, $i), \"comma\");\n }\n }\n }\n @if (length($result) > 0) {\n box-shadow: $result;\n }\n }\n}\n", + "// Gradients\n\n@mixin gradient-bg($color) {\n @if $enable-gradients {\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n } @else {\n background-color: $color;\n }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n", + "// stylelint-disable property-blacklist\n@mixin transition($transition...) {\n @if length($transition) == 0 {\n $transition: $transition-base;\n }\n\n @if length($transition) > 1 {\n @each $value in $transition {\n @if $value == null or $value == none {\n @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n }\n }\n }\n\n @if $enable-transitions {\n @if nth($transition, 1) != null {\n transition: $transition;\n }\n\n @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n }\n}\n", + "@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n", + "// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @if $columns > 0 {\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n }\n\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n @if $columns > 0 {\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n }\n}\n", + "/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n @include deprecate(\"The `make-container-max-widths` mixin\", \"v4.5.2\", \"v5\");\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n & > * {\n flex: 0 0 100% / $count;\n max-width: 100% / $count;\n }\n}\n", + "// stylelint-disable declaration-no-important\n\n@mixin float-left() {\n float: left !important;\n @include deprecate(\"The `float-left` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-right() {\n float: right !important;\n @include deprecate(\"The `float-right` mixin\", \"v4.3.0\", \"v5\");\n}\n@mixin float-none() {\n float: none !important;\n @include deprecate(\"The `float-none` mixin\", \"v4.3.0\", \"v5\");\n}\n", + "// Do not forget to update getting-started/theming.md!\n:root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n", + "// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,\n // making it impossible to interact with the content\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Set the cursor for non-`"); + $('#success > .alert-success') + .append("Your message has been sent. "); + $('#success > .alert-success') + .append(''); + //clear all fields + $('#contactForm').trigger("reset"); + }, + + error: function() { + // Fail message + $('#success').html("

    '); + //clear all fields + $('#contactForm').trigger("reset"); + }, + + complete: function() { + setTimeout(function() { + $this.prop("disabled", false); // Re-enable submit button when AJAX call is complete + }, 1000); + } + }); + }, + filter: function() { + return $(this).is(":visible"); + }, + }); + + $("a[data-toggle=\"tab\"]").click(function(e) { + e.preventDefault(); + $(this).tab("show"); + }); +}); + +/*When clicking on Full hide fail/success boxes */ +$('#name').focus(function() { + $('#success').html(''); +}); diff --git a/assets/js/jqBootstrapValidation.js b/assets/js/jqBootstrapValidation.js new file mode 100644 index 00000000..6f05a2db --- /dev/null +++ b/assets/js/jqBootstrapValidation.js @@ -0,0 +1,937 @@ +/* jqBootstrapValidation + * A plugin for automating validation on Twitter Bootstrap formatted forms. + * + * v1.3.6 + * + * License: MIT - see LICENSE file + * + * http://ReactiveRaven.github.com/jqBootstrapValidation/ + */ + +(function($) { + + var createdElements = []; + + var defaults = { + options: { + prependExistingHelpBlock: false, + sniffHtml: true, // sniff for 'required', 'maxlength', etc + preventSubmit: true, // stop the form submit event from firing if validation fails + submitError: false, // function called if there is an error when trying to submit + submitSuccess: false, // function called just before a successful submit event is sent to the server + semanticallyStrict: false, // set to true to tidy up generated HTML output + autoAdd: { + helpBlocks: true + }, + filter: function() { + // return $(this).is(":visible"); // only validate elements you can see + return true; // validate everything + } + }, + methods: { + init: function(options) { + + var settings = $.extend(true, {}, defaults); + + settings.options = $.extend(true, settings.options, options); + + var $siblingElements = this; + + var uniqueForms = $.unique( + $siblingElements.map(function() { + return $(this).parents("form")[0]; + }).toArray() + ); + + $(uniqueForms).bind("submit", function(e) { + var $form = $(this); + var warningsFound = 0; + var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter); + $inputs.trigger("submit.validation").trigger("validationLostFocus.validation"); + + $inputs.each(function(i, el) { + var $this = $(el), + $controlGroup = $this.parents(".form-group").first(); + if ( + $controlGroup.hasClass("warning") + ) { + $controlGroup.removeClass("warning").addClass("error"); + warningsFound++; + } + }); + + $inputs.trigger("validationLostFocus.validation"); + + if (warningsFound) { + if (settings.options.preventSubmit) { + e.preventDefault(); + } + $form.addClass("error"); + if ($.isFunction(settings.options.submitError)) { + settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true)); + } + } else { + $form.removeClass("error"); + if ($.isFunction(settings.options.submitSuccess)) { + settings.options.submitSuccess($form, e); + } + } + }); + + return this.each(function() { + + // Get references to everything we're interested in + var $this = $(this), + $controlGroup = $this.parents(".form-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(), + $form = $this.parents("form").first(), + validatorNames = []; + + // create message container if not exists + if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) { + $helpBlock = $('
    '); + $controlGroup.find('.controls').append($helpBlock); + createdElements.push($helpBlock[0]); + } + + // ============================================================= + // SNIFF HTML FOR VALIDATORS + // ============================================================= + + // *snort sniff snuffle* + + if (settings.options.sniffHtml) { + var message = ""; + // --------------------------------------------------------- + // PATTERN + // --------------------------------------------------------- + if ($this.attr("pattern") !== undefined) { + message = "Not in the expected format"; + if ($this.data("validationPatternMessage")) { + message = $this.data("validationPatternMessage"); + } + $this.data("validationPatternMessage", message); + $this.data("validationPatternRegex", $this.attr("pattern")); + } + // --------------------------------------------------------- + // MAX + // --------------------------------------------------------- + if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) { + var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax")); + message = "Too high: Maximum of '" + max + "'"; + if ($this.data("validationMaxMessage")) { + message = $this.data("validationMaxMessage"); + } + $this.data("validationMaxMessage", message); + $this.data("validationMaxMax", max); + } + // --------------------------------------------------------- + // MIN + // --------------------------------------------------------- + if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) { + var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin")); + message = "Too low: Minimum of '" + min + "'"; + if ($this.data("validationMinMessage")) { + message = $this.data("validationMinMessage"); + } + $this.data("validationMinMessage", message); + $this.data("validationMinMin", min); + } + // --------------------------------------------------------- + // MAXLENGTH + // --------------------------------------------------------- + if ($this.attr("maxlength") !== undefined) { + message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters"; + if ($this.data("validationMaxlengthMessage")) { + message = $this.data("validationMaxlengthMessage"); + } + $this.data("validationMaxlengthMessage", message); + $this.data("validationMaxlengthMaxlength", $this.attr("maxlength")); + } + // --------------------------------------------------------- + // MINLENGTH + // --------------------------------------------------------- + if ($this.attr("minlength") !== undefined) { + message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters"; + if ($this.data("validationMinlengthMessage")) { + message = $this.data("validationMinlengthMessage"); + } + $this.data("validationMinlengthMessage", message); + $this.data("validationMinlengthMinlength", $this.attr("minlength")); + } + // --------------------------------------------------------- + // REQUIRED + // --------------------------------------------------------- + if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) { + message = settings.builtInValidators.required.message; + if ($this.data("validationRequiredMessage")) { + message = $this.data("validationRequiredMessage"); + } + $this.data("validationRequiredMessage", message); + } + // --------------------------------------------------------- + // NUMBER + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") { + message = settings.builtInValidators.number.message; + if ($this.data("validationNumberMessage")) { + message = $this.data("validationNumberMessage"); + } + $this.data("validationNumberMessage", message); + } + // --------------------------------------------------------- + // EMAIL + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") { + message = "Not a valid email address"; + if ($this.data("validationValidemailMessage")) { + message = $this.data("validationValidemailMessage"); + } else if ($this.data("validationEmailMessage")) { + message = $this.data("validationEmailMessage"); + } + $this.data("validationValidemailMessage", message); + } + // --------------------------------------------------------- + // MINCHECKED + // --------------------------------------------------------- + if ($this.attr("minchecked") !== undefined) { + message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required"; + if ($this.data("validationMincheckedMessage")) { + message = $this.data("validationMincheckedMessage"); + } + $this.data("validationMincheckedMessage", message); + $this.data("validationMincheckedMinchecked", $this.attr("minchecked")); + } + // --------------------------------------------------------- + // MAXCHECKED + // --------------------------------------------------------- + if ($this.attr("maxchecked") !== undefined) { + message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required"; + if ($this.data("validationMaxcheckedMessage")) { + message = $this.data("validationMaxcheckedMessage"); + } + $this.data("validationMaxcheckedMessage", message); + $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked")); + } + } + + // ============================================================= + // COLLECT VALIDATOR NAMES + // ============================================================= + + // Get named validators + if ($this.data("validation") !== undefined) { + validatorNames = $this.data("validation").split(","); + } + + // Get extra ones defined on the element's data attributes + $.each($this.data(), function(i, el) { + var parts = i.replace(/([A-Z])/g, ",$1").split(","); + if (parts[0] === "validation" && parts[1]) { + validatorNames.push(parts[1]); + } + }); + + // ============================================================= + // NORMALISE VALIDATOR NAMES + // ============================================================= + + var validatorNamesToInspect = validatorNames; + var newValidatorNamesToInspect = []; + + do // repeatedly expand 'shortcut' validators into their real validators + { + // Uppercase only the first letter of each name + $.each(validatorNames, function(i, el) { + validatorNames[i] = formatValidatorName(el); + }); + + // Remove duplicate validator names + validatorNames = $.unique(validatorNames); + + // Pull out the new validator names from each shortcut + newValidatorNamesToInspect = []; + $.each(validatorNamesToInspect, function(i, el) { + if ($this.data("validation" + el + "Shortcut") !== undefined) { + // Are these custom validators? + // Pull them out! + $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) { + newValidatorNamesToInspect.push(el2); + }); + } else if (settings.builtInValidators[el.toLowerCase()]) { + // Is this a recognised built-in? + // Pull it out! + var validator = settings.builtInValidators[el.toLowerCase()]; + if (validator.type.toLowerCase() === "shortcut") { + $.each(validator.shortcut.split(","), function(i, el) { + el = formatValidatorName(el); + newValidatorNamesToInspect.push(el); + validatorNames.push(el); + }); + } + } + }); + + validatorNamesToInspect = newValidatorNamesToInspect; + + } while (validatorNamesToInspect.length > 0) + + // ============================================================= + // SET UP VALIDATOR ARRAYS + // ============================================================= + + var validators = {}; + + $.each(validatorNames, function(i, el) { + // Set up the 'override' message + var message = $this.data("validation" + el + "Message"); + var hasOverrideMessage = (message !== undefined); + var foundValidator = false; + message = + ( + message ? + message : + "'" + el + "' validation failed " + ); + + $.each( + settings.validatorTypes, + function(validatorType, validatorTemplate) { + if (validators[validatorType] === undefined) { + validators[validatorType] = []; + } + if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) { + validators[validatorType].push( + $.extend( + true, { + name: formatValidatorName(validatorTemplate.name), + message: message + }, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + + if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) { + + var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]); + if (hasOverrideMessage) { + validator.message = message; + } + var validatorType = validator.type.toLowerCase(); + + if (validatorType === "shortcut") { + foundValidator = true; + } else { + $.each( + settings.validatorTypes, + function(validatorTemplateType, validatorTemplate) { + if (validators[validatorTemplateType] === undefined) { + validators[validatorTemplateType] = []; + } + if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) { + $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]); + validators[validatorType].push( + $.extend( + validator, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + } + } + + if (!foundValidator) { + $.error("Cannot find validation info for '" + el + "'"); + } + }); + + // ============================================================= + // STORE FALLBACK VALUES + // ============================================================= + + $helpBlock.data( + "original-contents", + ( + $helpBlock.data("original-contents") ? + $helpBlock.data("original-contents") : + $helpBlock.html() + ) + ); + + $helpBlock.data( + "original-role", + ( + $helpBlock.data("original-role") ? + $helpBlock.data("original-role") : + $helpBlock.attr("role") + ) + ); + + $controlGroup.data( + "original-classes", + ( + $controlGroup.data("original-clases") ? + $controlGroup.data("original-classes") : + $controlGroup.attr("class") + ) + ); + + $this.data( + "original-aria-invalid", + ( + $this.data("original-aria-invalid") ? + $this.data("original-aria-invalid") : + $this.attr("aria-invalid") + ) + ); + + // ============================================================= + // VALIDATION + // ============================================================= + + $this.bind( + "validation.validation", + function(event, params) { + + var value = getValue($this); + + // Get a list of the errors to apply + var errorsFound = []; + + $.each(validators, function(validatorType, validatorTypeArray) { + if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) { + $.each(validatorTypeArray, function(i, validator) { + if (settings.validatorTypes[validatorType].validate($this, value, validator)) { + errorsFound.push(validator.message); + } + }); + } + }); + + return errorsFound; + } + ); + + $this.bind( + "getValidators.validation", + function() { + return validators; + } + ); + + // ============================================================= + // WATCH FOR CHANGES + // ============================================================= + $this.bind( + "submit.validation", + function() { + return $this.triggerHandler("change.validation", { + submitting: true + }); + } + ); + $this.bind( + [ + "keyup", + "focus", + "blur", + "click", + "keydown", + "keypress", + "change" + ].join(".validation ") + ".validation", + function(e, params) { + + var value = getValue($this); + + var errorsFound = []; + + $controlGroup.find("input,textarea,select").each(function(i, el) { + var oldCount = errorsFound.length; + $.each($(el).triggerHandler("validation.validation", params), function(j, message) { + errorsFound.push(message); + }); + if (errorsFound.length > oldCount) { + $(el).attr("aria-invalid", "true"); + } else { + var original = $this.data("original-aria-invalid"); + $(el).attr("aria-invalid", (original !== undefined ? original : false)); + } + }); + + $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation"); + + errorsFound = $.unique(errorsFound.sort()); + + // Were there any errors? + if (errorsFound.length) { + // Better flag it up as a warning. + $controlGroup.removeClass("success error").addClass("warning"); + + // How many errors did we find? + if (settings.options.semanticallyStrict && errorsFound.length === 1) { + // Only one? Being strict? Just output it. + $helpBlock.html(errorsFound[0] + + (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "")); + } else { + // Multiple? Being sloppy? Glue them together into an UL. + $helpBlock.html("
    • " + errorsFound.join("
    • ") + "
    " + + (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "")); + } + } else { + $controlGroup.removeClass("warning error success"); + if (value.length > 0) { + $controlGroup.addClass("success"); + } + $helpBlock.html($helpBlock.data("original-contents")); + } + + if (e.type === "blur") { + $controlGroup.removeClass("success"); + } + } + ); + $this.bind("validationLostFocus.validation", function() { + $controlGroup.removeClass("success"); + }); + }); + }, + destroy: function() { + + return this.each( + function() { + + var + $this = $(this), + $controlGroup = $this.parents(".form-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(); + + // remove our events + $this.unbind('.validation'); // events are namespaced. + // reset help text + $helpBlock.html($helpBlock.data("original-contents")); + // reset classes + $controlGroup.attr("class", $controlGroup.data("original-classes")); + // reset aria + $this.attr("aria-invalid", $this.data("original-aria-invalid")); + // reset role + $helpBlock.attr("role", $this.data("original-role")); + // remove all elements we created + if (createdElements.indexOf($helpBlock[0]) > -1) { + $helpBlock.remove(); + } + + } + ); + + }, + collectErrors: function(includeEmpty) { + + var errorMessages = {}; + this.each(function(i, el) { + var $el = $(el); + var name = $el.attr("name"); + var errors = $el.triggerHandler("validation.validation", { + includeEmpty: true + }); + errorMessages[name] = $.extend(true, errors, errorMessages[name]); + }); + + $.each(errorMessages, function(i, el) { + if (el.length === 0) { + delete errorMessages[i]; + } + }); + + return errorMessages; + + }, + hasErrors: function() { + + var errorMessages = []; + + this.each(function(i, el) { + errorMessages = errorMessages.concat( + $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", { + submitting: true + }) : [] + ); + }); + + return (errorMessages.length > 0); + }, + override: function(newDefaults) { + defaults = $.extend(true, defaults, newDefaults); + } + }, + validatorTypes: { + callback: { + name: "callback", + init: function($this, name) { + return { + validatorName: name, + callback: $this.data("validation" + name + "Callback"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function($this, value, validator) { + if (validator.lastValue === value && validator.lastFinished) { + return !validator.lastValid; + } + + if (validator.lastFinished === true) { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + + var rrjqbvValidator = validator; + var rrjqbvThis = $this; + executeFunctionByName( + validator.callback, + window, + $this, + value, + function(data) { + if (rrjqbvValidator.lastValue === data.value) { + rrjqbvValidator.lastValid = data.valid; + if (data.message) { + rrjqbvValidator.message = data.message; + } + rrjqbvValidator.lastFinished = true; + rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function() { + rrjqbvThis.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + } + ); + } + + return false; + + } + }, + ajax: { + name: "ajax", + init: function($this, name) { + return { + validatorName: name, + url: $this.data("validation" + name + "Ajax"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function($this, value, validator) { + if ("" + validator.lastValue === "" + value && validator.lastFinished === true) { + return validator.lastValid === false; + } + + if (validator.lastFinished === true) { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + $.ajax({ + url: validator.url, + data: "value=" + value + "&field=" + $this.attr("name"), + dataType: "json", + success: function(data) { + if ("" + validator.lastValue === "" + data.value) { + validator.lastValid = !!(data.valid); + if (data.message) { + validator.message = data.message; + } + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function() { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }, + failure: function() { + validator.lastValid = true; + validator.message = "ajax call failed"; + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function() { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }); + } + + return false; + + } + }, + regex: { + name: "regex", + init: function($this, name) { + return { + regex: regexFromString($this.data("validation" + name + "Regex")) + }; + }, + validate: function($this, value, validator) { + return (!validator.regex.test(value) && !validator.negative) || + (validator.regex.test(value) && validator.negative); + } + }, + required: { + name: "required", + init: function($this, name) { + return {}; + }, + validate: function($this, value, validator) { + return !!(value.length === 0 && !validator.negative) || + !!(value.length > 0 && validator.negative); + }, + blockSubmit: true + }, + match: { + name: "match", + init: function($this, name) { + var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first(); + element.bind("validation.validation", function() { + $this.trigger("change.validation", { + submitting: true + }); + }); + return { + "element": element + }; + }, + validate: function($this, value, validator) { + return (value !== validator.element.val() && !validator.negative) || + (value === validator.element.val() && validator.negative); + }, + blockSubmit: true + }, + max: { + name: "max", + init: function($this, name) { + return { + max: $this.data("validation" + name + "Max") + }; + }, + validate: function($this, value, validator) { + return (parseFloat(value, 10) > parseFloat(validator.max, 10) && !validator.negative) || + (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative); + } + }, + min: { + name: "min", + init: function($this, name) { + return { + min: $this.data("validation" + name + "Min") + }; + }, + validate: function($this, value, validator) { + return (parseFloat(value) < parseFloat(validator.min) && !validator.negative) || + (parseFloat(value) >= parseFloat(validator.min) && validator.negative); + } + }, + maxlength: { + name: "maxlength", + init: function($this, name) { + return { + maxlength: $this.data("validation" + name + "Maxlength") + }; + }, + validate: function($this, value, validator) { + return ((value.length > validator.maxlength) && !validator.negative) || + ((value.length <= validator.maxlength) && validator.negative); + } + }, + minlength: { + name: "minlength", + init: function($this, name) { + return { + minlength: $this.data("validation" + name + "Minlength") + }; + }, + validate: function($this, value, validator) { + return ((value.length < validator.minlength) && !validator.negative) || + ((value.length >= validator.minlength) && validator.negative); + } + }, + maxchecked: { + name: "maxchecked", + init: function($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function() { + $this.trigger("change.validation", { + includeEmpty: true + }); + }); + return { + maxchecked: $this.data("validation" + name + "Maxchecked"), + elements: elements + }; + }, + validate: function($this, value, validator) { + return (validator.elements.filter(":checked").length > validator.maxchecked && !validator.negative) || + (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative); + }, + blockSubmit: true + }, + minchecked: { + name: "minchecked", + init: function($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function() { + $this.trigger("change.validation", { + includeEmpty: true + }); + }); + return { + minchecked: $this.data("validation" + name + "Minchecked"), + elements: elements + }; + }, + validate: function($this, value, validator) { + return (validator.elements.filter(":checked").length < validator.minchecked && !validator.negative) || + (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative); + }, + blockSubmit: true + } + }, + builtInValidators: { + email: { + name: "Email", + type: "shortcut", + shortcut: "validemail" + }, + validemail: { + name: "Validemail", + type: "regex", + regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}", + message: "Not a valid email address" + }, + passwordagain: { + name: "Passwordagain", + type: "match", + match: "password", + message: "Does not match the given password" + }, + positive: { + name: "Positive", + type: "shortcut", + shortcut: "number,positivenumber" + }, + negative: { + name: "Negative", + type: "shortcut", + shortcut: "number,negativenumber" + }, + number: { + name: "Number", + type: "regex", + regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?", + message: "Must be a number" + }, + integer: { + name: "Integer", + type: "regex", + regex: "[+-]?\\\d+", + message: "No decimal places allowed" + }, + positivenumber: { + name: "Positivenumber", + type: "min", + min: 0, + message: "Must be a positive number" + }, + negativenumber: { + name: "Negativenumber", + type: "max", + max: 0, + message: "Must be a negative number" + }, + required: { + name: "Required", + type: "required", + message: "This is required" + }, + checkone: { + name: "Checkone", + type: "minchecked", + minchecked: 1, + message: "Check at least one option" + } + } + }; + + var formatValidatorName = function(name) { + return name + .toLowerCase() + .replace( + /(^|\s)([a-z])/g, + function(m, p1, p2) { + return p1 + p2.toUpperCase(); + } + ); + }; + + var getValue = function($this) { + // Extract the value we're talking about + var value = $this.val(); + var type = $this.attr("type"); + if (type === "checkbox") { + value = ($this.is(":checked") ? value : ""); + } + if (type === "radio") { + value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : ""); + } + return value; + }; + + function regexFromString(inputstring) { + return new RegExp("^" + inputstring + "$"); + } + + /** + * Thanks to Jason Bunting via StackOverflow.com + * + * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910 + * Short link: http://tinyurl.com/executeFunctionByName + **/ + function executeFunctionByName(functionName, context /*, args*/ ) { + var args = Array.prototype.slice.call(arguments).splice(2); + var namespaces = functionName.split("."); + var func = namespaces.pop(); + for (var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + } + return context[func].apply(this, args); + } + + $.fn.jqBootstrapValidation = function(method) { + + if (defaults.methods[method]) { + return defaults.methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else if (typeof method === 'object' || !method) { + return defaults.methods.init.apply(this, arguments); + } else { + $.error('Method ' + method + ' does not exist on jQuery.jqBootstrapValidation'); + return null; + } + + }; + + $.jqBootstrapValidation = function(options) { + $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this, arguments); + }; + +})(jQuery); diff --git a/assets/js/jquery.easing.min.js b/assets/js/jquery.easing.min.js new file mode 100644 index 00000000..c5157b7b --- /dev/null +++ b/assets/js/jquery.easing.min.js @@ -0,0 +1 @@ +(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],function($){return factory($)})}else if(typeof module==="object"&&typeof module.exports==="object"){exports=factory(require("jquery"))}else{factory(jQuery)}})(function($){$.easing.jswing=$.easing.swing;var pow=Math.pow,sqrt=Math.sqrt,sin=Math.sin,cos=Math.cos,PI=Math.PI,c1=1.70158,c2=c1*1.525,c3=c1+1,c4=2*PI/3,c5=2*PI/4.5;function bounceOut(x){var n1=7.5625,d1=2.75;if(x<1/d1){return n1*x*x}else if(x<2/d1){return n1*(x-=1.5/d1)*x+.75}else if(x<2.5/d1){return n1*(x-=2.25/d1)*x+.9375}else{return n1*(x-=2.625/d1)*x+.984375}}$.extend($.easing,{def:"easeOutQuad",swing:function(x){return $.easing[$.easing.def](x)},easeInQuad:function(x){return x*x},easeOutQuad:function(x){return 1-(1-x)*(1-x)},easeInOutQuad:function(x){return x<.5?2*x*x:1-pow(-2*x+2,2)/2},easeInCubic:function(x){return x*x*x},easeOutCubic:function(x){return 1-pow(1-x,3)},easeInOutCubic:function(x){return x<.5?4*x*x*x:1-pow(-2*x+2,3)/2},easeInQuart:function(x){return x*x*x*x},easeOutQuart:function(x){return 1-pow(1-x,4)},easeInOutQuart:function(x){return x<.5?8*x*x*x*x:1-pow(-2*x+2,4)/2},easeInQuint:function(x){return x*x*x*x*x},easeOutQuint:function(x){return 1-pow(1-x,5)},easeInOutQuint:function(x){return x<.5?16*x*x*x*x*x:1-pow(-2*x+2,5)/2},easeInSine:function(x){return 1-cos(x*PI/2)},easeOutSine:function(x){return sin(x*PI/2)},easeInOutSine:function(x){return-(cos(PI*x)-1)/2},easeInExpo:function(x){return x===0?0:pow(2,10*x-10)},easeOutExpo:function(x){return x===1?1:1-pow(2,-10*x)},easeInOutExpo:function(x){return x===0?0:x===1?1:x<.5?pow(2,20*x-10)/2:(2-pow(2,-20*x+10))/2},easeInCirc:function(x){return 1-sqrt(1-pow(x,2))},easeOutCirc:function(x){return sqrt(1-pow(x-1,2))},easeInOutCirc:function(x){return x<.5?(1-sqrt(1-pow(2*x,2)))/2:(sqrt(1-pow(-2*x+2,2))+1)/2},easeInElastic:function(x){return x===0?0:x===1?1:-pow(2,10*x-10)*sin((x*10-10.75)*c4)},easeOutElastic:function(x){return x===0?0:x===1?1:pow(2,-10*x)*sin((x*10-.75)*c4)+1},easeInOutElastic:function(x){return x===0?0:x===1?1:x<.5?-(pow(2,20*x-10)*sin((20*x-11.125)*c5))/2:pow(2,-20*x+10)*sin((20*x-11.125)*c5)/2+1},easeInBack:function(x){return c3*x*x*x-c1*x*x},easeOutBack:function(x){return 1+c3*pow(x-1,3)+c1*pow(x-1,2)},easeInOutBack:function(x){return x<.5?pow(2*x,2)*((c2+1)*2*x-c2)/2:(pow(2*x-2,2)*((c2+1)*(x*2-2)+c2)+2)/2},easeInBounce:function(x){return 1-bounceOut(1-x)},easeOutBounce:bounceOut,easeInOutBounce:function(x){return x<.5?(1-bounceOut(1-2*x))/2:(1+bounceOut(2*x-1))/2}})}); \ No newline at end of file diff --git a/assets/js/jquery.min.js b/assets/js/jquery.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/assets/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="
    ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Comprehensive Examination of Superstore Sales Trends and Performance Analysis

    + Published December 20, 2023 +

    Data analysis is pivotal in fostering business growth. Owners must possess a comprehensive understanding of their business analytics to strategically elevate profitability. However, meticulously tracking every sales pattern, discerning customer behaviors, and assessing profitability proves challenging for owners. This is where Data Analysis becomes indispensable. A proficient Data Analyst adeptly uncovers latent sales patterns, delineates diverse trends, and establishes correlations between various parameters. Equipped with this invaluable information, owners gain the ability to target and fortify weaker aspects of their business.

    +

    +
    +
    +
    + +
    +
    +
    +

    Using Machine Learning for Finding out the Red Wine Quality

    + Published December 18, 2023 +

    We all know about the significance of red wine these days. It is also better to know better about its quality and the factors which can affect its quality. In these terms, we can use our computer knowledge of ML, and predict ourselves the quality based on the different physicochemical properties. Now, this will be an estimation on the quality and people will be aware about that.

    +

    +
    +
    +
    + +
    +
    +
    +

    Deciphering Trends and Patterns in Electric Vehicle Adoption, A Comprehensive Analysis

    + Published December 18, 2023 +

    The world of electric vehicles (EVs) is evolving rapidly, marked by technological advancements and a growing shift towards sustainable transportation. With a dataset encompassing 32,783 entries and 17 columns sourced from (https://catalog.data.gov/dataset/electricvehiclepopulationdata), my analysis focused on understanding various facets of this transformative landscape.

    +

    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Exploring Nepal’s Exports: Building an Interactive Dashboard for Easy Data Access

    + Published July 06, 2023 +

    The government has published the data regarding the imports & exports of the country for Fiscal Year B.S. 2079/80(Mid July 2022 to Mid July 2023). Because there are news everyday regarding the current economic situation of the country, it is a good idea to understand the area through which we can strengthen the economy which is exports.

    +

    +
    +
    +
    + + + +
    +
    +
    +

    Harnessing Data Science For Agricultural Crops Prediction

    + Published May 24, 2023 +

    Using AI to determine optimal crop selection can have a significant impact on ending world hunger, particularly in poor developing countries like Nepal. Even though Nepal is an agricultural country, we import a huge amount of food materials every year which make the trade deficit of Nepal even worse. By leveraging AI technologies such as machine learning and data analysis, we can analyze various factors like climate, soil quality, market demand, and available resources. This data-driven approach helps farmers make informed decisions about which crops to plant, increasing agricultural productivity and improving food security. AI algorithms can provide personalized recommendations based on local conditions, enabling farmers to optimize their yields, reduce crop failures, and maximize profits. Ultimately, AI-driven crop selection can contribute to sustainable farming practices, alleviate poverty, and combat hunger in Nepal and similar regions worldwide.

    +

    +
    +
    +
    + +
    +
    +
    +

    Building my own IMDB movies dataset using Scrapy

    + Published April 12, 2023 +

    Scrapy, a free and open-source web crawling framework, was first release on June 26, 2008 licensed under BSD. It is used for web scraping and extracting structured data. Scrapy is widely used by many employers, for both freelancing and in-house jobs for various applications from data mining to monitoring websites. or changes. Scrapy is popularly used due to its ability to handle requests asynchronously, i.e., it can execute multiple tasks concurrently, such as making requests, processing responses, and saving data. It allows you to focus on the data extraction process utilizing CSS selectors and XPath expressions rather than the complex internals of how spiders are supposed to function. With Scrapy, you can easily build complex scraping pipelines that can handle multiple pages, parse complex HTML structures, and store data in various formats.

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/10/index.html b/blog/page/10/index.html new file mode 100644 index 00000000..212d1720 --- /dev/null +++ b/blog/page/10/index.html @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 10 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Are you a developer? Sign up for workshops to learn how to help build smarter cities in Nepal

    + Published April 24, 2018 +

    A view from Nagarkot, NepalAsia-Pacific Peace and Development Service Alliance (APPDSA), Global Peace Foundation, Global Young Leaders Academy are going to host a forum on “Smart and Green Cities Equipping Youth Social Enterprise to Achieve Sustainable Development Goals” at Bougainvilla Events, Tripureshwor (Nearby Avenues TV Plaza), on May 14 and 15, 2018. 

    +

    +
    +
    +
    + +
    +
    +
    +

    Supporting computational linguistic competition in Nepal

    + Published April 21, 2018 +

    Credit: Himalayan Computational Linguistic Olympiad Nepal.

    +

    +
    +
    +
    + +
    +
    +
    +

    Province 2 of Nepal in maps and charts

    + Published April 07, 2018 +

    Editor’s note: This is blog series where Code for Nepal will publish data and charts about all of the Provinces of Nepal.

    +

    +
    +
    +
    + +
    +
    +
    +

    What is the average size of a family in Nepal?

    + Published March 25, 2018 +

    Family in Jajarkot District

    +

    +
    +
    +
    + +
    + +
    + +
    +
    +
    +

    How does a typical family in Nepal spend its money?

    + Published February 25, 2018 +

    Do you wonder how your family or other families spend money?

    +

    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    More people in Nepal have access to mobile phones than toilets

    + Published February 11, 2018 +

    Aasu Ram explains her toilet mural, Ganespur Community of Bastipur NEWAH WASH project Siraha, Udayapur District, Nepal. Photo by Jim Holmes for AusAID. Aasu Ram explains her toilet mural in Siraha, Udayapur District, Nepal. Photo by Jim Holmes for AusAID.

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/11/index.html b/blog/page/11/index.html new file mode 100644 index 00000000..334055ef --- /dev/null +++ b/blog/page/11/index.html @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 11 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + + + +
    +
    + +
    +
    + +
    + +
    + +
    +
    +
    +

    Top 3 “Kata Nepali?” short videos will be screened in Nepal- America International Film Festival

    + Published December 15, 2017 +

    Code for Nepal and Nepal American Film Society proudly announce the partnership for the short video competition Kata Nepali?”  titled where is Nepal/Nepali heading?  The winning videos of the competition will be screened at the Nepal-America International Film Festival in Washington DC area from 18- May to 20 May, organized by Maryland based non-profit Nepal American Film Society.

    +

    +
    +
    +
    + + + +
    +
    +
    +

    Kerosene usage by districts in province two of Nepal

    + Published September 29, 2017 +

    Main type of lighting fuel in Nepal. Source: https://nepalmap.org

    +

    +
    +
    +
    + +
    +
    +
    +

    I’m in grade 10 and I used NepalMap to do my homework

    + Published September 24, 2017 +

    +

    +
    +
    +
    + +
    +
    +
    +

    Which subjects are popular in higher education in Nepal

    + Published September 11, 2017 +

    + The demographics data from nepalmap.org shows that 66% of Nepalese can read and write. However, only 39% of Nepalese have passed the primary level. To further break it down, only 10% have passed SLC, 6% have passed intermediate, 3% have graduated and only 1% have acquired a postgraduate degree. +

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/12/index.html b/blog/page/12/index.html new file mode 100644 index 00000000..0c67f8b8 --- /dev/null +++ b/blog/page/12/index.html @@ -0,0 +1,406 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 12 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Understanding the patterns: Business Data added in NepalMap

    + Published September 01, 2017 +

    As the use and impact of NepalMap increases day by day, we at Code for Nepal are working hard to make sure the users are getting direct benefits by publishing new stories with facts, adding new datasets and teaching people how to use it through events. NepalMap aims to make data on Nepal more accessible and understandable by creating user-friendly data visualizations on key demographic issues.

    +

    +
    +
    +
    + +
    +
    +
    +

    In these five districts, almost half the population uses solar energy

    + Published August 22, 2017 +

    With the huge urban-rural disparity in use of electricity, solar based lighting has been beneficial in rural areas where infrastructure for electricity has not yet been developed.The data from nepalmap.org shows that 67% of people use electricity for lighting whereas while 18% people are dependent upon kerosene and 7% rely on solar energy. Browsing through data on nepalmap.org the following five district relies mostly on solar energy for lighting purposes:

    +

    +
    +
    +
    + +
    +
    +
    +

    Map of reported number of #NepalFlood deaths, houses damaged and cattle loss

    + Published August 16, 2017 +

    Note: We will update this post every 48-72 hours. 

    +

    +
    +
    +
    + +
    +
    +
    +

    Donate to help flood victims in Nepal

    + Published August 14, 2017 +

    + + + +
    +

    +
    +
    +
    + +
    +
    +
    +

    In these districts in Nepal, 9 out of 10 people still use wood to cook food

    + Published August 01, 2017 +

    Firewood has been a traditional source of fuel to cook in Nepal. Though few districts now use LPG gas and electricity, let’s take a look at what the data reveals.

    +

    +
    +
    +
    + +
    +
    +
    +

    #breathefreely- How polluted is Nepal? Tell us.

    + Published July 23, 2017 +

    Looking at old photos of Nepal makes me strangely nostalgic of a past I never saw. Pristine hills and mountains, clear blue skies, acres upon acres of greenery, the list pretty much goes on. While parts of the country still remains intact in its natural beauty, the same cannot be said for our cities. Rampant urban development have turned our major cities into dust bowls, with Kathmandu being impacted the most, and earning itself the most unfortunate nickname: Dustmandu.

    +

    +
    +
    +
    + +
    +
    +
    +

    Malnutrition data shows we are building Nepal on crumbling foundations

    + Published July 22, 2017 +

    Children are considered to be the foundation that the future of a nation rests upon. Only a proper investment in today’s children will bring us a better tomorrow. 

    +

    +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/13/index.html b/blog/page/13/index.html new file mode 100644 index 00000000..4accf2d1 --- /dev/null +++ b/blog/page/13/index.html @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 13 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + + + +
    +
    +
    +

    Mentality and Infrastructure both need to be improved: Kathmandu City

    + Published June 26, 2017 +

    +

    + Like every morning, I was going through my Twitter account. One hand on a cup of tea and another hand on a mobile because Twitter always got some really cool stuff. +

    + +

    + While going through Tweets, I saw this: “Welcome to #Kathmandu SEE graduates !!” by Saugat Gautam and the Tweet quoting +

    + +
    +

    + “काठमाडौँ तयार भएर बस् । फेरी कैयौ एस.इ.इ. पास भएका सपनाहरु डसनामा पोको पर्दै तेरो कंक्रिटको जंगलमा डेरा खोज्न आउदै छन् ।” +

    +
    + +

    + Tweet was saying capital city Kathmandu to be prepared to welcome Secondary Education Examination graduates. A sentiment we hear every year after the result of SEE (previously known as SLC). Kathmandu is the preferred destination of every school graduates, not because students love studying here but because they lack a good education infrastructure in their home districts. Some districts don’t have good schools and teachers, let’s forget about colleges and universities. +

    + +

    + Many people argue that the education system needs to decentralize all over Nepal (from developed to undeveloped) and the aim of new Federal Structure also plans to reduce all these things through sustainable development, but still, there are lots of question raised about the structure and constitution implementation itself. +

    + +

    + Since, my hometown is Kathmandu, I rarely feel proud of it. It’s populated, polluted, busy. Kathmandu is pretty unmanaged in my view. After seeing that Tweet, my interest in knowing more about my district increased. +

    + +

    + I browsed NepalMap, a project of Code for Nepal and searched Kathmandu District to analyze the power and weakness of my home district. +

    + +

    + With 1,744,240 current Population according to National Population and Housing Census 2011, Kathmandu is one of the densely populated districts of Nepal. The reason for this are higher education, employment opportunity, only international airport and the capital city. The projected population of the city by 2031 is 2,729,056. +

    + +

    + +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    Interested in learning coding? Apply for Tech Diversity Scholarship by July 5

    + Published June 11, 2017 +

    We are very excited to announce Tech Diversity Scholarship to award selected recipients with the opportunity to attend a 12-week web development course with a mandatory 3-week capstone project. The programming boot camp is made possible by Nepal Telecom and with the partnership with Insight Workshop.

    +

    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +

    Meet Susan Sunuwar – a recipient of the Women in Tech Scholarship

    + Published June 02, 2017 +

    Meet our first recipient of the Code for Nepal Women in Tech Scholarship!

    +

    +
    +
    +
    + +
    +
    +
    +

    Diversity and enthusiasm: My take on Digital Nepal Conference, Janakpur

    + Published April 27, 2017 +

    As we know, things are pretty unpredictable in Nepal. Right before the Digital Nepal Conference – Janakpur, because of unfortunate and tragic events, a strike was announced. After monitoring the situation closely, talking to people, and considering the high demand from youths in the region, Code for Nepal decided that it would be OK to go forward with the conference.

    +

    +
    +
    +
    + +
    +
    +
    +

    Election Nepal – A mediator between Citizens and Government for Election Data

    + Published April 18, 2017 +

    On 20th February 2017, A Cabinet meeting held at the Office of the Prime Minister and Council of Ministers in Singha Durbar announced the date of Local Elections to be held on May 14. Nearly after the 20 years, this election is being held. The last local elections in Nepal were held in 1997 for municipalities and village councils. And, Local elections which was held in 2005 by King Gyanendra during his direct rule which was widely boycotted by the major political parties. That was ineffective because of the ongoing civil war.

    +

    +
    +
    +
    + +
    +
    +
    +

    Code for Nepal is named in Forbes 30 Under 30’s list of social entrepreneurs in Asia

    + Published April 16, 2017 +

    + Forbes 30 Under 30's list of social entrepreneurs in Asia + +

    + We are honored and humbled to be named in Forbes 30 Under 30’s list of social entrepreneurs in Asia +

    +
    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/14/index.html b/blog/page/14/index.html new file mode 100644 index 00000000..d8664da4 --- /dev/null +++ b/blog/page/14/index.html @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 14 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Code for Nepal organizes #DigitalNepal conference to empower youth in Nepal

    + Published February 21, 2017 +

    Press Release- 20 February 2017

    +

    +
    +
    +
    + + + +
    +
    +
    +

    Digital Governance Hackathon 2017 in Kathmandu

    + Published February 10, 2017 +

    Code for Nepal is pleased to support Digital Governance Hackathon 2017. The hackathon is being organized in Kathmandu, Nepal on 11-12 February 2017 at Hotel Hardik, Bagbazaar.

    +

    +
    +
    +
    + +
    +
    +
    +

    Apply now for Women in Tech Scholarship – Code for Nepal

    + Published February 05, 2017 +

    Thank you for your interest.

    +

    +
    +
    +
    + +
    +
    +
    +

    A New Code for Nepal Initiative: Women in Tech Scholarship

    + Published January 28, 2017 +

    Women are majority of Nepal’s population. But they are the most underutilized talent in Nepal. To help develop skills of young women, especially in tech industry, we are launching a scholarship program.

    +

    +
    +
    +
    + +
    +
    +
    +

    Supporting digital literacy in Janakpur

    + Published January 17, 2017 +

    +

    +
    +
    +
    + + + +
    +
    +
    +

    #IWalkFreely – Real Life Horror Stories

    + Published December 12, 2016 +

    Note: This piece was first published on Nepali Times

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/15/index.html b/blog/page/15/index.html new file mode 100644 index 00000000..8353882c --- /dev/null +++ b/blog/page/15/index.html @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 15 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + + + +
    +
    +
    +

    Rebooting AskNepal initiative

    + Published October 30, 2016 +

    October 17th, 2016 – A day when I messaged Mr. Ravi Kumar Nepal, Co-founder of Code For Nepal showing my interest in leading and contributing AskNepal initiative and within a day my meeting was fixed with him for October 22nd, 2016 where we discuss the different possible ways of my engagement. Today right after one week of that meeting, here I am writing this post with the possible Project Plan, Admin Access, Project Lead tag. Unbelievable, Isn’t it a super fast way of joining a community. Yes, it is and thanks to Ravi and team for accepting me as a C4N family.

    +

    +
    +
    +
    + +
    +
    +
    +

    #IWalkFreely – A Nepali girl’s dream

    + Published October 24, 2016 +

    #Iwalk

    +

    +
    +
    +
    + +
    +
    +
    +

    Status of computer education in Dhanusha district of Nepal

    + Published September 18, 2016 +

    Recently we supported and partnered with Women Development Advocacy Centre (WDAC), a non-profit in Nepal to conduct a study in Dhanusha district about the status of computer literacy in public schools. 

    +

    +
    +
    +
    + +
    +
    +
    +

    7 reasons why digital literacy is important in Nepal

    + Published September 05, 2016 +

    tumblr_inline_ndck4pOZTf1qb9ga0

    +

    +
    +
    +
    + +
    +
    +
    +

    I Got the power #IWalkFreely

    + Published August 18, 2016 +

    ~ Stuti Sharma

    +

    +
    +
    +
    + + + +
    +
    +
    +

    Interactive map of disabled population in Nepal

    + Published July 23, 2016 +

    <img src=”https://codefornepal.org/wp-content/uploads/2016/07/16208677607_7e8afb317c_z.jpg” alt=”Disable population in Nepal” width=”100% height=”100%” />Photo Credit: Idex World

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/16/index.html b/blog/page/16/index.html new file mode 100644 index 00000000..4fd25d95 --- /dev/null +++ b/blog/page/16/index.html @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 16 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Map of number of SLC holders in Nepal

    + Published June 19, 2016 +

    On June 16, The Office of the Controller of Examinations published the results of the School Leaving Certificate exams-2016.

    +

    +
    +
    +
    + +
    +
    +
    +

    Why you should care about open data in Nepal

    + Published June 02, 2016 +

    Open data and government transparency is an old but yet, ongoing debate in Nepal. While some support a blind trust in the government, many believe that seeking government data and encouraging transparency is one of the many ways to keep their powers in check. However, at one point or another, one might ask themselves “why does this matter to me? Why should I care?!”

    +

    +
    +
    +
    + +
    +
    +
    +

    Join Code for Nepal as a communications associate

    + Published June 02, 2016 +

    + Hi there! +

    +

    +
    +
    +
    + +
    +
    +
    +

    Women make up just 7% of Nepal Police

    + Published April 30, 2016 +

    At 51.5%, women make up the majority of Nepal’s population, according to the Nepal Census of 2011.

    +

    +
    +
    +
    + +
    +
    +
    +

    Using data to prevent conflict

    + Published April 06, 2016 +

    On March 30-31, I attended my very first UN-hosted roundtable conference. The roundtable was a platform to generate new ideas drawing from our experiences in the process of creating tools that would help prevent conflict through the use of data.

    +

    +
    +
    +
    + +
    +
    +
    +

    Application form for Ko Nepali video and photo competition

    + Published March 26, 2016 +

    Thank you for your interest in Code for Nepal’s “Ko Nepali” competition. We are giving away Rs 55,000 in total. The first prize for video is Rs 25,000. We will award cash prizes to 6 applicants! Before you submit, we would like you to carefully read the instructions and eligibility criteria! The deadline to submit the application is May 11, 2016. 

    +

    +
    +
    +
    + +
    +
    +
    +

    Two Wheelers cause the most accidents in Nepal

    + Published March 25, 2016 +

    Yesterday Code for Nepal published a chart on who causes the most road accidents in Nepal.

    +

    +
    +
    +
    + +
    +
    +
    +

    More than 7 in 10 road accidents in Nepal are caused by negligent drivers

    + Published March 25, 2016 +

    Road accidents in Nepal have increased over the last few years.

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/17/index.html b/blog/page/17/index.html new file mode 100644 index 00000000..b2a10dbe --- /dev/null +++ b/blog/page/17/index.html @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 17 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    “को नेपाली” भिडियो र फोटो प्रतियोगितामा तपाईले भाग लिनु पर्ने पाँच कारण !!

    + Published March 16, 2016 +

    + + + + + +
    तपाईहरु धेरैले कोड फर नेपालले “को नेपाली ?” शिर्षक भएको एक भिडियो तथा फोटो प्रतियोगिता आयोजना गर्दैछ भनेर त सुन्नु भएको नै होला
    +

    +
    +
    +
    + +
    +
    +
    +

    Code for Nepal Launches “Ko Nepali?” Video and Photo Competition

    + Published February 27, 2016 +

    Update: We are accepting applications now. Please apply: https://codefornepal.org/en/2016/03/application/

    +

    +
    +
    +
    + +
    +
    +
    +

    कोड फर नेपालले भिडियो र फोटो प्रतियोगिता आयोजना गर्ने

    + Published February 26, 2016 +

    प्रेस विज्ञप्ति – 26 February 2016
    +www.codefornepal.org
    +वाशिंगटन डी सी
    +संयुक्त राज्य अमेरिका

    +

    +
    +
    +
    + +
    +
    +
    +

    Results from Rahat Payo survey of 703 earthquake survivors in Barpark, Nepal

    + Published February 15, 2016 +

    + Kids in Barpark. Photo: Code for Nepal + +

    + Kids playing in Barpark, Gorkha. December 2015. +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    The 5 districts with the highest life expectancy and income in Nepal

    + Published January 01, 2016 +

    View of Pokhara, Nepal. View of Pokhara, Nepal. January 2014. Photo: Mia Mitchell

    +

    +
    +
    +
    + +
    +
    +
    +

    Seven facts about the status of corruption in Nepal

    + Published December 09, 2015 +

    + Dandidada + +

    + Corruption impacts everyone, especially poor people in villages. +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    Rahat Payo Pilot Test: survey of 767 earthquake survivors in Nepal

    + Published October 31, 2015 +

    + People in quake affected areas are still waiting for help. Photo: Code for Nepal volunteer. + +

    + People in quake affected areas are still waiting for help. Photo: Code for Nepal volunteer. +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    #DidUGetRelief: Initial findings from Code for Nepal #RahatPayo pilot project on earthquake relief

    + Published October 18, 2015 +

    + Sindhupalchowk, Nepal, in early September. Photo by Code for Nepal volunteer. + +

    + Sindhupalchowk, Nepal, in early September. Photo by Code for Nepal volunteer. +

    +
    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/18/index.html b/blog/page/18/index.html new file mode 100644 index 00000000..b8496312 --- /dev/null +++ b/blog/page/18/index.html @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 18 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    How much does it cost to run Kathmandu?

    + Published August 28, 2015 +

    This data contributed by Nikesh Balami at openspending.org helps visualize the spending by Nepal government on the city of Kathmandu.  A similar visualization and analysis was done in 2013 by Open Knowledge Foundation Nepal. NRs. 2.9 billion is being prepared for Kathmandu’s public expenditure for the year 2015-2016.

    +

    +
    +
    +
    + +
    +
    +
    +

    Intern at Code for Nepal

    + Published August 23, 2015 +

    + Hi there! +

    +

    +
    +
    +
    + +
    +
    +
    +

    Women are underrepresented in Nepali online media

    + Published August 16, 2015 +

    Graph of gender of authors

    +

    +
    +
    +
    + +
    +
    +
    +

    Sector-wise needs assessment for Nepal’s recovery

    + Published July 05, 2015 +

    The sectoral breakdown of the needs assessment data provided by the Nepal government shows that housing and reconstruction will need the biggest support. It is crucial that these needs are met fairly among those affected.

    +

    +
    +
    +
    + +
    +
    +
    +

    16 promises the Nepal Government has made to improve health conditions for people affected by the Earthquake

    + Published June 15, 2015 +

    + Government goal to improve health sector in post quake Nepal + +

    + Source: Gov of Nepal. (Excuse typos.) +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    Watch a journey of discovering open data in Nepal

    + Published June 07, 2015 +

    Data journalist Gyanu Sharma leads us through Kathmandu Valley to meet various stakeholders of open data, in this short documentary. In his search for the right public school for his son, we see him seeking information about the financing of public schools, a sector that is underfunded in Nepal.

    +

    +
    +
    +
    + +
    +
    +
    +

    Map of reported #nepalearthquake deaths, injured, and houses damaged

    + Published April 29, 2015 +

    Updated on May 22, 4pm EST

    +

    +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/19/index.html b/blog/page/19/index.html new file mode 100644 index 00000000..8ed3c230 --- /dev/null +++ b/blog/page/19/index.html @@ -0,0 +1,464 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 19 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Recent Code for Nepal stories in Nepali media: women, education and inequality

    + Published April 18, 2015 +

    + A story about education disparity in Nepali newspaper + +

    + A story in Nepali based on Code for Nepal’s data anaysis was published in my republica of Nepal. +

    +
    +

    +
    +
    +
    + + + +
    +
    +
    +

    5 most and least educated districts in Nepal

    + Published February 27, 2015 +

    + Most and least educated districts in Nepal + +

    + Students in Nepal. Photo Credit: DFAT, Australia +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    Women prisoners increased by 239% in Nepal

    + Published February 20, 2015 +

    In the last 8 years, the number of women prisoners increased by more than 230%. That’s shockingly a lot. We are not sure why that’s happening. We do know that recently prison inmates were forced to sleep in plastic sheds and that inmates are forced to live under open sky at the Dadeldhura prison in Nepal.

    +

    +
    +
    +
    + +
    +
    +
    +

    My initiative to teach computer skills

    + Published November 03, 2014 +

    +

    + image +

    + +
    +
    + + + +
    + C4N14 Fellow +
    + +
    +
    + +

    + </br> </div> + +

    +

    + It is my privilege to be a part of Code for Nepal. I have learned so many things being a fellow of Code for Nepal. And the most crucial for me being a #C4N14 Fellow is my final project. As part of the Digital Empowerment training, we, all fellows, were asked to make a final project on any social issues in Nepal. +

    + +

    + Initially I had no idea what to do. Then one day during Digital Empowerment training, Ravi Kumar, the co-founder for Code for Nepal, asked us what bothered us. At that instance, street children came in my mind. Then I thought why not to make a project to teach the street girls computer skills. +

    + +

    + Although I decided to do this project, it was not easy. Oscillating between organizations was exhausting. After nearly two months, I was able to conduct my project with Child Watabaran Center. +

    + +

    + This September I taught 10 girls of Child Watabaran Center basic computer skills. For them, Google and YouTube were completely strange. +

    + +

    + When I went for the first day to teach, I clearly remember, one student came to me and requested me to teach them how to use Google. She had heard about Google and Facebook but she did not know how it appeared in computer screen. I attempted to teach them my best and hope that I could meet their expectations. +

    + +

    + I conducted training for 4 days. During that tenure, they learned basic computer skills like creating new user account, setting password, making new folders and how to turn on and off computer, to use MS Word and PowerPoint . They were able to do research on Google, create new email address. +

    + +

    + During the training, I was impressed by their enthusiasm. They always wanted to learn more and asked me whether I could teach more new things. +

    + +

    + The satisfaction when they said they learned new thing with sweet smile was indescribable. I want to thank Code for Nepal for providing me this opportunity to help others. +

    +
    +

    +

    +
    +
    +
    + + + +
    +
    +
    +

    What I learned from teaching digital skills to other women

    + Published October 12, 2014 +

    image

    +

    +
    +
    +
    + +
    + +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/2/index.html b/blog/page/2/index.html new file mode 100644 index 00000000..789c1e1f --- /dev/null +++ b/blog/page/2/index.html @@ -0,0 +1,393 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 2 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Code for Nepal and DataCamp Partnership: Empowering Data Literacy and Career Growth

    + Published April 11, 2023 +

    Code for Nepal is a non-profit organization that aims to increase digital literacy and access to technology in Nepal. We focus on providing training and resources for coding and data literacy, as well as advocating for policies and programs that support technology education and access. Code for Nepal also works to promote the use of technology to address social issues and improve the lives of Nepali people.

    +

    +
    +
    +
    + +
    +
    +
    +

    Survey Form Deployment and Data Pipeline

    + Published March 28, 2023 +

    This project is about collecting data by doing survey. Simply, survey data on social media usage is collected. We will be using deploying a single page that contains the survey form to the public internet. We will collect all the data on the MongoDB database. We will create an API that helps to fetch all the survey data from the MongoDB database. You can see the deployed survey form in this link.
    +After deploying the survey form, we will create a data pipeline that consists of fetching the data from the database and cleaning the data for further use in visualization and analysis. We will be using Airflow for scheduling these two processes one after another. Airflow is an open-source platform for developing, scheduling, and monitoring different workloads. It provides a graphical user interface to manage our workloads.

    +

    +
    +
    +
    + +
    +
    +
    +

    Workflow of Data Engineering Project on AWS

    + Published March 27, 2023 +

    1.    Architecture Diagram:
    +

    +

    +
    +
    +
    + +
    +
    +
    +

    A/B testing Implementation Using Python

    + Published March 16, 2023 +

    In the business domain, it’s important to recognize the significance of using data to make informed decisions that can improve the efficacy of the product or marketing strategies. A/B testing or Bucket testing is a widely used and highly effective statistical method for optimizing digital assets such as web pages, emails, and ads. By testing different variations of these assets, businesses can gather valuable data on how each version performs and use that information to make data-driven decisions about which elements to include or remove. A/B testing can be used to optimize a variety of factors, including headlines, images, copy, calls-to-action, and more, and can lead to significant improvements in key metrics such as click-through rates, conversion rates, and revenue. This blog post will guide you through a detailed process for implementing A/B testing along with an example implementation using python.

    +

    +
    +
    +
    + +
    +
    +
    +

    Data Pipeline with Apache Airflow and Fast API

    + Published February 21, 2023 +

    The word Pipeline in general triggers a connections like image in our mind. Well data pipelines are no differ from that. These days organizations/institutions have huge volume of data which are generated through various sources, these data are known as “Big Data”. For processing these big data efficiently such that it saves time and improves results we require data pipeline.Data pipelines are created for ETL process, where data is collected from various sources, it is then transformed into desired format and finally stored.

    +

    +
    +
    +
    + +
    +
    +
    +

    Use of Transfer Learning in Early Pneumonia Detection

    + Published February 16, 2023 +

    Transfer learning is a technique in machine learning where a pre-trained model is used as a starting point for a new task, rather than training a new model from scratch. It is beneficial for disease detection because it can leverage the features learned from a large dataset to improve the accuracy of smaller datasets, leading to faster and more efficient diagnosis.
    +Now, let’s apply this concept to detecting diseases like pneumonia. Traditional machine learning models require large datasets to learn from, which can be a challenge in the medical field where data is often scarce or private. But with transfer learning, we can take advantage of pre-trained models that have already learned complex features from huge datasets of images. By fine-tuning these models on smaller datasets of medical images, we can achieve higher accuracy and faster diagnoses.

    +

    +
    +
    +
    + +
    +
    +
    +

    Analysis of the trend of internet usage in Nepal

    + Published February 16, 2023 +

    Since the introduction of the Internet in 1993 in Nepal, the country has witnessed the exponential growth of the internet in the last decade, especially in the 2010s. With the increase in digitalization, the internet has become the most essential tool in diverse sectors all over Nepal. And especially after the proclamation of the Federal Democratic Constitution in 2015 AD, the Internet became vital for services in government and most of the commercial sectors. It was during this period that social media also became increasingly popular, and with the introduction of smartphones, the platform has exploded. One of the most prominent examples is that of the Tik Tok. In the last two years, the percentage of internet users who responded to using TikTok rose from 3% to 55%. Last but not least, according to Google Trends, Nepal is the second most searched country for “chatGPT” terms.

    +

    +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/20/index.html b/blog/page/20/index.html new file mode 100644 index 00000000..ea2e1141 --- /dev/null +++ b/blog/page/20/index.html @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 20 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    My attempt to introduce women to the digital world

    + Published September 20, 2014 +

    **Yogina Shakya, **__o__ne of our grantee is organizing a digital empowerment training for 10 professional women in Dang. Yogina was one of our trainees in this summer. Read her essay below on what inspired her to organize the training.**
    +**

    +

    +
    +
    +
    + +
    +
    +
    +

    Code for Nepal Empowers Women, 15 photos

    + Published September 02, 2014 +

    From July 21st to August 1st, we organized a digital empowerment training for 21 young women in Nepal. The two-week training boosted their digital skills and empowered them as future leaders.

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    +
    +

    Code for Nepal runs digital empowerment training for women

    + Published July 16, 2014 +

    + imageContact:          Mia Mitchell +

    +

    +
    +
    +
    + +
    +
    +
    +

    Digital Empowerment Training – Summer 2014

    + Published July 07, 2014 +

    code for nepal

    +

    +
    +
    +
    + +
    +
    +
    +

    Visualizing district level poverty in Nepal

    + Published April 21, 2014 +

    This map shows percentage of population living in poverty in districts in 2011.

    +

    +
    +
    +
    + +
    +
    + +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/21/index.html b/blog/page/21/index.html new file mode 100644 index 00000000..06e84484 --- /dev/null +++ b/blog/page/21/index.html @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 21 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Visualizing the number of teachers in 2011

    + Published April 06, 2014 +

    You can also view the number of teachers in the table below. Districts are arranged in an alphabetical order.

    +

    +
    +
    +
    + +
    +
    +
    +

    Does educating girls reduce fertility rates in South Asia?

    + Published March 09, 2014 +

    Numbers from World Development Indicators show that the higher the level of female education, the lower the fertility rate.

    +

    +
    +
    +
    + +
    +
    +
    +

    Top 10 languages spoken as mother tongues in Nepal

    + Published February 28, 2014 +

    “There are 123 languages spoken as mother tongue reported in census 2011. Nepali is spoken as mother tongue by 44.6 percent (11,826,953) of the total population followed by Maithili (11.7% 3,092,530).” – Central Bureau of Statistics (CBS).

    +

    +
    +
    +
    + +
    +
    +
    +

    What's the largest caste/ethnicity in Nepal?

    + Published February 25, 2014 +

    _“There are 125 caste/ethnic groups reported in the census 2011. Chhetri is the largest caste/ethnic groups having 16.6% (4,398,053) of the total population followed by Brahman-Hill (12.2% ; 3,226,903).” — Central Bureau of Statistics (CBS).
    +_

    +

    +
    +
    +
    + +
    +
    +
    +

    Prototype: Nepal School Rankings

    + Published February 23, 2014 +

    image

    +

    +
    +
    +
    + +
    +
    +
    +

    Shape files of districts in Nepal

    + Published February 23, 2014 +

    We have cleaned and verified the shape files of districts in Nepal for everyone to use.

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/3/index.html b/blog/page/3/index.html new file mode 100644 index 00000000..66860ef6 --- /dev/null +++ b/blog/page/3/index.html @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 3 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Performing a Mann-Kendall Trend Test for Temperature Data in Python

    + Published August 29, 2022 +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    +

    +
    +
    +
    + +
    +
    +
    +

    Use of Python in the biological environment- Prey Predators Equation (Lotka–Volterra model)

    + Published May 23, 2022 +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    +

    +
    +
    +
    + +
    +
    +
    +

    Go Beyond CSV: Data Ingestion with Pandas

    + Published April 16, 2022 +

    Mala Deep is a Business Intelligence Consultant, and community focused data citizen.

    +

    +
    +
    +
    + +
    +
    +
    +

    Basics of Multiple Linear Regression using R

    + Published April 15, 2022 +

    Photo by Luke Chesser on Unsplash +Photo by Luke Chesser on Unsplash

    +

    +
    +
    +
    + +
    +
    +
    +

    How DataCamp and Code for Nepal helped me learn data engineering for free

    + Published April 06, 2022 +

    Mala Deep is a Business Intelligence Consultant, and a lifelong learner. He likes to blog and share his love for data.

    +

    +
    +
    +
    + +
    +
    +
    +

    How can Data Science change the future of the environment and climate?

    + Published April 04, 2022 +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    +

    +
    +
    +
    + +
    +
    +
    +

    From a Data fellow at Code For Nepal to Program Assistant for the Fellowship Program

    + Published April 04, 2022 +

    Prayatna Mishra is an undergraduate student currently studying in Deerwalk Institute of technology. He believes in giving back to the community.

    +

    +
    +
    +
    + +
    +
    +
    +

    Experience being a data fellow at Code for Nepal and internship at Open Knowledge Nepal

    + Published July 11, 2021 +

    Binita Gyawali, a graduate of Computer Science and Information Technology from Butwal Multiple Campus, data Science journey with Code for Nepal and Open Knowledge Nepal.

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/4/index.html b/blog/page/4/index.html new file mode 100644 index 00000000..8816b8e7 --- /dev/null +++ b/blog/page/4/index.html @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 4 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    My Code For Nepal Data Fellowship Experience as an Actuarial Science Student

    + Published June 26, 2021 +

    Everyone who is reading my blog, hello and Namaste. Hello, my name is Krishna Kumar Shrestha, and I am now studying for a bachelor’s degree in Actuarial Science at Tribhuvan University. I was born in Banepa and currently reside in Kathmandu. My favorite subject has always been mathematics, and I’ve always wanted to work in disciplines linked to mathematics.

    +

    +
    +
    +
    + +
    +
    +
    +

    Reflecting on the journey and bidding farewell to Code for Nepal community

    + Published June 18, 2021 +

    I remember the exact date, it’s October 17th, 2016 - A day when I landed into the AskNepal initiative while doing random online research; a day when I casually message one of the founders of Code for Nepal, Ravi Kumar, expressing my interest in leading and contributing. Looking back, it’s difficult for me to summarize the journey in words; almost 5 years went by within the blink of eyes.

    +

    +
    +
    +
    + +
    +
    +
    +

    Upskilling in the domain of mechanical engineering with data science

    + Published June 16, 2021 +

    I am Nabin Joshi, aData fellow at Code for Nepal +. I am a mechanical engineering student. I received my bachelor’s degree in 2019 from Kathmandu University. Many technological advancements radically modified machines over time, due to researchers and scientists that worked tirelessly to make things happen the way they are now. Machines, which were completely mechanically driven only a few years ago, have now begun to work automatically, thanks to programming, artificial intelligence, machine learning, and other technologies. This progress piqued my curiosity, which evolved into a desire to pursue Mechanical Engineering as a bachelor’s degree.

    +

    +
    +
    +
    + +
    +
    +
    +

    Running list of fundraisers to support Nepal to fight COVID-19

    + Published May 17, 2021 +

    Let us all help the volunteers and organizations who are helping Nepal by building a database of all the fundraisers and their expected goals. A database will help Nepalis identify funding gaps and take appropriate actions.

    +

    +
    +
    +
    + + + +
    + +
    + +
    +
    +
    +

    How DataCamp is helping me learn data science

    + Published April 11, 2021 +

    Launching a Fellowship program to build data skills of over 500 Nepalis globally

    +

    +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/5/index.html b/blog/page/5/index.html new file mode 100644 index 00000000..646ef349 --- /dev/null +++ b/blog/page/5/index.html @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 5 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    Cumulative number of confirmed COVID-19 cases in Nepal has increased dramatically'

    + Published November 21, 2020 +

    Just 6 months ago, Nepal had just 1,500 confirmed cases of COVID-19 in Nepal. Since then the number of confirmed cases has increased dramatically in the country. Globally, experts are warning that during winter COVID-19 cases will likely rise as gatherings move indoors.

    +

    +
    +
    +
    + +
    +
    +
    +

    Google data now shows fewer people in Nepal are staying indoors amid the Coronavirus pandemic

    + Published May 19, 2020 +

    The Government of Nepal has reported over 350 COVID-19 positive cases and two deaths due to this novel coronavirus as of this writing. To prevent the mass spread, Nepal has been under a national lockdown since March 24.

    +

    +
    +
    +
    + +
    +
    +
    +

    You are a young woman and want to excel in the tech market in Nepal? Apply for this fellowship by March 19

    + Published March 07, 2020 +

    Hawkins Fellows from the class of 2019.
    +

    +
    +
    +
    + +
    +
    +
    +

    NepalMap Federal – Explore and understand Nepal using data

    + Published February 24, 2020 +

    Code for Nepal has just launched the federal version of NepalMap, a web app that puts data about Nepal at your fingertips! Since 2016, this data portal has been the go-to source for many journalists, researchers, entrepreneurs and students; when they are looking for data or data visualizations.

    +

    +
    +
    +
    + + + +
    +
    +
    +

    Chart: Companies in Provinces of Nepal

    + Published October 21, 2019 +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    My Journey at Insight Workshop through the Hawkins Fellowship

    + Published September 19, 2019 +

    One morning I applied for an academy program in Insight Workshop (IW), a Software Company located in Naxal, Kathmandu. The deadline was just the night before. Luckily my application was counted. (Big thanks to my dearest friend Rachana for this). After a rigorous application process I was selected for the program. I also applied for this program from Hawkins Fellowship Program by Code for Nepal. I got selected as a Hawkins fellow from there too. I can’t express in words the feelings that I had that day. I was so excited and nervous about this journey.

    +

    +
    +
    +
    + +
    +
    +
    +

    DataHack 2019- crowdsourcing map data to ease the humanitarian and relief activities

    + Published July 26, 2019 +

    On July 20 and 21, fifteen humanitarian tech enthusiasts came to the DataHack 2019 – Map the districts affected by monsoon in Nepal at Outside’s office in Jhamsikhel, Lalitpur. The aim of the DataHack was to map the several districts which have been affected by monsoon rains in Nepal.

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/6/index.html b/blog/page/6/index.html new file mode 100644 index 00000000..0bb20c69 --- /dev/null +++ b/blog/page/6/index.html @@ -0,0 +1,394 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 6 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    First month as a Software Engineer Trainee at Insight Workshop

    + Published May 28, 2019 +

    I applied for this workshop from both Insight website as well as from Code for Nepal fellowship. It was an amazing feeling to know that I had got selected for both. I thought “WOW! I can do this.” I felt more energetic: all I could feel was positive vibes.

    +

    +
    +
    +
    + +
    +
    +
    +

    First month as a software engineering trainee

    + Published May 28, 2019 +

    After being selected as one of the Hawkins fellow, I searched for Insight workshop’s further background, course curriculum outline and its location to make sure I am going to the right place. In my view, most of the Nepali students get internship experiences where they just come to complete the syllabus of internship or the internship becomes a phase where students begin to lose their zeal in technology. Often, interns do not learn anything due to lack of guidance. I had a slight skepticism whether the workshop would be as promising as it looked. But when I entered Insight Workshop, it was nothing like what I have encountered in the past. It was fairly disparate from any other technology companies in Nepal. It was an ecstatic moment for me when I could see the academy was professionally equipped, provided with well defined resources and supported by highly experienced mentors.

    +

    +
    +
    +
    + +
    +
    +
    +

    My First Month Experience as a Hawkins Fellow

    + Published May 28, 2019 +

    It has already been a month of joining the program as a Hawkins fellow. In these four weeks, I have learnt a lot about the tasks I should be doing as a software engineer.

    +

    +
    +
    +
    + +
    +
    +
    +

    What does Code for Nepal symbolize for our Community member Richa?

    + Published May 18, 2019 +

    + Recognizing and thanking Code for Nepal Community members +

    +

    +
    +
    +
    + +
    +
    +
    +

    Introducing our Hawkins Fellows

    + Published April 30, 2019 +

    I joined Code for Nepal this April and my first task was selecting the Hawkins Fellows. There were 24 applicants and out of them eight were called for phone interview. I had to make decisions quickly so we could match the Fellowship timeline for the Insight Workshop training program. I read the stories of the finalists again and again and tried to find a good mix of the fellows according to their diversity and strengths. Within a few days, I communicated with the selected fellows and they responded immediately and have started the fellowship. I sent out rejection letter to the rest of the candidates who I had interviewed. To be honest all the candidates’ stories were exceptional. A few did not meet the education or programming language requirement. I encourage all of those who applied but did not hear from us or did not get selected to continue your hard work and to continue taking advantage of such opportunities. It is great to see that you have already taken the steps towards closing the gender gap in technology by choosing to work in this field and already are role models to many.

    +

    +
    +
    +
    + +
    +
    +
    +

    Internship in Janakpur

    + Published April 23, 2019 +

    We are pleased to announce our partnership with Internet Market Today for a three-month internship program in Janakpur, Nepal. Internet Market Today is a digital advertising agency based in Janakpur.

    +

    +
    +
    +
    + +
    +
    +
    +

    Apply by April 12 for Hawkins Fellowship to learn how to excel in the tech market in Nepal

    + Published April 05, 2019 +

    + We are pleased to announce that applications are open for the first batch of Hawkins Fellows. The objective of the 12 week fellowship program organized by Code for Nepal in partnership with Insight Workshop is to help increase female talent in the technology job market in Nepal. +

    +

    +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/7/index.html b/blog/page/7/index.html new file mode 100644 index 00000000..a306ddb3 --- /dev/null +++ b/blog/page/7/index.html @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 7 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + + + +
    +
    +
    +

    Project Manager for Code for Nepal

    + Published February 21, 2019 +

    General information:

    +

    +
    +
    +
    + +
    +
    +
    +

    Read Nikesh’s insights about Code for Nepal

    + Published February 17, 2019 +

    +

    +
    +
    +
    + +
    +
    +
    +

    Which Provinces have the highest and lowest literacy rate in Nepal

    + Published February 16, 2019 +

    Photo: Nischal Poudel
    +

    +
    +
    +
    + +
    +
    +
    +

    Most visited places by tourists in Nepal in 2017

    + Published January 24, 2019 +

    A view from Nagarkot, Nepal

    +

    +
    +
    +
    + +
    +
    +
    +

    Which province has the highest wealth inequality in Nepal

    + Published January 06, 2019 +

    +

    +
    +
    +
    + +
    + +
    + +
    +
    +
    +

    Read why Asmita Gauchan leads strategy at Code for Nepal

    + Published December 20, 2018 +

    Asmita Gauchan - Director Code for Nepal
    Asmita Gauchan, Director of Strategy at Code for Nepal.
    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/8/index.html b/blog/page/8/index.html new file mode 100644 index 00000000..b00e3604 --- /dev/null +++ b/blog/page/8/index.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 8 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + +
    +
    +
    +

    #VisitJanakpur Social Media Photo Challenge

    + Published December 18, 2018 +

    +

    +
    +
    +
    + +
    +
    +
    +

    Give coding scholarships to young women in Nepal

    + Published November 23, 2018 +

    +

    +
    +
    +
    + +
    +
    +
    +

    Improving digital footprint of Janakpur

    + Published November 23, 2018 +

    In October Code for Nepal organized the “Digitizing Janakpur Workshop” in collaboration with Appan TV, Internet Market Today, SotryCycle and other stakeholders to digitize Janakpur using photos and videos so, that we can attract more tourist supporting the Nepal Government “Visit Nepal 2020” initiative and also launch Visit Janakpur (https://www.visitjanakpur.com) project in partnership with Nepal Tourism Board,  Ministry of Industry, Tourism and Environment of Province 2 and Janakpurdham Sub-Metropolitan City in Nepal. Here is the brief overview of what happened in the two and half days workshop.

    +

    +
    +
    +
    + +
    +
    +
    +

    Cliff McIntosh uses his software development skills for social good through Code for Nepal

    + Published November 10, 2018 +

    + + +

    + Photo: Cliff McIntosh +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    Which districts in Nepal produce the most eggs?

    + Published November 04, 2018 +

    We are all familiar with the question ‘Who came first- the egg or the chicken’? Well, it is impossible to answer this question but meanwhile, we have some egg-citing information for you.

    +

    +
    +
    +
    + + + +
    +
    +
    +

    Pratima Kandel on why she is part of Code for Nepal

    + Published October 03, 2018 +

    + Pratima Kandle is a Code for Nepal member. + +

    + Pratima Kandel is a Code for Nepal member. +

    +
    +

    +
    +
    +
    + +
    +
    +
    +

    Top five countries that send the most tourists to Nepal

    + Published September 23, 2018 +

    +

    +
    +
    +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/page/9/index.html b/blog/page/9/index.html new file mode 100644 index 00000000..9af954bf --- /dev/null +++ b/blog/page/9/index.html @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog - page 9 | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Blog

    +
    + + + + +
    +
    +
    +

    Which province in Nepal has the highest population?

    + Published August 19, 2018 +

    +

    +
    +
    +
    + +
    +
    +
    +

    Which district in Nepal has the most forested land?

    + Published July 29, 2018 +

    +

    +
    +
    +
    + +
    +
    +
    +

    Which districts in Nepal produce the most milk?

    + Published June 10, 2018 +

    +

    +
    +
    +
    + +
    +
    +
    +

    Using Resource Watch in the context of Nepal

    + Published June 02, 2018 +

    In April 2018, the World Resources Institute launched Resource Watch, which “provides trusted and timely data for a sustainable future.” This blog will use the Resource Watch platform, by looking at different datasets in the context of Nepal.

    +

    +
    +
    +
    + +
    +
    +
    +

    4 charts that show Nepal has made progress

    + Published June 02, 2018 +

    Subarna Tandukar

    +

    +
    +
    +
    + +
    +
    +
    +

    Postcard from Janakpur- A Project Update!

    + Published May 31, 2018 +

    +

    +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/codeofconduct/index.html b/codeofconduct/index.html new file mode 100644 index 00000000..85a18af4 --- /dev/null +++ b/codeofconduct/index.html @@ -0,0 +1,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code of Conduct | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Contributor Covenant Code of Conduct

    +


    +

    Our Pledge

    + +

    We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation.

    + +

    We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community.

    + +

    Our Standards

    + +

    Examples of behavior that contributes to a positive environment for our +community include:

    + +
      +
    • Demonstrating empathy and kindness toward other people
    • +
    • Being respectful of differing opinions, viewpoints, and experiences
    • +
    • Giving and gracefully accepting constructive feedback
    • +
    • Accepting responsibility and apologizing to those affected by our mistakes, +and learning from the experience
    • +
    • Focusing on what is best not just for us as individuals, but for the +overall community
    • +
    + +

    Examples of unacceptable behavior include:

    + +
      +
    • The use of sexualized language or imagery, and sexual attention or +advances of any kind
    • +
    • Trolling, insulting or derogatory comments, and personal or political attacks
    • +
    • Public or private harassment
    • +
    • Publishing others’ private information, such as a physical or email +address, without their explicit permission
    • +
    • Other conduct which could reasonably be considered inappropriate in a +professional setting
    • +
    + +

    Enforcement Responsibilities

    + +

    Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful.

    + +

    Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate.

    + +

    Scope

    + +

    This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event.

    + +

    Enforcement

    + +

    Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly.

    + +

    All community leaders are obligated to respect the privacy and security of the +reporter of any incident.

    + +

    Enforcement Guidelines

    + +

    Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct:

    + +

    1. Correction

    + +

    Community Impact: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community.

    + +

    Consequence: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested.

    + +

    2. Warning

    + +

    Community Impact: A violation through a single incident or series +of actions.

    + +

    Consequence: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban.

    + +

    3. Temporary Ban

    + +

    Community Impact: A serious violation of community standards, including +sustained inappropriate behavior.

    + +

    Consequence: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban.

    + +

    4. Permanent Ban

    + +

    Community Impact: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals.

    + +

    Consequence: A permanent ban from any sort of public interaction within +the community.

    + +

    Attribution

    + +

    This Code of Conduct is adapted from the Contributor Covenant, +version 2.0, available here.

    + +

    Community Impact Guidelines were inspired by Mozilla’s code of conduct +enforcement ladder.

    + +

    For answers to common questions about this code of conduct, see the FAQ. Translations are available here. +
    +

    + + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/feed.xml b/feed.xml new file mode 100644 index 00000000..8e8a87b5 --- /dev/null +++ b/feed.xml @@ -0,0 +1,2062 @@ +Jekyll2023-12-27T05:53:10+00:00/feed.xmlCode for NepalCommunity of volunteers helping address Nepal's challenges using civic tech to innovate, organize and advocate digital literacyComprehensive Examination of Superstore Sales Trends and Performance Analysis2023-12-20T00:00:00+00:002023-12-20T00:00:00+00:00/2023/12/20/comprehensive-analysis-of-superstore-sales-trends-and%20-performance-analysis<p>Data analysis is pivotal in fostering business growth. Owners must possess a comprehensive understanding of their business analytics to strategically elevate profitability. However, meticulously tracking every sales pattern, discerning customer behaviors, and assessing profitability proves challenging for owners. This is where Data Analysis becomes indispensable. A proficient Data Analyst adeptly uncovers latent sales patterns, delineates diverse trends, and establishes correlations between various parameters. Equipped with this invaluable information, owners gain the ability to target and fortify weaker aspects of their business.</p> + +<p>For example, manufacturing companies often record the runtime, downtime, and work queue for various machines and then analyze the data to better plan workloads so the machines operate closer to peak capacity.</p> + +<p>Now, let’s examine the sales data from a big store worldwide. This project serves as a concise illustration of the diverse sales patterns perceivable within data, offering valuable insights and actionable conclusions that hold the potential to positively impact your business operations.</p> + +<p>We’ll use the Pandas library to handle our data — importing, cleaning, and organizing it. For visualizing the data, we’ll turn to Matplotlib and Seaborn libraries.</p> + +<h1 id="dataset">DATASET</h1> + +<p><a href="https://www.kaggle.com/datasets/fatihilhan/global-superstore-dataset">https://www.kaggle.com/datasets/fatihilhan/global-superstore-dataset</a></p> + +<h1 id="importing-libraries">Importing Libraries</h1> + +<p>We have used “read_csv()” function from Pandas library to import the dataset.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:706/1*oUgoVi2lup8tGABkUyxSgA.png" alt="" /></p> + +<h1 id="a-first-glimpse">A First Glimpse</h1> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*pRL89CsVd9KOPKrqO_5pZw.png" alt="" /></p> + +<p>We’ve got 51,290 rows and 27 columns in our data. The products are categorized into ‘categories’ and ‘sub-categories’ columns. Each row has details like product name, customer, order date, order ID, profit, discount, and more.</p> + +<p>We’ve got an unspecified column that needs to be removed. After that, we’ll dig into each feature in our dataset to gather insights.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*vGf3OYIBiJkay6dKmXPMVQ.png" alt="" /></p> + +<p>Once we’ve gathered plenty of info about our data, it’s time to visualize and extract insights.</p> + +<h1 id="visualizing-the-data">Visualizing the Data</h1> + +<p>Let’s check what is the number of orders per category.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*iVdV7uvSoIdPQ2ySqNoH_Q.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*5_6eAN6w2RV-b-_8MrKElA.png" alt="" /></p> + +<p>This graph tells us that around 60% of orders are for Office Supplies, followed by Technology and Furniture categories.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*rIihilMwXv3KW4FIiIcQaA.png" alt="" /></p> + +<p>Looking at the chart, we see that around 55% of sub-categories belong to Office Supplies. This explains why 60% of orders are for this category. Similarly, Binders are popular compared to others, followed by Storage and Art sub-categories.</p> + +<p>Now, let’s look at the Discount column.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1384/1*qDmd4G06C5WsotmsCLgbrg.png" alt="" /></p> + +<p>Out of 51,290 orders, 22,281 were made with discounts, roughly 45%. It looks like most people prefer buying discounted items. On average, the discount is around 15%.</p> + +<p>Next, we’ll group the discount percentages into categories: none, low discount (0–25%), medium discount (25%-50%), high discount (50%-75%), and very high discount (75% and above) to gain deeper insights.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*MMRYOjeYKCkhU1XJfh91QQ.png" alt="" /></p> + +<p>Let’s plot the chart of orders per discount category</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1370/1*jtMLArfrh5Q0_u0ziZc1ww.png" alt="" /></p> + +<p>When we look at the chart, it’s clear that ‘Office Supplies’ gets higher discounts. Most orders have low discounts, but a few have high discounts.</p> + +<p>Let’s find out which types of customers are more likely to order.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*-FuQq9ur0poSqwM7GVfNrA.png" alt="" /></p> + +<p>The chart shows most orders come from customers, followed by corporations and the Home Office. All categories seem equally popular among these segments. There isn’t a specific category that stands out for any particular segment.</p> + +<p>Now, let’s see which shipping mode is used the most.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*3A8qS4Dwc3pOXoezGB3bmw.png" alt="" /></p> + +<p>From this figure, we can say Standard Class shipping mode is mostly used roughly 55- 60%.</p> + +<p>Now, let’s check sales in each market.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1308/1*bGCR4OMLnEZSjwX0Z-JkUA.png" alt="" /></p> + +<p>The Asia-Pacific region has the highest sales, followed by the US, EU, and LATAM regions. Sales are lowest in Canada.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1166/1*ywM7ciqyMZPvpmBPgzfI6A.png" alt="" /></p> + +<p>Most orders are from the US superstore (9994), followed by Australia (2837), France (2827), Mexico (2644), and Germany (2065). Supermarkets in South Sudan, Chad, and Swaziland have the fewest orders.</p> + +<p>Let’s explore the profits now.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*6t3TUoA-WHTwRaqpQHyvkw.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*aXJgV_R0XamZ_3qS49YviQ.png" alt="" /></p> + +<p>This chart reveals that the technology category has the highest net profit, followed by office supplies and furniture.</p> + +<p>When it comes to average profit per order, Technology leads, followed by Furniture, while Office supplies have the lowest average profit per order.</p> + +<p>Even though the office supplies category has more products, the Technology category sees a much higher average profit per order and net profit.</p> + +<p>Let’s check the scenario for each sub-category.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*k5VdBLcIb13qaPLYHEbQDg.png" alt="" /></p> + +<p>This chart highlights that Copiers generate the highest average profit across all categories, making $116.315 per order, followed by Appliances at $81. However, the Table category incurs a loss, averaging at -$75 per order.</p> + +<p>Next up, let’s check profits by country.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*rCsAat22wYgUEQJj0zs7Bg.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*m8ToqZHEu_wcCw2T09ZTTg.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*5_CZTFXsypfv-2sG2KlqkA.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*yHsry-gOuO6jbZL-hztBjg.png" alt="" /></p> + +<p>This chart shows that the supermarket in Montenegro is making the highest av. profit of 321.69 dollars, whereas Lithuania is making av. loss of 180 dollars.</p> + +<p>Total profit per country:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*yiQnHoIZlL0ftBsg3sHaYw.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*t4yFyiY443JSM1BT00jyGA.png" alt="" /></p> + +<p>However, in the US, supermarkets are making the highest profit, totaling $29,000. And, Turkey, they’re facing the highest loss, amounting to $99,000, followed by Nigeria with a loss of $80,000.</p> + +<p>A line plot showing the total profit per market across three years:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*knlCyzuKa9Wy4MgKU8IeyQ.png" alt="" /></p> + +<p>This line plot indicates that the total profit in the Asia-Pacific region has steadily increased and is the highest among the tracked periods.</p> + +<h1 id="conclusions-and-suggestion">Conclusions and suggestion</h1> + +<ol> + <li>The Office Supplies category has lots of products but makes less average profit compared to Technology.</li> + <li>Since Technology has the highest profit, focusing on more products in this category could boost business.</li> + <li>Customers are attracted by discounts. Offering around 15% off might increase sales.</li> + <li>Careful discount allocation shows the company’s smart strategy.</li> + <li>Most use the Standard Class shipping. Investing here could improve profits.</li> + <li>Even though the US has a lower average profit per order, high sales result in high profits for supermarkets.</li> + <li>The Table category faces significant losses, suggesting discontinuation.</li> + <li>Asia-Pacific markets have good customer numbers and profitability</li> +</ol> + +<p>This project vividly demonstrates the transformative power of data analysis in optimizing business strategies. The utilization of graphs and tables unveils invaluable insights pivotal for business expansion. However, it’s crucial to recognize that data analysis isn’t confined solely to business realms; its influence spans across disciplines like scientific research, machine learning, and beyond. By embracing and mastering data analysis, individuals not only empower businesses but also contribute significantly to advancements in diverse fields. Ultimately, learning this skill emerges as a catalyst for personal and professional growth, opening doors to a multitude of opportunities.</p> + +<hr /> +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Ayush, and several other fellows access to DataCamp, to learn and grow.</p>Ayush AdhikariData analysis is pivotal in fostering business growth. Owners must possess a comprehensive understanding of their business analytics to strategically elevate profitability. However, meticulously tracking every sales pattern, discerning customer behaviors, and assessing profitability proves challenging for owners. This is where Data Analysis becomes indispensable. A proficient Data Analyst adeptly uncovers latent sales patterns, delineates diverse trends, and establishes correlations between various parameters. Equipped with this invaluable information, owners gain the ability to target and fortify weaker aspects of their business.Deciphering Trends and Patterns in Electric Vehicle Adoption, A Comprehensive Analysis2023-12-18T00:00:00+00:002023-12-18T00:00:00+00:00/2023/12/18/deciphering-trends-in-ev-adoption<p>The world of electric vehicles (EVs) is evolving rapidly, marked by technological advancements and a growing shift towards sustainable transportation. With a dataset encompassing 32,783 entries and 17 columns sourced from (<a href="https://catalog.data.gov/dataset/electricvehiclepopulationdata">https://catalog.data.gov/dataset/electricvehiclepopulationdata</a>), my analysis focused on understanding various facets of this transformative landscape.</p> + +<h2 id="dataset-overview">Dataset Overview</h2> + +<p>This dataset offered a comprehensive view of EVs, detailing aspects such as VIN (Vehicle Identification Number), model year, make, model, electric range, base manufacturer’s suggested retail price (MSRP), and geographic distribution.</p> + +<h2 id="data-preprocessing">Data Preprocessing</h2> + +<p>To streamline the analysis, we initially narrowed our focus to cars manufactured in 2022 onwards, creating a subset called <code class="language-plaintext highlighter-rouge">electric_v_from2022</code>. This subset comprised 12,655 entries<br /> +and underwent essential preprocessing steps. Null values were identified in columns like ‘Model’ and ‘Legislative District,’ amounting to 68 and<br /> +3 missing entries, respectively. These missing ‘Model’ values were meticulously filled based on ‘Model Year’ and ‘Make’ using a mapping technique, ensuring data integrity. Additionally, columns like ‘Postal Code,’ ‘Legislative District,’ ‘DOL Vehicle ID,’ and ‘Vehicle Location’ were deemed irrelevant for our analysis and were dropped, refining the dataset further.</p> + +<h2 id="key-insights">Key Insights</h2> + +<h3 id="make-wise-distribution">Make wise Distribution</h3> + +<p>The dataset revealed Tesla as the dominant player in the EV market, with 15,510 entries, followed by Nissan (3,150) and Chevrolet (2,611). This highlighted Tesla’s significant presence compared to other manufacturers in the EV space.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1160/1*0sH-XYVP5xV-g2TU5-xipg.png" alt="" /></p> + +<h3 id="manufacturer-trends-by-year">Manufacturer Trends by Year</h3> + +<p>An analysis based on the number of cars manufactured each year showcased a substantial<br /> +increase in 2022, with 7,016 entries, followed by 2023 (5,632) and 2021 (4,429). This indicated<br /> +a rising trend in the production of EVs, particularly in recent years.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*GjaHZXLMQnaK8ljZ1vEcYA.png" alt="" /></p> + +<h3 id="state-wise-manufacturer-preferences">State-wise Manufacturer Preferences</h3> + +<p>Geographical distribution of EVs across states and counties, although not provided directly, was visualized through bar plots and count plots, shedding light on regional preferences and adoption rates.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1178/1*DnLbE3sLLLKqtcAc09OjYw.png" alt="" /></p> + +<p>Further exploration into specific states, like Washington State, portrayed the prevalence of different electric vehicle makes across counties. This analysis shed light on regional preferences, offering insights into localized consumer choices.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*7JPqGXUY637INYv2zROn5w.png" alt="" /></p> + +<h3 id="manufacturer-analysis">Manufacturer Analysis</h3> +<p>Delving deeper into manufacturer trends, it’s evident that each manufacturer has its average electric range. Brands like Tesla, Toyota, and Mitsubishi showcase high average electric ranges, indicating a strong focus on longer-range vehicles.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*lIgcLmStSCgwwLbJ0ETscg.png" alt="" /></p> + +<h2 id="conclusion">Conclusion</h2> + +<p>This analysis serves as a testament to the diverse landscape of electric vehicles, highlighting trends in manufacturing, makewise distribution, and regional preferences. It underscores the growing importance of sustainable transportation and the significant role data analysis plays in<br /> +understanding and navigating this transformative industry.</p> + +<p>As the world shifts towards greener alternatives, the insights gleaned from this analysis can guide stakeholders in policymaking, manufacturing strategies, and consumer preferences within the electric vehicle domain.</p> + +<hr /> +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Pradipti, and several other fellows access to DataCamp, to learn and grow.</p>Pradipti SimkhadaThe world of electric vehicles (EVs) is evolving rapidly, marked by technological advancements and a growing shift towards sustainable transportation. With a dataset encompassing 32,783 entries and 17 columns sourced from (https://catalog.data.gov/dataset/electricvehiclepopulationdata), my analysis focused on understanding various facets of this transformative landscape.Using Machine Learning for Finding out the Red Wine Quality2023-12-18T00:00:00+00:002023-12-18T00:00:00+00:00/2023/12/18/ml-red-wine-quality<p>We all know about the significance of red wine these days. It is also better to know better about its quality and the factors which can affect its quality. In these terms, we can use our computer knowledge of ML, and predict ourselves the quality based on the different physicochemical properties. Now, this will be an estimation on the quality and people will be aware about that.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*2RSZUkBUD46mJ9D8Dhr7Lw.png" alt="" /></p> + +<p>Personally, I feel like people should learn the concepts of ML not for something as hesitant, but for the study and learning the nature of relationships and predictions based on our algorithms. That way they can be confident in their results and seek better results not just on some particular aspects but on everything that has target and response variables.</p> + +<p>Here, for the quality of red wine, I am using the dataset from 2009 from the Kaggle. I will be highlighting the procedure on the data visualization, preprocessing and model prediction and finally will focus on its significance.</p> + +<p>I. Dataset</p> + +<p>The dataset is from the following link in Kaggle:</p> + +<p><a href="https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009">https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009</a> ?datasetId=4458&amp;sortBy=voteCount. Here is a quick snapshot of the data frame.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*1jqkBLDaUH_ik3bW48SZnw.png" alt="" /></p> + +<p>We carry a basis test on the data frame to check whether there are any null entries or not and are there any duplicated items and perform the summary statistics on the dataset and the result is as follows. There were no null entries but 240 duplicated rows and we dropped those duplicated rows.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*F3SQed-VhJODXYEH7lmhrQ.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*jdteUpa7zUNGh2cnQE6umQ.png" alt="" /></p> + +<p>II. Data Preprocessing</p> + +<p>Now, we import the libraries, and we did a bit of analysis on the data by visualizing the probability density as it gives us insight on the distribution of data. We have already imported pandas and displayed the data, so we won’t be importing the dataset and named the dataset as redwine_df_cp.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>import seaborn as sns +import matplotlib.pyplot as plt +import numpy as np +import warnings + +warnings.filterwarnings('ignore') +plt.style.use('seaborn') +fig = plt.figure(figsize=(15,15)) + +for index, column in enumerate(redwine_df_cp.columns): + plt.subplot(4,3,index+1) + sns.distplot(x = redwine_df_cp.loc[:, column], color = 'lightseagreen') + plt.title(column, size = 13) + fig.tight_layout() + plt.grid(True) +plt.show() +</code></pre></div></div> +<p>The result was as follows:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*PFoLJo-JHAitL1PnC899DQ.png" alt="" /></p> + +<p>Here, we can see that there are some datasets like chlorides which are right tailed in distribution that might be due to outliers. Now for simplicity we don’t touch outliers yet and will simply explore the dataset.</p> + +<p>Now, we will try to check the correlation between different variables using the correlation coefficient and seaborn heatmap.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*6f0lC7Dm3cl_52E7E36kng.png" alt="" /></p> + +<p>From the above heatmap, we can see that there is a positive correlation with alcohol of quality and negative with volatile acidity the most. So, we will be taking these two as prime factors for now and will be seeing their scatterplot/catplot and will see whether they are related or not.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sns.catplot(data=redwine_df_cp, x="quality", y="alcohol", hue="quality") +plt.show() +sns.catplot(data=redwine_df_cp, x="quality", y="volatile acidity", hue="quality") +plt.show() +</code></pre></div></div> + +<p>The result of the categorical plot is as follows:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*8y_hLp0q29q1uUFcQSB00w.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*ONpuMNkePBB9RpPZZ1qUZw.png" alt="" /></p> + +<p>Here, we can see that there is indeed a positive correlation with quality of alcohol as we can think about and negative with volatile acidity. But it is better if we group the quality as a group of three categories as low, medium and high quality wines. That way data visualization and training is easy and less mundane.</p> + +<p>So, we create another copy of the dataframe to preserve the structure of the dataset.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> +redwine_test_df = redwine_df_cp.copy() +redwine_test_df.head() + +# Let's define a function to help us. +def quality_value(value): + value = str(value) + if value == '3': + value = value.replace('3','low') + return value + elif value == '4': + value = value.replace('4','low') + return value + elif value == '5': + value = value.replace('5','medium') + return value + elif value == '6': + value = value.replace('6','medium') + return value + elif value == '7': + value = value.replace('7','high') + return value + elif value == '8': + value = value.replace('8','high') + return value + + +redwine_test_df['quality'] = redwine_test_df['quality'].apply(quality_value) +redwine_test_df["quality"].unique() + +</code></pre></div></div> + +<p>Now, we will again see the categorical plot of the alcohol and volatile acidity with quality.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*EnO21QIpEz-soiqCQJkVmQ.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*421EPCD0UeQIfsv-p-dG-w.png" alt="" /></p> + +<p>As we can see now, it’s much more visual and definitive to say that there is indeed positive correlation and negative correlation of alcohol and volatile acidity with quality respectively.</p> + +<p>Now, we will visualize this for the rest of the variables.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*6xr5m-I0c6tgbCD0DPhYOw.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*TgLTjeuhujmeULdbn8ogjw.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*USSFq9v-ZWRsRikXxIHeJQ.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*VjI49oNfQAwPSXuOZ-xqkQ.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*meMvf-W8GOEGOimvoGxh8w.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*f-Z3N7dACTarZgSXTvr0oQ.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*YTosTmWI55YxV_SJuEWKtQ.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*jtmPFd-ONzdfnGZpHdAG_A.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:980/1*7shguTznc-8cQjoBPTpExA.png" alt="" /></p> + +<p>Hence, we can infer that as a whole all these factors contribute to the quality of red wine, with alcohol and volatile acidity as key factors.</p> + +<p>Now, we will get onto seeing the dataset and visualizing the outliers for this we use seaborn boxplot.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> +fig = plt.figure(figsize=(15,15)) +for index,column in enumerate(list(redwine_test_df.columns[:-1])): + plt.subplot(4,3,index+1) + sns.boxplot(y =redwine_test_df.loc[:, column], x =redwine_test_df['quality'], + linewidth=2.5) + plt.title(column, size = 12) +fig.tight_layout() + +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*Gf0f5XI8SxiRxvsbDedFjQ.png" alt="" /></p> + +<p>Here, we can see the outliers in the physicochemical properties, but we won’t clear them all out. We highlight the outlier with high distribution i.e. chlorides for this purpose and we will impute median in the outlier. The code is as follows:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> +df_chlorides = redwine_test_df['chlorides'] +# distribution of the variable before cleaning +plt.figure(figsize=(8,5)) +plt.title('With Outliers') +sns.distplot(x = df_chlorides, color = '#967bb6') +# setting the threshold value +Q1 = df_chlorides.quantile(0.25) +Q3 = df_chlorides.quantile(0.75) +# interquartile range +IQR = Q3 - Q1 +lower_limit = Q1 - 1.5 * IQR +upper_limit = Q3 + 1.5 * IQR +# catching outliers +upper_outlier = (df_chlorides &gt; upper_limit) +# determining the mean and median values +mean = df_chlorides.mean() +median = df_chlorides.median() +# assigning outliers to median due to its suitability +df_chlorides[upper_outlier] = median +# distribution of the data without outliers +plt.figure(figsize=(8,5)) +plt.title('Without Outliers') +sns.distplot(x = df_chlorides, color = 'lightseagreen') + +</code></pre></div></div> + +<p>The result before and after is as follows for chloride column:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1368/1*MG9jpVv-1Q2KEH6aeHyx3Q.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1368/1*EAqNoec0Qizm4RpuF3vfdQ.png" alt="" /></p> + +<p>As, we can see the change in the dataset before and after the outlier. We will see its effect in the model performance and accuracy later on. For now, we will stick with other outliers as looking at the boxplot, other outliers don’t have much impact on the model accuracy and performance.</p> + +<p>III. Classification</p> + +<p>Now, we import all the libraries required for classification.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> +from imblearn.over_sampling import SMOTE +from sklearn.preprocessing import StandardScaler +from sklearn.model_selection import train_test_split, cross_val_score +from sklearn.metrics import accuracy_score, confusion_matrix, +classification_report +import catboost as cb +import xgboost as xgb +import lightgbm as lgb +from sklearn.naive_bayes import GaussianNB +from sklearn.svm import SVC +from sklearn.tree import DecisionTreeClassifier +from sklearn.neighbors import KNeighborsClassifier +from sklearn.linear_model import LogisticRegression +from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier +</code></pre></div></div> + +<p>Here some classifiers needs the quality column to be values such as 0, 1,2 so we switch it back accordingly.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>redwine_test_df['quality'] = redwine_test_df['quality'].map({'high': 2, 'medium': +1, 'low': 0}) +redwine_test_df['quality'].unique() +</code></pre></div></div> + +<p>Now, we separate the dataset into dependent and independent variables.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>y = redwine_test_df["quality"] +x = redwine_test_df.drop(["quality"], axis=1) +X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, +random_state=40) +</code></pre></div></div> + +<p>Now, the main thing here is Standardizing the data. The reason behind the standardization is making the data comparable by eliminating the difference in measurement units in the table. For this we use standard scalar.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>scaler = StandardScaler() +X_train = scaler.fit_transform(X_train) +X_test = scaler.transform(X_test) +</code></pre></div></div> + +<p>Then, we use SMOTE technique for removing the class imbalance</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>smote = SMOTE(random_state=40) +X_train, y_train = smote.fit_resample(X_train, y_train) +sns.countplot(y=y_train) +plt.show() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1354/1*8e9H9nj4t9X_7ZKztg314g.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1354/1*80onKqNF6aWiedHikztSxQ.png" alt="" /></p> + +<p>After and Before SMOTE Technique</p> + +<p>Now, we use the models for applying the ML.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>models = [ +('Logistic Regression', LogisticRegression()), +('Support Vector Classifier', SVC()), +('Naive Bayes', GaussianNB()), +('KNN', KNeighborsClassifier()), +('Decision Tree', DecisionTreeClassifier()), +('Random Forest', RandomForestClassifier()), +('XGBoost', xgb.XGBClassifier()), +('LightGBM', lgb.LGBMClassifier()), +('CatBoost', cb.CatBoostClassifier(verbose=0)), +('AdaBoost', AdaBoostClassifier()) +] + +conf_matrices = [] +class_reports = [] +outcomes = [] + +for model_name, model in models: + cv_results = cross_val_score(model, X_train, y_train, cv=5) + mean_accuracy = cv_results.mean() + model.fit(X_train, y_train) + y_pred = model.predict(X_test) + accuracy = accuracy_score(y_test, y_pred) + cm = confusion_matrix(y_test, y_pred) + cr = classification_report(y_test, y_pred) + conf_matrices.append((model_name, cm)) + class_reports.append((model_name, cr)) + outcomes.append((model_name, mean_accuracy, accuracy)) + +df_results = pd.DataFrame(outcomes, columns=['Model', 'Cross-Validation +Accuracy', 'Test Accuracy']) +df_results.sort_values('Cross-Validation Accuracy', ascending=False, +inplace=True) + +df_results +</code></pre></div></div> +<p>The result of the test accuracy and other reports are as follows:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*_qfUBlJ7hveW2kd0NEEPAw.png" alt="" /></p> + +<p>Here, we can see that CatBoost and XGBoost are high in test accuracy, but let’s see the classification report and confusion matrices to find out which model to use and tune.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>plt.figure(figsize=(12, 8)) +for i, (model_name, cm) in enumerate(conf_matrices, 1): + plt.subplot(3, 4, i) + plt.title(model_name) + sns.heatmap(cm, annot=True, fmt='d') + plt.xlabel('Predicted Label') + plt.ylabel('True Label') + +plt.tight_layout() +plt.show() + +</code></pre></div></div> +<p>The confusion matrices are depicted below:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*yKU7cegVxXWO0jiuyk8rTA.png" alt="" /></p> + +<p>The classification reports are as follows:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>for model_name, cr in class_reports: + print(f'033[1m{model_name}:033[0m') + print(f'033[1mClassification Report:033[0m') + print(cr) + print('-'*60) +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:2036/1*6A88BvrHsiNhuZg10_eB5A.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:2084/1*p2nhSmu_CZTaOeQesm6XqA.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:2204/1*QniG0Ql3WXGZ32aCnfT_fg.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:2072/1*fGm36DeJGTGm7dja9eEyvA.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:2116/1*gdU49T4FiAEULs8bm95oDQ.png" alt="" /></p> + +<p>Now, looking at the classification report, we chose CatBoost as our classifier and as our model. Now, we tune the model for its best performance and accuracy. For this we use optuna for tuning the model.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> +import optuna + +def objective(trial): + model = cb.CatBoostClassifier( + iterations=trial.suggest_int("iterations", 100, 1000), + learning_rate=trial.suggest_float("learning_rate", 1e-3, 1e-1, log=True), + depth=trial.suggest_int("depth", 4, 10), + l2_leaf_reg=trial.suggest_float("l2_leaf_reg", 1e-8, 100.0, log=True), + bootstrap_type=trial.suggest_categorical("bootstrap_type", ["Bayesian"]), + random_strength=trial.suggest_float("random_strength", 1e-8, 10.0, + log=True), + bagging_temperature=trial.suggest_float("bagging_temperature", 0.0, + 10.0), + od_type=trial.suggest_categorical("od_type", ["IncToDec", "Iter"]), + od_wait=trial.suggest_int("od_wait", 10, 50), + verbose=False + ) + model.fit(X_train, y_train) + y_pred = model.predict(X_test) + return accuracy_score(y_test, y_pred) + +study = optuna.create_study(direction='maximize') +study.optimize(objective, n_trials=30) +print('Best hyperparameters:', study.best_params) +print('Best Accuracy:', study.best_value) + +</code></pre></div></div> + +<p>After this, the tuned parameters were passed into the model and we got the final accuracy of the model and our model was devised to the test accuracy of 77.57% which is higher.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>model = cb.CatBoostClassifier(**study.best_params) +model.fit(X_train, y_train) +y_pred = model.predict(X_test) +acc_score = accuracy_score(y_test, y_pred) +acc_score + +</code></pre></div></div> + +<p>Hence, we can now predict the quality from the array of constituents value.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># taking the input +df_columns = list(redwine_test_df.columns) +test_array = [] +for col_name in df_columns: + if col_name == "quality": + continue + else: + data = float(input(f"Enter the {col_name} quantity + [{redwine_test_df[col_name].min()} - {redwine_test_df[col_name].max()}]: ")) + test_array.append(data) + +# giving the data to our model +q_value = model.predict(test_array) +if q_value == 1: + print("The red wine is of medium quality!") +elif q_value == 2: + print("The red wine is of high quality!") +else: + print("The red wine is of poor quality!") +</code></pre></div></div> + +<p>Here, we tested a random sample of wine and we got the wine quality as average. Clearly helping with the outliers of the chloride really made improvement in our model.</p> + +<p>IV. Significance</p> + +<p>So, the question may arise about its significance. Companies can use this technique of ML for creating better models and by using the dataset with thousands of data. This is just a simple dataset for devising a method for relating the quality of red wine with its physicochemical properties. General laymen can indeed know about what factors can affect the quality of red wine by analyzing the dataset in the visualization part. These algorithms and techniques can not only be used here but in every field of response and target variables, which can indeed boost our capabilities.</p> + +<p>The link for the github repository for this project is <a href="https://github.com/prabeshx12/testproject">here</a>:</p> + +<hr /> +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Prabesh, and several other fellows access to DataCamp, to learn and grow.</p>Prabesh BashyalWe all know about the significance of red wine these days. It is also better to know better about its quality and the factors which can affect its quality. In these terms, we can use our computer knowledge of ML, and predict ourselves the quality based on the different physicochemical properties. Now, this will be an estimation on the quality and people will be aware about that.Exploring Nepal’s Exports: Building an Interactive Dashboard for Easy Data Access2023-07-06T00:00:00+00:002023-07-06T00:00:00+00:00/2023/07/06/exploring-nepals-export<p>The government has published the data regarding the imports &amp; exports of the country for Fiscal Year B.S. 2079/80(Mid July 2022 to Mid July 2023). Because there are news everyday regarding the current economic situation of the country, it is a good idea to understand the area through which we can strengthen the economy which is exports.</p> + +<p>I went through data through the Department of Customs for this data and going even through the tabular form data there were many insights to grasp. When discussing this with friends, they were curious but found the original data hard to understand.</p> + +<p>While the government might be working on improving this data, my focus was on learning to make such information more understandable &amp; accessible. This article lays the foundation for a web dashboard that lets the user search and see visualizations of export data. Though creating such a proper website will be a resource and time taking process, in this article I have tried in getting the foundations for it ready.</p> + +<p>Installing necessary Python libraries</p> + +<p>First, we install the necessary Python libraries for data processing (pandas), interactive visualizations (plotly), and building web applications (dash)</p> + +<p><em>pip install pandas plotly dash</em></p> + +<p>Importing Panda Library &amp; needed CSV file</p> + +<p><em>import pandas as pd</em></p> + +<p><em>file_path = r”C:\Users\ACER\Desktop\Tasks\Data Article\7980exports.csv”</em></p> + +<p><em>df = pd.read_csv(file_path, encoding=’latin-1’)</em></p> + +<p>Data Source: <a href="https://www.customs.gov.np/page/fts-fy-207980">https://www.customs.gov.np/page/fts-fy-207980</a></p> + +<p>Now, we import the Pandas library so that we can do data manipulation &amp; analysis. We have also provided the file path to read the CSV file from the specified path into a Pandas DataFrame. In this step, we have been able to lead this data into the data frame through which we can move for processing and visualization.</p> + +<p>Importing Dash Framework</p> + +<p><em>import dash</em></p> + +<p><em>from dash import dcc</em></p> + +<p><em>from dash import html</em></p> + +<p><em>from dash.dependencies import Input, Output</em></p> + +<p>We are now importing the Dash framework since it is great for creating interactive web applications with Python. For this project, we especially need its web-based data visualizations and interactive components.</p> + +<p>We are also importing the dcc module of Dash as it contains the core components such as graphs, dropdowns, &amp; sliders which are useful elements for this project. Through this step, we now have the modules for a Dash web application along with defining the user interface.</p> + +<p>Initializing Dash app</p> + +<p><em># Initialize the Dash app</em></p> + +<p><em>app = dash.Dash(<strong>name</strong>)</em></p> + +<p>Now, we create the instance for the application along with providing the unique identifier.</p> + +<p>Defining the layout through Search bar for filtering data &amp; Graph component to display the data</p> + +<p><em># Define the layout of the web application</em></p> + +<p><em>app.layout = html.Div([</em></p> + +<p><em># Search bar for filtering data</em></p> + +<p><em>dcc.Input(id=’search-bar’, type=’text’, placeholder=’Search by Item…’),</em></p> + +<p><em># Graph component to display the data</em></p> + +<p><em>html.Div([</em></p> + +<p><em>dcc.Graph(id=’export-graph’, config={‘displayModeBar’: False}),</em></p> + +<p><em>]),</em></p> + +<p><em>])</em></p> + +<p>The layout of the web application is being set up now with the first structure of the web page being set up using the Dash HTML components which includes the search bar &amp; graph that we need since we want the user to search for items &amp; represent it through a graph.</p> + +<p>Then, we use dcc.input to create the needed text input field for this search bar and name it as Search by Item which the user will see it as. We also create the graph component to display the data through this framework.</p> + +<p>Callback to update the graph based on search input</p> + +<p><em>@app.callback(</em></p> + +<p><em>Output(‘export-graph’, ‘figure’),</em></p> + +<p><em>[Input(‘search-bar’, ‘value’)]</em></p> + +<p><em>)</em></p> + +<p>Defining the callback function so that it responds to changes to the search bar the user makes. Here, we also define that the input is the search term that the user enters and output is the export graph through which the necessary item will be updated in the displayed graph.</p> + +<p>Updating graph based on search term</p> + +<p><em>def update_graph(search_term):</em></p> + +<p><em>if search_term:</em></p> + +<p><em># Filter the data based on the search input</em></p> + +<p><em>filtered_df = df[df[‘Item’].str.contains(search_term, case=False)]</em></p> + +<p><em>else:</em></p> + +<p><em># If no search input, show all data</em></p> + +<p><em>filtered_df = df</em></p> + +<p>Here, we are creating some important functions for the graph. If there is no search input then the entire Data Frame will show up which will be like the default setting. Also, the words the user types will be case insensitive.</p> + +<p>Create the bar chart using Plotly</p> + +<p><em># Create the bar chart using Plotly (showing ‘Total Revenue’)</em></p> + +<p><em>figure = {</em></p> + +<p><em>‘data’: [</em></p> + +<p><em>{‘x’: filtered_df[‘Item’], ‘y’: filtered_df[‘Exports_Value’], ‘type’: ‘bar’, ‘name’: ‘Total Revenue’},</em></p> + +<p><em>],</em></p> + +<p><em>‘layout’: {</em></p> + +<p><em>‘title’: “Nepal’s Export Data”,</em></p> + +<p><em>‘xaxis’: {‘title’: ‘Item’},</em></p> + +<p><em>‘yaxis’: {‘title’: ‘Value’},</em></p> + +<p><em>‘barmode’: ‘group’</em></p> + +<p><em>}</em></p> + +<p><em>}</em></p> + +<p><em>return figure</em></p> + +<p>The bar chart is now constructed with the Total Revenue data through the filtered dataframe. In the bar chart the X values have been defined as the Item and the Y values as the Exports Value i.e. Total Revenue.</p> + +<p>Running the web application</p> + +<p><em># Run the web application</em></p> + +<p><em>if <strong>name</strong> == ‘<strong>main</strong>’:</em></p> + +<p><em>app.run_server(debug=True)</em></p> + +<p>Now, we do the fun part and see the result that has come from the above process.</p> + +<iframe width="560" height="315" src="https://www.youtube.com/embed/68O-VpoZiGk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*NF88vaONxWGNSkYl" alt="" /></p> + +<p>Through this dashboard, now it is very easy to search for items you want to know the revenue for exports. We can gain insights now faster and in a more accessible way, that too with context of other similar products and their revenues for exports.</p> + +<p>For me, I found it interesting that even items such as Yarchagumba are bringing in around Rs. 44 crores of revenue per year. Another surprise for me was that Dog/Cat food did Rs. 3.40 arba in revenue which is a very big amount of revenue that provides tons of employment opportunity in Nepal especially in the village areas.</p> + +<p>Thus, by exploring this dashboard and finding out the revenue of different items, we can also map out what kind of opportunity is present to sell Nepali items in the global market too.</p> + +<p>Conclusion</p> + +<p>Now that I’ve worked on this project, I can see there are many kinds of data we can make accessible through turning the raw data into a more accessible format. If you want to further work on this project then the next steps would be to find a way to make it accessible on the internet to people through platforms like Heroku and then test the prototype out.</p> + +<p>Thanks to Code For Nepal’s Data Fellowship program with DataCamp Donates, I got the chance to explore creating tools with Python. I’m thankful to Code for Nepal for giving me the opportunity to learn such Python skills.</p> + +<p>By: Anupam Bajra</p> + +<p>Linkedin: <a href="https://www.linkedin.com/in/anupam-bajra/">https://www.linkedin.com/in/anupam-bajra/</a></p> + +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Anupam, and several other fellows access to DataCamp, to learn and grow.</p>Anupam BajraThe government has published the data regarding the imports &amp; exports of the country for Fiscal Year B.S. 2079/80(Mid July 2022 to Mid July 2023). Because there are news everyday regarding the current economic situation of the country, it is a good idea to understand the area through which we can strengthen the economy which is exports.Getting Started with GreatAPI - A Comprehensive Tutorial2023-07-06T00:00:00+00:002023-07-06T00:00:00+00:00/2023/07/06/getting-started-with-GreatAPI<p><img src="https://miro.medium.com/v2/resize:fit:1400/format:webp/1*XfvSzeeQPZUPCcjZUvRHmg.jpeg" alt="" /></p> + +<p>GreatAPI is a powerful Python framework that aims to simplify and accelerate the process of building web applications, endpoints for Machine Learning models, and general APIs using FastAPI. This comprehensive tutorial will guide you through the installation and setup process of GreatAPI, and you will learn how to create a new project, manage apps, run the server, and build your API logic using GreatAPI.</p> + +<h1 id="introduction">Introduction</h1> + +<p>GreatAPI offers a range of compelling features that make it an attractive choice for developers seeking to build robust web applications and APIs. With its integrated Administrative UI, users gain effortless control over registered models, simplifying data management tasks. Additionally, the framework includes a built-in authentication system, boosting application security by facilitating user authentication and authorization. Furthermore, GreatAPI provides an intuitive project template, streamlining project setup and offering a structured foundation for rapid and collaborative development. GreatAPI’s seamless integration with FastAPI makes it a compelling tool for developing efficient, secure, and user-friendly applications. Embrace the boundless possibilities of web development, creating endpoints for AI models, and creating general APIs with GreatAPI and elevate your projects to new heights. Embark on an exceptional journey of innovation and excellence with GreatAPI at your side. Some of the major features of GreatAPI.</p> + +<h1 id="requirements">Requirements</h1> + +<p>Before we dive into the tutorial, make sure you have the following requirements in place:</p> + +<ul> + <li>Python 3.6 or higher and PIP installed on your system.</li> + <li>Familiarity with Python programming language concepts.</li> +</ul> + +<p>GreatAPI is built upon the foundation of the following robust libraries:</p> + +<ul> + <li>FastAPI: A modern, fast, web framework for building APIs with Python.</li> + <li>uvicorn: ASGI server that runs FastAPI applications.</li> + <li>typer: A command-line interface library for building CLI applications.</li> + <li>jinja2: A templating engine for Python.</li> + <li>SQLAlchemy: A powerful Object-Relational Mapping (ORM) library for Python.</li> +</ul> + +<h1 id="installation">Installation</h1> + +<p>To install GreatAPI and its dependencies, use <code class="language-plaintext highlighter-rouge">pip</code>:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pip install greatapi +</code></pre></div></div> + +<h1 id="getting-started">Getting Started</h1> + +<h2 id="step-1-start-a-new-project">Step 1: Start a New Project</h2> + +<p>To begin working with GreatAPI, let’s create a new project. Open your terminal and execute the following command:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>greatapi startproject myproject +</code></pre></div></div> + +<p>This will create a new directory named “<em>myproject</em>” with the basic structure to get you started.</p> + +<p><em>myproject/</em></p> + +<p><em>├──<strong>init</strong>.py</em></p> + +<p><em>├──settings.py</em></p> + +<p><em>main.py</em></p> + +<h2 id="step-2-create-a-new-app">Step 2: Create a New App</h2> + +<p>An app in GreatAPI is a modular unit that encapsulates specific functionality of your project. To create a new app, run the following command:</p> + +<p>greatapi startapp myapp</p> + +<p>This will generate a new directory named “<em>myapp</em>” containing the necessary files and folders for your app.</p> + +<p><em>myapp/</em></p> + +<p><em>├──<strong>init</strong>.py</em></p> + +<p><em>├──models.py</em></p> + +<p><em>├──repository.py</em></p> + +<p><em>├──router.py</em></p> + +<p><em>├──schemas.py</em></p> + +<h2 id="step-3-run-the-server">Step 3: Run the Server</h2> + +<p>Now, it’s time to run the development server which will also create tables in the database for creating superuser in the next step. Execute the following command:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>greatapi runserver +</code></pre></div></div> + +<h2 id="step-4-creating-a-superuser">Step 4: Creating a Superuser</h2> + +<p>After running the server, let’s create a superuser to manage the administration of your project. Execute the following command:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>greatapi createsuperuser +</code></pre></div></div> + +<p>Follow the prompts to create the superuser account which will be used to login into GreatAPI Administrator.</p> + +<p>The server will start, and you can access your application at <a href="http://localhost:8000/">http://localhost:8000/</a>. Additionally, GreatAPI provides a beautifully designed built-in Admin Panel accessible at <a href="http://localhost:8000/admin">http://localhost:8000/admin</a>.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:2000/1*wPsG8okBBURruyP-i7WXDQ.png" alt="" /></p> + +<p>Landing page for Admin view</p> + +<h1 id="building-api-logic">Building API Logic</h1> + +<p>GreatAPI is built on top of FastAPI, which allows you to easily implement your API logic for building a powerful API[such as blogs in this case]. Here’s a quick guide on how to do that:</p> + +<h2 id="step-1-add-models">Step 1: Add Models</h2> + +<p>Define your data models in the <code class="language-plaintext highlighter-rouge">myapp/models.py</code> file using SQLAlchemy syntax. For example:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>from greatapi.db.admin.user import User +from greatapi.db.database import Base + +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.orm import relationship + +class Blog(Base): + __tablename__ = "blogs" + + id = Column(Integer, primary_key=True, index=True, autoincrement=True) + title = Column(String) + body = Column(String) + user_id = Column(Integer, ForeignKey(User.id)) + + user = relationship(User) +</code></pre></div></div> + +<h2 id="step-2-add-schemas">Step 2: Add Schemas</h2> + +<p>Create <em>Pydantic</em> schemas in <code class="language-plaintext highlighter-rouge">myapp/schemas.py</code> to define the data validation and serialization for your API. For example:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>from pydantic import BaseModel + +class BlogBase(BaseModel): + title: str + body: str + user_id: int # Add the user_id field to represent the foreign key relationship + +class BlogCreate(BlogBase): + pass + +class BlogSchema(BlogBase): + id: int + + class Config: + orm_mode = True +</code></pre></div></div> + +<h2 id="step-3-add-crud-operations">Step 3: Add CRUD Operations</h2> + +<p>Define the <em>CRUD </em>(Create, Read, Update, Delete) operations in <code class="language-plaintext highlighter-rouge">myapp/repository.py</code> using SQLAlchemy and your defined models and schemas. For example:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>from sqlalchemy.orm import Session +from myapp.models import Blog +from myapp.schemas import BlogCreate + +def create_blog(db: Session, blog: BlogCreate): + new_blog = Blog(**blog.dict()) + db.add(new_blog) + db.commit() + db.refresh(new_blog) + return new_blog + +def read_blog(db: Session, blog_id: int): + return db.query(Blog).filter(Blog.id == blog_id).first() + +def update_blog(db: Session, blog_id: int, blog: BlogCreate): + existing_blog = db.query(Blog).filter(Blog.id == blog_id).first() + if existing_blog: + for key, value in blog.dict().items(): + setattr(existing_blog, key, value) + db.commit() + db.refresh(existing_blog) + return existing_blog + +def delete_blog(db: Session, blog_id: int): + blog = db.query(Blog).filter(Blog.id == blog_id).first() + if blog: + db.delete(blog) + db.commit() + return blog + +def list_blogs(db: Session, skip: int = 0, limit: int = 10): + return db.query(Blog).offset(skip).limit(limit).all() +</code></pre></div></div> + +<h2 id="step-4-create-api-endpoints">Step 4: Create API Endpoints</h2> + +<p>Finally, define the API endpoints in <code class="language-plaintext highlighter-rouge">myapp/router.py</code> using FastAPI’s <code class="language-plaintext highlighter-rouge">APIRouter</code>. Link your <em>CRUD</em> operations to these endpoints. For example:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>from fastapi import APIRouter, Depends +from sqlalchemy.orm import Session +from greatapi.db.database import get_db +from myapp.schemas import BlogSchema, BlogCreate +from myapp.repository import ( + create_blog, + read_blog, + update_blog, + delete_blog, + list_blogs +) + +from typing import List + +myapp_router = APIRouter(tags=["MyApp"]) + +@myapp_router.post("/blogs/", response_model=BlogSchema) +def create_blog_route(blog: BlogCreate, db: Session = Depends(get_db)): + return create_blog(db, blog) + +@myapp_router.get("/blogs/{blog_id}", response_model=BlogSchema) +def read_blog_route(blog_id: int, db: Session = Depends(get_db)): + return read_blog(db, blog_id) + +@myapp_router.put("/blogs/{blog_id}", response_model=BlogSchema) +def update_blog_route(blog_id: int, blog: BlogCreate, db: Session = Depends(get_db)): + return update_blog(db, blog_id, blog) + +@myapp_router.delete("/blogs/{blog_id}", response_model=BlogSchema) +def delete_blog_route(blog_id: int, db: Session = Depends(get_db)): + return delete_blog(db, blog_id) + +@myapp_router.get("/blogs/", response_model=List[BlogSchema]) +def list_blogs_route(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)): + return list_blogs(db, skip, limit) +</code></pre></div></div> + +<h2 id="step-5-register-models-and-endpoints">Step 5: Register Models and Endpoints</h2> + +<p>Import your models and API endpoints into the main application file <code class="language-plaintext highlighter-rouge">main.py</code> and register them with GreatAPI:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ... (existing code) +from myapp.router import myapp_router +from myapp.models import Base as MyAppBase + +# ... (existing code) +admin.AdminBase.metadata.create_all(engine) +admin.UserBase.metadata.create_all(engine) +MyAppBase.metadata.create_all(engine) # new code added + +# ... (existing code) +app.include_router(admin_router) +app.include_router(auth_router) +app.include_router(user_router) +app.include_router(test_auth_router) +app.include_router(history_router) +app.include_router(myapp_router) # new code added +</code></pre></div></div> + +<p>Finally, register your models in <code class="language-plaintext highlighter-rouge">settings.py</code> by appending the models into the <code class="language-plaintext highlighter-rouge">REGISTERED_ADMINS</code> such as:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>from __future__ import annotations + +from greatapi.db.admin.user import User +from greatapi.db.admin.default import History +from myapp.models import Blog # new code added + +REGISTERED_ADMINS = [ + User, + History, + Blog, # new code added +] + +</code></pre></div></div> +<p>With these steps, you have successfully set up your project, created an app, defined models, and built API endpoints using GreatAPI.</p> + +<h1 id="conclusion">Conclusion</h1> + +<p>In this tutorial, you learned how to get started with GreatAPI, a powerful Python framework that aims to simplify and accelerate the process of building web applications, endpoints for Machine Learning models, and general APIs. You now know how to create projects, manage apps, run the server, and build API logic using GreatAPI. The combination of GreatAPI’s features and the elegance of FastAPI allows you to develop robust and efficient applications with ease. Now, it’s your turn to explore further and build amazing web applications with GreatAPI.</p> + +<h1 id="happy-programming">Happy programming!</h1> + +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Sahaj, and several other fellows access to DataCamp, to learn and grow.</p>Sahaj Raj MallaAnalysis of the growth and distribution of registered companies in Nepal2023-06-24T00:00:00+00:002023-06-24T00:00:00+00:00/2023/06/24/analysis-of-growth-and-distribution-of-registered-companies-in-nepal<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*7Ww5ZPx2WaIpCDNw6Mw85g.jpeg" alt="" /></p> + +<p>Image source: <a href="https://myrepublica.nagariknetwork.com/uploads/media/brt-jute-mill-1.jpg">myrepublica</a></p> + +<p>Nepal has been enabling the development of new firms for around 86 years, beginning with the first registered company, “Biratnagar Jute Mill,” in 1993 BS and continuing to new developing startups. As companies play an considerable part in the economic prosperity, their growth is always beneficial to the nation’s economy.</p> + +<p>The advancement of technology has undoubtedly aided the expansion of various businesses in recent years more than ever before. Startups are expanding across the country, from enterprises producing food and natural goods to computer startups developing software and IT solutions.</p> + +<p>Bearing this in mind, I have gathered a collection of data comprising lists of various sorts of registered corporations/companies in various districts of Nepal from 2002 BS to 2072 BS.</p> + +<p>So, let’s conduct a comprehensive data analysis and evaluate the outcomes.</p> + +<h1 id="first-importing-necessary-python-libraries">First, importing necessary python libraries:</h1> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>import pandas as pd +import seaborn as sns +import matplotlib.pyplot as plt +</code></pre></div></div> +<p>In this data analysis project, we will use pandas for data analysis, cleaning, and exploration, and matplotlib and seaborn for data visualization.</p> + +<h1 id="next-importing-necessary-csv-files">Next, importing necessary csv files.</h1> + +<p>We have a total of 11 csv files, each consisting needed fiscal year’s data.</p> + +<p>Source: <a href="https://opendatanepal.com/">https://opendatanepal.com/</a></p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df1 = pd.read_csv('./csv_files/FY_2002-2062.csv') +dfs = [] +for i in range(63, 73): + filename = f'./csv_files/FY_20{i}.csv' + dfs.append(pd.read_csv(filename)) + +df2 = pd.concat(dfs) +df = pd.concat([df1, df2]) +</code></pre></div></div> +<p>Now that the files have been concatenated into a single data frame, let’s observe the structure of data.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df.head() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*ovSJcmhDrhHZ6weUX_a2Jg.png" alt="" /></p> + +<p>As we can see, the data is organized into five distinct columns.</p> + +<h1 id="visualizing-data">Visualizing Data</h1> + +<h2 id="bar-plots">Bar Plots:</h2> + +<p>First, determine the number of registered firms per company type. Then we’ll create a bar graph that shows the number of registered firms by company type.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dfs = [df] +df_bar = df.copy() +for df_bar in dfs: + df_bar.loc[df_bar['COMPANY_TYPE'].str.startswith('Pri'), 'COMPANY_TYPE'] = 'Private' +company_counts = df_bar['COMPANY_TYPE'].value_counts(normalize=True) +plt.figure(figsize=(10, 5)) +ax = sns.countplot(x='COMPANY_TYPE', data=df_bar, palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF']) +plt.title('Distribution of Companies by Type') +plt.xlabel('Company Type') +plt.ylabel('Logarithmic scale') +for p in ax.containers: + ax.bar_label(p, label_type='edge', fontsize=10, padding=0) +plt.yscale('log') +plt.yticks([100, 1000, 10000, 100000], [100, '1k', '10k', '100k']) +plt.show() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*SoHCSPHrAkbDKK_G0FUfkw.png" alt="" /></p> + +<p>The plot shows that the number of registered private enterprises is exponentially more than the other groups. This illustrates that over the past 86 years, private enterprises have been serving towards the country’s economy.</p> + +<p>Let us make another bar plot to depict the distribution of enterprises by district. For this, we shall split the districts into provinces and regions for this purpose.</p> + +<p>We will require a csv file with the names of districts, as well as their corresponding regions and provinces.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df_district = pd.read_csv('./csv_files/disct.csv') +</code></pre></div></div> +<p>We will now merge the df_district and df data frames. The integrated data frame will then be saved as a CSV file.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df_merged = pd.merge(df, df_district, on='DISTRICT') +df_merged = df_merged.drop('id', axis=1) +df_merged = df_merged.drop('_id', axis=1) +df_merged.insert(0, 'id', range(1, len(df_merged) + 1)) +df_merged.to_csv('./csv_files/merged.csv', index=False) +</code></pre></div></div> + +<p>Let us look at the structure of the new data frame now.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df_merged.head() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*4HspmOI9L_8OUQTJ5Q0Fkw.png" alt="" /></p> + +<p>The data has now been arranged into seven columns, as we can see.</p> + +<p>Visualization below shall show the distribution of various sorts of firms by province.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dfs = [df_merged] +for df_merged in dfs: + df_merged.loc[df_merged['COMPANY_TYPE'].str.startswith('Pri'), 'COMPANY_TYPE'] = 'Private' + +plt.figure(figsize=(12,5)) +ax = sns.countplot(data=df_merged, x='province', hue='COMPANY_TYPE', palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF'], saturation=0.8) +plt.title('Distribution of Companies by Province and Company Type') +plt.xlabel('Province') +plt.ylabel('Logarithmic Scale') +plt.yscale('log') +for p in ax.containers: + ax.bar_label(p, label_type='edge', fontsize=10, padding=0) +ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.15), ncol=4) +plt.yticks([1, 10, 100, 1000, 10000, 100000], [1, 10, 100, '1k', '10k', '100k']) +plt.show() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*JmslQbJFWC88d4GoTKepiQ.png" alt="" /></p> + +<p>According to the chart, Province 3 (Bagmati Province) has the most registered firms of all categories, while Province 6 (Karnal Province) has the fewest registered companies of all types.</p> + +<p>This leads to the conclusion that Bagmati Province is the most developed, whereas Karnali Province is the least developed.</p> + +<p>Similarly, no foreign enterprises are registered in Province 1, Karnali Province, or Lumbini Province which indicates the lack of foreign reach and influence in these areas.</p> + +<p>Once again, a graphic representation below shall show the prevalence of various sorts of companies by area.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>plt.figure(figsize=(10,5)) +ax = sns.countplot(data=df_merged, x='region', hue='COMPANY_TYPE', palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF'], saturation=0.8) +plt.title('Distribution of Companies by Region and Company type') +plt.xlabel('Region') +plt.ylabel('Logarithmic Scale') +plt.yscale('log') +for p in ax.containers: + ax.bar_label(p, label_type='edge', fontsize=10, padding=0) +ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.15), ncol=4) +plt.yticks([10, 100, 1000, 10000, 100000], [10, 100, '1k', '10k', '100k']) +plt.show() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*xBeJuuM7BiTYBeceC-EvcA.png" alt="" /></p> + +<p>The figure shows that the hilly part of Nepal has the most number of registered firms, while the Himalayan region has the fewest.</p> + +<p>This supports the notion that the hilly region is the most developed, whereas the Himalayan region is the least developed.This is probably due to the fact that Kathmandu lies in the hilly region which has the most registered number of firms.</p> + +<p>Similarly, there are no registered foreign enterprises in the Himalayan area, which again indicates the lack of foreign influence and reach in this area.</p> + +<p>Now, consider the distribution of registered firms by district in relation to their region.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>regions = df_merged['region'].unique() +fig, axs = plt.subplots(1, len(regions), figsize=(6*len(regions), 10)) + +for i, region in enumerate(regions): + region_df = df_merged[df_merged['region']==region] + ax = axs[i] + sns.countplot(data=region_df, y='DISTRICT', ax=ax, + palette = ['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00', '#7FDBFF'], saturation=0.8) + ax.set_title(f'Distribution of Companies in {region} region by district') + ax.set_xlabel('Logarithmic Scale') + ax.set_ylabel('') + ax.set_xscale('log') + for p in ax.containers: + ax.bar_label(p, label_type='center', fontsize=10, padding=0, color='black') + plt.subplots_adjust(wspace=0.4) + +plt.show() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:2000/1*0Aqd_ipSuG-hKElwzF5O3Q.png" alt="" /></p> + +<p>According to the plots above, the hilly region has more districts, which benefits the overall number of registered enterprises in that region.</p> + +<p>Manang, Jajarkot and Bardia are the districts with lowest number of companies in himalayan, hilly and tyerai region respectively out of which Manang has the lowest and Bardia has the highest number of companies among the three. This indicates that these three districts are some of the least developed districts of Nepal with Manang coming at the last position.</p> + +<p>Again, let’s visualize the distribution of registered companies by districts with respect to their province.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>provinces = df_merged['province'].unique() +fig, axs = plt.subplots(len(provinces)//2 + len(provinces)%2, 2, figsize=(16, 8*len(provinces)//2 + 5*len(provinces)%2)) + +for i, province in enumerate(provinces): + row = i // 2 + col = i % 2 + province_df = df_merged[df_merged['province']==province] + ax = axs[row, col] + sns.countplot(data=province_df, x='DISTRICT', hue='COMPANY_TYPE', ax=ax, + palette=['#FF4136', '#0074D9', '#2ECC40', '#B10DC9', '#FF851B', '#FFDC00'], saturation=0.8) + ax.set_title(f'Distribution of Companies in {province} by District and Company Type') + ax.set_xlabel('') + ax.set_ylabel('') + ax.set_yscale('log') + ax.set_yticks([1, 10, 100, 1000, 10000, 100000], [1, 10, 100, '1k', '10k', '100k']) + for p in ax.containers: + ax.bar_label(p, label_type='edge', fontsize=10, padding=0, rotation=15) + ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.2), ncol=3) + ax.set_xticklabels(ax.get_xticklabels(), rotation=45) + +if len(provinces) % 2 != 0: + fig.delaxes(axs[-1,-1]) + +plt.tight_layout() +plt.show() +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:2000/1*FtsPrwl2uEFeZKTW5QUUwQ.png" alt="" /></p> + +<p>The above array of multivariate bar plots depicts the distribution of various types of registered firms in each district and province of Nepal.</p> + +<p>Based on the plots, it is obvious that Kathmandu has the most registered firms. Because of the constantly growing number of registered firms in Kathmandu, Province 3 (Bagmati Province) is the province with the most registered companies and hence the most developed province in Nepal.</p> + +<p>Similarly, Province 6 has the least number of companies making it the least devleoped province of Nepal.</p> + +<p>Now, let us make a distribution table that lists the top ten and bottom ten districts with the most and least firms, as well as their categories, regions, and provinces.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>table = pd.crosstab(index=[df_merged['DISTRICT'], df_merged['province'], df_merged['region']], columns=df_merged['COMPANY_TYPE'], margins=True) +table = table.sort_values(by=['All'], ascending=False) +table = table.iloc[:-1, :-1] +table1 = table.loc[table.sum(axis=1).sort_values(ascending=False)[:10].index] + +table1 +</code></pre></div></div> +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*vKyZ9h6no8gujNf1nfZm0g.png" alt="" /></p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>table = pd.crosstab(index=[df_merged['DISTRICT'], df_merged['province'], df_merged['region']], columns=df_merged['COMPANY_TYPE'], margins=True) +table = table.sort_values(by=['All'], ascending=True) +table = table.iloc[:-1, :-1] +table2 = table.loc[table.sum(axis=1).sort_values(ascending=True)[:10].index] + +table2 +</code></pre></div></div> +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*hOtTZBARYpaMDz3JJflsRw.png" alt="" /></p> + +<p>We can see from the distribution tables above that:</p> + +<ul> + <li>The bulk of the districts with the most firms are in mountainous areas and province 3 (Bagmati Province).</li> + <li>The Himalayan area and province 6 (Karnali Province) have the bulk of the districts with the fewest firms.</li> +</ul> + +<p>This leads us to the conclusion that the hilly area and Bagmati province are Nepal’s most developed regions and provinces, respectively. Similarly, the Himalayan area and Karnali province are Nepal’s least developed regions and provinces, respectively.</p> + +<p>Furthermore, because Kathmandu and Manang have the most and least registered enterprises, respectively, we infer that:</p> + +<ul> + <li>Kathmandu is Nepal’s most developed district.</li> + <li>Manang is the most underdeveloped.</li> +</ul> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df_merged['REGISTRATION_DATE'] = pd.to_datetime(df_merged['REGISTRATION_DATE'], format='%Y') +first_companies = df_merged.groupby('COMPANY_TYPE').first() +first_companies = first_companies[['ENGLISH_NAME', 'DISTRICT', 'province', 'region', 'REGISTRATION_DATE']] +first_companies = first_companies.rename(columns={'REGISTRATION_DATE': 'FIRST_REGISTRATION_YEAR'}) +first_companies['FIRST_REGISTRATION_YEAR'] = first_companies['FIRST_REGISTRATION_YEAR'].dt.year +first_companies = first_companies.sort_values('FIRST_REGISTRATION_YEAR') + +first_companies +</code></pre></div></div> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*HrFAtiGZLN2BSQaaaAMkLA.png" alt="" /></p> + +<p>The distribution table above indicates when the first of each form of company was registered after 2002 BS. The chart gives a unique glimpse into how, in the early years, Sankhuwasabha, a district in Nepal’s Himalayan region, was a popular location for business registration.</p> + +<h2 id="line-plot">Line Plot:</h2> + +<p>Let’s make a line graph that will illustrate the rise in the number of registered businesses from 2002 BS to 2072 BS.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>plt.figure(figsize=(10, 5)) +sns.lineplot(x='REGISTRATION_DATE', y='id', data=df_merged.groupby(['REGISTRATION_DATE'])['id'].count().reset_index()) +plt.title("Growth of registered companies (2002-2072)") +plt.xlabel("Fiscal year") +plt.ylabel("Number of companies") +plt.show() +</code></pre></div></div> +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*wiFPvImmm4eLbDec_6FXuw.png" alt="" /></p> + +<p>The number of registered firms has expanded rapidly during a 70-year period (2002–2072 BS), with intermittent dips between 2060 and 2070. The growth took off exponentially from around 2055 B.S.</p> + +<p>Let us now illustrate the growth of various sorts of enterprises throughout time.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df_merged['REGISTRATION_DATE'] = pd.to_datetime(df_merged['REGISTRATION_DATE'], format='%Y') +df_grouped = df_merged.groupby(['REGISTRATION_DATE', 'COMPANY_TYPE']).size().reset_index(name='count') +plt.figure(figsize=(10, 6)) +sns.lineplot(x='REGISTRATION_DATE', y='count', hue='COMPANY_TYPE', data=df_grouped) +plt.title("Growth of different types of companies (2002-2072)") +plt.xlabel("Fiscal year") +plt.xticks(pd.date_range(start='2002', end='2082', freq='10Y').strftime('%Y')) +plt.ylabel("Number of companies") +plt.yscale('log') +plt.yticks([1, 10, 100, 1000, 10000, 100000], [1, 10, 100, '1k', '10k', '100k']) +plt.show() +</code></pre></div></div> +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*__dQBFj769UADpMn-ioJ2w.png" alt="" /></p> + +<p>From 2002 to 2072 BS, the line plot above depicts the growth tendency of four main types of enterprises in Nepal. While private enterprises have had exponential growth since 2003 BS, other sorts of firms have only witnessed development in recent years.</p> + +<h2 id="extracting-conclusions">Extracting Conclusions</h2> + +<p>We used bar and line graphs to show the data and created a few distributive tables.</p> + +<p>Each of these visualizations highlighted the following trends and conclusions:</p> + +<ul> + <li>The great majority of registered corporations are owned by individuals.</li> + <li>Kathmandu has the most registered businesses.</li> + <li>In terms of the number of registered enterprises, Bagmati province is the most developed, while Karnali province is the least developed.</li> + <li>In terms of the number of firms, the hilly region is the most developed, while the Himalayan region is the least developed.</li> + <li>Manang is the least developed district, with only 17 registered businesses, while Kathmandu is the most developed, with 84994 registered businesses as of 2072 BS.</li> + <li>During its early years, Sankhuwasabha was a prominent location for company formation in a Himalayan area.</li> + <li>The number of enterprises has increased dramatically from 2002 to 2072 BS and is expected to continue to grow in the coming years.</li> +</ul> + +<p>Finally, computing the relationship between the rise in the number of businesses and the years they were registered.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>df_merged['year'] = pd.DatetimeIndex(df_merged['REGISTRATION_DATE']).year +total_companies_by_year = df_merged.groupby(['year'])['id'].count().reset_index() +corr_coef = total_companies_by_year['year'].corr(total_companies_by_year['id']) + +print("Correlation coefficient: ", round(corr_coef, ndigits=3)) +</code></pre></div></div> +<p>We got a correlation coefficient of 0.773.</p> + +<p>Since, the coefficient calculated is more than 0.7, there is a strong positive correlation between the number of firms and their respective registration years. This indicates that the number of companies will continue to grow as the year progresses.</p> + +<p>Note: Refer to my github repository by clicking this <a href="https://github.com/PIYUSH-R04/Data_analysis_on_the_growth_and_distribution_of_registered_companies_in_Nepal"><em>link</em></a> for more details.</p> + +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Piyush, and several other fellows access to DataCamp, to learn and grow.</p>Piyush RimalHarnessing Data Science For Agricultural Crops Prediction2023-05-24T00:00:00+00:002023-05-24T00:00:00+00:00/2023/05/24/harnessing-data-science-for-agricultural-crops-prediction<p>Using AI to determine optimal crop selection can have a significant impact on ending world hunger, particularly in poor developing countries like Nepal. Even though Nepal is an agricultural country, we import a huge amount of food materials every year which make the trade deficit of Nepal even worse. By leveraging AI technologies such as machine learning and data analysis, we can analyze various factors like climate, soil quality, market demand, and available resources. This data-driven approach helps farmers make informed decisions about which crops to plant, increasing agricultural productivity and improving food security. AI algorithms can provide personalized recommendations based on local conditions, enabling farmers to optimize their yields, reduce crop failures, and maximize profits. Ultimately, AI-driven crop selection can contribute to sustainable farming practices, alleviate poverty, and combat hunger in Nepal and similar regions worldwide.</p> + +<p>I personally believe that even the uneducated people in the remote parts of the world should get equal opportunity to make their life better leveraging the power of AI and ML. This projects aims to help such people by recommending right kind of crops to maximize their production and profit.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*nWrFYdhySS2t0pb2" alt="" /></p> + +<p>In this blog post, we will explore a data science project focused on agricultural crop prediction, highlighting its significance, methodology, and potential benefits.</p> + +<h2 id="dataset">Dataset</h2> + +<p>The dataset that we’ll be using is: <a href="https://www.kaggle.com/datasets/manikantasanjayv/crop-recommender-dataset-with-soil-nutrients">httpswww.kaggle.com/datasets/manikantasanjayv/crop-recommender-dataset-with-soil-nutrients</a></p> + +<p>This is what the dataset looks like:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*xdq-aUBsuNHX04Ti" alt="" /></p> + +<h2 id="importing-libraries-and-loading-data">Importing Libraries and Loading Data</h2> + +<p>To begin, we import necessary libraries such as NumPy, Pandas, Seaborn, Matplotlib, and IPython Widgets. These libraries will help us manipulate and visualize the data effectively. Additionally, we import the dataset containing soil and climate information using the Pandas library.</p> + +<p>import numpy as np</p> + +<p>import pandas as pd</p> + +<p>import seaborn as sns</p> + +<p>import matplotlib.pyplot as plt</p> + +<p>from ipywidgets import interact</p> + +<p>import warnings</p> + +<p>warnings.filterwarnings(‘ignore’)</p> + +<p>data=pd.read_csv(“Crop_recommendation.csv”)</p> + +<p>Next, we utilize the Pandas DataFrame to calculate and display the average ratios of nitrogen (N), phosphorous (P), and potassium (K) in the soil. These nutrients are essential for plant growth and provide valuable insights into soil fertility. The code snippet then proceeds to calculate and display the average temperature, relative humidity, pH value of the soil, and rainfall. These climatic factors play a crucial role in determining suitable crop choices.</p> + +<h2 id="exploratory-data-analysis">Exploratory Data Analysis</h2> + +<p>Now ,we utilize the popular data visualization libraries, Matplotlib and Seaborn, to create a grid of subplots. Each subplot represents the distribution of a specific agricultural condition for different crops.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*GNCuGVwoXZJ0oXoS" alt="" /></p> + +<p>The first subplot focuses on nitrogen levels (N) in the soil. By utilizing a histogram plot, we can observe the frequency and spread of nitrogen levels across different crops. Similarly, the second subplot showcases the distribution of phosphorous (P) levels, while the third subplot displays the distribution of potassium (K) levels. Moving on to the fourth subplot, it represents the distribution of temperature. Temperature plays a crucial role in crop growth and development, and understanding its distribution helps identify suitable temperature ranges for specific crops. The fifth subplot focuses on rainfall, providing insights into the amount and frequency of precipitation. Next, the sixth subplot examines the distribution of humidity, which is another critical factor affecting crop health and productivity. The seventh subplot visualizes the distribution of soil pH levels. pH level directly influences nutrient availability and crop performance, making it vital to assess its distribution across different crops.</p> + +<h2 id="evaluation-metrics">Evaluation Metrics</h2> + +<p>Since this is a supervised classification learning, following metrics have been used:</p> + +<ol> + <li>Accuracy</li> + <li>Precision</li> + <li>Recall</li> + <li>F1 Score</li> +</ol> + +<h2 id="determining-optimum-clusters">Determining Optimum Clusters</h2> + +<p>K-means clustering is a widely used algorithm that partitions data points into clusters based on their similarity. The code snippet begins by importing the necessary libraries, including scikit-learn’s KMeans module. Then, it prepares the data for clustering by removing the labels column and selecting all the values from the dataset. The shape of the data is then printed to gain an understanding of its dimensions.</p> + +<p>from sklearn.cluster import KMeans</p> + +<p><em>#removing the labels column</em></p> + +<p>x = data.drop([‘label’], axis=1)</p> + +<p><em>#selecting all the values of data</em></p> + +<p>x = x.values</p> + +<p><em>#checking the shape</em></p> + +<p>print(x.shape)</p> + +<p>(2200, 7)</p> + +<p>Moving on to the main part of the code, we define an empty list called wcss (Within-Cluster Sum of Squares). This list will store the calculated WCSS values for different numbers of clusters.A loop is then executed from 1 to 10, where each iteration creates a KMeans object with a specific number of clusters. To gain insights into the optimal number of clusters, the Matplotlib library is used to create a line plot.</p> + +<p>plt.rcParams[‘figure.figsize’] = (10,4)</p> + +<p>wcss = []</p> + +<p>for i in range(1,11):</p> + +<p>km = KMeans(n_clusters = i, init = ’k-means++’, max_iter = 2000, n_init = 10, random_state = 0)</p> + +<p>km.fit(x)</p> + +<p>wcss.append(km.inertia_)</p> + +<p><em>#Plotting the results</em></p> + +<p>plt.plot(range(1,11), wcss)</p> + +<p>plt.title(‘Elbow Method’, fontsize = 20)</p> + +<p>plt.xlabel(‘No of Clusters’)</p> + +<p>plt.ylabel(‘wcss’)</p> + +<p>plt.show()</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*GeYDMJpC804vor2u" alt="" /></p> + +<p>The resulting plot is known as the Elbow Method plot. It helps us identify the point of inflection or the “elbow” in the curve.</p> + +<h2 id="splitting-the-dataset-and-analyzing-correlation">Splitting the Dataset and analyzing correlation</h2> + +<p>Next, we split the dataset into input features and target variables for predictive modeling. Additionally, we will analyze the correlations between different variables using a heatmap visualization.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*39K-bUsRVEi0zq5F" alt="" /></p> + +<h2 id="data-preprocessing-and-training">Data Preprocessing and Training</h2> + +<p>We standardize and tidy up our data to improve model performance.Here, we standardize our data using StandardScaler().The ColumnTransformer is used to create a transformer object that applies the StandardScaler to the numeric columns in the dataset, ensuring that all features are on the same scale.Also, the dataset is split into training and testing sets.</p> + +<p>from sklearn.preprocessing import StandardScaler</p> + +<p>from sklearn.compose import ColumnTransformer</p> + +<p>transformer = ColumnTransformer([(‘num’, StandardScaler(), x.columns)])</p> + +<p>Moving on to the model training phase, the code creates an SVM pipeline using the Pipeline module from sklearn.pipeline. The pipeline includes the preprocessing transformer and the SVM model from sklearn.svm. This ensures that the preprocessing steps are seamlessly applied to the data before training the SVM model.</p> + +<p>from sklearn.pipeline import Pipeline</p> + +<p>from sklearn.svm import SVC</p> + +<p>svm_pipe = Pipeline(steps=[(‘preprocessing’, transformer), (‘model’, SVC())])</p> + +<p>svm_pipe.fit(x_train, y_train)</p> + +<p>y_pred = svm_pipe.predict(x_test)</p> + +<p>evaluate_model(“SVM”, y_pred, y_test)</p> + +<p>show_confusion_matrix(y_pred, y_test)</p> + +<p>Additionally, the show_confusion_matrix() function visualizes the confusion matrix using seaborn’s heatmap. The confusion matrix provides insights into the performance of the model by showing the number of true positives, true negatives, false positives, and false negatives.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*1bdFMRW85QSQjcdX" alt="" /></p> + +<p>SVM</p> + +<p>accuracy: 0.9772727272727273</p> + +<p>f1_score 0.9773200952744351</p> + +<p>precision 0.9799524821583645</p> + +<p>recall 0.9772727272727273</p> + +<p>Decision Tree Classifier</p> + +<p>from sklearn.tree import DecisionTreeClassifier</p> + +<p>tree_pipe = Pipeline(steps=[(“preprocessing”, transformer), (“model”, DecisionTreeClassifier())])</p> + +<p>tree_pipe.fit(x_train, y_train)</p> + +<p>y_pred = tree_pipe.predict(x_test)</p> + +<p>evaluate_model(“DecisionTreeClassifier” ,y_pred, y_test)</p> + +<p>show_confusion_matrix(y_pred, y_test)</p> + +<p>DecisionTreeClassifier</p> + +<p>accuracy: 0.9886363636363636</p> + +<p>f1_score 0.9886072979597981</p> + +<p>precision 0.9890874125874125</p> + +<p>recall 0.9886363636363636</p> + +<h2 id="model-selection">Model Selection</h2> + +<p>I played around with different algorithms to see which model fits the data best and generalizes well to test data. Logistic regressions, SVM and decision tree worked well but I chose decision tree classifier model as final model. 98% accuracy in test data proves that the decision tree is generalizing well in real-world examples.</p> + +<h2 id="making-predictions-and-displaying-the-suggested-crop">Making predictions and Displaying the suggested Crop</h2> + +<p>Finally, we create a dictionary and input values which represent the climatic conditions and the soil nutrients for which we seek crop recommendations. We utilize our trained machine learning model to predict the suggested crop based on the provided climatic data. Since we are using a pipeline, we do not need to perform data preprocessing manually while predicting. The pipeline does the preprocessing and gets the prediction using the learned model. Furthermore, I have saved the weights and biases in a pickle file so that we do not need to train the model every time we need to predict. Once the prediction is made, it prints the suggested crop based on the given climatic conditions.</p> + +<p>This is how a user can give input values to get the recommendation:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/0*Iiwk4oXFPMhVpS3O" alt="" /></p> + +<h2 id="scope-and-benefits">Scope and benefits</h2> + +<ol> + <li>Enhanced yield</li> + <li>Risk mitigation</li> + <li>Sustainable farming practices</li> + <li>Improved decision making</li> + <li>The model can continue learning and be better</li> + <li>Knowledge transfer</li> + <li>Improved financial condition</li> + <li>Betterment of the lifestyle of poor communities.</li> + <li>This is a very lightweight model and is freely available for anyone to use.</li> +</ol> + +<h2 id="conclusion">Conclusion</h2> + +<p>While crop recommendation systems offer tremendous potential, certain challenges must be addressed. These include the need for reliable data sources, accessibility for farmers in remote areas, and user-friendly interfaces. However, advancements in technology and increased connectivity hold promise for overcoming these obstacles and extending the reach of these systems to a wider user base.</p> + +<p>Looking ahead, crop recommendation systems can be further enhanced by incorporating real-time data, remote sensing techniques, and artificial intelligence algorithms. This would provide farmers with even more precise recommendations, leading to better crop management, increased sustainability, and improved food security.</p> + +<p>Github repo: <a href="https://github.com/sadhana70/agricultural-crop-recommendation">https://github.com/sadhana70/agricultural-crop-recommendation</a></p> + +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Sadhana, and several other fellows access to DataCamp, to learn and grow.</p>Sadhana PanthiUsing AI to determine optimal crop selection can have a significant impact on ending world hunger, particularly in poor developing countries like Nepal. Even though Nepal is an agricultural country, we import a huge amount of food materials every year which make the trade deficit of Nepal even worse. By leveraging AI technologies such as machine learning and data analysis, we can analyze various factors like climate, soil quality, market demand, and available resources. This data-driven approach helps farmers make informed decisions about which crops to plant, increasing agricultural productivity and improving food security. AI algorithms can provide personalized recommendations based on local conditions, enabling farmers to optimize their yields, reduce crop failures, and maximize profits. Ultimately, AI-driven crop selection can contribute to sustainable farming practices, alleviate poverty, and combat hunger in Nepal and similar regions worldwide.Building my own IMDB movies dataset using Scrapy2023-04-12T00:00:00+00:002023-04-12T00:00:00+00:00/2023/04/12/building-my-own-imdb-dataset-using-scrapy<p>Scrapy, a free and open-source web crawling framework, was first release on June 26, 2008 licensed under BSD. It is used for web scraping and extracting structured data. Scrapy is widely used by many employers, for both freelancing and in-house jobs for various applications from data mining to monitoring websites. or changes. Scrapy is popularly used due to its ability to handle requests asynchronously, i.e., it can execute multiple tasks concurrently, such as making requests, processing responses, and saving data. It allows you to focus on the data extraction process utilizing CSS selectors and XPath expressions rather than the complex internals of how spiders are supposed to function. With Scrapy, you can easily build complex scraping pipelines that can handle multiple pages, parse complex HTML structures, and store data in various formats.</p> + +<p>Web scraping is a technique for gathering data or information on web pages. Web crawling is usually the first step of data tasks. This blog discusses how powerful scrapy is and how it can be implemented using Python. Movies information such as title, rating, no. of reviews, genres and other information are scraped from imdb.com site. Obtaining this information is the first step towards tasks such as movie recommendation systems, discover trends on movies, visualize how movies’ popularity is dependent on various factors and other visualizations and evaluations.</p> + +<p>For example, you can analyze the genres of movies that are currently popular and see how they have changed over time. Furthermore, you can analyze the movie information obtained from Scrapy to see which actors, directors, or production companies are associated with popular movies and use this information to predict the success of future movies.</p> + +<p>This blog provides a step-by-step guide on creating a Scrapy project and a spider to scrape data from IMDB. Let’s get going.</p> + +<h1 id="getting-started-prerequisites">Getting Started (Prerequisites)</h1> + +<ol> + <li>Install scrapy.</li> +</ol> + +<p>Firstly, we have to install scrapy. If you are using anaconda, you can use conda to install scrapy such as:</p> + +<p>conda install -c conda-forge scrapy</p> + +<p>Or using pip as:</p> + +<p>pip install scrapy</p> + +<h1 id="creating-our-scrapy-project">Creating our scrapy project</h1> + +<h2 id="step-1">Step 1:</h2> + +<p>To create our scrapy project, run following command in your appropriate directory.</p> + +<p>scrapy startproject imdbscrapy</p> + +<p>Here, imdbscrapy is the scrapy project name and our scrapy project folder would look like this:</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:728/1*893_Vv12_AG2e-91LojEiw.png" alt="" /></p> + +<p>The created project folder contains multiple files each having specific purpose.</p> + +<p><em>Scrapy.cfg — Deploys configuration file.</em></p> + +<p><em><strong>init</strong>.py — Initialization file</em></p> + +<p><em>Item.py — Project items definition file</em></p> + +<p><em>Middlewares.py — Project middle wares file</em></p> + +<p><em>Pipelines.py — Project pipelines file</em></p> + +<p><em>Setting.py — Project settings file</em></p> + +<p><em>Spiders/ — A directory where later you will put your spiders.</em></p> + +<p>Spiders are classes that you define and that Scrapy uses to scrape information from websites.</p> + +<h2 id="step-2">Step 2:</h2> + +<p>Creating spider: To create a spider, we navigate towards the spider folder and run following command:</p> + +<p>scrapy genspider imdb_movies imdb.com</p> + +<p>After executing above command, python file named imdb_movies is created in spiders directory with start URL <a href="https://www.imdb.com/">https://www.imdb.com</a>. All the commands will be written here to scrape the information.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:572/1*jITOZixb3c2kawXEnnCqAA.png" alt="" /></p> + +<p>imdb_movies.py would contain python code given as follows.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:822/1*WMw7r67_sn566UrdIUg7ZQ.png" alt="" /></p> + +<h2 id="step-3">Step 3:</h2> + +<p>Now, navigating toward <a href="https://www.imdb.com/search/title/?genres=action&amp;languages=en&amp;sort=user_rating,desc&amp;title_type=feature">Feature Film, Action, English (Sorted by IMDb Rating Descending) — IMDb</a>, i.e., the movies with genre “action” web URL are selected to scrape. It consists of more than 20k+ action movies separated in multiple pages with each page containing maximum 50 movies.</p> + +<p>We would want to scrape following features from each action movies:</p> + +<ol> + <li>Title</li> + <li>Rating</li> + <li>No. of reviews</li> + <li>Directors and Actors</li> + <li>Genres</li> + <li>Year</li> + <li>Runtime</li> +</ol> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*NFasfq50w3auqBg0z-fN3A.png" alt="" /></p> + +<h2 id="step-4">Step 4:</h2> + +<p>In imdb_movies.py, specify our required urls and genres lists. In this case, since we are only scraping for ‘action’ genre, so genre is a list containing ‘action’. If you want to scrape other genres, you can add it on the list.</p> + +<p>Now, yield scrapy request for each url in urls list. In this case there is only one url i.e., for ‘action’ genre.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>class ImdbMoviesSpider(scrapy.Spider): + name = 'imdb_movies' + allowed_domains = ['www.imdb.com'] + start_urls = 'http://www.imdb.com/' + genres=['action'] + + def start_requests(self): + urls=[] + for genre in self.genres:\ + urls.append(f"{self.start_urls}/search/title/?genres={genre}&amp;languages=en&amp;sort=user_rating,desc&amp;title_type=feature") + for url in urls: + yield scrapy.Request(url=url,callback=self.parse) + + def parse(self, response): + pass + +</code></pre></div></div> +<p>Step 5: +——-</p> + +<p>We can use CSS or Xpath to select elements from the websites. First thing to do is navigate towards the required website and right click on the mouse and Inspect. This will display he website’s HTML, CSS, and JavaScript code.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1234/1*Ce_e4L2yUPNU-37Ja3V2MQ.png" alt="" /></p> + +<p>Select Ctrl+ shift + c and click on required elements in the web that you want to extract. This will display the HTML code for the specific feature.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*_Hiwb-t8hSTveT4o5MF2Tg.png" alt="" /></p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*ML25OpQ1tzIm4YFkUFglQg.png" alt="" /></p> + +<p>Here, the div class lister-list contains all the movies each separated under div class list-item mode-advanced. Each required items are selected again using span, div or p.</p> + +<p>As default, the features variables are set to empty string (‘ ‘) , as all the movies may not have values.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>def parse(self, response): + movies_list=response.css('div.lister-list') + for movie in movies_list: + movies=movie.css('div.lister-item.mode-advanced') + year='' + title='' + rating='' + reviews='' + directors_actors='' + genres='' + gross='' + runtime='' +</code></pre></div></div> + +<p>If the div class name is unique then we can directly use the class name. If the same class name is used for other divisions as well, we may want to be specific about which division we want to scrape. Following is the illustration using CSS expression:</p> + +<p>for items in movies: + rating=items.css(“div.inline-block.ratings-imdb-rating strong::text”).get() + runtime=items.css(“span.runtime::text”).get() + year=items.css(‘span.lister-item-year.text-muted.unbold::text’).get()</p> + +<p>Referencing to <a href="https://cdn-images-1.medium.com/max/900/1*ML25OpQ1tzIm4YFkUFglQg.png">figure </a>above, to extract title text, we can use ‘a’ tag, but other divisions also have ‘a’ tag, so we specify the unique division that title ‘a’ tag belong to and then scrape within the division.</p> + +<p>title=items.css(“h3.lister-item-header a::text”).get()<br /> +genres=items.css(“p.text-muted span.genre::text”).get()</p> + +<p>Syntax:</p> + +<p><em>feature = response.css(“div.parent-class div.child-class::text”).get()</em></p> + +<h2 id="step-6">Step 6:</h2> + +<p>Another way of writing expressions is using nth-child. Code snapshot is:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>for item in items.css('p.sort-num_votes-visible'): + reviews=item.css("span:nth-child(2)::text").get() + gross=item.css('span:nth-child(5)::text').get() +</code></pre></div></div> + +<p>In above code, the second and fifth child span within element ‘p’ are being accessed to obtain number of reviews and gross obtained from the movie</p> + +<h2 id="step-7">Step 7:</h2> + +<p>We can also use Xpath for extracting elements.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>for item in items.css('div.lister-item-content'): + for names in item.xpath('.//p[3]'): + directors_actors = [name.strip() for name in names.css('::text').extract()] + + +</code></pre></div></div> + +<p>Here, actors and directors’ names are extracted from third ‘p’ element within div class lister-item-content.</p> + +<table> + <tbody> + <tr> + <td>If you want to learn more about detailed information and syntax relating to scrapy Xpath and CSS expressions, refer this tutorial [Scrapy Python: How to Make Web Crawler in Python</td> + <td>DataCamp](https://www.datacamp.com/tutorial/making-web-crawlers-scrapy-python) .</td> + </tr> + </tbody> +</table> + +<h2 id="step-8">Step 8:</h2> + +<p>Doing this will extract required elements from one page of website. We can further modify the code to extract from multiple pages.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1400/1*Ae3fDtizuOExatOuWPPtFg.png" alt="" /></p> + +<p>Code snippet is:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>next_page = response.css('a.lister-page-next.next-page').attrib['href'] +next_page = f"{self.start_urls}/{next_page}" +print(f"temp:{next_page}") +if next_page is not None: + yield response.follow(next_page,callback=self.parse) + +</code></pre></div></div> +<p>In this code, href is extracted from ‘a’ element to navigate to next page. This code allows the spider to follow links to the next page of search results until there are no more pages.</p> + +<h2 id="step-9">Step 9:</h2> + +<p>The spider is run by following command:</p> + +<p>scrapy crawl imdb_movies -O movies.csv</p> + +<p>A dataset name movies.csv is obtained.</p> + +<p>Compiling all the code snippets, complete code for our spider is:</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>import scrapy\ +class ImdbMoviesSpider(scrapy.Spider): + name = 'imdb_movies' + allowed_domains = ['www.imdb.com'] + start_urls = 'http://www.imdb.com/' + genres=['action'] + + def start_requests(self): + urls=[] + for genre in self.genres: + urls.append(f"{self.start_urls}/search/title/?genres={genre}&amp;languages=en&amp;sort=user_rating,desc&amp;title_type=feature") + for url in urls: + yield scrapy.Request(url=url,callback=self.parse) + + def parse(self, response): + movies_list=response.css('div.lister-list') + for movie in movies_list: + movies=movie.css('div.lister-item.mode-advanced') + year='' + title='' + rating='' + reviews='' + directors_actors='' + genres='' + gross='' + runtime='' + for items in movies: + rating=items.css("div.inline-block.ratings-imdb-rating strong::text").get() + runtime=items.css("span.runtime::text").get() + year=items.css('span.lister-item-year.text-muted.unbold::text').get() + title=items.css("h3.lister-item-header a::text").get()\ + genres=items.css("p.text-muted span.genre::text").get() + + for item in items.css('p.sort-num_votes-visible'): + reviews=item.css("span:nth-child(2)::text").get() + gross=item.css('span:nth-child(5)::text').get() + + for item in items.css('div.lister-item-content'): + for names in item.xpath('.//p[3]'): + directors_actors = [name.strip() for name in names.css('::text').extract()] + yield{\ + "year":year, + "title":title, + 'rating':rating, + 'no_of_reviews':reviews, + 'directors_actors':directors_actors, + 'genres':genres.strip(), + 'runtime':runtime, + 'gross':gross + } + + next_page = response.css('a.lister-page-next.next-page').attrib['href'] + next_page = f"{self.start_urls}/{next_page}" + print(f"temp:{next_page}") + if next_page is not None: + yield response.follow(next_page,callback=self.parse) + +</code></pre></div></div> + +<p>After executing the spider, all 20,464 action movies from IMDB were extracted. The dataset contains a lot of dirty values and empty cells. Data manipulations and data preprocessing can be done before applying the data to proper use. Complete code along with extracted dataset can be found in GitHub <a href="https://github.com/shyamron/imdb_movies_scrapy.git">here</a>.</p> + +<h2 id="conclusion">Conclusion</h2> + +<p>By implementing the spider code, 20k+ action movies were scraped in about 15–20 minutes. This clearly show how power scrapy is. You can explore further about scrapy <a href="https://docs.scrapy.org/en/latest/intro/tutorial.html">here </a>to scrape your own dataset.</p> + +<h2 id="references">References:</h2> + +<ul> + <li><a href="https://www.datacamp.com/tutorial/making-web-crawlers-scrapy-python">Scrapy Python: How to Make Web Crawler in Python, DataCamp</a></li> + <li><a href="https://doc.scrapy.org/en/latest/intro/tutorial.html">Scrapy Tutorial — Scrapy 2.8.0 documentation</a></li> + <li><a href="https://www.experfy.com/blog/using-scrapy-to-build-your-own-dataset">Using Scrapy to Build your Own Dataset, Experfy Insights</a></li> + <li><a href="https://app.datacamp.com/learn/courses/web-scraping-with-python">Web Scraping with Python — DataCamp Learn</a></li> +</ul> + +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Shyamron, and several other fellows access to DataCamp, to learn and grow.</p>Shyamron DongolScrapy, a free and open-source web crawling framework, was first release on June 26, 2008 licensed under BSD. It is used for web scraping and extracting structured data. Scrapy is widely used by many employers, for both freelancing and in-house jobs for various applications from data mining to monitoring websites. or changes. Scrapy is popularly used due to its ability to handle requests asynchronously, i.e., it can execute multiple tasks concurrently, such as making requests, processing responses, and saving data. It allows you to focus on the data extraction process utilizing CSS selectors and XPath expressions rather than the complex internals of how spiders are supposed to function. With Scrapy, you can easily build complex scraping pipelines that can handle multiple pages, parse complex HTML structures, and store data in various formats.Code for Nepal and DataCamp Partnership: Empowering Data Literacy and Career Growth2023-04-11T00:00:00+00:002023-04-11T00:00:00+00:00/2023/04/11/code-for-nepal-datacamp-partnership<p><a href="https://codefornepal.org/">Code for Nepal</a> is a non-profit organization that aims to increase digital literacy and access to technology in Nepal. We focus on providing training and resources for coding and data literacy, as well as advocating for policies and programs that support technology education and access. Code for Nepal also works to promote the use of technology to address social issues and improve the lives of Nepali people.</p> + +<p>We introduced the Code for Nepal Data Fellowship in 2020, and this has been one of our success stories. Our partnership with <a href="https://www.datacamp.com/donates">DataCamp Donates</a> enables our fellows access to an amazing learning platform that offers interactive courses in data science, analytics, and programming. Additionally, as part of the fellowship they also join a supportive community, collaborate with like-minded individuals, receive guidance from experienced mentors, and even earn an income. Fellows have the opportunity to share their knowledge and insights by writing blogs. We believe this program offers a unique chance for individuals to develop their skills and contribute to the tech industry in Nepal and globally.</p> + +<p><img src="https://ayushsubedi.github.io/img/data_fellowship_2023.png" alt="" /></p> + +<p><img src="https://ayushsubedi.github.io/img/mentor.jpg" alt="" /></p> + +<p><img src="https://ayushsubedi.github.io/img/group_photo.jpg" alt="" /></p> + +<p><a href="https://www.datacamp.com/courses-all?utm_source=c4n&amp;utm_medium=partner&amp;utm_campaign=000000_1-partner_2-na_3-nepal_4-na_5-bl_6-na_7-do_8-ptnr-pn_9-na_10-na_11-renewal">DataCamp provides a range of courses</a> on topics such as Python programming, data analysis, data visualization, machine learning, and many more. DataCamp courses are interactive and include hands-on coding exercises, quizzes, and projects that allow learners to apply their skills in real-world scenarios. The platform is designed to be user-friendly and accessible to learners of all levels, from beginners to experts. Additionally, DataCamp offers <a href="https://www.datacamp.com/tracks/career?utm_source=c4n&amp;utm_medium=partner&amp;utm_campaign=000000_1-partner_2-na_3-nepal_4-na_5-bl_6-na_7-do_8-ptnr-pn_9-na_10-na_11-renewal">career tracks</a>, <a href="https://www.datacamp.com/signal?utm_source=c4n&amp;utm_medium=partner&amp;utm_campaign=000000_1-partner_2-na_3-nepal_4-na_5-bl_6-na_7-do_8-ptnr-pn_9-na_10-na_11-renewal">skill assessments</a>, and a personalized learning experience through its adaptive learning technology.</p> + +<p><img src="https://res.cloudinary.com/dyd911kmh/f_auto,c_limit,w_1080,q_auto/Marketing/Screenshots/screenshot-campus-encoding-time.png" alt="" /></p> + +<p>Recently, we surveyed our alumni to request information regarding if the Code for Nepal partnership with DataCamp helped them kickstart their career in data.</p> + +<p>Most of the respondents stated that DataCamp helped them to learn or enhance their programming skills, specifically in Python, SQL, and data analysis. Some respondents are students who are still learning and looking for internships, while others secured jobs or internships after completing DataCamp courses. A few respondents also mentioned that DataCamp provided them with a platform to learn about AI/ML and big data. One respondent mentioned that DataCamp has been a crucial resource for them in developing their data analysis skills, and they were able to secure a full-time position at a clinical tech company.</p> + +<p>From the survey responses, the following companies were mentioned where participants secured jobs or internships after learning through DataCamp: <a href="https://www.accenture.com/">Accenture</a>, <a href="https://fusemachines.com/">Fusemachines</a>, <a href="https://www.cloudfactory.com/">Cloudfactory,</a> <a href="https://www.cotiviti.com/">Cotiviti Nepal</a>, <a href="https://www.plieger.nl/">Plieger Group</a>, <a href="https://mediflowsolutions.com/">Mediflow Solutions</a>, and <a href="https://www.nimble-cr.com/">Nimble Clinical Research</a>. However, some participants did not mention the companies they secured jobs/internships with or were still seeking opportunities.</p> + +<p><img src="https://ayushsubedi.github.io/img/internship.png" alt="" /></p> + +<p>The responses provided by different individuals suggest that the partnership has helped them in various ways to enhance their knowledge and skills in the field of data science, engineering, and analysis. Many individuals reported that DataCamp helped them to learn Python programming language, which is widely used in the field of data science, and also introduced them to various tools and modules available in Python, such as Numpy, Pandas, and Matplotlib.</p> + +<p>Some individuals mentioned that DataCamp helped them gain SQL skills and provided them with a brief overview of the field of data engineering. Others reported that DataCamp helped them to hone their AI/ML skills, learn important concepts such as data manipulation, data visualization, machine learning algorithms, and deep learning techniques, and build practical projects to showcase their abilities to potential employers.</p> + +<p>Many individuals expressed their gratitude towards DataCamp for providing them with an excellent platform to learn and improve their skills in data science, engineering, and analysis. They appreciated the interactive and impactful nature of the courses and projects, which helped them to test their understanding of the material and identify their areas of weakness. Some individuals also mentioned that DataCamp helped them to advance in their careers in data science and analysis.</p> + +<p>The responses suggest that DataCamp has been a valuable resource for individuals interested in data science, engineering, and analysis, providing them with the necessary tools and knowledge to succeed in these fields.</p>Ayush SubediCode for Nepal is a non-profit organization that aims to increase digital literacy and access to technology in Nepal. We focus on providing training and resources for coding and data literacy, as well as advocating for policies and programs that support technology education and access. Code for Nepal also works to promote the use of technology to address social issues and improve the lives of Nepali people.Survey Form Deployment and Data Pipeline2023-03-28T00:00:00+00:002023-03-28T00:00:00+00:00/2023/03/28/survey-form-deployment<p>This project is about collecting data by doing survey. Simply, survey data on social media usage is collected. We will be using deploying a single page that contains the survey form to the public internet. We will collect all the data on the MongoDB database. We will create an API that helps to fetch all the survey data from the MongoDB database. You can see the deployed survey form in this <a href="https://server-mav2.onrender.com/">link</a>.<br /> +After deploying the survey form, we will create a data pipeline that consists of fetching the data from the database and cleaning the data for further use in visualization and analysis. We will be using Airflow for scheduling these two processes one after another. Airflow is an open-source platform for developing, scheduling, and monitoring different workloads. It provides a graphical user interface to manage our workloads.</p> + +<p><strong>Code Availability</strong><br /> +Survey Form <a href="https://github.com/sudips413/DataProjectSurvey">here</a><br /> +Data Pipeline <a href="https://github.com/sudips413/Airflow">here</a></p> + +<p><strong>Technology Used</strong><br /> +HTML, CSS, Javascript<br /> +Nodejs(version 16.17.0), MongoDB<br /> +Airflow</p> + +<p><strong>Steps for deploying and pipelining</strong></p> + +<p><strong>Step 1: Create a Survey Form</strong><br /> +Create a directory named <strong><em>your_directory_name.</em></strong> Create a simple survey form in <strong><em>index.html</em></strong> about social media usage by individuals inside <strong><em>your_directory_name.</em></strong> The field includes the name, age, sex, social media preferred, and frequency of usage.</p> + +<p><strong>Step 2: Create a node.js server</strong><br /> +On <strong><em>your_directory_name</em></strong> run, the command <strong><em>npm init –y.</em></strong> After that install express, body-parser, and mongoose.<br /> +<strong><em>npm install express body-parser mongoose<br /> +_**Create a Model folder and create a file named **_Survey.js</em></strong> This file includes the schema for the database. Write the following code to create a mongoose schema.</p> + +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const mongoose = require('mongoose'); +const Schema = mongoose.Schema; +const surveySchema = new Schema({ + name: { + type: String, + default: 'Anonymous' + }, + age: { + type: String, + default: 'Not Specified' + }, + sex:{ + type: String, + default: 'Not Specified' + }, + platform:{ + type: String, + default: 'Not Specified' + }, + frequency:{ + type: String, + default: 'Not Specified' + } +}); +module.exports = mongoose.model('Survey', surveySchema); +</code></pre></div></div> +<p>After that,Create a server.js file. Write the following code to start the server at port 3000.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const express = require('express'); +const app = express(); +const bodyParser = require('body-parser'); +app.use(bodyParser.json()); +const port = 3000; +const survey = require('./Model/Survey'); +//connect to mongodb +const mongoose = require('mongoose'); +mongoose.connect('mongodb+srv://&lt;your_mongodb_username&gt;:&lt;your_mongod_password&gt;@cluster0.iwq7e3d.mongodb.net/&lt;collection_name&gt;', {useNewUrlParser: true, useUnifiedTopology: true}) +.then(() =&gt; console.log('Connected to MongoDB...')) +.catch(err =&gt; console.error('Could not connect to MongoDB...')); +app.listen(port, () =&gt; { + console.log(`Example app listening at http://localhost:${port}`); +}); +</code></pre></div></div> +<p>Add this code to serve the <strong><em>index.html</em></strong> on running the localhost:3000/</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>app.get('/', (req, res) =&gt; { + //respond the static index.html file + res.sendFile(__dirname + '/index.html'); +}); +</code></pre></div></div> +<p>Now create an endpoint that handles the post request of saving the survey data to the MongoDB database.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>app.post('/survey', async(req, res) =&gt; { + const obj = new survey({ + name: req.body.name, + age: req.body.age, + sex : req.body.sex, + platform: req.body.socialMedia, + frequency: req.body.frequency + }); + await obj.save().then((data)=&gt;{ + res.status(200).send('Data saved successfully'); + }) + .catch(err =&gt; { + res.status(400).send('Unable to save to database'); + console.log(err); + }); +}); +</code></pre></div></div> +<p>To provide all the data, add this code to endpoint “/data”</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>app.get('/data', async(req, res) =&gt; { + try { + const data = await survey.find(); + res.json(data); + } catch (err) { + console.error(err); + res.status(500).send('Server Error'); + } +}); +</code></pre></div></div> +<p>After that, we need to send the post request from the frontend part so, add this code to <strong><em>index.html.</em></strong></p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>await fetch('http://localhost:3000/survey',{ + method:'POST', + headers:{ + 'Content-Type':'application/json' + }, + body:JSON.stringify(data) + }).then((res)=&gt;{ //your code here + }).catch((err)=&gt;{ //your code here +}) +</code></pre></div></div> +<p><strong>Step 3: Deploying to Render Platform</strong><br /> +To deploy the application, we need to create a repository in our GitHub. After pushing all the code to the repository. We can log in to the rendering platform with a GitHub account. Click on the new button, list of services will be seen. Click on web service. It provides a free plan for web services. Click on the free plan. A new page appears where you can connect your repository.<br /> +You can visit this youtube link for guidelines.<br /> +Note*: Sometimes node engine errors might arrive during deployment. Add <strong><em>.nvmrc</em></strong> in your directory with the specific required version of the node engine.<br /> +After that, you need to change the endpoint with deployed URL in <strong><em>index.htm</em></strong>l. Update the endpoint by removing ‘http://localhost:3000/survey’ to render the service URL like <em>‘</em><a href="https://your-webserviceurl.com/survey"><em>https://your-webserviceurl.com/survey</em></a><em>’</em></p> + +<p><strong>Step 4: Data pipelining using Airflow</strong><br /> +We need to install airflow. I have to install airflow in windows(wsl). You can install it by watching this guideline video <a href="https://www.youtube.com/watch?v=Va_NMDoDqLQ">link</a>.<br /> +Under the file directory <strong><em>dags,</em></strong> create a new dag for fetching and cleaning the data <strong><em>fecthingandclean.py</em></strong>. Also, create new folder <em>data</em> with a subfolder <em>surveyData</em> as shown in the figure.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:670/1*BymlH_V8kCFPx-CF1xN7fg.png" alt="" /></p> + +<p>dags and data folder</p> + +<p>In <strong><em>fetchingandclean.py,</em></strong> we need to import the necessary files first.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>import requests +from airflow import DAG +from airflow.operators.python import PythonOperator +from datetime import datetime +import pandas as pd +import os +import csv +import json +</code></pre></div></div> +<p>After that, we define a function that performs the workload of fetching the data from MongoDB collection. The response from the URL is in string form so, we need to convert it to a list using a JSON package.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>def fetchData(): + try: + url = “https://your-webserviceurl.com/data” + response = requests.request("GET", url) + data= response.text + data = json.loads(data) + flocation="yourpath/data/surveyData/surveyData.csv" + if not os.path.exists(flocation): + open(flocation,'w').close() + with open(flocation, 'w', newline='') as f: + # Create a csv writer object + writer = csv.writer(f) + # Write the header row + writer.writerow(data[0].keys()) + # Write the data rows + for row in data: + writer.writerow(row.values()) + else: + with open(flocation, 'w', newline='') as f: + # Create a csv writer object + writer = csv.writer(f) + # Write the header row + writer.writerow(data[0].keys()) + # Write the response.text rows + for row in data: + writer.writerow(row.values()) + except: + print("error while fetching") +</code></pre></div></div> +<p>After that, create a cleanData function workload.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>def cleanData(): + try: + flocation="yourpath/data/surveyData/surveyDataClean.csv" + if not os.path.exists(flocation): + open(flocation,'w').close() + df= pd.read_csv("yourpath/data/surveyData/surveyData.csv") + #remove duplicates + df = df.drop('__v', axis=1) + df = df.rename(columns={'_id': 'userID'}) + df= df.drop_duplicates() + df.to_csv(flocation,index=False) + except: + print("Could not clean the data!!!") +</code></pre></div></div> +<p>Now create a DAG</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>with DAG(dag_id="SURVEY-DATA", + start_date=datetime(2023,3,25), + schedule_interval="@hourly", + catchup=False) as dag: + fetch = PythonOperator( + task_id="Fetch_from_API", + python_callable=fetchData + ) + clean = PythonOperator( + task_id="clean_the_data", + python_callable=cleanData + ) +fetch &gt;&gt; clean +</code></pre></div></div> +<p><strong>Step 5: To run this you can type the following code in a different terminal.</strong></p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>airflow webserver +airflow scheduler +</code></pre></div></div> +<p>Now you can visit the airflow home page at <strong><em>“localhost:8080”.</em></strong> Select the <strong><em>SURVEY-DATA</em></strong> dag and you trigger it to run. You can view the graph from UI.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:1212/1*PqSiZWC0sddG35oz5I6FLQ.png" alt="" /></p> + +<p>After running the dags, the data folder must have two files shown below.</p> + +<p><img src="https://miro.medium.com/v2/resize:fit:636/1*XIIHw7jH8trsV6_ho2FMrg.png" alt="" /></p> + +<p>We have successfully deployed the survey form and made a data pipeline using airflow. The collection of data and cleaning can be scheduled at certain intervals of time like hourly which is written in the DAG code above.</p> + +<p>Code for Nepal would like to thank <a href="https://www.datacamp.com/donates">DataCamp Donates</a> for providing Sudip, and several other fellows access to DataCamp, to learn and grow.</p>Sudip ShresthaThis project is about collecting data by doing survey. Simply, survey data on social media usage is collected. We will be using deploying a single page that contains the survey form to the public internet. We will collect all the data on the MongoDB database. We will create an API that helps to fetch all the survey data from the MongoDB database. You can see the deployed survey form in this link. After deploying the survey form, we will create a data pipeline that consists of fetching the data from the database and cleaning the data for further use in visualization and analysis. We will be using Airflow for scheduling these two processes one after another. Airflow is an open-source platform for developing, scheduling, and monitoring different workloads. It provides a graphical user interface to manage our workloads. \ No newline at end of file diff --git a/fellowship2023/index.html b/fellowship2023/index.html new file mode 100644 index 00000000..530c8ddb --- /dev/null +++ b/fellowship2023/index.html @@ -0,0 +1,464 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fellowship | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +

    Data Fellowship 2023

    +

    We are pleased to announce that applications are open for Data Fellowship. The objective of this fellowship organized by Code for Nepal with support from DataCamp is to help anyone, especially those who are impacted by COVID-19, build their data skills and make progress in their lives.

    Eligibility: Nepalis in and outside of Nepal. Especially, Nepali women around the world, youths and professionals, from Provinces 2 and 6 are highly encouraged to apply.

    Data Fellows will get access to Premium DataCamp subscription (usually it costs $149/year) and support for career opportunities, & networking.

    We are grateful to DataCamp for donating access to their expert-led data skill training. DataCamp offers online training for all data skills and levels, from non-coding essentials for business to data science and machine learning, all taught by leading experts in the field. DataCamp is used by 1,600+ companies such as Google, Uber, PayPal and others to build skills of their employees.

    Every Nepali interested in learning new skills can apply. Interested candidates are encouraged to apply as soon as possible. See below for details about the Fellowship and apply!

    +
    +
    +
    + +
    + +
    +
    + + +
    + +
    +
    +
    + +
    + +
    + +
    +
    +

    About the program

    +
    + The Data Fellowship includes:
    1. A DataCamp Premium subscription to take courses and earn certificates.
    2. Opportunity to publish data visualizations and blog posts via Code for Nepal site. (When data visualizations and or blog posts of fellows who have earned DataCamp certificate will be selected to be published by Code for Nepal.)
    3. Industry/academia expert teaching assistants (offline and online) to support learning, community participation.
    4. Involvement in Open Source Projects.
    5. A digital certificate from Code for Nepal after the completion of the fellowship.
    6. Opportunity to contribute to amazing open source data projects after completion of the program.
    7. Opportunity be part of Code For Nepal Community.
    +
    +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    +

    Fellowship components

    +
    +

    Step 1: Datacamp Courses

    +

    Fellows should complete the DataCamp course in the given timeframe to enhance their data and digital skills. + (Every fellow has 3 months to complete their DataCamp course from the date they get access to DataCamp.)

    + +

    Step 2: Assignment

    +

    Fellows should submit the assignment in the form of fellowship-section blog post, data visualization in any form of publishable output.

    + +

    Step 3: Support

    +

    Fellows get an opportunity to further work on the organization project, recommendation of the job and internship and other support opportunities.


    +

    For those who are already employed or have bachelors degree, only Step 1 and Step 2 are required to complete this Fellowship program.

    + + +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    +

    Learning outcomes of the fellowship

    +
    +
      +
    1. Community-based learning
    2. +
    3. Involvement in Data-oriented project
    4. +
    5. Mentorship sessions (online) via Slack
    6. +
    7. Certification of Completion
    8. +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +

    Application Details

    +
    +

    Application Open: June 03, 2023
    + Deadline to Apply: June 29, 2023
    + Number of seats: 150
    +

    + Applicants must meet the following criteria to apply +

    +

      +
    1. Able to complete the program
    2. +
    3. High school degree or above
    4. +
    5. Background in basic programming
    6. +
    +

    +

    + We will call for interviews if you are shortlisted. The selected fellows must complete all the phases of the program to receive certification. +

    +

    You only have to fill one application form. +

    +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    + +
    +
    +
    +

    APPLY NOW

    +
    +
    + +
    +
    + + + + + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hackathon2023/index.html b/hackathon2023/index.html new file mode 100644 index 00000000..357156cf --- /dev/null +++ b/hackathon2023/index.html @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hackathon | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +

    Data Crunch 2023: A Code For Nepal Hackathon

    +

    Welcome to Data Crunch 2023! Join us for an exciting event where developers and tech enthusiasts come together to build something incredible.

    +
    +
    +
    + +
    + +
    +
    + + +
    + +
    +
    +
    + +
    + +
    + +
    +
    +

    About the program

    +
    + Team up with 3-6 visionaries to transform Nepal's future across themes like environment, healthcare, and more. Dive into non-proprietary data to develop open-sourced, well-documented projects, from dynamic prototypes to actionable solutions, all showcased in CFN's repository. Make an impact where it truly matters! + + + +
    +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    +

    Modality

    +
    +

    Team Composition

    +

    Gather your brainiest innovators; teams should comprise 3-6 members. +

    + +

    Data Usage

    +

    Dive into the vast ocean of non-proprietary data to fuel your creations.

    + +

    Eligibility of Projects

    +

    We're looking for fresh ideas! Previously developed projects are not permitted.


    + + + +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    +

    Expectations for Outputs:

    +
    +
      +
    1. Data-Driven Projects: Harness the power of data to drive your innovations.
    2. +
    3. Functional Projects: We expect working prototypes, proof-of-concept solutions, or fully functional software. Bonus points for compelling infographics!
    4. +
    5. Presentation: A brief yet insightful documentation of your project is essential. +
    6. +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +

    Application Details

    +
    +

    Application Open: June 03, 2023
    + Deadline to Apply: June 29, 2023
    + Number of seats: 150
    +

    + Applicants must meet the following criteria to apply +

    +

      +
    1. Able to complete the program
    2. +
    3. High school degree or above
    4. +
    5. Background in basic programming
    6. +
    +

    +

    + We will call for interviews if you are shortlisted. The selected fellows must complete all the phases of the program to receive certification. +

    +

    You only have to fill one application form. +

    +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    + +
    +
    +
    +

    APPLICATION WILL OPEN SOON, STAY TUNED

    +
    +
    + +
    +
    + + + + + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..ad4540bd --- /dev/null +++ b/index.html @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Empower Nepal with civic technology

    +
    + + +

    Helping to increase digital literacy and use of open data in Nepal

    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +

    Our work

    + +

    As a community of volunteers we believe in creating opportunities and public goods. Use them or contribute to them.

    + +
    +
    + + + + + +
    +
    + +
    +
    +

    RECENT POSTS

    +
    + +
    +
    + +
    + +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    Why determining the climate trend is important?

    Trend...

    + +
    + Read more +
    +
    +
    +
    + +
    +
    + +
    + +

    Ashma Subedi recently completed her Masters in Environment Science from Kathmandu University. She loves solving environment problems using data science and machine learning, especially time series analysis.

    Use of Python in the biological environment- Prey...

    + +
    + Read more +
    +
    +
    +
    + +
    +
    + +
    + +

    Mala Deep is a Business Intelligence Consultant, and community focused data citizen.

    Go Beyond CSV: Data Ingestion with Pandas

    Data will not always come to you in CSV

    Pandas Read_CSV() data...</p>
+                                                       
+                                 <div class= + Read more +

    +
    +
    +
    + +
    +
    +
    + + + + +
    +
    +
    +
    +

    +

    About

    +

    +

    We hope to help create a digitally and data empowered Nepal together where everyone can thrive. Here is our story so far.

    +
    +
    +
    +
    +
      + + +
    • + +
      + +
      +
      +
      +

      2014

      +

      +

      Our humble beginnings

      +
      +
      +

      Founders Mia and Ravi organized their first digital literacy workshop for young women in Kathmandu and registered Code for Nepal, as a non-profit in the US.

      +
      +
      +
      +
    • + + +
    • + +
      + +
      +
      +
      +

      2015

      +

      +

      Responding to a historic crisis

      +
      +
      +

      When the devastating earthquakes struck Nepal, Code for Nepal community members mobilized a digital response to help those in need and advocated for data-driven relief and recovery

      +
      +
      +
      +
    • + + +
    • + +
      + image alt text +
      +
      +
      +

      2016-2019

      +

      +

      Creating products and empowering aspiring tech professionals

      +
      +
      +

      We launched open data and civic tech products, organized conferences, and hackathon, collaborated with partners such as Purdue University and gave scholarships to young women and men.

      +
      +
      +
      +
    • + + + +
    • +
      +

      Join us
      and shape
      our story!

      +

      +
      +
    • + + +
    +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +

    Contact Us

    +

    +

    We would love to hear from you! Of course, you can submit the form below or chat with us on Slack, Twitter, and Facebook.

    +

    +
    +
    +
    +
    +
    + +
    +
    +
    + +

    +
    +
    + +

    +
    +
    + +

    +
    +
    +
    +
    + +

    +
    +
    + +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +

    Our Sponsors

    + +

    + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/joinus/index.html b/joinus/index.html new file mode 100644 index 00000000..cfd51651 --- /dev/null +++ b/joinus/index.html @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Join Us | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    Join Us

    +
    +
    +
    +
    +

    You can help us and many in Nepal just from your couch or sofa. You can be a designer, marketer, coder, writer, problem-solver, or anyone + else and are interested in helping people make better use of technology, be + digitally and data literate, then join us via:

    + + + We also encourage you to explore our website, learn about our projects, and read the “Code of Conduct” policy. + + If you are an Amazon shopper, you can help us by shopping through smile.amazon.com and selecting to support Code for Nepal. +
    +
    + +
    + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/privacy/index.html b/privacy/index.html new file mode 100644 index 00000000..6e57e94e --- /dev/null +++ b/privacy/index.html @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Privacy Policy | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Privacy Policy

    +


    +

    This website uses Google Analytics to help analyze how visitors use this site.

    +


    +Google Analytics uses cookies, which are small text files placed on your computer, to collect standard internet log information and visitor behavior information in an anonymous form.

    + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/index.html b/projects/index.html new file mode 100644 index 00000000..edd42c19 --- /dev/null +++ b/projects/index.html @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Projects | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    Projects

    +
    +
    +
    +
    +

    Since 2014, our small community of volunteers, have organized digital workshops, conferences, provided scholarships, and built a series of products such as:

    + + +
    +
    + +
    +

    Please see below a list of ongoing and completing projects.

    + + + +
    + +
    + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/scripts/cibuild b/scripts/cibuild new file mode 100644 index 00000000..76620bab --- /dev/null +++ b/scripts/cibuild @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -e # halt script on error + +bundle exec jekyll build +bundle exec htmlproofer ./_site --disable-external \ No newline at end of file diff --git a/team/index.html b/team/index.html new file mode 100644 index 00000000..f910001b --- /dev/null +++ b/team/index.html @@ -0,0 +1,507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Team | Code for Nepal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +

    OUR TEAM

    +

    +
    +
    +
    + +
    +
    + + +

    Aishraj Dahal

    +
    +

    + +
    +
    + +
    +
    + + +

    Anup Dhamala

    +
    +

    + +
    +
    + +
    +
    + + +

    Ayush Subedi

    +
    +

    + +
    +
    + +
    +
    + + +

    Bikesh Bimali

    +
    +

    + +
    +
    + +
    +
    + + +

    David Shrestha

    +
    +

    + +
    +
    + +
    +
    + + +

    Dipak Gautam

    +
    +

    + +
    +
    + +
    +
    + + +

    Ishan Dongol

    +
    +

    + +
    +
    + +
    +
    + + +

    Laurence Hall

    +
    +

    + +
    +
    + +
    +
    + + +

    Pragya Tripathi

    +
    +

    + +
    +
    + +
    +
    + + +

    Pratima Kandel

    +
    +

    + +
    +
    + +
    +
    + + +

    Prayatna Mishra

    +
    +

    + +
    +
    + +
    +
    + + +

    Ravi Kumar

    +
    +

    + +
    +
    + +
    +
    + + +

    Shreeya Khadka

    +
    +

    + +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + + +

    Sweta Baniya

    +
    +

    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    + Copyright © Code for Nepal 2023 +
    + +
    + +
    + +
    + + +
    +
    + This work is licensed under a Creative Commons Attribution - ShareAlike 3.0 License! Code for Nepal is a registered 501(c)(3) nonprofit organization. EIN: 47-3620037 +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file