About Nisheeth Barthwal
Who am I? I am Batman what you make of me.
General Information:
I'm a 20 year old lad from Delhi. I'm currently a student pursuing B.Tech (CSE) from GGSIPU University. While it's true most of the time I'm creating new stuff, I do however enjoy the small bits of little joys that life throws at me.
Areas of Interest:
tldr; version: I like creative things.
Regular version: Read on.
Non-Technical
I solemly respect art in all of it's forms. So I often enjoy the following hobbies of mine:
- Poetry
- Sketching
- Painting
Technical
Apart from my other hobbies I take great pleasure in learning new stuff:
- Programming Languages
- Logical Programming
- New Frameworks
- Hardware Programming
- Latest Hardware, speaking of which
Southern Islands
is finally set to break the mould. Bulldozer
was a huge disappointment though.
Skill Set:
Since I have way too much time on my hands, I'd proceed with a step by step break-down of my skills under separate sections:
C & C++
My tryst with C++ started back in high school, where I completed my +2 books in 10 days to get myself familiarized with the syntax of the language. C++ intrigued me with all the possibilities
I had - to create my own things, nothing wrong in being self-dependent eh?
While school C++ was fun, it wasn't enough, it wasn't standard, it wasn't any good; so I ventured out on teaching myself first of the many languages to come, while laying emphasis on
the standard and best coding approaches. So here's the order of events/skills I developed in C++:
-
BGI Graphics and STL
were both the building blocks. BGI was fun while they lasted. Made a nice encoder/decoder as first start. STL with it's namespaces & templates were such beautiful semantics that would've made
even Arnie cry.
-
Win16 Graphics
were more versatile in giving more colors. One of my first projects in school was a colorful Win16(CLI) app to add attributes like icon, background image and permanent label w/ or w/o format.
-
Windows API
was too much an exposure at the early stage, that too by myself. So I went step by step developing new apps and redoing old apps using Win API. Controlling the monitor, the mouse, the keyboard, the
process, I mean I totally get why Windows is so widely targeted by worms. But if someone asks me, I'd deny ever having made one. And I have absolutely nothing to do with remote backdoor... uhh
I've said too much already.
-
Hooks
were at the top of the dark-alley skills that I acquired. Low-level mouse, keyboard and message hooks exposed to me new set of opportunities. Though I won't deny making my very own *cough* monitor *cough*
app. I built upon the app till it fed back to me every inch of detail including the screeshots of the victim client via FTP. No people were harmed in the making/use of this app.
-
VCL C++ (GUI)
went on being my prime area of expertise in visual part of C++ not Visual C++, in fact, I humbly believe along with many other that M$'s pitiful pass for a language, VC++, was a bloat on the
vanilla C++. But then again it came from M$. So basically MFC was the only choice that looked remotely C++, but I choice VCL, 'cause who can say no to pointers and dynamic allocation?
VCL was a Delphi-based GUI framework, that was in all aspects better than what M$ offered, in the way that it was built upon their framework and imporved by the likes
ok veteran coders at Borland Codegear Embarcadero.
-
Indy Tiburon and Multi-threading
were a (separate)part of the VCL framework. I adored multi-threading from the get go, when it helped me reduce the execution time of one of my apps by 300% (task being to go all out on all system drives
recursively searching files). Indy Tiburon was a networking framework used mainly for the FTP (w/ SSL) and HTTP Protocols over the TCP/IP network, among other which I never used.
-
Sockets
was so dang awesome that I bothered to learn serialization just for it. While Indy was more that sufficient, I wanted to dig deeper to work under the sheets. Having got myself familiarized with threading
socket programming was kinda a breeze, not to mention so much fun. To say the least, there's nothing like experiencing the crude programming. Made my first client-server IRC using this newly learnt
knowledge.
-
Exception Handling
was the "it" thing for me. Unlike many others, I started out with exception handling not with Java but with C++. Suddenly I had this urge to throw exceptions when they were required, when
I knew I'd be the only one using my own library, but hey! that's no excuse to write bad code.
-
JET OLEDb and ADO,
JET was Microsoft's answer to a "free" database when MSSQL wasn't the thing it is today. ADO was an entirely different thing that I had a short stint for learning purposes only.
I learnt to use the JET Engine (ya, I know!) to explore a cheap alternative to MSSQL or even Oracle's SQL+. I used Access
MDBs on projects where database access wasn't that big, so I could get off using an Access database instead of installing (buying too, if you please) the bulky SQL Servers. Irony of life, 3 years after, I come
to know some big companies are doing this. Cheap 'n dirty way of managing databases - but hey it works!
-
OpenGL,
boy that is something. My salute to the folks designing the games out there, but then again you have the awesome engines like the Unreal Engine, Aurora, RenderWare, etc. engines. OpenGL is somewhat easy to learn
but disrupts the normal flow of your chi when you plan to make something out of it. Control the FPS, render the polygons, pop the matrices, calculate VTP,
glTranslatef, glut ... phew! But I'm gonna try it again, on Python perhaps.
So, in C++ I have basically done file manipulations, graphics (BGI and OpenGL), passed around pointers in WinAPI, debugged with traces & watches, communicated to distant places with different
protocols, designed interactive GUIs and let loose threads of execution (sounded better in my head).
IDEs used: Turbo C++, DevC++, Borland C++ 5.x, Borland C++ Builder 6, Code::Blocks w/ gcc, Codegear C++ Builder 2008, Embarcadero C++ Builder 2010, Embarcadero RAD Studio XE, Eclipse, Microsoft Visual Studio 2008.
J2SE (Java)
I started Java, J2SE specifically, well before C#. Java was an absolute delight since it offered cross-platform solutions. Java played well for my love for organizing code nicely, so that it can be managed
better. Java was nice and clean, plus the high degree of OOP was a welcome feature.
-
Console
was as simple as it could get only with respect to printing. Reading input was too restrictive, but we all learn it gradually.
-
Exceptions
were introduced to me in C++ itself, but Java only strengthened their base. The way Java forces exception handling was a genius way to yearn good programmers.
-
Multithreading & Mutex
were implemented as simple as it could get. They were really a delight to learn & experiment with.
-
Applets
were a new concept back in the days, they were nice, had fun while they lasted. I witnessed their demise at the hands of Flash, which I see will bow down before HTML5. Still, applets provided valuable insight
to delegation-based event handling mechanism, that in turn helped me in grasping C#.
-
Swing's MVC
was a concept that I follow every time I code. Though MVC wasn't Swing's, but I got to know it while using Swing. In spite of Swing being a remarkable improvement I never liked it for desktop
environments, it was too slow compared to C++ (I was working on an multi-language app, that's how I know). Still MVC is a concept that stuck and I've been using it ever since, even in Website development.
-
Networking
in Java was something I hadn't experimented with until I learnt C#. After doing so, owing to the similar semantics between the two languages. Client-server over TCP & UDP were a piece of cake to
implement with Java's built-in classes, similar to their C# counterparts.
-
JavaDocs
as a standard for documenting has stuck on me, plus it goes nicely with my need to write nice, cleaner and maintainable code.
So, in J2SE I've done the same old console, networking over TCP/IP & UDP, multithreading, applets & swing. I also have had formal theoretical learning about Servlets, but am yet to implement
them, though that seems far-fetched as I can't seem to like any server-side scripting language except PHP, hence ruling out JSP.
IDEs used: Eclipse, NetBeans.
C#.NET
C# started out primarily as a quick 'n easy way to develop apps on the fly. After the VC++ fiasco, I was hesitant to learn this language, but my past experiences with VCL C++, PHP, Java, and numerous other scripting
languages, made it easier for me to learn this new "language" quicker than I expected. Java had all the right semantics in place, but the syntax turned tedious for me quite fast with
all the getters & setters. C# borrowed/stole heavily from Java and implemented it in a better way.
Previously, if someone would've asked me my opinion on C#, I'd pummel the guy just to express my opinion on any M$ language (the irony being Windows is my primary platform, though not by
choice. But looking from a Windows perspective, that being .NET framework, it's everywhere. With Windows 7, .NET isn't no longer the "extra stuff" you've got to download.
Not to mention the Visual Studio is quite a decent IDE for C# (though still can't beat the refactoring of Eclipse).
-
Console
was quite the same since C++, argc, argv[] turned to strings[] args. String formatting was kinda ugly at first, but then everything takes some getting used to. All in all
it was all just the same a la C++ & Java.
-
Delegation
was again another feature from Java albeit better implemented. Soon I was following delegation wherever I needed callbacks & events. Syntactic sugars are aplenty in C#.
-
Threading
was again my favorite thing to work with, and the anonymous functions just made it easier. C# has offered many threading options with pooling and implicit mutex implementations using lock
that I began using it as the primary Windows development language.
-
Marshalling
pointers is the process linking the native WinAPI to CLR. Whenever I found C# lacking a API call, relying back on DllImports and Marshalling pointer was a huge PITA. Still, having the knowledge of these
routines beforehand in C++ proved really helpful.
-
Regex
module is one of the best asset to any programming language. Too bad C++ has to rely on third-party libraries like Boost, but I've abused the Regex library of C# too much to go back to developing
apps on C++, unless it really calls for low-level tweaking.
-
Network Sockets
were again fun to work with, but these boys exposed much more functionality this time. Asynchronous delegates/events made socket handling a piece of cake. And I didn't even have to bother with serialization.
-
MSSQL Server
connectivity really does lend itself to a project so big that you require a DBMS. Or when I felt like going dirty, I'd use the JET Engine. ADO.NET somehow never felt right for me.
-
Services
or the background processes are kinda like the dark horses I didn't give much heed earlier on, but they can provide some serious performance boost when coupled with MSSQL applications, or so I've noticed.
So, in C# I have basically done web scraping, text parsing, file manipulations, image editing, library projects, services, MSSQL and marshalled pointers to legacy API.
IDEs used: Microsoft Visual Studio 2010.
J2ME (Java)
Java 2 Micro-edition, or J2ME, was the first programming language for mobile platform I learnt. As with all languages, it started with a will to control my own mobile phone. Sadly MIDP & CLDC don't give much
freedom to the programmer.
-
MIDlets
are awesome little apps which run on your phone. I started out with a form based midlet, which helped me manage data on my phone.
-
Canvas
was the next thing I learnt with painting screen to make it look like a form. Made a RPN calculator when my own in-built calc went bad. Never looked back in regret.
-
RMS
or Record Management Store was an easy solution for persistent storage, only condition being you've got to serialize objects yourself. Good thing I had it in C++.
-
Networking
in midlets was pretty restrictive, still I managed to connect it with the world to get response and parse it to present itself in a neater way.
So, in J2ME I have done key handling, canvas drawing, form fields, RMS serialization and HTTP URL connections.
IDEs used: Eclipse, NetBeans.
Android
Learning Android was a rush for me, since a good friend had just asked me if I could make an Android app. Hell yeah I can!
While, I was totally unfamiliar with the Android API, it reminded me vaguely of J2ME and ActionScript, so it was relatively easier to learn.
-
Activity
is the app running on all times.
-
Intent
is the launcher intent of activity. It is the intermediate between successive activities.
-
Bundle
acts as a message passing system between activities.
-
Events
are similar to delegation-event model of Java, hence I had no difficulty learning them.
-
Persistent Storage
options were XML & SQLite, and I have worked with the former as it suited my needs.
So, in Android I can't say I know much, but still enough to whip out a Call Blocker/Blacklist app and a FileExplorer.
IDEs used: Eclipse.
PHP
Any words to explain my love for this language are less. I love PHP for the same reason I love C++. It does what I tell, it doesn't restrict my abilities, it fits in nicely with the scripting language category and
just like C++, allows me to shoot myself in the foot when I want to! I've developed in PHP long enough to appreciate what it really is.
-
Duck Typing
was first introduced to me in Javascript but it was in PHP, that I used it more often.
-
Ease of Use
was the only thing I expected from a scripting language and it didn't disappoint. The plethora of functions, a huge online community and the combination of LAMP; I didn't even bother with ASP.NET.
-
Google API
was used in linking the Google Docs with the Build Your Rig! v1.0. The data from the spreadsheet stored on the cloud was updated and retrieved dynamically to the combo-boxes on the site, for the people
to see their prices.
-
Facebook API
was used as a part of Facebook Connect's validation scheme for one of my site designs. The website was closely integrated with Facebook, via it's PHP SDK.
-
MySQL
is used extensively in most of my designs, whenever I feel the need to have a strong back-end.
So, in PHP I've done almost everything that I've imagined from cURL, Facebook Connect, file manipulation, website development, middle-way for HTTP communication and much more. It never gets old.
IDEs used: Adobe Dreamweaver, JetBrains PHPStorm, Aptana Studio.
Python
Python was a language that everybody seemed to like, people said it should be the first language to be learnt and not C++. So I decided to give it a shot. Result, I absolutely love this language now.
-
Library Routines & Modules
are aplenty in Python. You name it, it will be there. Having namespaces surely helped a lot.
-
Syntax
of python was the easiest to learn. It improved upon the duck typing in PHP and it's other inconsistencies. My development time in Python reduced considerably owing to it's cleaner syntax and wide
library.
-
Scripting
in python is by far the easiest I have seen, apart from PHP. It provided a viable option to develop a cross-platform solution for the Windows, *nix & even the Apache servers. The quick 'n easy way
of PyProgramming is gonna me with me for a long while.
So, in Python I'm basically a beginner exploring the different modules and expanding my experience. I wouldn't be surprised if Python replaced PHP in web development.
IDEs used: PyDev (Eclipse), Aptana Studio.
8051 Microcontroller Assembly
My stint with 8051 µController Assembly bore out of my own choice to get my hands on some serious hardware programming. While I had had some (read: I won't put it out on my resumer) experience with Intel x86 ASM,
practising on the real deal was an opportunity I couldn't resist and since hardware don't come cheap, I had to enroll myself in a certain institute.
The teachers there weren't hoping to teach a CS Programmer a subject that was studied, and I cannot emphasis this enough (still would make use of the tags), for the sake of studying. I on
the other hand found it awesome just for the reason being I could finally control some hardware. A point though, it ain't a field for freelancing just yet.
-
Registers
were everywhere. They came in every flavor. They obeyed you. They respected you. Even if you didn't need them, they were there for you. People say that it is the little things in life that are the most beautiful,
I'll go out on a limb here and say - they are correct. A trivial operation of variable assignment becomes a set of seemingly awesome instructions.
-
Interrupts,
everybody knows what they are but it is something to control them. To interrupt the CPU and service it. I picked up interrupts faster that you could say bingo and I used them efficiently owing
to my high-level programming skills - I already knew when they were required. I was however amused at people using polling and fretting interrupts like C pointers (which I adore).
-
Memory,
the only currency barring execution time. I got to know about different memories available in a microcontroller. There was Data Memory, Program Memory, Read-Only Memory all linked via a single DPTR. Sounded a neat
concept to me.
-
Interfacing
devices like LED, 7-segments, LCD, Keypad, DTMF, IR, RF, motors, etc. was so much fun. Doing multiplexing than reading it is always better. While I was at it I whipped up a home security system and a DTMF based
chat, pretty slick eh?
-
Robotics
was a part of the course. I found robotics very easy. Making a robo is easy, making it good is difficult. What should it do, how should it respond, should I add fuzzy logic, etc. Sadly for me the better the robo is,
the more expensive it gets. You can only code it to be a decent robo till a point, after that it relies on HQ ICs, clean power and motors.
So, in 8051 µController Assembly I have done all the semantics for loops, logical constructs, interrupts, polling and using them devised simple logic hardware including a password-protected home security & a DTMF based
chatting module. DTMF, or Dual Tone Multiple Frequency is the sound you hear on your phones when you press buttons.
IDEs used: Keil µVision, TopView Simulator, Proteus.
Embedded C
When I had learnt 8051 Assembly, I decided to go ahead with it's kinda high-level counterpart Embedded C. Thus all that I had learnt was to be directly applied to this language.
-
Registers
were presented neatly via #define and a couple of #include statements. Workarounds had to be done but having learnt many languages, I'm no stranger to workarounds and
weird syntax.
-
Interrupts
were same as in ASM but with a few restrictions and new syntax, but it was only a matter of learning the syntax as the semantics were already in place.
-
Program Development
in Embedded C was easier than coding the same in assembly, but isn't it the same with every new language. Before I knew it I was creating code on-the-fly and at times modding circuits to avoid changing my code. Its
never bad to have options, eh?
So, in Embedded C I have done the mapping between it and assembly including loops, logical constructs, interrupts, polling and porting my earlier assembly applications including the password-protected home security
& a DTMF based chatting module and an additional dual-mode person counter.
IDEs used: Keil µVision, TopView Simulator, Proteus.
HTML5 & XHTML
HTML5 and XHTML are both the talk of the town. The stricter XHTML has many frowning, but I've had much bad experiences scraping badly formed HTML4.0 markup, so I try supporting XHTML whenever possible, which is 99% of
the time.
-
HTML5 and Multimedia
are a welcome to the family of HTML. While it may put the final nail in the coffin for Flash, I ain't complaining. The canvas, audio and data-attributes offer a myriad of opportunities to come.
-
XHTML and Strictness
are the absolute necessary measure to avoid newbies writing badly formed HTML that throws the semantics out of the window. Though I eagerly await XHTML5 w/ the inclusion of data attributes.
I have had a long experience developing websites in HTML, and now in XHTML and HTML5.
IDEs used: Notepad++, Dreamweaver.
CSS
CSS cannot be just considered a part of HTML today - it is what makes HTML appeal. Just drop those <table> already.
-
CSS3
has introduced various attributes that have greatly enhanced the appeal of CSS. Some browsers have yet to drop the vendor prefixes, but it shall be done.
I've worked on CSS from the beginning itself, when I first developed a website.
IDEs used: Notepad++, Dreamweaver.
XML
XML, is a web standard now for transferring data, siding with JSON. XML simply cannot be overlooked
-
XML Structure
can be used to represent any kind of data structure. It offers an interesting alternative to serialization can is required in every phase of programming as a means for information interchange.
I have used XML in nearly every programming language for persistent storage, serialization and data interchange.
IDEs used: Notepad++, Dreamweaver.
JavaScript
Javascript, JScript, ECMAScript - call it what you wish, but if you have ever developed a website, you cannot deny the fact how indispensable they are.
-
Duck Typing
is never bad, especially for a scripting language. It offers the programmer to be more responsible and versatile at the same time.
-
Prototyping
in javascript enables the extending of properties in a flash.
JavaScripts are an integral part of any website I make.
IDEs used: Notepad++, Dreamweaver.
AJAX
AJAX, well I used to know it as XHR back in the days, then all of a sudden boom, there's AJAX. In the world of synchronous, single-threaded scripts AJAX is a beast you have got to understand.
-
XHR
was the API I was using before AJAX was around, then the folks decided to rename it AJAX. I ain't complaining, I didn't even needed to learn it, I was already using it.
AJAX has been indispensable in providing a rich user experience via JavaScript.
IDEs used: Notepad++, Dreamweaver.
jQuery
I'll keep it short jQuery is awesome. It breathed life into the boring JavaScript. After jQuery, web design was never the same. It went straight to the write less, do more paradigm.
-
Select, Do, Callback
or simple put Lather, Rinse, Repeat and before you know it all your dirty laundry has been done. It is the simplest thing I can say about jQuery.
I have used jQuery in all of my prominent web designs.
IDEs used: Notepad++, Dreamweaver.
ActionScript
Adobe Flash is just as good as a lack-lustre picture without the contrast of ActionScript. Sure, Flash provided much of the interface though it's GUI but when you needed maximum control like a true programmer
it was ActionScripts you had to rely on.
-
ActionScript 3
improved upon the AS 2.0 and enabled me to develop more versatile flash animations in a neater way. The event mechanisms and anonymous functions were just as good as their JavaScript counterparts.
-
Interfacing with JavaScript
was a thing I learnt while wanting to communicate a Flash SWF with the page's underlying JavaScript to render the SWF's animation on the fly.
ActionScript has been used extensively in all of my Flex projects and in many of my Flash animations and projects.
IDEs used: Adobe Flash.
AMX Scripting
The only people who might have remotely heard of AMX MODX, wold be the ones having the faintest of the idea about the Half-Life Engine and it's games like Counter Strike. AMX MODX was a modding library
for the Half-Life games (or more perhaps, didn't google it).
-
AMX Scripting
was more like a cross between C and JavaScript. I might have not fully understood the syntax but was still able to mod the scripts and whip up my own using the bare minimum semantics borrowed from the other
languages I knew of.
I have scripted on AMX MODX on 3 projects, of which one is available for download.
IDEs used: Notepad++.
Shell Scripts (DOS & Bash)
Shell scripting is one of my favorite passtimes. Almost each of my C++ project started from me accomplishing a task on a shell script and then wishing to relish the same magic using
API calls.
-
DOS Batch Scripting
was something I got accustomed at a small age. While I was growing up, DOS was the only thing I had. I didn't have the faintest clue about UNIX. I'm sure people must've thought UNIX
was a dish from where I came from. So all I did was create batch scripts for all of my work. After I learnt C++, I would lazily call batch scripts using system(...) to
accomplish the task of which I had no idea API existed.
-
Bash Scripting
was introduced to me as a part of my curriculum and boy did I love it. I was blown away by the versatility of the UNIX shell. Thereby all my shell programs were meant for the Bash on a Ubuntu system.
Scripting in bash made developing the same small app on Python or C++ redundant. So all the quick 'n dirty apps were taken care of by the Bash Scripts.
I have a long history in shell scripting and can accomplish even the most daunting system tasks via shell scripting.
IDEs used: Notepad, GEdit, VIM.
MySQL
MySQL was the first database I ever worked on w/ PHP backing it. Since then I have used MySQL everytime I felt the need for a web project or a website.
-
Procedures & Functions
were extensively used in all of the secure projects I worked upon.
-
Views & Triggers
were used for additional security and/or performance improvement.
-
PHP Integration
helped me in developing rich websites and custom PHP modules.
-
phpMyAdmin & MySQL Workbench
were both efficient interactive GUIs to work on the underlying MySQL server.
MySQL has been an important part of many of my web projects and website designs involving restricted access and security.
MSSQL Server
MSSQL Server was utilized in some of my C#.NET applications which required a strong backend support, so I thought why not use the MSSQL Sever right away.
-
Procedures & Functions
were extensively used in all of the secure projects I worked upon.
-
Views & Triggers
were used for additional security and/or performance improvement.
So, I have used MSSQL for all my database requirements on C#.NET applications.
Oracle SQL+
SQL+ was part of my curriculum so I had a small stint with it, nothing much.
-
Procedures & Functions
were extensively used in all of the secure projects I worked upon.
-
Views & Triggers
were used for additional security and/or performance improvement.
I have yet to develop an application using Oracle SQL+, which I highly doubt.
Adobe Photoshop
This is the single most reason why I can't switch to Linux as my primary OS. If Adobe hadn't done a god-freakin-awesome job developing this bada$$ of a suite, my life would be
easier. I don't work in Photoshop, I play. I was an artist, a designed before I could code - I still am. Designing comes naturally to me and I love it!
-
Photo Manipulation,
I still remember how my friends hated me for all the things I did to them. Only now I do them much better.
-
Image Correction
is as easy as stealing candy from a baby, not that I have ever done it (or accept it anyway).
-
Graphic Design
is my guilty pleasure from programming. When I don't feel the need to code, I'd design something. I'd usually doodle anyway so why not chop it.
-
PSD Animation
is my favorite vague feature, since I love it but would never use it. Have done it once though, strictly for learning purposes.
My skills in Photoshop have only grown with time. I have found myself (as others have pointed) developing masterpieces even in a stupid MS-Paint! You can't suppress your inner talent, right?
Adobe Flash
The designer in me wasn't satisfied with just creating designs - they had to move, appeal to everyone. Thus came Adobe Flash, another marvellous software in the god-freakin-awesome suite.
-
Tweens
were the simplest of things that I found I could whip up believable animations in under 60mins.
-
ActionScript
control had to be present if I wanted to add that extra oomph.
-
Motion Editor
that was introduced first in CS4, continues to amaze me with the freedom it provides for an animator.
-
3D Animations
in Flash, or should I say in flash.
I enjoy animation as much as I enjoy photoshoping (ok, less that photoshoping). Now that Flash supports 3D tweens too, coupled with the Motion Editor, animating has never been more fun.
Adobe Illustrator
I decided to check out Illustrator on things I wasn't able to do with Photoshop. Hence it was short-lived.
-
Vector Drawing
was the only thing I even tried in Illustrator but since I don't require that degree of precision I usually avoid taking the Illustrator route.
I don't have much experience with Illustrator, just some vector drawing.
Adobe After Effects
I started out with After Effects after witnessing some awesome AE videos and I promised myself to learn it ASAP. And ASAP I did, 2 weeks and I was doing my own AE video.
-
Compositions
inside compositions inside compositions, I ain't complaining. They got better with every boxing.
-
Effects
were aplenty in After Effects with Particular, Text, Wave, Flares, Camera etc.
I learnt After Effects just enough to help me make awesome videos and I thank Andrew Kramer from Video Copilot for it.
Adobe Premier
I learnt Adobe Premier while I was at school to chop 'n make an awesome video. But I found other tools that were easier to work with.
-
Video and Audio
are perhaps the only thing I know of in Premier. Never did much development.
I know absolute minimum of Adobe Premier
Adobe Dreamweaver
I have used Dreamweaver from the time since Macromedia was selling it. Now it is quite indispensable to my web development work.
-
PHP, HTML & JavaScript
projects are handled by Dreamweaver. I can't seem to like any other editor but Dreamweaver.
I have used Dreamweaver so much that it feels like my Notepad.
Pinnacle Studio
While I found Adobe Premier too tedious to work with, Pinnacle Studio was an absolute delight.
-
Transitions
and thousands of them more than. Then there were filters hundreds. So many options, so many choice, yet a clean UI.
I have done major video compositions in Pinnacle Studio.
Microstation v8
I was exposed to Bentley Microstation v8 as a part of a competition organized by the Ministry of Science & Technology, India. It was a 3D modelling/CAD suite just like AutoCAD.
I regret the fact that I missed on formal training on this suite.
-
3D Modelling
was pretty much the only thing I did. Model, Attach Material, Render, Wait.
Not surprisingly I won the best model award. All those hours of lost sleep in learning it by hit 'n trial (my favorite) finally paid off. Did I mention I'm an artist as well?
Autodesk AutoCad
I have worked on AutoCAD minimally for learning purposes only.
-
2D & 3D Modelling
are the only things I've done in AutoCAD, though I know there's much more to it.
I have done just 2D/3D modelling since I didn't have much requirement of CAD.
Adobe Flex
While there was no HTML5, no CSS3 and no jQuery - there was Flash. And with Flash there came Flex. At first I thought it was an awesome framework to develop rich web applications. Now it's pretty much dead.
-
MXML,
the markup language of flex was simple to learn and implement, borrowing from XML, XAML and HTML.
-
CDATA
was used quite a many times for my comfort.
-
Database Connectivity
was used in the form of XML files and MySQL databases.
-
ActionScript
was all over Flex. While Flash had a small room for ActionScript, Flex depended on it. I had to create an entire library in AS for on of my earlier versions of Build Your Rig!
I have done much development in Flex, including a full AS class library for a project, but then it was killed.
Brainfuck
Brainfuck looks like a pretty useless language to the naïve, but exists as an esoteric programming language, signifying a proof of concept among other such languages. Why learn brainfuck? Cause it's fun and challenging
but won't help you get a job anyway.
-
8 Commands
of this language present a challenge for the programmer to come up with a solution to a problem. It is turing-complete none-the-less.
This is pretty much what I've done in Brainfuck:
++++++++++[>++++++++>++++++++++>++++++++++++>+++>+++++++<<<<<-]>--.>++
+++.>-----.<-.---..>+.<+++.>>++.>----.<<<-------.>--.++.<+++++++.>+++.
<-------.>-----------.
Run
IDEs used: Notepad++.
Regular Expressions
Regular Expressions were the only thing I missed in C++. I relied on them it many of my projects. I could've spent much time in scraping text or searching though records or I could be doing
some useful work. That's where regular expressions come in.
-
BRE, ERE & TRE
regexes were used far too frequently.
-
Lookaheads & Lookbacks
were too used to form more complicated patterns.
-
Group Captures & Back References
helped in easing much load from custom parsing.
Regular expressions are used by me whenever a text parsing problem shows up.