Sunday, July 11, 2021

DOs and Don'ts of Academic Emails / Email Etiquettes / Manners

Writing a proper email increases our chance of getting a reply. Especially including a proper email subject, proper identification, background, etc. For example, in case of a student, official full name, student ID, course, section, etc. Even though this blogpost uses examples from academic scenario, some parts may be applicable to other environments as well. 

We should not be expecting a reply from our email recipients within a very short time. We may choose to wait at least a day before following up or longer as appropriate.  

On the other hand, depending on the volume of emails we receive, we might decide to check emails at least five times a day.

There is a difference between "compose" and "reply".

We should compose new emails with a different and appropriate subject, only while we are talking about a new topic / subject.

When talking about a different topic, then we may decide to click "compose" and write the email with a proper subject.

When talking about an older and same topic, please open the last email that was exchanged about the same topic and click reply and then write there.

For example, when talking about makeup midterm exams, the steps could be
a) find/open the last email that was exchanged about makeup midterms
b) click reply
c) delete email body (quote only relevant lines / clauses)
d) delete everything from TO field and ensure that only the email
address (or the address of intended recipient) is written there
e) do not touch the subject field

We need to separate our paragraphs in an email instead of combining everything into one paragraph.

Repeated characters like ...., ????, !!!!!!!! should be avoided.

In short, we should not use any sentence structure that we would not find in any formal and non-literary academic text book.

Other email etiquette:
1. Email should include details about the sender, e.g., full name, id, course, section and additional details so that the email recipient does not have to ask for it.


2. Punctuations (!, ?, etc) may be used only once.
CAPITAL/UPPERCASE words should be avoided
Informal/chat language should be avoided.

Here are some examples:
Correct: Please, find the java files attached and help me.
Incorrect: PLZZ u nid 2 hlp meh, fnd progs att.

Correct: I don't know!
Incorrect: I don't know!!!!

Correct: How to contact the Student Tutor?
Incorrect: How to contact Student Tutor????

Correct: Need help on flowchart
Incorrect: HELP FLOWCHARTS, NOT UNDERSTANDING


3. Use proper and short subject: do not leave it empty or make it too long
Examples of proper  email subjects:
  • Facing problem in Input/Output
  • Need help on Array
  • Urgent: Need B negative blood donors

urgent
emergency
very important
(blank)
please read
Need help
help
problem
mail
about a problem
query
question
I actually need help please my query badly


4. Read the mail several times before sending, correct spelling, grammar, tone.
We might wish to enable the spell and grammar checking options (if any) in our favorite web browser or utilize add-ons/extensions or other software. For example:
5. If we are telling about a problem, we should tell in details, what question or problem
we tried to solve,  how we tried, along with detailed error message,
steps to reproduce the problem. Just like doctors cannot give medicine
to people who says "i'm not feeling well" only, we need to mention
specific symptoms with as much details as possible.


6. Attach proper files
Attach PY / IPYNB / relevant files.
Attach only JAVA files, NOT java~ or class files.

More details are available at
http://sites.google.com/site/bucse110/correctjavafile


7. Why not learn more? Here are some more resources,

How to ask questions?

Alternative Desktop Shell for Windows

Windows shell from Microsoft is not the only desktop shell available for Windows. You might wish to try the alternative Desktop Shell for Windows like Cairo Desktop, Blackbox for Windows (xoblite), etc. These shells provides their own start menu, taskbar, desktop, an overall different experience while using Windows. For those who would like to try out if using a different shell increases your productivity or not, this could be the time to check those out.

Here are the links for two choices mentioned above that were found to be working in Windows 10 at the time of writing this blog post.

Cairo Desktop 
Preview/screenshots are from its homepage. Please visit that page to find the most updated screenshots/previews.










Blackbox for Windows (xoblite)

Download       Update       Homepage      Preview

Preview/screenshots are from its homepage/forums. Please visit those page to find the most updated screenshots/previews.





Can anyone suggest alternatives that are in active development?


Disclaimer: Copyright of all the images and software belong to the respective owners.

Sunday, May 16, 2021

Bandwidth friendly teaching and learning

For those of us who are facing bandwidth issues, we may try (and remember to undo if we face additional problems) the followings for low bandwidth teaching and learning

  • using different devices: may be PC for sharing screen and phone for audio
  • reducing number of devices that are using the shared internet bandwidth
  • keeping the video off, at least while not speaking
  • unmuting only while speaking

  • summarizing things that we are saying to the chat during the section to manage intermittent audio problems for some participants

  • posting a summary at the end of each session so that those who could not attend can still have some discussion notes

  • offering additional office timings if the situation permits

  • reducing our own resolution and window size while presenting

  • sharing screen or staying in the collaborative workspace, only when necessary.

  • closing other browser tabs

  • closing other background apps, cloud drive syncing apps, specially the ones visible near the clock e.g., One Drive, Google Drive, DropBox, etc.

  • using incognito or private-browsing mode to temporarily avoid potentially interfering browser extensions or temporarily disabling all browser extensions, specially adblockers

  • restarting computer / device

  • restarting browser

  • reloading the browser page

  • temporarily turning OFF browser's "sync" option for settings

  • if using Google meet, setting send and receive resolution to 360p and turning on Closed Captioning (CC)

  • if using Zoom, disabling HD and other tips, turning ON free zoom live captioning, and disabling profile pictures

  • if using Spacial Chat, please see SpatialChat-Recommended-System-Settings

  • stopping the recording (if any) by (co)host(s)

  • rejoining the meeting might help with intermittent problems e.g., missing shared screen/audio

  • if on Windows, temporarily


