Official Website of Nisheeth Barthwal

 

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:


Technical
Apart from my other hobbies I take great pleasure in learning new stuff:



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:

Programming Languages

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.

Markup Languages

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.

Scripting Languages

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.

Databases

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.

Design Tools

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.

Others

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.