diff --git a/_posts/2016-12-08-quotes-for-laughs.markdown b/_posts/2016-12-08-quotes-for-laughs.markdown deleted file mode 100644 index 2b9d00e..0000000 --- a/_posts/2016-12-08-quotes-for-laughs.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: post -title: "Quotes for Laughs" -subtitle: "Just some hilarious quotes from famous people." -date: 2016-12-08 08:55 +0530 -author: - fullname: Various Authors -categories: [fun] ---- - -Found these in my Journal. Chuckle off! - -Albert Einstein: -> Common sense is the collection of prejudices acquired by age of eighteen. - -Robert Benchley: -> Drawing upon my fine command of the English language, I said nothing. - -Mark Twain: -> Get your facts first, then you can distort them as you please. - -Abraham Lincoln: -> No man has good enough memory to be a successful liar. - -Jim Carey: -> Behind every great man is a woman rolling her eyes. - -Eddie Cantor: -> It takes years to become an overnight success. - -Mae West: -> Between two evils, I always pick the one I never tried before. - -Elbert Hubbard: -> Do not take life too seriously. You will never get out of it alive. - -Isaac Asimov: -> People who think they know everything are a great annoyance to those of us who do. - -Theodore Roosevelt: -> If you could kick the person in the pants responsible for most of your trouble, you would not sit for a month. - -Murray Gell-Mann: -> Think how hard physics would be if particles could think. diff --git a/_posts/2017-11-12-phy224a-newton-rings.markdown b/_posts/2017-11-12-phy224a-newton-rings.markdown deleted file mode 100644 index be54f5f..0000000 --- a/_posts/2017-11-12-phy224a-newton-rings.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: post -title: "Optics Adventures: Newton's Rings" -subtitle: "Fun optics experiment" -date: 2017-11-12 18:04 +0530 -categories: [projects] ---- - -Demonstration project which was part of Optics Laboratory (course) under supervision of Professor S. Ghosh. - -![Air](/img/phy224a/figure_1.png) -![Setup](/img/phy224a/figure_2.png) -![Water](/img/phy224a/figure_3.png) - -View the [report](/docs/phy224a.pdf) for more details. diff --git a/_posts/2017-11-12-phy315a-acousto-optics.markdown b/_posts/2017-11-12-phy315a-acousto-optics.markdown deleted file mode 100644 index b1e8e0a..0000000 --- a/_posts/2017-11-12-phy315a-acousto-optics.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: post -title: "Application of Raman Nath Model in Acousto-Optics" -subtitle: "Speed of Sound by Diffraction of Light" -date: 2017-11-12 22:30 +0530 -author: - fullname: Vyshakh, Yaman and I (Pawan) -categories: [projects] ---- - -Experimental project which was part of Modern Physics Laboratory. -The project replicated and further built upon a publication from [AJP](https://aapt.scitation.org/journal/ajp). The team consisted of three undergraduates from the department of Physics at Indian Institute of Technology, Kanpur. - -![PosterTop](/img/phy315a/poster_1.png) -![PosterCenter](/img/phy315a/poster_2.png) -![PosterBottom](/img/phy315a/poster_3.png) - -View the [report](/docs/phy315a.pdf) for more details. diff --git a/_posts/2018-03-18-tools-and-softwares.markdown b/_posts/2018-03-18-tools-and-softwares.markdown deleted file mode 100644 index a83f8f2..0000000 --- a/_posts/2018-03-18-tools-and-softwares.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: post -title: "Tools and Softwares" -subtitle: "List of useful tools and softwares for research communication." -date: 2018-03-18 14:25 +0530 -author: - fullname: Tutors from COM Class (Technical Communication in Research taught by Professor Harbola) -categories: [blog] ---- - -Graph ------ - -- GNU Plot -- Origin -- Mathematica -- Matlab - -Drawing -------- - -- Inkscape -- Povray -- Illustrator - -Photo Editing -------------- - -- Gimp -- Photoshop - -Analysing Experimental Images ------------------------------ - -- Fiji -- Imagej - -![Board](/img/tns.jpg) \ No newline at end of file diff --git a/_posts/2020-12-08-dnc-at-iitk.markdown b/_posts/2020-12-08-dnc-at-iitk.markdown deleted file mode 100644 index af96347..0000000 --- a/_posts/2020-12-08-dnc-at-iitk.markdown +++ /dev/null @@ -1,138 +0,0 @@ ---- -layout: post -title: "Data and Computation at IITK" -subtitle: "Thoughts, experiences and resources." -date: 2020-12-08 12:06 +0530 -categories: [blog] ---- - -## Overview - -This article is flavored like a blog post wherein I will be discussing my thoughts, and experiences at [IITK](https://iitk.ac.in/){:target="_blank"} when dealing with data and performing computation on it. Since I majored in Physics, this blog post will largely carry its essence. - -Data is generated in many forms but almost all data can be transformed into some kind of mathematical representation. Data may be persistent or may change with time. The latter has more to do with the nature of the source of data. For instance, you have to write a review of a product you bought online. The review might be slightly different based on the time of the day, environment around you or people you’ve interacted with. For computational purposes and to eliminate ambiguities, only that which has been recorded is called data. Less heed is given to the agent or the way in which data was recorded. Recorded data can be accompanied by highly descriptive metadata which might carry as much information as possible about the agent and the environment. - -Dealing with data will involve its collection, assimilation, transfer, storage, retrieval, and processing. Each of these are subjects of their own accord. Working with data is not limited to specific fields of education but the necessary knowledge and tools that will give you an edge majorly belong to certain fields of education. In this article, I will provide an idea of the fields, and resources where they can be explored further. All the external links and books are those that were part of my courses, and only act as a guide. They are listed in a particular order and must be ignored if interest does not persist. One must not limit themself to the mentioned resources but explore other resources that suit them. - -### Supplement - -- L1: Level 1 or equivalent to difficulty rating of 1 out of 5. -- L2: Level 2 or equivalent to difficulty rating of 3 out of 5. -- L3: Level 3 or equivalent to difficulty rating of 5 out of 5. -- IMO: In My strong Opinion. -- SIT: So I Think. - -L1, L2, L3 are judged based on required prior knowledge, required time input, and required mental ability. - -I’ve had hard time comprehending topics mentioned in resources tagged L3 (and with little success). If you choose to read them and would like to discuss them, feel free to [contact me](mailto:pawanmsr@outlook.com). - -### Note To Reader - -This article is for gaining perspective only. Any information, however useful, does not come with any warranty whatsoever. None of the topics discussed in this article are exhaustive, and should be considered opinionated and possibly biased. Readers should further explore the topics from books and other resources. - -## Mathematics - -Although only possessing knowledge of basic mathematics will help you get by in the industry, having a further grasp on the subject will help you perform better and make steadfast decisions. Moreover, mathematics is essential in developing other skills with regard to computation. - -Algebra and single variable calculus are necessary foundations in mathematics. Certain topics such as abstract algebra and topology will seldom be used in industry, but they are good to have if research is involved. Applied mathematics will be all that is required to work in industry. This will involve topics such as probability and statistics, numerical analysis and basic algebra. - -In any course, which requires prior knowledge of certain aspects of mathematics, is covered at the start of the course, but you may choose to do dedicated courses for in depth knowledge. - -### Resources - -- Kreyszig. Advanced Engineering Mathematics. Wiley. [L2]. -- Ross. Introduction to Probability Models. Elsevier. [L2]. -- Hogg, McKean, Craig. Introduction to Mathematical Statistics. Pearson. [L2]. -- Rohatgi, Saleh. An Introduction to Probability and Statistics. Wiley. [L2]. -- Zee. Group Theory in a Nutshell for Physicists. Princeton University Press. [L3]. -- Stone, Goldbart. Mathematics for Physics. Cambridge University Press. [L3]. -- Patashnik, Knuth, Graham. Concrete Mathematics. Addison Wesley. [L3]. -- Georgi. Lie Algebras in Particle Physics. Hachette UK. [L3]. - -## Programming Skills - -Programming is an essential skill to have; not just for working on data but in general. May it be for programming lathe and milling machines, or calibrating pid controllers in rate processes, programming has multitude of applications wherever computer numerical control (cnc) is required. For most industrial purposes it is only required to know how to use a certain programming language. The more difficult task of optimizing a compiler/interpreter or creating a new language altogether is native to computer science and engineering (and possibly electrical engineering) and is highly specialized in the discipline. - -Programming languages which are closer to assembly/machine language, such as C or C++, usually have lower runtime for tasks as compared to higher level languages, such as Python, performing the same task. On the other hand, higher level languages have syntax that is closer to languages used for human to human communication, making them easier to use. Easy typed languages are used for prototyping and rapid development of digital infrastructure. Lower level languages are used to improve performance and optimization. - -There may **not** be dedicated courses that only teach a programming language [SIT]. Most courses that teach programming language, teach them in conjunction with a task. Any programming language can be easily learnt by reading the manual and documentation, and using it to perform some task until one gets the hang of it [IMO]. Besides, it is not the language that needs to be learnt, rather, the principles that govern a consortium of languages. Concepts like data types, variables, loops, conditional statements, functions, classes, objects and so on are common across most languages. This coupled with programming disciplines, such as procedural programming, object-oriented programming, functional programming and so on, are all that is required to be able to quickly learn any new language. Furthermore, to be able to efficiently use any language one needs to know about various data structures and common algorithms that one might come across while performing tasks. - -A course tutor in college once suggested that I should be experienced in one language which is compiled, one language which is interpreted, one high level language and another lower level language, one language specifically designed for each of the major programming disciplines. This seems a tad bit much even for the most experienced programmers in industry, but it’s always fun to embark on such an educational journey [SIT]. - -### Resources - -- Stewart. Python for Scientists. Cambridge University Press. [L1]. -- Stroustrup. Programming Principles and Practice Using C++. Addison Wesley. [L2] -- Kernighan, Ritchie. The C Programming Language. Prentice Hall. [L2/L3] -- Cormen, Leiserson, Rivest, Stein. Introduction to Algorithms. MIT Press. [L2/L3] -- Knuth. The Art of Computer Programming. Addison Wesley. [L3] - -## Analysis - -Analysis involves working with different types of data and performing operations on them. - -One of the most underrated yet powerful tools used in the analysis domain is spreadsheet. Spreadsheets are easy to learn and are shipped with a wide variety of data types, functions and formulas. With the functionality to create and embed charts, spreadsheets have added functionality of data visualization. Almost all commonly used operations on small to moderately sized clean data can be performed using spreadsheets. Further complexity on operations can be added by programming and enabling macros. Some popular spreadsheet applications are: LibreOffice [Calc](https://www.libreoffice.org/discover/calc/){:target="_blank"}, Calligra [Sheets](https://calligra.org/sheets/){:target="_blank"} (Linux), [Gnumeric](http://www.gnumeric.org/){:target="_blank"} (Linux), Google [Sheets](https://www.google.com/sheets/about/){:target="_blank"} (Web Application), Apple [Numbers](https://www.apple.com/numbers/){:target="_blank"}, Microsoft [Excel](https://www.microsoft.com/en-us/microsoft-365/excel){:target="_blank"}. - -All digital infrastructure is innately discrete. For certain purposes, although rare, you may need to work on differential equations or single/multivariable calculus. Working with continuous data and solving equations will require the knowledge of numerical analysis. To get a glimpse of the methods used, you may look into the algorithms coded into your standard scientific calculator that is capable of solving equations. There are some tools available that can actually parse equations: [Mathematica](https://www.wolfram.com/mathematica/){:target="_blank"} is one such software. - -Data visualization is another important skill that many people sideline. A simple picture, at times, may replace profuse amounts of texts [IMO]. Moreover, viewing information in pictorial form is often preferred by the audience. Any data may be visualized in many ways but some way of visualization is better than the rest. To be capable of identifying the best way to represent data in visual form, a basic knowledge of all sorts of charts, graphs, diagrams and error representation is essential. There is a wide array of tools that can be used to display information visually and there isn’t one that fits all [SIT]. I often use python integrations of various tools: [matplotlib](https://matplotlib.org/){:target="_blank"} provides most functionality for static visualizations; [seaborn](https://seaborn.pydata.org/){:target="_blank"} integrates well with [pandas](https://pandas.pydata.org/){:target="_blank"} and provides more options. You may checkout [Plotly](https://plotly.com/python/){:target="_blank"} for complex visualizations and [D3.js](https://d3js.org/){:target="_blank"} if you wish to have control over the web. - -Data is seldom available in the desirable form. It may require extraction and cleaning. This falls under data preprocessing routine. There may be data points which may be missing, incorrect or dubious. Anomaly detection will help identify such data points and remove them or replace them with certain statistical values. Further, aggregation and summarization of data will help better understand it. To maintain consistency and ease of use, transformation/standardization/normalization will be needed to be performed on the data. - -More advanced preprocessing will involve dimensionality reduction, clustering and regression analysis. Each of these are purposeful topics that require more than a few pages to explain. - -Please note that I am **not** endorsing any tool/software. I discourage buying software that does not have enough use; and more so to just check them out. I used Mathematica for filling in my physics assignments at times when I got stuck, and didn’t have friends or study groups around to help - and I really liked it. The Mathematica subscription belonged to the institute where I studied. The same is true for most other paid softwares I used: [Matlab](https://www.mathworks.com/products/matlab.html){:target="_blank"}, [Fusion360](https://www.autodesk.in/products/fusion-360/overview){:target="_blank"}, [Ansys](https://www.ansys.com/en-in/products/fluids/ansys-cfx){:target="_blank"}, etc. You may request your employer or institute of study to get you an educational subscription. Besides, there are open source (free) counterparts for most softwares: [Octave](https://www.gnu.org/software/octave/index){:target="_blank"} for Matlab, for instance. All that I have mentioned worked for me, and you may try out a few of several other options. Do let me know if any of them turn out to be better/more versatile than those mentioned above. - -### Resources - -- Yevick. A First Course in Computational Physics and Object-Oriented Programming with C++. Cambridge University Press. [L2]. -- Flowers. An Introduction to Numerical Methods in C++. Oxford University Press. [L2/L3]. -- Han, Kamber, Pei. Data Mining: Concepts and Techniques. Elsevier. [L3]. -- Press, Teukolsky, Vetterling, Flannery. Numerical Recipes 3rd Edition: The Art of Scientific Computing. Cambridge University Press. [L3]. - -## Storage - -All data is stored on a storage media. It is good to know the characteristics of different (types of) physical storage so that informed decisions can be made on usage. The characteristics include, among others, fixed and variable costs, operation, persistence and latency. - -Data on cloud is channeled through an interface and data management system to remote storage servers. These servers are part of large data centers located around the globe (some even under water). Besides storage, [data centers](https://en.wikipedia.org/wiki/Data_center){:target="_blank"} also have servers with exceptional computational capabilities. - -Storage for loose unstructured and semi-structured data is often cheaper than storage associated with structured data. Databases are by far the most common storage for structured data. Data from databases are accessed using the structured query language (SQL). SQL is a strongly typed language that performs create, read, update and delete (CRUD) operations on a database. Knowledge of SQL and the relational data model is all that is required to operate on database tables. Normalization, indexing, hashing, transaction processing, concurrency control are some advanced topics one might need to touch when deploying databases. Database design is only necessary for research purposes. - -Some special databases are distributed storage systems and nosql databases. These come into operation when volume and velocity of data is high. These systems are becoming increasingly popular as more and more data is generated. - -Databases and storage are part of a broader subject called information theory. Besides everything mentioned above, information theory also covers data compression and error correction. - -### Resources -- Elmasri, Navathe. Fundamentals of Database System. Addison Wesley. [L2/L3]. - -## Processing - -Processing is trying to fulfill a task or achieve some result from data by performing a set of operations. These operations can be deterministic, randomized or statistical. - -Deterministic algorithms have a well defined complexity for each run. The computational pathway taken to achieve a result or fulfill a task is determined and always the same on each run. [Bubble sort](https://en.wikipedia.org/wiki/Bubble_sort){:target="_blank"} is one of the most basic examples of a deterministic algorithm. - -Randomized algorithms, on the other hand, leverage the nature of certain mathematical chaos to tend towards order on the limit. Randomized algorithms are often an optimization of their deterministic counterparts. The optimization is on space, time or both. (Here space and time are computational terms as opposed to Minkowski space-time. Computational space is the memory and computational time is loosely related to the machine cycle of the processing unit). A randomized algorithm that produces a result may not always give a correct one but they have other advantages in use of computational resources. Such algorithms find use in low latency, controlled risk applications wherein high performance is essential, and it will do if the result fails from time to time. [Quick sort](https://en.wikipedia.org/wiki/Bubble_sort){:target="_blank"} is one of the most basic examples of a randomized algorithm. - -Statistical algorithms (or more commonly known as statistical models) are probabilistic in nature. They are data hungry and only as good as the data fed to them. Some more advanced forms of these algorithms have memory in the form of parameters. These parameters are initially reset or random and as the algorithm sees data, the parameters are set to certain seemingly random values. These interestingly inexplicable learned values synergize to produce results in a way that has strong correlation to actual learning. - -Various domains of data processing techniques, classified on the basis of type of data, are: -- Image processing, recognition and generation -- Language processing and generation -- Signal processing -- Learning theory and probabilistic modeling - -### Resources - -Data processing is a vast area and the domains mentioned above are full fledged fields of their own. The list of resources is endless. [Drop me a mail](mailto:pawanmsr@outlook.com?subject=[DnC]%20Resource%20Request) with the particular field you are interested in and I will tell you of the resources I know of. - -## Exploration - -Becoming an expert in each of the above mentioned sections is a nice thing to aim, but it is not required. Each of the above sections have job roles associated with them. A Database Administrator, for instance, needs to deploy and maintain (and seldom design) databases. They need to perform queries and organize data models. - -For certain roles, the kind of work is highly variable. One such role is Data Analyst. A Data Analyst needs to have prowess in areas that are required to help them successfully analyse the data they intend to work with. A Financial Analyst, for example, needs to have working knowledge of time series analysis and differential equations, among others. - -Many roles cannot be easily bifurcated from each other and there is substantial overlap between roles [SIT]. Always try to find out what will be expected from you before accepting the role. Firms often try to ramp up the nature of work in their job descriptions, against the actual expectation, to attract candidates. In other words, be wary of taking a job as Data Engineer, for example, and then end up running SQL queries all day (there’s nothing wrong or extremely easy about running SQL queries all day; but that is not the only thing a Data Engineer does [IMO]). - -## Acknowledgements - -The brilliant community of professors, students and researchers at IITK, and the fabulous friends I made there. \ No newline at end of file diff --git a/_posts/2021-01-23-education.markdown b/_posts/2021-01-23-education.markdown deleted file mode 100644 index 684007e..0000000 --- a/_posts/2021-01-23-education.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: post -title: "Reason for Education" -subtitle: "My thoughts on the most important reason why education must be essential." -date: 2021-01-23 15:35 +0530 -categories: [blog] ---- - -I believe that education is essential regardless of whatever a person intends to do. By education, I do not mean just having a degree or a certificate - which is a proof of possession of certain kind of knowledge and rigour - but also being aware of the essentials of how the world works. Many schools and universities often focus on knowledge acquisition and seldom on thinking. Thinking is as much important as rote learning, if not more. Education is an amalgamation of knowledge and wisdom. Where the former is quite easy to acquire (by means of ample resources available), the later - I was told - is rare (for it requires one to churn through several processes and gain an overall perspective of the society and world at large) [IMO]. - -Mahatma Gandhi: -> Live as if you were to die tomorrow. Learn as if you were to live forever. - -Education is not a destination but an eternal journey and possessing the desire and mindset to learn is more important than learning once (and forgetting). In other words, the ability to learn new things is essential. This does not mean that you will start losing what you have learnt. - -Confucius: -> Learn as though you would never be able to master it; hold it as though you would be in fear of losing it. - -Education is attained at a cost: it takes a toll on your happiness. The best way to deal with this misery, I think, is to be ignorant at times, and stop overanalysing. One is not responsible for the world they are brought up in [John von Neumann ideated to Richard Feynman], but they must try (if they so desire) to make every effort (within the limits of their ability and human decency) to do better, with whatever tools, time and energy they have at their disposal. Most people are biased, and they usually promote that, which more often than not, benefit them directly (or indirectly), and conform to their own values. Waddling through life is a difficult process, I have been told, and it becomes a lot easier when we do what most interests us (if and while we can), and be around folks that seem most tolerable. - -Pablo Picasso: -> It takes a very long time to become young. - -Physicists and Mathematicians often model the world as a massively complex dynamical system - and there might be times when many of its dimensions (axes/variables) hang loosely in an unstable equilibrium on their respective tipping points. As thoughtful individuals, we may get overwhelmed - peek, but do not gaze! - -Friedrich Nietzsche: -> And if you gaze long enough into an abyss, the abyss will gaze back into you. - -Wrong is easier done than thought about. Hold your morals and principles dear to you but do not be stringent, for at times the distinction between right and wrong is obfuscated. Springing to the dark side requires no effort and there will always be ample perpetrators trying to dismantle the society. It requires effort to hold on to the light. This is where education comes to be: your knowledge and training helps you listen to and understand everyone, and filter out useful data from chatter, and make rational and informed decisions for yourself and the society you live in. Hasty decisions often turn out to be long term regrets [IMO]. Be kind to everyone, for everyone is fighting their own battles. Happy learning. - -Alright, I am off to play AoE. If you have any thoughts, please feel free to [mail me](mailto:pawanmsr@outlook.com). \ No newline at end of file diff --git a/_posts/2021-02-24-interesting-sites.markdown b/_posts/2021-02-24-interesting-sites.markdown deleted file mode 100644 index c37de8d..0000000 --- a/_posts/2021-02-24-interesting-sites.markdown +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: post -title: "Interesting Sites" -subtitle: "Checkout some other interesting sites." -date: 2021-02-26 11:21 +0530 -categories: [blog] ---- - -[The Physics of Energy-Based Models](https://physicsofebm.github.io/) diff --git a/_posts/2021-12-27-lonely-with-physics.markdown b/_posts/2021-12-27-lonely-with-physics.markdown deleted file mode 100644 index 5796c05..0000000 --- a/_posts/2021-12-27-lonely-with-physics.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: post -title: "Poetic Loneliness" -subtitle: "Studying, because that's all I can do (at the moment)." -date: 2021-12-27 07:00 +0530 -categories: [fun] ---- - -The coronavirus has been a bad chapter in the civilizational timeline. I saw, heard and experienced events that scarred my mind (and more waves are predicted to follow). Lockdown stalling economic movement, businesses failing (specially travel and hospitality) while others performing on the edge of their absolute efficiency (healthcare). Furthermore, the social media explosion - everyone with the ability to write is sharing their thoughts and sometimes so convincingly (and without any factual basis) that it is outright manipulative. On one hand I witness people taking their last breath, and on the other hand I open smartphone application to find folks my age sharing their couple goals. I try my best to keep busy and distracted. Here's a short amusing poem from my journal: - -![Lonely with Physics](/img/lwp.svg) - -My poems are result of my reveries. I just hope to get a few laughs off the reader - I know better than to offend anyone especially ladies. If you are offended, please [vent out](mailto:{{ site.author.email }}?subject=Reproval!) - but know that I have written way twisted (but hilarious) poems and jokes. - -N.H. Kleinbaum, Dead Poets Society: - -> but only in their dreams can men be truly free. 'twas always thus and always thus will be. - -Ofcourse there isn't one right person for everyone - we aren't a jigsaw puzzle, are we? Even if there were people absolutely right for each other, it would be unlikely that they sample each other out from the masses. - -To give a perspective, the pani puri seller at the corner of the crossroad would meet with more ladies in an hour on a nice cloudy afternoon, than many guys (pursuing higher education or in academia) will ever meet; that too whilst earning a handsome amount in few hours of festive business (often without any tax liability). The pani puri seller has a greater chance of finding the love of his life than someone who isn't as socially available - how is a soldier who is on high stakes deployement, or a submariner working inside an active patrol vessel going to meet someone (except on their vacations). - -Whatever it may be, I hope you find *the one* to back you up as you traverse through life. And even if you don't, try not to feel too dejected - *alone is probably better*. diff --git a/_posts/2022-01-23-vim-cheatsheet.markdown b/_posts/2022-01-23-vim-cheatsheet.markdown deleted file mode 100644 index dcf7639..0000000 --- a/_posts/2022-01-23-vim-cheatsheet.markdown +++ /dev/null @@ -1,385 +0,0 @@ ---- -layout: post -title: "Programming Adventures: Vim" -subtitle: "Guide to vim for programmers." -date: 2022-01-23 00:15 +0530 -categories: [blog] ---- - -# Vim - -Vim is a text editor. -It's handy when working on most remote machines. -Many programmers use it as their default code editor. - -I created this guide to act as a cheatsheet for my personal use. -People who use vim regularly often create one for reference. -More detailed vim guides for various use cases can be found on the internet. - -## Overview - -Linting is not available in plain vim. -A prowess in typing will make vim enjoyable: - -- High typing speed; code completion is **not** available in plain vim. -- High typing accuracy; error correction is **not** available in plain vim. - -### Resources - -- `vimtutor` Command-line program. -- `:help _` Visit vim's documentation. Replace `_` with command. - -### Operations - -Commands and actions are used to operate vim. -Ideally vim is supposed to be operated using only the keyboard. -Most commands can be called multiple times by prepending them with a number or range. A range is defined as `_,_` where `_` are numbers or marks or certain special characters: -- `.` Current line. -- `$` Last line. -- `%` Entire file. Equivalent to `1,$`. -- `*` Last selection in visual mode. -Range can also be augmented with basic arithmetic. - -## Configuration - -Vim configuration is stored in .vimrc file. -Vimscript is used to write the configuration. -Look for `~/.vimrc`. - -### General Commands - -Commands are made up of `set` followed by options. Options may hold value. - -Boolean options can be toggled by appending `!` to the option. -Boolean options can be unset by prepending `no` to the option. -Value of an option can be checked by appending `?` to the option. -Value can be assigned to an option by appending `=` followed by the value to the option. -Value can be added to an option by appending `+=` followed by the value to the option. -Value can be subtracted from an option by appending `-=` followed by the value to the option. -An option can be reset to default value by appending `&` to the option. - -- `:set hlsearch` Set highlight search results. -- `:set noh` Unset highlight search results. -- `:set number` Set line numbers. -- `:set nonumber` Unset line numbers. -- `:set ignorecase` Set to ignore case in patterns and words. -- `:set smartcase` Set to consider case in patterns and words. Requires `:set ignorecase`. -- `:set undofile` Set to track changes to a file. -- `:set undodir=~/example/path` Set file location to save track of change. Replace `~/example/path` with path and name of file. Requires `:set undofile`. -- `:set undolevels=_` Set number of changes to track for undo. Replace `_` with a number. -- `:set foldenable` Set to enable fold. -- `:set foldmethod=_` Set method to collapse blocks of code. Replace `_` with one of `manual`, `indent`, `expr`, `syntax`, `diff`, `marker`. Requires `:set foldenable`. -- `:set foldcolumn=_` Set number of folds to display on the sidebar. Replace `_` with a number. -- `:set incsearch` Set highlight pattern during input. -- `:set statusline=example.expression` Set status line. Replace `example.definition` with format. -- `:set background=_` Set background scheme. Replace `_` with scheme name. -- `:set encoding=_` Set encoding. Replace `_` with name of encoding. -- `:set expandtab` Set to use spaces in place of tabs. -- `:set tabstop=_` Set number of spaces to place for each tab. Replace `_` with a number. -- `:set shiftwidth=_` Set number of spaces for each indentation. Replace `_` with a number. -- `:set smarttab` Set to use number of spaces depending upon the location of cursor. -- `:set autoindent` Set auto-indent. Equivalent to `:set ai`. -- `:set smartindent` Set to use auto-indent depending upon the location of cursor. Equivalent to `:set si`. -- `:set cursorline` Set to show line underneath cursor. -- `:set nocursorline` Unset cursorline. -- `:set cursorcolumn` Set to highlight the column of cursor. -- `:set nocursorcolumn` Unset cursorcolumn. -- `:set warp` Set line warp. -- `:set nowarp` Unset line warp. -- `:set autoread` Set to re-read files modified on disk. -- `:set noautoread` Unset autoread. -- `:set title` Set to display file title. -- `:set notile` Unset title display. -- `:set wildmenu` Display tab complete options as menu. -- `:set spell` Enable spellchecking. -- `:set list` Set to display whitespaces. -- `:set nolist` Unset whitespaces display. -- `:retab` Replace all tabs with spaces. -- `:syntax on` Enable syntax highlight. -- `:syntax off` Disable syntax highlight. -- `:colorscheme _` Choose colorscheme for highlight. Replace `_` with colorscheme. Requires `:syntax on`. -- `:filetype on` Enable file type detection. -- `:filetype plugin on` Enable plugins for the detected filetype. -- `:filetype plugin off` Disable plugins for filetype. -- `:filetype indent on` Enable filetype specific indentation. -- `:filetype indent off` Disable filetype specific indentation. - -Commands in .vimrc must be added without `:`. - -### Save Options and Sessions - -- `:mk example.file` Save operations and mappings to file. Replace `example.file` with name of file. Use `:mk! example.file` to overwrite file. -- `:mkexrc example/file` Save operations and mappings to file. Replace `example/file` with path and name of file. Use `:mkexrc! example/file` to overwrite file. -- `:mks example/file` Save session to file. Equivalent to `:mksession example/file`. Replace `example/file` with path and name of file. Use `:mks! example/file` to overwrite file. -- `:source example/file` Restore operations and mapping or session. Replace `example/file` with path and name of file. - -## Buffers, Windows and Tabs - -A buffer is an open file. -A window displays a buffer. -A tab contains one or more windows. - -### General Commands - -- `:buffers` List buffers. -- `:buffer _` Move to buffer. Replace `_` with id or name of the buffer. -- `:ls` List buffers. Equivalent to `:buffers`. -- `:bn` Move to next buffer. Equivalent to `:bnext`. -- `:bp` Move to previous buffer. Equivalent to `:bprevious`. -- `:bf` Move to first buffer. Equivalent to `:bfirst`. -- `:bl` Move to last buffer. Equivalent to `:blast`. -- `:badd example.file` Add file to buffer. Replace `example.file` with file path. -- `:bdelete _` Delete buffer. Replace `_` with id or name of the buffer. -- `:_,_bdelete` Delete buffers. Replace `_,_` with start id and end id respectively. -- `:bd` Delete buffer. Equivalent to `:bdelete`. -- `:Bdelete` Delete buffer but do not close window. -- `:jumps` Display jump list. -- `:history :` Command history. -- `:history /` Search command history. -- `:history ?` Search command history. -- `:qall` Quit all buffers. - -### Operations And Navigation - -- `ctrl + ^` Switch to alternate buffer. -- `_ctrl + ^` Switch to specific buffer. Replace `_` with buffer id. -- `ctrl + w` followed by `s` Split the current window horizontally. -- `ctrl + w` followed by `v` Split the current window vertically. -- `ctrl + w` followed by `n` Split the current window horizontally and edit a new file. -- `ctrl + w` followed by `^` Split the current window with alternate file. -- `_` followed by `ctrl + w` followed by `^` Split current window with specific buffer. Replace `_` with buffer id. -- `ctrl + w` followed by `j` Move to lower window. -- `ctrl + w` followed by `k` Move to upper window. -- `ctrl + w` followed by `h` Move to left window. -- `ctrl + w` followed by `l` Move to right window. -- `ctrl + w` followed by `r` Rotate the windows. -- `ctrl + w` followed by `x` Exchange current window with next window. -- `ctrl + w` followed by `=` Resize current window to fit. -- `ctrl + w` followed by `-` Decrease the height of current window. -- `ctrl + w` followed by `+` Increase the height of current window. -- `ctrl + w` followed by `<` Decrease the width of current window. -- `ctrl + w` followed by `>` Increase the width of current window. -- `ctrl + o` Jump to previous cursor position. -- `ctrl + i` Jump to next cursor position. - -### History - -- `q:` Open command history. Equivalent to `:history :`. -- `q/` Search command history. Equivalent to `:history /`. -- `q?` Search command history. Equivalent to `:history ?`. -- `@:` Repeat last command. - -## Normal Mode - -Mode defines the purpose for which vim is being used. -The default mode in vim is *NORMAL* mode. -All general commands are accessible in this mode. -Use `ctrl + c` or `ctrl + [` to activate *NORMAL* mode. - -Use `:` to switch to *COMMAND* mode: - -- `ctrl + r` followed by `ctrl + f` Copy filename under cursor. -- `ctrl + r` followed by `ctrl + w` Copy word under cursor. -- `ctrl + r` followed by `ctrl + l` Copy line under cursor. - -### General Commands - -- `:help` Vim's help. -- `:q` Quit vim. Use `:q!` to Force quit vim. -- `:w` Write file to disk. -- `:w example.file` Write file `example.file` to disk. Replace `example.file` with name of file. Use `:w! example.file` to overwrite file `example.file` to disk. -- `:wq` Write file to disk and quit. -- `:x` Write file to disk and quit. Same as `:wq`. -- `:e example.file` Edit existing file. Replace `example.file` with name of file. -- `:pwd` Display present working directory. -- `:cd example/directory` Change directory. Replace `example/directory` with directory path. -- `:reg` Display register. Equivalent to `:register`. -- `:s/example.pattern/replace.pattern/_` Substitute `example.pattern` with `replace.pattern`. Replace `example.pattern` with search pattern. `replace.pattern` can be left empty. Replace `_` with `&`, `c`, `g`, `i`, `I`, `n` or leave empty. -- `:g/example.pattern/_` Execute command globally. Replace `example.pattern` with search pattern. Replace `_` with command. -- `:marks` Display list of marks. -- `:marks _` Display specific mark. Replace `_` with names of marks. -- `:delm _` Delete mark. Replace `_` with name of mark. Equivalent to `delmarks _`. -- `:delm!` Delete all marks. Equivalent to `delmarks!`. -- `:dig` Display digraphs. Equivalent to `:digraphs`. -- `:! example.command` Execute shell command. Replace `example.command` with shell command. -- `:!!` Execute last shell command. -- `:r! example.command` Execute shell command and insert output. Equivalent to `:read! example.command`. Replace `example.command` with shell command. -- `:r!!` Execute last shell command and insert output. Equivalent to `:read!! example.command`. -- `:foldo` Open all folds. Equivalent to `:foldopen`. -- `:foldo!` Open all folds recursively. -- `:foldc` Close all folds. Equivalent to `:foldclose`. -- `:foldc!` Close all folds recursively. -- `:foldd example.command` Execute command on all open folds. Equivalent to `:folddoopen example.command`. Replace `example.command` with command to execute. -- `:folddoc example.command` Execute command on all closed folds. Equivalent to `:folddoclosed example.command`. Replace `example.command` with command to execute. -- `:ab` List abbreviations. Equivalent to `:abbreviate`. Use `:iab` for *INSERT* mode abbreviations. Use `:cab` for *COMMAND* mode abbreviations. -- `:ab eg` List abbreviations beginning with `eg`. Equivalent to `:abbreviate eg`. Replace `eg` with any string. Use `:iab eg` for *INSERT* mode abbreviations. Use `:cab eg` for *COMMAND* mode abbreviations. -- `:ab eg example given` Abbreviate `example given` with `eg`. Equivalent to `:abbreviate eg example given`. Replace `eg` with any string. Replace `example given` with replacement strings. Use `:iab eg example given` for *INSERT* mode abbreviations. Use `:cab eg example given` for *COMMAND* mode abbreviations. -- `:una eg` Remove abbreviation `eg`. Equivalent to `:unabbreviate eg`. Replace `eg` with abbreviation string. Use `:iuna eg` for *INSERT* mode abbreviations. Use `:cuna eg` for *COMMAND* mode abbreviations. -- `:abc` Remove all abbreviations. Equivalent to `:abclear`. Use `:iabc` for *INSERT* mode abbreviations. Use `:cabc` for *COMMAND* mode abbreviations. -- `:split` Split file horizontally. -- `:vsplit` Split file vertically. - -### Search - -- `/example.pattern` Search pattern forward in current file. Replace `example.pattern` with search pattern. -- `?example.pattern` Search pattern backward in current file. Replace `example.pattern` with search pattern. -- `/Example.Pattern\C` Search case sensitive pattern forward in current file. Replace `Example.Pattern` with cased search pattern. -- `?Example.Pattern\C` Search case sensitive pattern backward in current file. Replace `Example.Pattern` with cased search pattern. -- `/example.pattern\c` Search case insensitive pattern forward in current file. Replace `example.pattern` with search pattern. -- `?example.pattern\c` Search case insensitive pattern backward in current file. Replace `example.pattern` with search pattern. -- `//` Search previous pattern. -- `*` Search word under cursor forward. -- `#` Search word under cursor backward. -- `g*` Search pattern under cursor forward. -- `g#` Search pattern under cursor backward. -- `gn` Select last search result. -- `n` Next search result. -- `N` Previous search result. -- `ctrl + g` Next search result from *COMMAND* mode. Requires `:set incsearch`. -- `ctrl + t` Previous search result from *COMMAND* mode. Requires `:set incsearch`. - -### Navigation - -- `h` Move one character left. -- `j` Move one line down. -- `k` Move one line up. -- `l` Move one character right. -- `w` Move one word forward. -- `b` Move one word backward. -- `0` Move to start of line. -- `^` Move to first non whitespace character of line. -- `$` Move to end of line. -- `%` Move to the other bracket of the pair. -- `f_` Find character forward on line. Replace `_` with character. -- `F_` Find character backward on line. Replace `_` with character. -- `m_` Move to character forward on line. Replace `_` with character. -- `M_` Move to character backward on line. Replace `_` with character. -- `;` Go forward on line. Requires `f_` or `F_` or `m_` or `M_`. -- `,` Go backward on line. Requires `f_` or `F_` or `m_` or `M_`. -- `_G` Move to start of line. Replace `_` with line number. -- `G` Move to start of last line of file. -- `gg` Move to start of first line of file. Equivalent to `1G`. -- `ctrl + u` Move half screen up. -- `ctrl + d` Move half screen down. -- `ctrl + y` Scroll upwards. -- `ctrl + e` Scroll downwards. -- `g;` Move to next position of change. -- `g,` Move to previous position of change. -- `gi` Move to last position of change and switch to *INSERT* mode. -- `gI` Move to start of line and switch to *INSERT* mode. -- `[m` Move to start of method. -- `m]` Move to end of method. -- `'_` Move to first non whitespace character on marked line. Replace `_` with name of mark. -- `` `_ `` Move to position of mark. Replace `_` with name of mark. -- `[z` Move to start of fold. -- `]z` Move to end of fold. -- `zj` Move to start of next fold. -- `zk` Move to start of previous fold. - -### Operations - -Operators may be used in conjuction to navigation commands. - -- `u` Undo. -- `ctrl + r` Redo. -- `.` Repeat last command. -- `dd` Copy and delete line. -- `d$` Delete to end of line. -- `dgg` Delete to beginning of file. -- `dG` Delete to end of file. -- `ggdG` Delete entire content of file. -- `diw` Delete inside word. -- `dip` Delete inside paragraph. -- `ciw` Change inside word. -- `p` Paste. -- `&` Repeat last substitute. -- `zi` Toggle foldenable. -- `zf` Create fold. Requires selection in *VISUAL* mode. -- `zd` Delete fold under cursor. -- `zD` Delete fold under cursor recursively. -- `zE` Eliminate all folds. -- `zo` Open fold under cursor. -- `zO` Open fold under cursor recursively. -- `zc` Close fold under cursor. -- `zC` Close fold under cursor recursively. -- `za` Toggle fold under cursor. -- `zA` Toggle fold under cursor recursively. -- `zx` Open fold under cursor and close all other folds. -- `zm` Close all folds. -- `zM` Close all folds recursively. -- `zr` Open all folds. -- `zR` Open all folds recursively. -- `ctrl + a` Increment next number on line. -- `ctrl + x` Decrement next number on line. - -### Registers - -- `"_` Set active register. Replace `_` with name of register (a - z). -- `q_` Start recording. Replace `_` with name of register (a - z). -- `q` Stop recording. Requires `q_`. -- `@_` Execute register. Replace `_` with name of register (a - z). - -### Marks - -- `m_` Mark the current line. Replace `_` with name of mark (a - z for local, A - Z for global). - -### Miscellaneous - -- `gf` Open and edit file located at path under cursor. -- `ctrl + w` followed by `ctrl + f` Open and edit file located at path under cursor in separate window. -- `gx` Open file located at path under cursor. -- `ga` Get code of the character under cursor. - -## Insert Mode - -Insert content. - -Use `i` in *NORMAL* mode to *INSERT* before the current character. -Use `a` in *NORMAL* mode to *INSERT* after the current character. -Use `A` in *NORMAL* mode to *INSERT* after the end of line. -Use `o` in *NORMAL* mode to *INSERT* below the current line. -Use `O` in *NORMAL* mode to *INSERT* above the current line. - -### Operations and Navigation - -- `ctrl + r` followed by `_` Insert content of register. Replace `_` with name of register. -- `ctrl + r` followed by `=` Expression register. Enter expression to evaluate and insert. -- `ctrl + k` followed by `__` Insert digraph. Replace `__` with digraph code. -- `ctrl + a` Insert last content that was inserted. -- `ctrl + @` Insert last content that was inserted. -- `ctrl + h` Delete character before cursor. -- `ctrl + w` Delete word under cursor. -- `ctrl + u` Delete everything before cursor. -- `ctrl + t` Add indentation. -- `ctrl + d` Remove indentation. -- `ctrl + v` followed by `_` Insert character. Replace `_` with character literal. Equivalent to `ctrl + q` followed by `_`. -- `ctrl + g` followed by `u` Split undo sequence. -- `ctrl + x` followed by `ctrl + y` Scroll up. -- `ctrl + x` followed by `ctrl + e` Scroll down. -- `ctrl + x` followed by `ctrl + l` Whole line completion. -- `ctrl + x` followed by `ctrl + f` File name completion. -- `ctrl + x` followed by `s` Spelling suggestion. -- `ctrl + x` followed by `ctrl + v` Command-line completion. -- `ctrl + x` followed by `ctrl + i` Path pattern completion. - -## Visual Mode - -Modify, edit or copy selection. - -Use `v` in *NORMAL* mode. -Use `shift + v` in *NORMAL* mode to activate *VISUAL LINE* mode. -Use `ctrl + v` in *NORMAL* mode to activate *VISUAL BLOCK* mode. -Use `ctrl + q` in *NORMAL* mode to activate *VISUAL BLOCK* mode. - -Use `gv` in *NORMAL* mode to select the last selection made using *VISUAL* mode. - -### Operations - -- `o` Move to other end of selection. In *VISUAL BLOCK* mode. -- `O` Move to other side of selection. In *VISUAL BLOCK* mode. -- `R` Rewrite selection. Equivalent to `S` Substitute selection. -- `U` Uppercase selection. -- `I` Insert at start of selected line. -- `A` Append at end of selected line. -- `c` Substitute selected lines. - diff --git a/_posts/2023-02-17-electromagnetic-tvc.markdown b/_posts/2023-02-17-electromagnetic-tvc.markdown deleted file mode 100644 index 8076268..0000000 --- a/_posts/2023-02-17-electromagnetic-tvc.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: post -title: "Mechanics Adventures: PRJ-PHM-XXX-2023-JAN-X01" -subtitle: "Electromagnetically actuated thrust vectoring in gyro-stabilized systems." -date: 2023-02-17 18:00 +0530 -categories: [blog,projects] ---- - -Most aero-systems need stabilization during flight to prevent loss of control, and maintain their course. Depending upon the properties of the ambient atmosphere (or lack thereof), and the system in consideration, method of stabilization is selected. [Fin stabilization](https://en.wikipedia.org/wiki/Stabilizer_(aeronautics)) is the most common form of stabilization when ambient fluid is dense. Fins that can actively change their configuration are called control surfaces. Most active stabilization use gyroscope for motion reference. A large enough gyroscope can also be used for stabilization, but it is not common [SIT]. Systems that do not depend on the ambient fluid for stabilization often use [thrust vectoring](https://en.wikipedia.org/wiki/Thrust_vectoring). - -Most thrust vector control have hydraulic or pneumatic actuation system (or combination of both in a force transfer mechanism). In this project I wish to demonstrate (shielded) electromagnetic actuation system. This has some obvious advantage (and disadvantage). - -### Advantages - -- Force transfer mechanism is electrical: less weight. -- (Possibly) Lesser number of moving parts. - -## [REDACTED] - -Status: Stalled. - -This has been an individual experimental hobby initiative. At the moment, I lack the necessary resources and fortitude to keep actively pursuing it and that too without proper review process for its credibility. This isn't much, but if you are inspired by it in anyway and find it to be new then please cite and if possible let's collaborate - I will be grateful. - -## References - -- [Gimbal](https://en.wikipedia.org/wiki/Gimbal) -- [Pneumatic Actuation](https://en.wikipedia.org/wiki/Pneumatic_actuator) -- [PID](https://en.wikipedia.org/wiki/PID_controller) -- [Gyroscopic Control](https://en.wikipedia.org/wiki/Control_moment_gyroscope) - -I haven't given proper title to the project yet. -Nomenclature: what-who-where-when-folderName. -When: startYear-startMonth. -SIT: So I Think. diff --git a/_posts/2023-06-15-take-a-break.markdown b/_posts/2023-06-15-take-a-break.markdown deleted file mode 100644 index eb4f979..0000000 --- a/_posts/2023-06-15-take-a-break.markdown +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: post -title: "Poetic Timeout" -subtitle: "We all need to relax every once in a while." -date: 2023-06-15 19:56 +0530 -categories: [fun] ---- - -![Take A Break](/img/tab.svg) - -My poems are result of my reveries. Do share your opinions. diff --git a/_posts/2023-07-16-pn-mc.markdown b/_posts/2023-07-16-pn-mc.markdown deleted file mode 100644 index 3dd4f8e..0000000 --- a/_posts/2023-07-16-pn-mc.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: post -title: "Positioning and Navigation by Matrix Comparison" -subtitle: "High speed heuristic contour matching for navigation and guidance." -date: 2023-07-16 23:23 +0530 -categories: [blog] ---- - -Blog Post. ~~In Progress~~. Stalled. - -# [REDACTED] - -TODO: Display details after sanity check. - -### References - -- [TERCOM](https://en.wikipedia.org/wiki/TERCOM) -- [Manifold](https://en.wikipedia.org/wiki/Manifold) -- [Distance](https://en.wikipedia.org/wiki/Distance) -- [Topography](https://en.wikipedia.org/wiki/Topography) -- [LIDAR](https://en.wikipedia.org/wiki/Lidar) -- [INS](https://en.wikipedia.org/wiki/Inertial_navigation_system) -- [CPLD](https://en.wikipedia.org/wiki/Complex_programmable_logic_device) -- [Polynomial Complexity](https://en.wikipedia.org/wiki/P_(complexity)) -- [Heuristic](https://en.wikipedia.org/wiki/Heuristic_(computer_science)) \ No newline at end of file diff --git a/_posts/2023-08-05-vhdl-guide.markdown b/_posts/2023-08-05-vhdl-guide.markdown deleted file mode 100644 index ca7198f..0000000 --- a/_posts/2023-08-05-vhdl-guide.markdown +++ /dev/null @@ -1,407 +0,0 @@ ---- -layout: post -title: "Electronics Adventures: Hardware Description" -subtitle: "Guide to VHDL for Digital Systems' Design." -date: 2023-08-24 17:28 +0530 -categories: [blog] ---- - -# VHDL - -[Very high-speed integrated circuit Hardware Description Language](https://en.wikipedia.org/wiki/VHDL) is a used to describe programmable digital [Systems On Chip](https://en.wikipedia.org/wiki/System_on_a_chip). - -I created this guide to act as a cheatsheet for my personal use. -There were many high quality guides for Verilog, but not so many for VHDL. - -## Overview - -VHDL is neither case sensitive nor sensitive to spaces. -It is a reasonable practice to adhere to consistent syntactic styling. -Hardware Description is largely concurrent instead of largely procedural. - -Schematic capture is **not** a recommended method for digital design. - -### Operators - -Operator groups follow precedence: *exponential*, *logical*, *multiplication*, *addition*, *unary*, *shift*, *relational*. There is no precedence within operator groups. A good practice will be to strongly type the description and rely as little on the precedence order. - -- `**` Exponential. -- `ABS` Absolute value. -- `AND` Logical AND. -- `OR` Logical OR. -- `NOT` Logical NOT. -- `NAND` Logical Not of AND. -- `NOR` Logical Not of OR. -- `XOR` Logical eXclusive OR. -- `XNOR` Logical eXclusive Not of OR. -- `*` Multiplication. -- `/` Division. -- `MOD` Modulus. -- `REM` Remainder. -- `+` Addition. Unary Identity. -- `-` Subtraction. Unary Negation. -- `&` Concatenation (of bits). -- `SLL` Shift Left Logically. -- `SRL` Shift Right Logically. -- `SRA` Shift Right Arithmetically. -- `SLA` Shift Left Arithmetically. -- `ROL` ROtate Left. -- `ROR` ROtate Right. -- `=` Equality. -- `/=` Inequality. -- `<` Less than. -- `<=` Less than or equal to. -- `>` Greater than. -- `>=` Greater than or equal to. -- `--` Single line comments. No method for block comments. - -Use 'single' quotes for single bit value; "double quotes" for bit sequence. - -## Library - -Use standard libraries for cross compiler compatibility. - -```vhdl -LIBRARY name_of_library; -USE name_of_library.module.all; - --- example -LIBRARY ieee; -USE ieee.numeric_std.all; -USE ieee.numeric_bit.all; -USE ieee.std_logic_1164.all; - -``` - -## Entity - -Entity is model interface. - -```vhdl -ENTITY name_of_entity IS - PORT ( - name_of_first_port, name_of_second_port: IN data_type; - name_of_third_port: OUT data_type; - name_of_fourth_port: INOUT data_type; - -- decare more ports - ); - - GENERIC ( - name_of_generic: data_type := value; - -- declare more generics - ); - - CONSTANT: name_of_constant: data_type := value; -END name_of_entity; - -``` - -## Architecture - -Architecture is model behavior. - -Implementation can follow **data-flow model** (or **functional model**), **behavioural model**, **structural model** or a combination of one or more of the three. Functional model uses more of concurrent, conditional and selective signal assignments. Behavioural model uses more of process statements. Hierarchical design and reuse of design units follow the structural model. - -```vhdl -ARCHITECTURE behavior OF name_of_entity IS - SIGNAL name_of_signal: data_type; -- optional local declaration - COMPONENT name_of_component IS - -- define ports - END -BEGIN - -- architecture behavior -END behavior; - -``` - -*Signals* are like wires inside the model. *Delay* cannot be synthesized, but they can be assigned to signals for simulation. *Variables* are much more abstract. - -```vhdl --- inertial delay -output <= input_after_processing AFTER few ns; -- replace "few" with a number - --- transport delay -output <= TRANSPORT input_after_processing AFTER few ns; -- replace "few" with a number - --- delays are used only for simulation purpose --- transport delay assumes that the signal needs some time to transmit --- inertial delay assumes the time to process the input - -``` - -### Process - -Basic functional units. - -```vhdl -PROCESS (first_variable_to_watch, second_variable_to_watch) - VARIABLE name_of_local_variable : data_type; - BEGIN - -- process behavior -END PROCESS; - --- process can be named with an optional label as well -label : PROCESS (first_variable_to_watch, second_variable_to_watch) IS - -- variables_to_watch form the sensitivity list - VARIABLE name_of_local_variable : data_type; - BEGIN - -- process behavior -END PROCESS label; - -``` - -### When-Else - -```vhdl -name_of_target_signal <= value_or_source_signal WHEN first_expression ELSE - another_value_or_source_signal WHEN second_expression ELSE - default_value_or_source_signal; - -``` - -### With-Select-When - -```vhdl -WITH expression_to_evaluate SELECT - name_of_target_signal <= value_or_source_signal WHEN value_of_evaluated_expression, - another_value_or_source_signal WHEN another_value_of_evaluated_expression, - yet_another_value_or_source_signal WHEN OTHERS; - --- there can be multiple values of evaluated expression in a single WHEN statement --- multiple values need to be listed using '|' seperator --- value_or_source_signal WHEN first_value | second_value | third_value, - -``` - -### Case-When - -```vhdl -PROCESS (variable_to_watch) -BEGIN - CASE variable_to_watch IS - WHEN value => ; -- do something - WHEN another_value => ; -- do something else - WHEN OTHERS => ; -- do everything else - END CASE; -END PROCESS; - -``` - -### If-Then-Else - -```vhdl -IF (condition) THEN - ; -- statements -ELSIF (condition) THEN - ; -- statements -ELSE - ; -- statements -END IF; - -``` - -### For - -```vhdl -FOR loopvar IN start TO finish LOOP - -- loop statements -END LOOP; - -FOR loopvar IN start DOWNTO finish LOOP - -- loop statements - IF (condition) THEN - NEXT; - ELSE - EXIT; - END IF; - -- more loop statements -END LOOP; - -``` - -### Functions - -Reusable behaviours. - -```vhdl -FUNCTION name_of_function (first_parameter, second_parameter : data_type) RETURN data_type IS - variables: data_type -BEGIN - -- do something -END; - --- some standard functions -rising_edge() -falling_edge() - -``` - -### Packages - -Packages disseminate reusable behaviours. - -```vhdl -PACKAGE name_of_package IS - -- header which maybe function declaration -END PACKAGE; - -PACKAGE BODY name_of_package IS - -- body which maybe function definition -END PACKAGE BODY; - -``` - -### Procedures - -Procedures can use directional parameters. - -```vhdl -PROCEDURE name_of_procedure (parameters : IN data_type; parameters : OUT data_type) IS -BEGIN - -- do something -END PROCEDURE; - -``` - -### Assertion - -```vhdl -ASSERT value <= max_value - REPORT "assertion failed"; - -``` - -## Data Types - -Derived or User-Defined data types can be derived from Native or Standard data types or other derived data types. -'Single' quote can be used to access the properties of data. - -```vhdl --- length property -unsigned_data <= to_unsigned(value, unsigned_data'LENGTH); - --- range property -FOR i IN test_data'RANGE LOOP - ; -- do something -END LOOP; - -``` - -### Native or Standard Data Types - -- `BIT` '0' or '1'. Use `STD_LOGIC` instead. -- `BIT_VECTOR` Use `STD_LOGIC_VECTOR` instead. -- `BOOLEAN` -- `INTEGER` - - `NATURAL` Greater than equal to zero. - - `POSITIVE` Greater than zero. -- `REAL` -- `TIME` -- `CHARACTER` -- `STRING` - -### Common Derived Data Types - -Use `ieee.std_logic_1164` for common derived data types. - -- `STD_LOGIC` 9 values. - - `0` Low. - - `1` High. - - `L` Weak low. - - `H` Weak high. - - `U` Uninitialized. - - `X` High (forced) unknown. - - `Z` High impedance. Tri-state. - - `W` Weak unknown. - - `-` Do not care. -- `SIGNED` -- `UNSIGNED` -- `STD_LOGIC_VECTOR` A bundle of `STD_LOGIC` data. - -#### Type Conversion - -Use `ieee.numeric_std` for type conversions. -Use of alternatives such as `ieee.std_logic_arith` are discouraged as it is not as strongly evaluating as the former: extensive overloading of operators that may lead to incorrect operations without any warning. - -```vhdl --- integer to signed -signed_data <= TO_SIGNED(integer_data, signed_data'LENGTH); - --- integer to unsigned -unsigned_data <= TO_UNSIGNED(integer_data, unsigned_data'LENGTH); - --- integer to std_logic_vector --- convert to signed or unsigned before converting to std_logic_vector -std_logic_vector_data <= STD_LOGIC_VECTOR(TO_SIGNED(integer_data, std_logic_vector_data'LENGTH)); --- conversion does not change the sign of data --- replace TO_SIGNED with TO_UNSIGNED for positive only conversion - --- std_logic_vector to signed -integer_data <= SIGNED(std_logic_vector_data) - --- std_logic_vector to unsigned -integer_data <= UNSIGNED(std_logic_vector_data) - --- std_logic_vector to integer --- convert to signed or unsigned before converting to integer -integer_data <= TO_INTEGER(SIGNED(std_logic_vector_data)); --- conversion does not change the sign of data --- replace SIGNED with UNSIGNED for positive only conversion - --- signed to integer -integer_data <= TO_INTEGER(signed_data); - --- signed to unsigned -unsigned_data <= UNSIGNED(signed_data); - --- signed to std_logic_vector -std_logic_vector_data <= STD_LOGIC_VECTOR(signed_data); - --- unsigned to integer -integer_data <= TO_INTEGER(unsigned_data); - --- unsigned to signed -unsigned_data <= SIGNED(unsigned_data); - --- unsigned to std_logic_vector -std_logic_vector_data <= STD_LOGIC_VECTOR(unsigned_data); - -``` - -### User-Defined Types - -```vhdl -TYPE name_of_type IS ; -- define the type - --- example -TYPE ram IS ARRAY (0 to memory_size) OF STD_LOGIC_VECTOR (data_size downto 0); --- replace "memory_size" by number of registers --- replace "data_size" by number of flip-flops in each register - -``` - -### Enumerated Type - -```vhdl --- enumerated type has similar declaration to user-defined types -TYPE state_type IS (ST0, ST1, ST2, ST3); - -``` - -## Notes - -[GHDL](https://github.com/ghdl/ghdl) and other tools can be used to simulate designs on a general purpose computer but it is better to use an actual programmable chipset. Moreover, the chipset associated softwares are often shipped with common digital blocks that can be imported for higher level design. - -### Verilog - -Verilog is case sensitive and similarly typed as C. There are greater number of resources available for Verilog HDL including quick references and guide. - -## References - -Not exhaustive. - -- Hamblen, Hall, Furman. Rapid Prototyping of Digital Systems. SOPC Edition. Springer. - -Verilog is a great alternative and commonly used. - -- Palnitkar. Verilog HDL: A Guide to Digital Design and Synthesis. Pearson. diff --git a/_posts/2023-09-11-mig-21.markdown b/_posts/2023-09-11-mig-21.markdown deleted file mode 100644 index ff1755e..0000000 --- a/_posts/2023-09-11-mig-21.markdown +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: post -title: "Drawing Adventures: MiG 21 Bison" -subtitle: "Caricature of Mikoyan-Gurevich MiG-21 'Fishbed'." -date: 2023-09-11 15:25 +0530 -categories: [fun] ---- - -![MiG 21 Bis](/img/mig-21.svg) - -Most produced supersonic combat aircraft. Performs as a fighter-interceptor. Numbers Built: 11,496 (10,645 by USSR, 194 by Czechoslovakia, 657 by India). This is a scaled approximate non technical representation inspired from visual inspection. diff --git a/_posts/2023-09-14-su-30.markdown b/_posts/2023-09-14-su-30.markdown deleted file mode 100644 index 80c41a9..0000000 --- a/_posts/2023-09-14-su-30.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: post -title: "Drawing Adventures: Su 30 MKI" -subtitle: "Caricature of Sukhoi Su-30 MKI 'Flanker-H'." -date: 2023-09-14 17:30 +0530 -categories: [fun] ---- - -## Hour Long Artwork - -Technical arts has been one of my favourite topics to learn and practice. Few engineers these days learn it like I learnt - everything is digital - and often takes a lot less time to draw. - -I have added minimal detailing to give it a cartoonish appearance. Moreover, adding many details requires a lot more focus and longer to complete, which often leads to loss of the amusement one gets from the activity. - -![Su 30 MKI](/img/su-30.svg) - -Super-maneuverable, multi-role, air superiority fighter aircraft. Indian Air Force operates over 250 of these heavy, long-range, twinjet fighter aircraft. This is a scaled approximate non technical representation inspired from visual inspection. diff --git a/_posts/2023-10-15-prelude-to-research.markdown b/_posts/2023-10-15-prelude-to-research.markdown deleted file mode 100644 index 64c5fef..0000000 --- a/_posts/2023-10-15-prelude-to-research.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: post -title: "Prelude to Physical Sciences Research" -subtitle: "Branches, Topics, and Subtopics in Physics." -date: 2023-10-15 13:37 +0530 -categories: [blog] ---- - -Albert Michelson, in his address to Ryerson Physical Laboratory in 1894, said: - -> While it is never safe to affirm that the future of Physical Science has no marvels in store even more astonishing than those of the past, it seems probable that most of the grand underlying principles have been firmly established and that further advances are to be sought chiefly in the rigorous application of these principles to all the phenomena which come under our notice. It is here that the science of measurement shows its importance — where quantitative work is more to be desired than qualitative work. An eminent physicist remarked that the future truths of physical science are to be looked for in the sixth place of decimals. - -Max Planck, one of the pioneers of Quantum Physics, was reportedly advised against getting into the field by his advisor Philipp von Jolly: - -> [...] in this field, almost everything is already discovered, and all that remains is to fill a few unimportant holes. - -Heinrich Hertz, in 1977, wrote in his memoirs: - -> Sometimes I really regret that I did not live in those times when there was still so much that was new; to be sure enough much is yet unknown, but I do not think that it will be possible to discover anything easily nowadays that would lead us to revise our entire outlook as radically as was possible in the days when telescopes and microscopes were still new. - -Stephen Hawking, in 1981, wrote an article titled *Is the End in Sight for Theoretical Physics?* wherein he remarked: - -> We already know the physical laws that govern everything we experience in everyday life…. It is a tribute to how far we have come in theoretical physics that it now takes enormous machines and a great deal of money to perform an experiment whose results we cannot predict. - -There have been times when nothing new would pop up in fundamental sciences research, and many disheartened researchers would remark the end of exciting times. Although discovering new sciences maybe on decline in the long run of events, but every now and then someone does come up with yet another amazing discovery leading to revitalized enthusiam and interest in the field. - -James Gleick mentions in his book: Chaos, while comparing Mathematics with Physics that: - -> A branch of physics, once it becomes obsolete or unproductive, tends to be forever part of the past. It may be a historical curiosity, perhaps the source of some inspiration to modern scientist, but dead physics is dead for good reason. - -Topics of study maybe common to many different branches of physics. At the edge of research, boundaries between topics tend to become indistinguishable. Research is more often than not multi-disciplinary and paying much heed to interdisciplinary boundaries does not really make sense when an attempt is made to break those boundaries and make new ones. Nevertheless, one needs a starting point to make any attempt to reach the end of the understanding of the discoveries, methods employed and the theory constructed therewith. - -![Branches of Physics](/img/ptpsr.svg) - -We are all explorers, albeit to different extents, and our inquisitiveness seems to be the antidote to our fear of the unknown. diff --git a/img/dp.png b/img/dp.png deleted file mode 100755 index bc50c46..0000000 Binary files a/img/dp.png and /dev/null differ diff --git a/img/lwp.svg b/img/lwp.svg deleted file mode 100755 index cc9e492..0000000 --- a/img/lwp.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Lonely with Physics - This is Vayu, five feet nine (five feet six actually).A bit lonely, but doing just fine. - Studying physics all day and night,Because I cannot find any girl that's right (for me). - - Vayu - - diff --git a/img/mig-21.svg b/img/mig-21.svg deleted file mode 100755 index a3c8df6..0000000 --- a/img/mig-21.svg +++ /dev/null @@ -1,701 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Top View - Vayu - Pawan - Mikoyan-GurevichMiG-21 - ScaledSVG - - diff --git a/img/phy224a/figure_1.png b/img/phy224a/figure_1.png deleted file mode 100755 index 46e7589..0000000 Binary files a/img/phy224a/figure_1.png and /dev/null differ diff --git a/img/phy224a/figure_2.png b/img/phy224a/figure_2.png deleted file mode 100755 index 21e157d..0000000 Binary files a/img/phy224a/figure_2.png and /dev/null differ diff --git a/img/phy224a/figure_3.png b/img/phy224a/figure_3.png deleted file mode 100755 index 78454af..0000000 Binary files a/img/phy224a/figure_3.png and /dev/null differ diff --git a/img/phy315a/poster_1.png b/img/phy315a/poster_1.png deleted file mode 100755 index 84976a3..0000000 Binary files a/img/phy315a/poster_1.png and /dev/null differ diff --git a/img/phy315a/poster_2.png b/img/phy315a/poster_2.png deleted file mode 100755 index 117f4dd..0000000 Binary files a/img/phy315a/poster_2.png and /dev/null differ diff --git a/img/phy315a/poster_3.png b/img/phy315a/poster_3.png deleted file mode 100755 index 7a2164e..0000000 Binary files a/img/phy315a/poster_3.png and /dev/null differ diff --git a/img/ptpsr.svg b/img/ptpsr.svg deleted file mode 100755 index 7c2fd11..0000000 --- a/img/ptpsr.svg +++ /dev/null @@ -1,1209 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Modern Physics - Classical Physics - - - - Mathematics - - - Algebra - Calculus - - - - Mathematics - - Statistical Mechanics - - - - Non-Linear Dynamics - - Chaos - - Complex Systems - - - - Cosmology - - - - Quantum Physics - - Condensed Matter Physics - - Solid State Physics - - Electrodynamics - - Photonics - - - - Relativity - - Nuclear Physics - - General Theory of Relativity - - - - Particle Physics - - Quantum Field Theory - - - - Waves - - Optics - - Acoustics - - - - Energy - - Thermodynamics - - - - Electromagnetism - - Electrodynamics - - - - - Mechanics - - - Newtonian - Lagrangian - Hamiltonian - - Kinematics - - - - Reality - - - Branches, Topics and Subtopics in the field of Physics - A non extensive bare minimum overview. - - - - Unknown - - - - Astrophysics - - - - Atomic Physics - - - - Fluids - - Fluid Dynamics - - diff --git a/img/su-30.svg b/img/su-30.svg deleted file mode 100755 index a337c4d..0000000 --- a/img/su-30.svg +++ /dev/null @@ -1,501 +0,0 @@ - - - -Top ViewPawanSukhoiSu 30 MKIScaledSVG diff --git a/img/tab.svg b/img/tab.svg deleted file mode 100755 index 77c61d7..0000000 --- a/img/tab.svg +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - Are you surrounded by people on a hateful spree? Perhaps colleagues, friends and family all disagree. Then pack your bags and take your leave, To distant lands where your spirit runs free. - Although a jolt now and then helps us grow. In peace and quiet our thoughts really flow. Take a step offtrack and tread a bit slow. A little rest will help you recharge and glow. - Like a cocoon is needed to spawn a butterfly, A cosy atmosphere is needed before you retry. Torrid times have scorched many ambitions dry. In the sun's glare too long, dreams desist to fly. - Be wary of great safety, for you may lose sight. Open fields, seas and space often incite fright. Warriors were seldom honoured without a fight, And savants only realised once they manifest bright. - Take A Break - - Pawan H M - - diff --git a/img/tns.jpg b/img/tns.jpg deleted file mode 100755 index 905436e..0000000 Binary files a/img/tns.jpg and /dev/null differ