Additional resources:


Thursday, August 6, 2020

Python Code Convention or Style Guide

Almost all organizations either adopt the coding style from someone else or develop their own one. Newly recruited employees as well as interns may be expected to follow the existing code convention or style guide of the company. If you are starting your own company, you may wish to adopt or develop your own one based on one of the available ones. Some examples are:

Python Style Guide or Code Convention 

Python:
https://pep8.org

Friday, April 24, 2020

Choosing Programming Languages (Java Vs Python)

Some of us may be thinking about which language(s) to learn. A lot of options are available: C, C++, Java, Kotlin, Python, Go, Dart, Swift etc. One of the popular questions is how to choose between Java and Python.

Should we be choosing a programming language based on
  • which one is easier to learn?
  • which one is easier to program in? 

Rather, the factors we might wish to consider are:
  • Academic rigor
  • Global trends for businesses/job market
  • Global trends for learners
  • Local trends for businesses/job market
  • Local trends for learners
  • Which language is better for long term software project maintainability

Please refer to the following comparison of Java and Python

Worldwide
Bangladesh
Reference
Business
/Market
Java 1st,
Python 3rd
TIOBE, both current month and Very Long Term History
Learners
Java 2nd,
Python 1st
Mixed
Java 2nd,
Python 3rd
Google
Trends
Java < Python
14 < 19
Java > Python
12 > 4
Linkedin
Jobs
Java > Python
304,153 > 230,553
Java > Python
16 > 9
Worldwide: 
Bangladesh:
  JavaPython
BdJobs
Java > Python
6 > 4

Github ranks Python as 2nd and Java as 3rd at
https://madnight.github.io/githut/#/pull_requests/2020/1

Java has 8 "yes" and Python has 5 "yes" at
https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

"I’d also rather maintain someone else’s Java code"
https://hilton.org.uk/blog/maintenance-expressive-languages

More reading:
https://en.wikipedia.org/wiki/Comparison_of_programming_languages


Conclusion:

Java has the advantage of having some similarity with C, C++, C#. Learning java may provide easy access to learning C - family of languages and their markets. Overall, Java has been prevalent and still is strong at the time of writing this article.

On the other hand, Python is growing fast.

Application area for both Java and Python largely overlaps. Both are useful for the web. While it is not impossible to create desktop and mobile app in python, Java programmers have the advantage of access to desktop (j2SE), embedded systems, and the global apps (Android) market.

Based on these factors, learners may choose to learn both (1) Java and (2) Python. Even if these two cross each other in rank, they are expected to be two of top several languages for some time to come.

After those two, 3rd / 4th and other languages may depend on task at hand or other job requirements. It may be a good practice to have several languages up ones' sleeve. Learning too many languages might seem lucrative. Unfortunately, it may have detrimental effects as each language may get less attention.

Your feedback and any insight is appreciated.

Tuesday, August 13, 2019

FizzBuzz

FizzBuzz is a pretty basic problem yet interesting for different purposes. It has been used in a variety of situations :

1) As a kids game as pointed out by wikipedia article, FizzBuzz

2) As a job interview question for programming related posts as pointed out in a 2007 article on by Mr Imran on Using FizzBuzz to Find Developers who Grok Coding.

3) For online judge contests and challenges like HackerRank

The question may be used in coding interview for good reasons as discussed by CodingHorror article, Why Can't Programmers.. Program?

Some of us might be wondering why a ~ 2007 problem is still relevant in 2019! This question has been answered already by a hackernoon article, Why I’m still using “Fizz Buzz” to hire Software-Developers

Many more approaches along with their variations have been discussed at
a) FizzBuzz Solution Dumping Ground
b) FizzBuzz JavaScript solution
c) HackerNews: What's the shortest FizzBuzz you can write? What language?    (discussion on Anarchy Golf : FizzBuzz)
d) Twenty Ways to FizzBuzz, An exercise in Javascript
e) FizzBuzz In Too Much Detail

The hackerrank challenge specially asks for the shortest code. The ability to write a short code depends on the minimum requirement of boilerplate code. In Java we can reduce length of the codef based on identifier(s), parentheses, ternary operator, line breaks, pre/post increment, re-writing n%3==0 conditions with greater-than (or less-than operators) as follows.
class S{public static void main(String[]a){for(int i=0;++i<101 i="" ystem.out.println="">0?i%5>0?i:"Buzz":i%5>0?"Fizz":"FizzBuzz");}}

Using javascript, we make it even shorter. We may need to remind ourselves that writing unreadable, difficult to maintain, is not recommended. Java, C, C++, C#, Python, Ruby, R, none of the submissions in these languages reached the top score yet which is 16.0. It leads us to the question, which submission led to the top score? The answer is bash script (proof). How? The hint has been kindly provided by the author of the top submission, Byron Formwalt at here.

If we are new to bash scripting, we may wish to get started with few resources mentioned here, here, and here. The Advanced Bash-Scripting (ABS) Guide (HTML, PDF) from The Linux Documentation Project (LDP) may be a good starting point.

Disclaimer: Even though this may be suitable for the purpose of the getting higher score in hackerrank or just for exercise, it may not be a part of best coding practices. There are many scopes for improvement in this post. Suggestions are welcome. .