From: ...
I am often asked what tools I use to get things done on the Windows PC at home. It's a very broad question, so I'm going to narrow it down to what Windows programs I use frequently, as opposed to more broader topics like what services, operating systems, hardware, apps, and sites I use.
I use Windows exclusively for web development & hacking (the good sort). Windows 8 is a very mature Operating System, and providing you've hardened the system, and are taking various precautions; it can be a pretty reliable OS for getting things done. Here's a list of the software I've been using on Windows for some time now.
XAMPP. Simple local Apache server for testing PHP, and emulating a live server.
Prepros. For getting code production ready. Minifies, Concatenates JS, compiles SASS, etc. Everything you expect from a preprocessor, without the banality of the command-line. Always remember, if you want a bit more power, you can use GruntJS.
Notepad2. This replaces the default text editor on Windows, and does an image hijack of the notepad.exe
executable. Useful for editing .INI
files, registry files, and other OS pocket lint lying around.
MarkdownPad 2. I've tried all the markdown editors. MardownPad2 is the best, hands down.
Sublime Text. For JS, CSS, and HTML. There are many layers to peel away in this editor. I try to use it for web development only.
Komodo Edit. More of an IDE than a text-editor. Sometimes I use Komodo when working with complex directory structures. It's handy for heavily nested sub-folders and large code bases. It has a decent enough code-editor for working with code, too.
Fiddler. Fiddler is a HTTP debugging proxy. Great for fine-grained insight for what's happening behind the scenes on the network. It's handy for emulating slow connections too, so you can see how sites perform on slow 3G mobile connections.
Firefox + Livereload Addon. The default browser I use to make websites is Firefox. I have one addon installed; Livereload, as other addons can interfere with performance and the development process. A separate profile is kept for general surfing, and looking at cat pictures.
WinSCP. A pretty rock solid SSH client. There is a strong focus on file-manipulation, and directory traversing. It has a very basic command-line feature. But since the vast majority of my SSH logins have to do with files, WinSCP is very handy. Occasionally I use putty for very delicate command-line operations, but it's hardly worth mentioning here, as every techie person on the planet knows about Putty.
Filezilla. There are many alternatives to Filezilla, but Filezilla trumps them all. It's a very reliable and well designed application. It has a so-called bug where passwords are stored in plaintext inside the config files, but this issue can be solved with Keepass, which auto-types passwords and secures the entry with two-channel obfuscation.
Code Warehouse. For storing code snippets. A rock solid program for accessing those all important code-snippets for later re-use. I'm a serious D.R.Y enthusiast, so this program is invaluable. It can also store the code snippets in a Microsoft Access database, so it's handy for 'remoting' into your own bespoke code snippet library.
Autotext. Auto-completes certain phrases based on simple hot-keys that you define. For example, bpl
will spit out a HTML skeleton document. It's handy for Unicode too, where I can assign values to emoji/utf8 characters. Like str
for a raw Unicode star: ★
Search My Files. Windows' default search engine is good, but not good enough. Search My Files is a lot more powerful, and even allows you to search the contents of files with a lot more accuracy. It even supports regular expressions for those rare (and often painful) moments when too many results are shown.
Everything Search. Another replacement for Windows' default search engine, only with an emphasis on the filenames themselves, and the speed at which they're returned. It's absurdly fast.
Text Crawler. This bulk-replaces certain key-phrases in files. Handy for replacing a string multiple times, in multiple documents. It even has multi-line support, and honours the original encoding of each document.
Evernote is like my 'outer brain'. All manner of digital pocket lint is kept there. Shopping lists, notes, todo-lists, etc. I love paperless offices, and Evernote is indeed that, and more.
Autohotkey Scratchpad. I work with a lot of text. Rather than spawn a new file in a text-editor for trivial text operations, it is sufficient to have a scratch-pad permanently open for the smaller stuff.
BB Flashback. For doing screencasts. Very powerful for recording the screen, and has everything you expect screencast software to do, and more. It even records the webcam, so it's handy for tutorials, or even just for reporting bugs.
Flexible Renamer. Bulk-renames files. It does one thing well, and has a lot of features that can be peeled away for the more savvy user.
Win sorter. For doing operations on text, like converting to upper-case, inverting case, sorting, capitalizing, and many others. Invaluable when you work with a lot of text. An absolute must for any writer.
Tray Status. Sometimes the LED indicator light on the keyboard which signals whether the caps-lock is on or not; is not good enough. This puts a little icon in the notification area that reminds you yet again whether caps-lock is on, or whether the numerical-lock is on.
Fluffyapp. The unofficial Cloudapp client for Windows. Handy for taking and sharing screenshots, and putting various graphical pocket lint into the cloud.
Win-sshfs. SSH (SFTP) filesystem for Windows. Mounts sFTP boxes as a virtual drive in Windows. Handy when you edit files a lot, and are averse to opening up a bulky client.
Dropbox. There are thousands of solutions like Dropbox, but I had to draw the line somewhere, and I'm sticking with it. It does what its supposed to do, and more.
Google Drive. For all manner of digital pocket lint and errata. I know people who store their whole life here. I treat it as a sort of virtual /devnull/
Chrome. I rarely use Chrome. I only use it as a bridge to various Google cloud services like Docs, and to try out some cute addons. It's not a very hackable browser, but handy to have nonetheless.
Photoshop. De Riguer graphics program. Should be installed on every machine! One of the few tools that doesn't have a robust freeware alternative. I know people who get too evangelical about the likes of GIMP, and Paint.NET. Anyone will tell you Photoshop is the industry standard though.
Skitch. Part of the Evernote suite of tools. Handy for screenshots. Also love the arrow and text-overlays for giving more meaning and context to screenshots and emphasizing certain parts of the screenshot. Invaluable.
Audacity. Basic audio manipulation and editing.
Miro Video Converter. I upload a good bit to tube-sites. Handy for converting massive container formats to more manageable sizes, and converting to WEBM if you're a fan of HTLM5 video.
VLC. Hands down the best media player out there. Also lots of nerdy features to peel away for the more savvy user.
Movie Maker. Part of Windows Live Essentials. Movie Maker caters to all my video editing needs for now.
Keepass. Simply wonderful security tool jam packed with features. Takes a bit of training to become proficient at this. Worthwhile peeling off the basic features and diving in a bit. The best part if the two-channel obfuscation and auto-type features. Handy for working on machines where you're sick of typing passwords, and malware-ridden machines that probably have keyloggers installed.
1Password. Great password manager for general surfing. A bit different from Keepass in that it's more suited for the web. Very flexible too, and has a tonne of features.
Lastpass. Again, suited more for the web, but it's more secure. I use this with a Yubikey, and make sure to make offline backups when I can, since it's a hosted service. Used for more sensitive information. (Each password manager has a very different use case; and there is no single point of failure).
CryptoTE. Open source program for text encryption. You can store multiple files in one encrypted container. I manually reviewed the source-code and there's no backdoors. Great for tucking away sensitive text, or even fully-fledged binaries like PDFs, invoices, etc.
Truecrypt. There was a bit of fanfare recently over whether this has a backdoor. Whether this is true or not, I don't know. Since I've yet to see a Truecrypt container actually popped, I'm sticking with it. If you dislike my stance here, you could be suffering from Snowdengate paranoia and need to liven up a bit.
Autoruns. Insane Windows powertool with huge insight into what programs are doing what. How they get executed. Where they get executed, etc. Lots of granular control over the Windows OS here. I've even found a few carefully hidden rootkits with this. One of my favourite Sysinternals tools.
TCP View. Fantastic network monitor for Windows. Real-time overview of all traffic on the network. What programs are connecting to what. What services are talking to the network, etc. Needs a bit of training to understand what's going on and to be able to parse out malicious activity by eye alone; but certainly worth it. Antivirus is a security measure only. It's always handy to have this in your toolbox for the more subtle rootkits that embed themselves in the OS.
Sandboxie. Handy when you download suspicious software and want to execute it without letting it touch the host operating system. I use this to test out software and analyse its behaviour before adding it to a software whitelist / trusted bundle. It's kind of like a software-condom for Windows.
Zemana Antilogger. Scrambles keystrokes, such that the right characters are outputted, but the keystroke itself is remapped to garbage. It thwarts keyloggers. Keyloggers are the most insidious malware you can get. I could care less if a Russian hacker gleens the funny cat pictures I am looking at, but I certainly would care if he/she gleans my Credit Card entries, master passwords, and other sensitive info that shouldn't be on the Public Internet in the first place.
MalwareBytes. Renowned anti-malware solution known for detecting the vast majority of malware out there. Has caught a few exotic trojans once, and I am forever thankful I installed it.
MalwareBytes Antiexploit. Sadly, hackers like to exploit genuinely good-intentioned, legitimate software and turn good software into a launching pad for attacks. These attacks are known as 0days. A weakness is found in the software, and this allows any number of attacks to go by unnoticed by the user. This tool stops that by thwarting heap-spray exploits, and nipping those attacks in the bud.
Microsoft EMET. The Enhanced Mitigation Experience Toolkit. Sandboxes applications and prevents a slew of exploits from happening on Windows. It does this by using DEP (Data execution Prevention). Windows is known for having countless ways to execute binaries. It also stops buffer overflow exploits by randomizing the address space.
Classic Shell. Brings back the start menu in Windows 8. Disables all the Metro nonsense too. Frankly, the Metro interface is a hindrance and is slowing me down. Classic Shell also has lot of features for customizing the start menu that are not even in old previous versions.
Launchy. The first thing I install on any new Windows installation is Launchy. Possibly the most handy and useful utility that exists. Launches programs instantly and without much fuss. I mapped the launcher to the INSERT
key on the keyboard. I think Launchy has added at least a year to my life, if not more!
Recuva. Handy for recovering deleted files. If you think files are gone forever after emptying the Recycle Bin; think again.
CCleaner. This utility should be installed on every Windows machine. Cleans up the system and removes all the pocket lint that gathers on your Windows system after prolonged use. I run this every month or so, and am always surprised at how much garbage Windows dumps to the hard-drive over time.
Tuneup Utilities. Tremendously useful tool for power users. It's great for optimizing the OS for productivity, and tweaking the system's default settings, which are not always ideal. For example, animations become an eyesore after using the PC for prolonged periods. It's also great for speeding up Windows, and a lot of bloat functionality can be disabled, for example error reporting
which dispatches errors to Microsoft's servers, and making unresponsive programs close immediately rather than time-out. Worth training yourself in this one if you're going to be glued to the same PC for prolonged periods.
OSFMount. Virtual disk mounting. Create any arbitrary container, and mount it with OSFMount. Mount ISOs, and other disk-image formats. Handy for organizing arrays of data you don't want indexed, and 'deep freezing' files in their untouched state. Also handy for hand-balling globs of data between hard-drives (it makes sense not to copy every single file. A massive binary blob is preferable)
Karen's Directory Printer. Nice GUI tool for printing the file / folder contents of any directory. Handy for doing integrity checking, making public download listings, or dealing with lots of separate JS modules placed in multiple disparate folders.
qBittorent. I humbly propose this is the best torrent client for Windows there is. Useful for downloading stuff I suppose. Lots of functionality, and no shady behaviour. Very customize-able too.
Win32Whois. Very simple whois
GUI tool for Windows. Queries multiple whois services for a definite result. Does one thing well, what more can I say?
NetToolset. A swiss army knife for networking. Has all the usual tools, like ping, port scanner, traceroute, etc. Handy for uncovering previously hidden / unseen information that often lurks behind various online services.
Vista Switcher. Supremely useful shell-addon for switching between windows and open programs. Highly customize-able. Right up there with Launchy, this tool has probably added a year to my life, if not more.
7+ Taskbar Tweaker. This tool works with Windows 8 too. Basically a shell-addon that adds more functionality to the default Windows taskbar. I specifically use it to change the generous amount of padding between the icons in the notification area. Handy when set to 1px, as it allows for more room for the taskbar buttons.
Skype. I use it to dial out because of the low rates. I have it mapped to my real number. Handy for overseas calls, and calling offshore tech-support numbers. Also handy when you want to insulate land-line / international calls from a cellphone, as cellphone carriers charge absurd rates for a landline.
Thunderbird. Super handy email client. A veritable one-size fits all for email. I've managed to hook up several accounts to this. Make sure to protect it with a master password, as a copy of the installation folder means access to all your email.
Pidgin with OTR Plugin. Super handy chat / IM client, with lots of useful plugins. Make sure to get the OTR (Off the record) plugin for secure conversations. Supports many different services. Try to get the portable version so you can carry it around with you.
There is an endless sea of programs to try out on Windows, and this can cause a 'choice paralysis' when deciding which programs to use. I like to white-list certain software, and add it to a permanent inventory of software that I can draw upon later. I have a strict criteria for choosing the right software, and it has to be:
Secure. No ad-ware installers. No 'phoning home' behaviour. No dark-patterns. Must be peer reviewed, trusted, and preferably open source. It must be popular and widely used. It must be lightweight and easy to install (no bloatware). It must be easy to remove from my system. It must have regular security updates and respond to the threat landscape (heartbleed, 0days).
Unbundled and no bloatware. It has to do one thing well, and if possible, no feature creep.
Freeware. If possible, the software has to be freeware. If I have to pay for a license, that's only because there is no freeware alternative.
Open source. If possible, the software has to have the code freely inspected and reviewed. If the freeware does not provide source-code, then I will inspect what the executable is doing behind the scenes, and that it's not trying to install backdoors, or tamper with the integrity of the OS.
Useful. Some programs are simply not useful. If there is one thing I find in the software that insults my sensibilities, intellect, and otherwise makes me feel unsettled, then I will discard it, and find a more sensible alternative.
Onion features. Features which can be peeled away after a certain skill-level have been reached using the program are great. Often times, developers try to pack in lots of features, and rarely, is ever, provide an opt-in mechanism for the more advanced features. I use the onion metaphor, because a novice can use the program, and if a certain proficiency is reached, they can 'peel' away the simple features, and reveal the advanced section(s).
Tested. It can take some time to decide if I want to keep / white-list certain software. It's easy to think software is useful because it is packed with features and appears to do its job. It's only after using software habitually and for prolonged periods, that I can truly make up my mind about it. Most of the software listed on this page has been installed on my system for some time, and some of it has survived OS updates, and all manner of wear and tear. How much time you spend getting to really know the programs mentioned is up to you - it depends on how much you want to get done.
Also Noteworthy:
Scott Hanselman's 2014 Ultimate Developer and Power Users Tool List for Windows
SnapFiles freeware and shareware downloads and reviews, trusted for quality since 1997
Ninite - Install or Update Multiple Apps at Once
PortableApps - Portable software for USB, portable and cloud drives
If a network uses a filtering system and blocks certain keywords, we can modify the W3Schools URL as follows, and submit the URL to search engines:
cialis.w3schools.com vardenafil.w3schools.com levitra.w3schools.com milfcuckold.w3schools.com
We can't get rid of W3Schools, but we can demote the URL on Google SERPs.
We should submit the link to mechanical turk services on fiverr·com and get the links demoted on Google that way.
It is advertised that bulk submitting a URL into spam-silos helps with SEO, when infact Google hates this and implements their Panda algorithm if this occurs.
It could backfire and increase SEO temporarily - but because we are practicing 'paid links', Google will punish the site owner for this. I think a crack team of Internet vigilantes should link-blast the W3Schools URL into spam-silos, and the W3Schools problem can finally go away.
For me, permalinking is a much deeper thing than a mere pointer to a resource, because the web is inherently transient, and forever shifting. Link rot is what defines the web. Very few people grok the concept of "evergreen domains", and "citable resources".
A domain must be kept renewed for, at least, ten years for it to be evergreen, and content must be citable if you want to go down in history for your efforts. How we go about implementing citable resources is tricky.
Unless you are a Zen Warrior and quite enjoy Sand Mandalas, then you shouldn't be reading this. This article is for those that want to be found on the web for their work in the foreseeable future, and for those who don't want their work attributed to other people. You want authorship of your resource to be correct.
Nobody ever really owns a domain. Much like land, it trades hands with numerous parties before it belongs to any one person; in which case that person can then sell it off and buy new land. Everything is borrowed. You own nothing, really. Imagine these scenarios:
And so I conclude that permalinking is a much deeper concept than a mere URL that points to a resource. It entails a slew of other topics that all center around the age old philosophy of permanence versus transience. It's not just something bloggers use in Wordpress!
There seems to be no end to the amount of places we can store things online. I've signed up to all these:
I use each service for different reasons:
Not to mention all the lovely FTP space I have. We are spoiled these days with storage!
Microdonation Support, like Gittip / Flattr / Bountysource
Gittip | Flattr | Bountysource
IL:DR Instagram Link ; Didn't View.
OWLY;DC Hootsuite OW.LY Shortened URL ; Didn't Click
FB;DC Facebook FB.ME URL Shortened URL ; Didn't Click
TTM;UF Tweets too much ; Unfollowed
TMH;DR Too many hashtags ; Didn't read
IGRCHZ ; HC Imgur or Cheeseburger link ; Hastily Clicked
TV ; DRFR Too vague ; Didn't reply, favorite, or retweet
PE ; UF Promotes their employer too much ; Unfollowed
RTO ; TOR Retweets too often ; Turned off retweets
IL:DR Instagram Link ; Didn't View
OWLY;DC Hootsuite OW.LY Shortened URL ; Didn't Click
FB;DC Facebook FB.ME URL Shortened URL ; Didn't Click
TTM;UF Tweets too much ; Unfollowed
TMH;DR Too many hashtags ; Didn't read
IGRCHZ ; HC Imgur or Cheeseburger link ; Hastily Clicked
TV ; DRFR Too vague ; Didn't reply, favorite, or retweet
PE ; UF Promotes their employer too much ; Unfollowed
RTO ; TOR Retweets too often ; Turned off retweets
I currently enjoy all the following:
Streams by this user that have been favorited by others.
No favorited streams yet.
1.) It has already been built in Javascript. If it hasn't, somebody will build it in Javascript. Also see: Atwood's law.
2.) 'Frontend developers' will face their fear of the backend eventually.
3.) Just use MySQL. The world is run on MySQL.
4.) Write text, structure it with semantic HTML, and then write CSS. Do not do these in reverse.
5.) Spend more time coding and less time hunting for what dependency you need for X result. REPLs are a coders best friend.
6.) Every programmer has their 5 milliseconds of fame
7.) Write really bad code in order to get better at it.
8.) Use lateral thinking. Sometimes Sublime text is bringing a gun to a knife fight. You could probably solve 90% of problems without a text editor.
9.) Don't build it yourself.
10.) Refactor only when you know the code has bugs. Refactoring is better than obfuscated code.
The web development scene is awash in shiny toys we can use to make our lives easier as developers, or designers. At any given moment, something.js is trending on the frontpage of Hackernews, or some new javascript widget is getting more traffic than Slashdot and Techcrunch combined.
These plugins are nice and pretty, and we get very excited about them, but this excitement is short lived, and the author of these tools enjoys some great exposure for their efforts, and can crawl the ranks of Github, and Twitter very quickly. This fame can only be sustained if the author ships regularly, and maintains consistency. It is rarely the case that a coder can do this though, as external influences (work/family) can interfere with coding. (Unless you are substack or sindresorhus) If you are going to use these tools, make sure you don't fall victim of 'bells and whistles' syndrome and stuff your site with all these gadgets. Be careful which one you decide to choose, and learn to navigate the seemingly endless choices you have now for widgets and plugins.
I just read BBC's article about Twitter not being able to make a profit. It's the classic 'investor story time' narrative where Twitter now have to scramble to make money via whatever means necessary - even if that means harming the product. Example of harm recently are:
Many spinoff projects not related to Twitter, like Music, Flight, and a myriad of other, quite splintered attempts at adding new features.
ADs getting more aggressive; instead of a simple injected AD in the timeline - now we have newsletters and 'sign up' with the email you have registered with Twitter. Twitter cards are also being used to show rich media for 'partnered' brands. A far cry from small, polite injected ADs. Very few people make time for watching video in a Twitter reading session.
A constantly shifting API that developers cannot trust, and have to relearn constantly. On top of sunsetted in-house features. Remember Twitter Anywhere? I feel like Twitter Widgets will vanish over-night and without much warning too. It turns out; I rely on these solutions very heavily. The 'very little adoption' argument is used to sunset these features, and it's a terrible argument, because it destroys webs of trust with developers.
What Twitter must realize is that Twitter is plumbing. I know that microblogging existed before it, and there are countless (better) alternatives like app.net - but things like app.net are geek toys just like Diaspora. Sure - the greybeard hackers love services like that - but it's not especially for the masses, and also services like Diaspora/ADN will never achieve the status of 'plumbing' (despite app.net's tagline as a platform for Apps.). Twitter got there first, and they must realize this.
So Twitter should give us back the API we all grew to love, and not deprecate it to impress investors. It needs an eco system. It's what made Twitter take off in the first place. When I first joined Twitter in 2007; it was classic bottom up technology, built by the people and the API evangelists. The recent bait-and-switch to 'consumer product' annoyed a lot of people. It's time to see whether Twitter can do another bait-and-switch and go back to its roots.
If they manage to achieve this bait-and-switch - it will be monumental. It will be big news. And I will not be muting Twitter in my timeline for it.
This year I plan to be involved in more movements, and 'initiatives'. Some I wet my toes in more than others, but ultimately, I need to feel like I belong somewhere. Who doesn't? So here's a few happening things that are going places:
There could be more, but I don't want to get involved in everything all at once, as that's too mentally taxing. I need to focus.
Handy Boomkarklets
LICORIZE
javascript:if(document.licorize==undefined){%20var%20licorizeScript%20=%20window.location.protocol+'//licorize.com/applications/licorize/site/support/bookmarklet.js';%20var%20head=%20document.getElementsByTagName('body')[0];%20var%20script%20=%20document.createElement('script');%20script.id%20=%20'__licorize';%20script.src%20=%20licorizeScript;%20script.bkmt='true';%20script.action='BKMT';head.appendChild(script);%20}%20else%20{%20document.licorize.update();%20};%20void(0);
GEEKLIST
javascript:document.getElementsByTagName('body')[0].appendChild(document.createElement('script')).setAttribute('src','https://geekli.st/javascript/bookmarklet/bookmarklet.js')
PINTEREST IT
javascript:void((function(d){var%20e=d.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('charset','UTF-8');e.setAttribute('src','//assets.pinterest.com/js/pinmarklet.js?r='+Math.random()*99999999);d.body.appendChild(e)})(document));
BIT.LY
javascript:(function()%20%7B%20var%20s%20=%20document.createElement(%22script%22);%20s.setAttribute(%22id%22,%20%22bitmark_js%22);%20s.setAttribute(%22type%22,%20%22text/javascript%22);%20s.setAttribute(%22src%22,%20%22//bitly.com/a/bitmarklet.js%22);%20(top.document.body%20%7C%7C%20top.document.getElementsByTagName(%22head%22)[0]).appendChild(s);%20%7D)();
READING.AM
javascript:(function(){window.reading={token:'miePhhXKxJ_ybJEdkrxH8A',platform:'bookmarklet',version:'1.0.1'};var head=document.getElementsByTagName('head')[0],script=document.createElement('script');script.src='https://reading.am/assets/bookmarklet/loader.js';head.appendChild(script);})()
DECENT URL
javascript:(function(){location.href='http://decenturl.com/create?b=1&u='+encodeURIComponent(location.href)+'&t='+encodeURIComponent(document.title);})();
LESSN
javascript:var%20my_slug=window.prompt('Shrinking%20this%20URL.%20Enter%20a%20custom%20short%20URL,%20or%20leave%20blank%20to%20automatically%20assign%20one.');if(my_slug!==null){location.href='http://i.higg.im/-/?url='+encodeURIComponent(location.href)+'&custom_url='+encodeURIComponent(my_slug);}
POST TO DESIGNER NEWS
javascript:function iprl5(){var d=document,z=d.createElement('scr'+'ipt'),b=d.body;try{if(!b)throw(0);z.setAttribute('src', 'https://news.layervault.com/assets/bookmarklet.js');b.appendChild(z);}catch(e){alert('Please wait until the page has loaded.');}}iprl5();void(0)
1.) It has already been built in Javascript. If it hasn't, somebody will build it in Javascript. Also see: Atwood's law.
2.) 'Frontend developers' will face their fear of the backend eventually.
3.) Just use MySQL. The world is run on MySQL.
4.) Write text, structure it with semantic HTML, and then write CSS. Do not do these in reverse.
5.) Spend more time coding and less time hunting for what dependency you need for X result. REPLs are a coders best friend.
6.) Every programmer has their 5 milliseconds of fame
7.) Write really bad code in order to get better at it.
8.) Use lateral thinking. Sometimes Sublime text is bringing a gun to a knife fight. You could probably solve 90% of problems without a text editor.
9.) Don't build it yourself.
10.) Refactor only when you know the code has bugs. Refactoring is better than obfuscated code.
The web development scene is awash in shiny toys we can use to make our lives easier as developers, or designers. At any given moment, something.js is trending on the frontpage of Hackernews, or some new javascript widget is getting more traffic than Slashdot and Techcrunch combined.
These plugins are nice and pretty, and we get very excited about them, but this excitement is short lived, and the author of these tools enjoys some great exposure for their efforts, and can crawl the ranks of Github, and Twitter very quickly. This fame can only be sustained if the author ships regularly, and maintains consistency. It is rarely the case that a coder can do this though, as external influences (work/family) can interfere with coding. (Unless you are substack or sindresorhus) If you are going to use these tools, make sure you don't fall victim of 'bells and whistles' syndrome and stuff your site with all these gadgets. Be careful which one you decide to choose, and learn to navigate the seemingly endless choices you have now for widgets and plugins.
I just read BBC's article about Twitter not being able to make a profit. It's the classic 'investor story time' narrative where Twitter now have to scramble to make money via whatever means necessary - even if that means harming the product. Example of harm recently are:
Many spinoff projects not related to Twitter, like Music, Flight, and a myriad of other, quite splintered attempts at adding new features.
ADs getting more aggressive; instead of a simple injected AD in the timeline - now we have newsletters and 'sign up' with the email you have registered with Twitter. Twitter cards are also being used to show rich media for 'partnered' brands. A far cry from small, polite injected ADs. Very few people make time for watching video in a Twitter reading session.
A constantly shifting API that developers cannot trust, and have to relearn constantly. On top of sunsetted in-house features. Remember Twitter Anywhere? I feel like Twitter Widgets will vanish over-night and without much warning too. It turns out; I rely on these solutions very heavily. The 'very little adoption' argument is used to sunset these features, and it's a terrible argument, because it destroys webs of trust with developers.
What Twitter must realize is that Twitter is plumbing. I know that microblogging existed before it, and there are countless (better) alternatives like app.net - but things like app.net are geek toys just like Diaspora. Sure - the greybeard hackers love services like that - but it's not especially for the masses, and also services like Diaspora/ADN will never achieve the status of 'plumbing' (despite app.net's tagline as a platform for Apps.). Twitter got there first, and they must realize this.
So Twitter should give us back the API we all grew to love, and not deprecate it to impress investors. It needs an eco system. It's what made Twitter take off in the first place. When I first joined Twitter in 2007; it was classic bottom up technology, built by the people and the API evangelists. The recent bait-and-switch to 'consumer product' annoyed a lot of people. It's time to see whether Twitter can do another bait-and-switch and go back to its roots.
If they manage to achieve this bait-and-switch - it will be monumental. It will be big news. And I will not be muting Twitter in my timeline for it.
From: ...
I am often asked what tools I use to get things done on the Windows PC at home. It's a very broad question, so I'm going to narrow it down to what Windows programs I use frequently, as opposed to more broader topics like what services, operating systems, hardware, apps, and sites I use.
I use Windows exclusively for web development & hacking (the good sort). Windows 8 is a very mature Operating System, and providing you've hardened the system, and are taking various precautions; it can be a pretty reliable OS for getting things done. Here's a list of the software I've been using on Windows for some time now.
XAMPP. Simple local Apache server for testing PHP, and emulating a live server.
Prepros. For getting code production ready. Minifies, Concatenates JS, compiles SASS, etc. Everything you expect from a preprocessor, without the banality of the command-line. Always remember, if you want a bit more power, you can use GruntJS.
Notepad2. This replaces the default text editor on Windows, and does an image hijack of the notepad.exe
executable. Useful for editing .INI
files, registry files, and other OS pocket lint lying around.
MarkdownPad 2. I've tried all the markdown editors. MardownPad2 is the best, hands down.
Sublime Text. For JS, CSS, and HTML. There are many layers to peel away in this editor. I try to use it for web development only.
Komodo Edit. More of an IDE than a text-editor. Sometimes I use Komodo when working with complex directory structures. It's handy for heavily nested sub-folders and large code bases. It has a decent enough code-editor for working with code, too.
Fiddler. Fiddler is a HTTP debugging proxy. Great for fine-grained insight for what's happening behind the scenes on the network. It's handy for emulating slow connections too, so you can see how sites perform on slow 3G mobile connections.
Firefox + Livereload Addon. The default browser I use to make websites is Firefox. I have one addon installed; Livereload, as other addons can interfere with performance and the development process. A separate profile is kept for general surfing, and looking at cat pictures.
WinSCP. A pretty rock solid SSH client. There is a strong focus on file-manipulation, and directory traversing. It has a very basic command-line feature. But since the vast majority of my SSH logins have to do with files, WinSCP is very handy. Occasionally I use putty for very delicate command-line operations, but it's hardly worth mentioning here, as every techie person on the planet knows about Putty.
Filezilla. There are many alternatives to Filezilla, but Filezilla trumps them all. It's a very reliable and well designed application. It has a so-called bug where passwords are stored in plaintext inside the config files, but this issue can be solved with Keepass, which auto-types passwords and secures the entry with two-channel obfuscation.
Code Warehouse. For storing code snippets. A rock solid program for accessing those all important code-snippets for later re-use. I'm a serious D.R.Y enthusiast, so this program is invaluable. It can also store the code snippets in a Microsoft Access database, so it's handy for 'remoting' into your own bespoke code snippet library.
Autotext. Auto-completes certain phrases based on simple hot-keys that you define. For example, bpl
will spit out a HTML skeleton document. It's handy for Unicode too, where I can assign values to emoji/utf8 characters. Like str
for a raw Unicode star: ★
Search My Files. Windows' default search engine is good, but not good enough. Search My Files is a lot more powerful, and even allows you to search the contents of files with a lot more accuracy. It even supports regular expressions for those rare (and often painful) moments when too many results are shown.
Everything Search. Another replacement for Windows' default search engine, only with an emphasis on the filenames themselves, and the speed at which they're returned. It's absurdly fast.
Text Crawler. This bulk-replaces certain key-phrases in files. Handy for replacing a string multiple times, in multiple documents. It even has multi-line support, and honours the original encoding of each document.
Evernote is like my 'outer brain'. All manner of digital pocket lint is kept there. Shopping lists, notes, todo-lists, etc. I love paperless offices, and Evernote is indeed that, and more.
Autohotkey Scratchpad. I work with a lot of text. Rather than spawn a new file in a text-editor for trivial text operations, it is sufficient to have a scratch-pad permanently open for the smaller stuff.
BB Flashback. For doing screencasts. Very powerful for recording the screen, and has everything you expect screencast software to do, and more. It even records the webcam, so it's handy for tutorials, or even just for reporting bugs.
Flexible Renamer. Bulk-renames files. It does one thing well, and has a lot of features that can be peeled away for the more savvy user.
Win sorter. For doing operations on text, like converting to upper-case, inverting case, sorting, capitalizing, and many others. Invaluable when you work with a lot of text. An absolute must for any writer.
Tray Status. Sometimes the LED indicator light on the keyboard which signals whether the caps-lock is on or not; is not good enough. This puts a little icon in the notification area that reminds you yet again whether caps-lock is on, or whether the numerical-lock is on.
Fluffyapp. The unofficial Cloudapp client for Windows. Handy for taking and sharing screenshots, and putting various graphical pocket lint into the cloud.
Win-sshfs. SSH (SFTP) filesystem for Windows. Mounts sFTP boxes as a virtual drive in Windows. Handy when you edit files a lot, and are averse to opening up a bulky client.
Dropbox. There are thousands of solutions like Dropbox, but I had to draw the line somewhere, and I'm sticking with it. It does what its supposed to do, and more.
Google Drive. For all manner of digital pocket lint and errata. I know people who store their whole life here. I treat it as a sort of virtual /devnull/
Chrome. I rarely use Chrome. I only use it as a bridge to various Google cloud services like Docs, and to try out some cute addons. It's not a very hackable browser, but handy to have nonetheless.
Photoshop. De Riguer graphics program. Should be installed on every machine! One of the few tools that doesn't have a robust freeware alternative. I know people who get too evangelical about the likes of GIMP, and Paint.NET. Anyone will tell you Photoshop is the industry standard though.
Skitch. Part of the Evernote suite of tools. Handy for screenshots. Also love the arrow and text-overlays for giving more meaning and context to screenshots and emphasizing certain parts of the screenshot. Invaluable.
Audacity. Basic audio manipulation and editing.
Miro Video Converter. I upload a good bit to tube-sites. Handy for converting massive container formats to more manageable sizes, and converting to WEBM if you're a fan of HTLM5 video.
VLC. Hands down the best media player out there. Also lots of nerdy features to peel away for the more savvy user.
Movie Maker. Part of Windows Live Essentials. Movie Maker caters to all my video editing needs for now.
Keepass. Simply wonderful security tool jam packed with features. Takes a bit of training to become proficient at this. Worthwhile peeling off the basic features and diving in a bit. The best part if the two-channel obfuscation and auto-type features. Handy for working on machines where you're sick of typing passwords, and malware-ridden machines that probably have keyloggers installed.
1Password. Great password manager for general surfing. A bit different from Keepass in that it's more suited for the web. Very flexible too, and has a tonne of features.
Lastpass. Again, suited more for the web, but it's more secure. I use this with a Yubikey, and make sure to make offline backups when I can, since it's a hosted service. Used for more sensitive information. (Each password manager has a very different use case; and there is no single point of failure).
CryptoTE. Open source program for text encryption. You can store multiple files in one encrypted container. I manually reviewed the source-code and there's no backdoors. Great for tucking away sensitive text, or even fully-fledged binaries like PDFs, invoices, etc.
Truecrypt. There was a bit of fanfare recently over whether this has a backdoor. Whether this is true or not, I don't know. Since I've yet to see a Truecrypt container actually popped, I'm sticking with it. If you dislike my stance here, you could be suffering from Snowdengate paranoia and need to liven up a bit.
Autoruns. Insane Windows powertool with huge insight into what programs are doing what. How they get executed. Where they get executed, etc. Lots of granular control over the Windows OS here. I've even found a few carefully hidden rootkits with this. One of my favourite Sysinternals tools.
TCP View. Fantastic network monitor for Windows. Real-time overview of all traffic on the network. What programs are connecting to what. What services are talking to the network, etc. Needs a bit of training to understand what's going on and to be able to parse out malicious activity by eye alone; but certainly worth it. Antivirus is a security measure only. It's always handy to have this in your toolbox for the more subtle rootkits that embed themselves in the OS.
Sandboxie. Handy when you download suspicious software and want to execute it without letting it touch the host operating system. I use this to test out software and analyse its behaviour before adding it to a software whitelist / trusted bundle. It's kind of like a software-condom for Windows.
Zemana Antilogger. Scrambles keystrokes, such that the right characters are outputted, but the keystroke itself is remapped to garbage. It thwarts keyloggers. Keyloggers are the most insidious malware you can get. I could care less if a Russian hacker gleens the funny cat pictures I am looking at, but I certainly would care if he/she gleans my Credit Card entries, master passwords, and other sensitive info that shouldn't be on the Public Internet in the first place.
MalwareBytes. Renowned anti-malware solution known for detecting the vast majority of malware out there. Has caught a few exotic trojans once, and I am forever thankful I installed it.
MalwareBytes Antiexploit. Sadly, hackers like to exploit genuinely good-intentioned, legitimate software and turn good software into a launching pad for attacks. These attacks are known as 0days. A weakness is found in the software, and this allows any number of attacks to go by unnoticed by the user. This tool stops that by thwarting heap-spray exploits, and nipping those attacks in the bud.
Microsoft EMET. The Enhanced Mitigation Experience Toolkit. Sandboxes applications and prevents a slew of exploits from happening on Windows. It does this by using DEP (Data execution Prevention). Windows is known for having countless ways to execute binaries. It also stops buffer overflow exploits by randomizing the address space.
Classic Shell. Brings back the start menu in Windows 8. Disables all the Metro nonsense too. Frankly, the Metro interface is a hindrance and is slowing me down. Classic Shell also has lot of features for customizing the start menu that are not even in old previous versions.
Launchy. The first thing I install on any new Windows installation is Launchy. Possibly the most handy and useful utility that exists. Launches programs instantly and without much fuss. I mapped the launcher to the INSERT
key on the keyboard. I think Launchy has added at least a year to my life, if not more!
Recuva. Handy for recovering deleted files. If you think files are gone forever after emptying the Recycle Bin; think again.
CCleaner. This utility should be installed on every Windows machine. Cleans up the system and removes all the pocket lint that gathers on your Windows system after prolonged use. I run this every month or so, and am always surprised at how much garbage Windows dumps to the hard-drive over time.
Tuneup Utilities. Tremendously useful tool for power users. It's great for optimizing the OS for productivity, and tweaking the system's default settings, which are not always ideal. For example, animations become an eyesore after using the PC for prolonged periods. It's also great for speeding up Windows, and a lot of bloat functionality can be disabled, for example error reporting
which dispatches errors to Microsoft's servers, and making unresponsive programs close immediately rather than time-out. Worth training yourself in this one if you're going to be glued to the same PC for prolonged periods.
OSFMount. Virtual disk mounting. Create any arbitrary container, and mount it with OSFMount. Mount ISOs, and other disk-image formats. Handy for organizing arrays of data you don't want indexed, and 'deep freezing' files in their untouched state. Also handy for hand-balling globs of data between hard-drives (it makes sense not to copy every single file. A massive binary blob is preferable)
Karen's Directory Printer. Nice GUI tool for printing the file / folder contents of any directory. Handy for doing integrity checking, making public download listings, or dealing with lots of separate JS modules placed in multiple disparate folders.
qBittorent. I humbly propose this is the best torrent client for Windows there is. Useful for downloading stuff I suppose. Lots of functionality, and no shady behaviour. Very customize-able too.
Win32Whois. Very simple whois
GUI tool for Windows. Queries multiple whois services for a definite result. Does one thing well, what more can I say?
NetToolset. A swiss army knife for networking. Has all the usual tools, like ping, port scanner, traceroute, etc. Handy for uncovering previously hidden / unseen information that often lurks behind various online services.
Vista Switcher. Supremely useful shell-addon for switching between windows and open programs. Highly customize-able. Right up there with Launchy, this tool has probably added a year to my life, if not more.
7+ Taskbar Tweaker. This tool works with Windows 8 too. Basically a shell-addon that adds more functionality to the default Windows taskbar. I specifically use it to change the generous amount of padding between the icons in the notification area. Handy when set to 1px, as it allows for more room for the taskbar buttons.
Skype. I use it to dial out because of the low rates. I have it mapped to my real number. Handy for overseas calls, and calling offshore tech-support numbers. Also handy when you want to insulate land-line / international calls from a cellphone, as cellphone carriers charge absurd rates for a landline.
Thunderbird. Super handy email client. A veritable one-size fits all for email. I've managed to hook up several accounts to this. Make sure to protect it with a master password, as a copy of the installation folder means access to all your email.
Pidgin with OTR Plugin. Super handy chat / IM client, with lots of useful plugins. Make sure to get the OTR (Off the record) plugin for secure conversations. Supports many different services. Try to get the portable version so you can carry it around with you.
There is an endless sea of programs to try out on Windows, and this can cause a 'choice paralysis' when deciding which programs to use. I like to white-list certain software, and add it to a permanent inventory of software that I can draw upon later. I have a strict criteria for choosing the right software, and it has to be:
Secure. No ad-ware installers. No 'phoning home' behaviour. No dark-patterns. Must be peer reviewed, trusted, and preferably open source. It must be popular and widely used. It must be lightweight and easy to install (no bloatware). It must be easy to remove from my system. It must have regular security updates and respond to the threat landscape (heartbleed, 0days).
Unbundled and no bloatware. It has to do one thing well, and if possible, no feature creep.
Freeware. If possible, the software has to be freeware. If I have to pay for a license, that's only because there is no freeware alternative.
Open source. If possible, the software has to have the code freely inspected and reviewed. If the freeware does not provide source-code, then I will inspect what the executable is doing behind the scenes, and that it's not trying to install backdoors, or tamper with the integrity of the OS.
Useful. Some programs are simply not useful. If there is one thing I find in the software that insults my sensibilities, intellect, and otherwise makes me feel unsettled, then I will discard it, and find a more sensible alternative.
Onion features. Features which can be peeled away after a certain skill-level have been reached using the program are great. Often times, developers try to pack in lots of features, and rarely, is ever, provide an opt-in mechanism for the more advanced features. I use the onion metaphor, because a novice can use the program, and if a certain proficiency is reached, they can 'peel' away the simple features, and reveal the advanced section(s).
Tested. It can take some time to decide if I want to keep / white-list certain software. It's easy to think software is useful because it is packed with features and appears to do its job. It's only after using software habitually and for prolonged periods, that I can truly make up my mind about it. Most of the software listed on this page has been installed on my system for some time, and some of it has survived OS updates, and all manner of wear and tear. How much time you spend getting to really know the programs mentioned is up to you - it depends on how much you want to get done.
Also Noteworthy:
Scott Hanselman's 2014 Ultimate Developer and Power Users Tool List for Windows
SnapFiles freeware and shareware downloads and reviews, trusted for quality since 1997
Ninite - Install or Update Multiple Apps at Once
PortableApps - Portable software for USB, portable and cloud drives
This year I plan to be involved in more movements, and 'initiatives'. Some I wet my toes in more than others, but ultimately, I need to feel like I belong somewhere. Who doesn't? So here's a few happening things that are going places:
There could be more, but I don't want to get involved in everything all at once, as that's too mentally taxing. I need to focus.
Handy Boomkarklets
LICORIZE
javascript:if(document.licorize==undefined){%20var%20licorizeScript%20=%20window.location.protocol+'//licorize.com/applications/licorize/site/support/bookmarklet.js';%20var%20head=%20document.getElementsByTagName('body')[0];%20var%20script%20=%20document.createElement('script');%20script.id%20=%20'__licorize';%20script.src%20=%20licorizeScript;%20script.bkmt='true';%20script.action='BKMT';head.appendChild(script);%20}%20else%20{%20document.licorize.update();%20};%20void(0);
GEEKLIST
javascript:document.getElementsByTagName('body')[0].appendChild(document.createElement('script')).setAttribute('src','https://geekli.st/javascript/bookmarklet/bookmarklet.js')
PINTEREST IT
javascript:void((function(d){var%20e=d.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('charset','UTF-8');e.setAttribute('src','//assets.pinterest.com/js/pinmarklet.js?r='+Math.random()*99999999);d.body.appendChild(e)})(document));
BIT.LY
javascript:(function()%20%7B%20var%20s%20=%20document.createElement(%22script%22);%20s.setAttribute(%22id%22,%20%22bitmark_js%22);%20s.setAttribute(%22type%22,%20%22text/javascript%22);%20s.setAttribute(%22src%22,%20%22//bitly.com/a/bitmarklet.js%22);%20(top.document.body%20%7C%7C%20top.document.getElementsByTagName(%22head%22)[0]).appendChild(s);%20%7D)();
READING.AM
javascript:(function(){window.reading={token:'miePhhXKxJ_ybJEdkrxH8A',platform:'bookmarklet',version:'1.0.1'};var head=document.getElementsByTagName('head')[0],script=document.createElement('script');script.src='https://reading.am/assets/bookmarklet/loader.js';head.appendChild(script);})()
DECENT URL
javascript:(function(){location.href='http://decenturl.com/create?b=1&u='+encodeURIComponent(location.href)+'&t='+encodeURIComponent(document.title);})();
LESSN
javascript:var%20my_slug=window.prompt('Shrinking%20this%20URL.%20Enter%20a%20custom%20short%20URL,%20or%20leave%20blank%20to%20automatically%20assign%20one.');if(my_slug!==null){location.href='http://i.higg.im/-/?url='+encodeURIComponent(location.href)+'&custom_url='+encodeURIComponent(my_slug);}
POST TO DESIGNER NEWS
javascript:function iprl5(){var d=document,z=d.createElement('scr'+'ipt'),b=d.body;try{if(!b)throw(0);z.setAttribute('src', 'https://news.layervault.com/assets/bookmarklet.js');b.appendChild(z);}catch(e){alert('Please wait until the page has loaded.');}}iprl5();void(0)
If a network uses a filtering system and blocks certain keywords, we can modify the W3Schools URL as follows, and submit the URL to search engines:
cialis.w3schools.com vardenafil.w3schools.com levitra.w3schools.com milfcuckold.w3schools.com
We can't get rid of W3Schools, but we can demote the URL on Google SERPs.
We should submit the link to mechanical turk services on fiverr·com and get the links demoted on Google that way.
It is advertised that bulk submitting a URL into spam-silos helps with SEO, when infact Google hates this and implements their Panda algorithm if this occurs.
It could backfire and increase SEO temporarily - but because we are practicing 'paid links', Google will punish the site owner for this. I think a crack team of Internet vigilantes should link-blast the W3Schools URL into spam-silos, and the W3Schools problem can finally go away.
For me, permalinking is a much deeper thing than a mere pointer to a resource, because the web is inherently transient, and forever shifting. Link rot is what defines the web. Very few people grok the concept of "evergreen domains", and "citable resources".
A domain must be kept renewed for, at least, ten years for it to be evergreen, and content must be citable if you want to go down in history for your efforts. How we go about implementing citable resources is tricky.
Unless you are a Zen Warrior and quite enjoy Sand Mandalas, then you shouldn't be reading this. This article is for those that want to be found on the web for their work in the foreseeable future, and for those who don't want their work attributed to other people. You want authorship of your resource to be correct.
Nobody ever really owns a domain. Much like land, it trades hands with numerous parties before it belongs to any one person; in which case that person can then sell it off and buy new land. Everything is borrowed. You own nothing, really. Imagine these scenarios:
And so I conclude that permalinking is a much deeper concept than a mere URL that points to a resource. It entails a slew of other topics that all center around the age old philosophy of permanence versus transience. It's not just something bloggers use in Wordpress!
There seems to be no end to the amount of places we can store things online. I've signed up to all these:
I use each service for different reasons:
Not to mention all the lovely FTP space I have. We are spoiled these days with storage!
IL:DR Instagram Link ; Didn't View.
OWLY;DC Hootsuite OW.LY Shortened URL ; Didn't Click
FB;DC Facebook FB.ME URL Shortened URL ; Didn't Click
TTM;UF Tweets too much ; Unfollowed
TMH;DR Too many hashtags ; Didn't read
IGRCHZ ; HC Imgur or Cheeseburger link ; Hastily Clicked
TV ; DRFR Too vague ; Didn't reply, favorite, or retweet
PE ; UF Promotes their employer too much ; Unfollowed
RTO ; TOR Retweets too often ; Turned off retweets
IL:DR Instagram Link ; Didn't View
OWLY;DC Hootsuite OW.LY Shortened URL ; Didn't Click
FB;DC Facebook FB.ME URL Shortened URL ; Didn't Click
TTM;UF Tweets too much ; Unfollowed
TMH;DR Too many hashtags ; Didn't read
IGRCHZ ; HC Imgur or Cheeseburger link ; Hastily Clicked
TV ; DRFR Too vague ; Didn't reply, favorite, or retweet
PE ; UF Promotes their employer too much ; Unfollowed
RTO ; TOR Retweets too often ; Turned off retweets
I currently enjoy all the following:
Every now and then, we get mentioned by great people for our work as devs. I am on a quest to find all the tweets and blogposts that made my heart sing in 2012 and 2013.
Thoughts by this user that have been liked by others.
The web development scene is awash in shiny toys we can use to make our lives easier as developers, or designers. At any given moment, something.js is trending on the frontpage of Hackernews, or some new javascript widget is getting more traffic than Slashdot and Techcrunch combined.
These plugins are nice and pretty, and we get very excited about them, but this excitement is short lived, and the author of these tools enjoys some great exposure for their efforts, and can crawl the ranks of Github, and Twitter very quickly. This fame can only be sustained if the author ships regularly, and maintains consistency. It is rarely the case that a coder can do this though, as external influences (work/family) can interfere with coding. (Unless you are substack or sindresorhus) If you are going to use these tools, make sure you don't fall victim of 'bells and whistles' syndrome and stuff your site with all these gadgets. Be careful which one you decide to choose, and learn to navigate the seemingly endless choices you have now for widgets and plugins.
1.) It has already been built in Javascript. If it hasn't, somebody will build it in Javascript. Also see: Atwood's law.
2.) 'Frontend developers' will face their fear of the backend eventually.
3.) Just use MySQL. The world is run on MySQL.
4.) Write text, structure it with semantic HTML, and then write CSS. Do not do these in reverse.
5.) Spend more time coding and less time hunting for what dependency you need for X result. REPLs are a coders best friend.
6.) Every programmer has their 5 milliseconds of fame
7.) Write really bad code in order to get better at it.
8.) Use lateral thinking. Sometimes Sublime text is bringing a gun to a knife fight. You could probably solve 90% of problems without a text editor.
9.) Don't build it yourself.
10.) Refactor only when you know the code has bugs. Refactoring is better than obfuscated code.