Yet Another Bug https://yetanotherbug.com A Lazy Documentary of my Projects and Thoughts Wed, 04 Jan 2017 00:53:28 +0000 en-US hourly 1 https://wordpress.org/?v=4.7.2 A CLI trash can (recycle bin) for linux https://yetanotherbug.com/cli-recycle-bin-linux/ https://yetanotherbug.com/cli-recycle-bin-linux/#respond Tue, 13 Dec 2016 04:01:41 +0000 http://yetanotherbug.com/?p=127 The origins of my idea… (aka TL;DR;) I am a big fan of Arch Linux. While many think Arch is so stripped down that it’s not suitable for server environments or too “hands on” for noobs, I personally think the power of Arch resides in its very simplicity. Arch is a rolling release distro, which

The post A CLI trash can (recycle bin) for linux appeared first on Yet Another Bug.

]]>
The origins of my idea… (aka TL;DR;)

I am a big fan of Arch Linux. While many think Arch is so stripped down that it’s not suitable for server environments or too “hands on” for noobs, I personally think the power of Arch resides in its very simplicity. Arch is a rolling release distro, which means it doesn’t have release numbers (like, for example, Ubuntu) but rather relies on frequent updates to the different packages keeping them up to date, compatible and as close to their upstream versions as possible. It doesn’t come with a GUI by default (hell, it doesn’t come with almost anything by default, I don’t even think it’s got wget prepackaged…) but you can find pretty much any program worth a damn via its package manager (pacman) and whatever you can’t find there can be found on AUR (Arch User Repository) 99% of the time.

Arch Linux is also a great distro for those who want to learn Linux the hard right way. Most of the time it forces you to configure, troubleshoot, install or manage your packages via CLI and without training wheels while, at the same time, providing an invaluable source of knowledge and guidance through its extensive documentation and lively community. As a matter of fact that’s how I found out about it… If you google some Linux command, or way to configure an application on Linux chances are you are going to end up on an Arch Wiki article.

 

Yep I’ll get to the point…

Now, since I embraced the Arch Way, I use command line for all my Linux tasks however I noticed that due to my ADHD I tend to impulsively obliterate files to recover precious space or just to keep things clean… This leads to regret. Regret leads to anger which leads to the Dark Side… So I figured that as a Bash Padawan I should have done something about it and I did. I looked up some form of CLI recycle bin and found out that many distros that make use of graphical interfaces have a recycle bin embedded in their file managers and Ubuntu even provides a command line version of it. Doing a quick search on AUR showed a couple of options that emulated what I wanted but none of them seemed polished or even maintained enough for my taste. So based on the principles that “if you want something done right(ish), do it yourself” and that “sharing is caring” I decided to make my own trash command and post it on AUR (and GitHub).

The command is pretty simple and, while not perfect, it accomplishes what I wanted:

$trash [file1] [file2]...

Moves the given file/s or directory to the trash folder (/tmp/trash/)

$trash -l

Shows the content of the trash folder

$trash -r file1 [-r file2 -r file3 ...]

Restores file/s or folder/s to their previous locations with their original attributes

$trash -R

Restores ALL file/s or folder/s to their previous locations with their original attributes

$trash -e

Empties the trash bin

$trash -p file1 [-p file2 -p file3 ...]

Purge (delete permanently!) file/s or folder/s from the trash can.

$trash -v

Verbose. Add some additional information about the performed operation.

$trash -V

Show current version.

$trash -h

Show usage.

For more info on how to install it you can check the Readme file on GitHub and I hope you’ll find it useful as much as I do!

The post A CLI trash can (recycle bin) for linux appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/cli-recycle-bin-linux/feed/ 0
How to fix “We couldn’t complete the update. Undoing changes” error when installing WSL https://yetanotherbug.com/fix-couldnt-complete-update-undoing-changes-error-installing-wsl/ https://yetanotherbug.com/fix-couldnt-complete-update-undoing-changes-error-installing-wsl/#respond Sun, 11 Dec 2016 20:29:39 +0000 http://yetanotherbug.com/?p=103 Microsoft <3 Linux now? So recently Microsoft rolled out their Anniversary Update and the most anticipated feature (or at least mine) was the “Windows Subsystem for Linux”. As pretty much any article on every blog on the web has already written, WSL is NOT an emulator but rather a true implementation of Ubuntu Linux that

The post How to fix “We couldn’t complete the update. Undoing changes” error when installing WSL appeared first on Yet Another Bug.

]]>
Microsoft <3 Linux now?

So recently Microsoft rolled out their Anniversary Update and the most anticipated feature (or at least mine) was the “Windows Subsystem for Linux”. As pretty much any article on every blog on the web has already written, WSL is NOT an emulator but rather a true implementation of Ubuntu Linux that runs on Windows machines without the need for a VM.

I’m not going to go into the details of how they made the Windows Kernel and the Linux Kernel “talk” to each other… you can read plenty in one of the links I posted above, but it’s very interesting how Microsoft, historically anti-open-source and frowned upon by the Free Software community for decades, is now shifting more and more towards an open-source model for some of his products. The appeal of WSL is to run native UNIX applications and scripts directly on your machine (ant its filesystem!) which will probably render tools like Cygwin obsolete.

 

Let’s get to the point

Well, I am not writing this article to talk about what you can do with WSL, but rather on how to get it back when you install it, break something (can be for unrelated reasons) and need to restore to a previous point in time through the Windows recovery features. After the process you will notice that WSL has vanished into thin air. Normal, you might think… I’ll just re-enable it the way I did before which is through the “Turn Windows features on or off” in “Programs and Features”, selecting “Windows Subsystem for Linux” from the list of features. The system will ask you to reboot. At some point during the update process the system will flash a message along the lines of “Failed to update. Undoing changes” and when Windows is done restarting and booting up you’ll find that WSL (and the bash command to bootstrap it) is not only missing but the feature is unselected in the Windows feature list… Further attempts to activate it, using Windows Powershell as well, will result in the same type of failure. How to solve it then? Easy! Delete the following folder (and its content if any):

windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux

That’s it. Now repeat the installation process and you are gold.

It took me a couple days of frustration before I found this Github thread.

Well I hope this help some fellow Windows/Linux users…

Good Luck!

The post How to fix “We couldn’t complete the update. Undoing changes” error when installing WSL appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/fix-couldnt-complete-update-undoing-changes-error-installing-wsl/feed/ 0
What programming language should I learn? https://yetanotherbug.com/what-programming-language-should-i-learn/ https://yetanotherbug.com/what-programming-language-should-i-learn/#comments Wed, 21 Oct 2015 02:43:10 +0000 http://yetanotherbug.com/?p=79 I want to learn programming because [I heard there is a lot of money in the field / it sounds fun / I want to make a video game / I want to make an app / I want to work for Google] (or whatever other reason…). What language should I learn first? This is a

The post What programming language should I learn? appeared first on Yet Another Bug.

]]>

I want to learn programming because [I heard there is a lot of money in the field / it sounds fun / I want to make a video game / I want to make an app / I want to work for Google] (or whatever other reason…). What language should I learn first?

This is a very common question but arguably the wrong one if your goal is to learn how to program. I know it doesn’t make sense but hear me out.

If you want to learn how to drive you wouldn’t ask should I learn to drive a pickup truck, a sedan or an 18-wheeler first? Each one has wheels, tires, seats, steering wheel, dashboard, etc… But they all have different driving styles and they handle in very different ways. They can all take you from point A to point B but they might have to go different ways and take different approaches as a sedan wouldn’t do well off-road and an 18-wheeler could not perform sharp turns in restricted spaces. Nonetheless you have to learn how to drive one or the other right? Then you could learn how to drive all the vehicles just learning one first and then the main differences between them… Well programming is very much the same thing. It’s true, most people start learning how to drive cars first and then move to “harder” vehicles or never learn anything else at all. But there are folks who started with go-karts or bikes first when they were younger and moved up from there… Are they better drivers? Not necessarily, that is just their personal path.

You will find some programmers saying “supercoolLanguage2000 is better than all the other languages combined!” or “EazyPeazy++ is the easiest language to pick up, start there!” but that would be like saying Russian is so much easier to learn than English and you should teach it to your kids first… Well if you live in the States chances are your kids will need English more than Russian, plus you’d probably not even know it (who are we kidding).

Yeah, blah blah blah… So what language should I learn? I came here for an answer dammit!

All right, I see… Then just press the following button and I will give you your answer so you can stop reading and start learning!


Now that we sifted out who is going to have a hard time learning how to code we can keep chatting about approaches…

The question “which one” starts from the complete lack of knowledge about what programming is. Obviously not knowing what you are going to do makes the task seem impossibly hard to achieve. That’s normal, and if it makes you feel better, it’s all in your head. Programming is as easy as writing this a post online… There is no insurmountable obstacle ahead of you, the hardest part is the first few steps, afterwards it’s downhill…

So a programming language is just like a real language. It has syntactic rules, grammar, short-hands, forms, etc. All languages (programming and natural) achieve the same result: communication. It can be between people, between machines or between people and machines. To speak to a Chinese person you should probably know Mandarin, to speak to a web browser you could use HTML.

Who do you want to speak to?

Chances are you have a general idea of what you want to achieve. If not, think about what excites you that is related to the technology world in one way or another. There are many ways you can go about figuring out what to start with at this point… I found this info-graphic pretty useful and entertaining:

which-programming-language-should-i-learn-first-infographic

In a more streamlined way…

I would love to make websites / Online tools:

That is awesome! That’s how I started… There are a few equally valid options but you need to understand some HTML to know how web pages are structured although that’s not a programming language per se  but rather a markup language (HyperText Markup Language) and some basic CSS (Cascade Style Sheet) that is what literally defines the “graphic style” of a web page.

There are a few different options to look into:

  • JavaScript 
    This is a powerful combo . To give you an idea, when you land on a website and things start moving around when you click or scroll… that’s JavaScript. When a bubble pops up telling you that your password is wrong, that’s probably JS as well. There even are browser games made with JavaScript and its many many frameworks.
  • Python ( + Django)
    Many say that Python is a very easy language to learn, but we decided not to focus on what’s easy or not for some people. Python is versatile. The basic language combined with different packages and frameworks can pretty much do anything, which does not mean it can do anything WELL. Each language has it’s strengths and weaknesses but if you want to make a website and you are also interested in expanding your knowledge towards other types of projects, Python will let you do that.
  • Ruby (on Rails)
    Same as above… Ruby is a fun language to use, less “rigid” than Python in its syntax (rules) but equally powerful and versatile. To develop website you’ll need it’s “on Rails” declination. Ruby on Rails is pretty much Python + Django. Just as Python, Ruby will allow you to extend your reach far beyond the simple web development.
  • PHP
    PHP was and still is (although losing some ground) the most popular development language for websites, however there are conflicting opinions about it. Many frown upon it because of its inconsistency in its rules and syntax. I might be (read am) bias because that is what I started with, but here is my 2 cents: it is true, PHP is literally all over the place, rules are different according to what feature you are using, what function you are using, how you are approaching your problems and 8/10 times you are likely to leave a vulnerability in your code… BUT… It includes so many concepts and styles that if you spend enough time on PHP you’ll find out that it has a little bit of something from every major programming language, thus giving you an idea of what you’ll find in a more formal language. You are free to disagree.

There are more options but these are the most popular.

I want to make apps for mobile phones:

This is a really cool field! With more and more powerful “smartphones” you can basically build anything you want to run on a mobile device! You can build a weather app (don’t build a weather app there are like 600,000 out there), you can build an app to track your child developmental milestones, you can make the next angry birds… the sky is the limit. So what do you start with?

  • Java (Android)
    Android is undoubtedly the most flexible of the mobile platform to develop with but “Android” is not a programming language, it is an Operating System that uses Java in its “apps”. So if you want to code apps for Android you need to learn Java. Cool thing is that Java is such a widespread programming language (used by 1 billion devices) that it can be literally used anywhere else. It is also not platform specific (can run on Windows, Mac, Linux, Android etc..) and this makes it extremely portable.
  • Objective-C
    If you are an Apple fan or you just want to develop applications for Apple devices you want to learn Objective-C.
    Ok, bias alert: I am not the biggest Apple fan so take this with a grain of salt. Objective-C is a painful language. Its syntax is not found in almost any other (modern) languages. It is outdated and even Apple is stepping away from it gradually… BUT… 90% of apple software is built in Objective-C, so draw your conclusions.
  • Swift
    Apple realized that Obj-C is as pleasant to use as a bike without a saddle so they came up with Swift, a language inspired by all the most successful modern languages like Python, Ruby and (to some degree) Java and C++. Swift is compatible with Obj-C code so that old snippets could technically be dropped in painlessly into the new code, although it’s still an hazardous move in my opinion. If you want to approach Apple development (iOS and OSX) in a more modern way then Swift is your best option.

I want to make video games:

All right cool. One option is to start with a language specific framework:

  • Python (+ PyGame) 
    The concept is the same as with Django… PyGame is a set of tools that allows you to create your game using Python. It is well documented and quite powerful!
  • Java
    Like we said Java is a very popular language and it has a ton of game frameworks that can be used to create cool games. You just need to grab one and start learning.

If you want to get some polished results fast then your best bet is to start with a Game Creation System which will allow you to put something on your screen quickly giving you that fuzzy feeling of reward to push you to learn more and more… Nothing like a ball bouncing between 2 sticks to keep you going… You have a couple choices I would start with:

  • Game Maker: Studio
    GMS allows you to create really awesome 2D games fast. It uses a proprietary language GSL (Game Studio Language) for scripting that is inspired by other mainstream languages such as C++. GMS allows you to port your games to any platforms from PC to Mac to mobile devices which is a huge plus.
  • Unity3D
    This is a heavyweight professional Game Creation System and Engine. Just like Game Maker: Studio it allows cross platform development but it supports both 2D and 3D graphics. It uses C#, Java and Boo (either one) as programming languages and although feature-rich is well documented.
  • Unreal Engine 4
    If you have ever played video games then you know what the Unreal Engine is… This is a very powerful game engine that supports cross platform development and just like Unity it is very versatile. It uses C++ for scripting and it’s very feature rich.

As usual there are other ways to go about it but these will guide you into learning what is necessary to reach your goals.

In summary, learning a programming language is not any more difficult than learning anything else. We learn things every day, especially when they interest us or excite us… So get excited about a project and learn as much as you can!

I’d suggest you start with some online video tutorials… They are my favorite way of learning new languages… I like to listen and see what people who are already proficient in the language do. It’s almost like a one on one tutoring and it gives you the chance to follow along.

Some of my favorite sources (in no particular order) are:

  • The New Boston
    Free and with an extensive collection of tutorials… It also doubles as a social network for programmers so it’s easy to find help.
  • Udacity
    Lots of professional courses some free some available for a monthly subscription.
  • Udemy 
    Tens of thousands of courses sold individually… Look for coupons online!

 

The post What programming language should I learn? appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/what-programming-language-should-i-learn/feed/ 3
How to setup a kick-ass sync environment with Syncthing https://yetanotherbug.com/how-to-setup-a-kick-ass-sync-environment-with-syncthing/ https://yetanotherbug.com/how-to-setup-a-kick-ass-sync-environment-with-syncthing/#comments Thu, 13 Aug 2015 02:28:35 +0000 http://yetanotherbug.com/?p=61 Ok easy peasy, here we go… The first step for our Windows deployment is to download SyncTrayzor installer, run it and wait for it to update to the latest version. Then go to File > Settings and check “Automatically Start On Login” and optionally “Start Minimized”. Profit. That was easy, right?! Ok repeat for any PC

The post How to setup a kick-ass sync environment with Syncthing appeared first on Yet Another Bug.

]]>
Ok easy peasy, here we go…

SyncTrayzor

The first step for our Windows deployment is to download SyncTrayzor installer, run it and wait for it to update to the latest version.

Then go to File > Settings and check “Automatically Start On Login” and optionally “Start Minimized”.

Profit. That was easy, right?!

Ok repeat for any PC or laptop and let’s see how it works on Linux.

On my server I run Ubuntu 12.04 and it’s pretty straightforward, go to your terminal and type

 

sudo apt-get install curl
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
echo "deb http://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing-release.list
sudo apt-get update
sudo apt-get install syncthing

Now we can run Syncthing calling the syncthing command from your terminal. It will start the process and setup our configuration the first time around.

The next step is to install dtach to handle unattended start of the process (since there is no daemon yet). This is the easiest thing you’ll do all day…

sudo apt-get install dtach

Done.

Now we can setup dtach to run our executable at startup. Open your rc.local file with the text editor

nano /etc/rc.local

And add the following line

start-stop-daemon --start --chuid tony --name syncthing --exec /usr/bin/dtach -- -n /tmp/syncthing.dtach /usr/bin/syncthing

Replace tony with your user and save… Done. now every time you want to access the running script from terminal simply type

dtach -a /tmp/syncthing.dtach

This will reattach the terminal to the dtach session running Syncthing… There won’t be much to see but we’ll be able to stop the process and whatnot.

If we are planning to access the web GUI from remote (in case of a headless server) we can optionally edit the config.xml file

nano /home/tony/.config/syncthing/config.xml

and change the address parameter in the gui tag from 127.0.0.1:8384 to 0.0.0.0:8384 this will let us access the GUI from our browser entering our server ip and the standard port (ie. 192.168.1.234:8384) so you might want to setup a username and password in the settings.

That’s it now we only have to link the devices to one another and start sharing our folders. You can find all the documentation here.

The post How to setup a kick-ass sync environment with Syncthing appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/how-to-setup-a-kick-ass-sync-environment-with-syncthing/feed/ 1
Sync your files in real time… https://yetanotherbug.com/sync-your-files-in-real-time/ https://yetanotherbug.com/sync-your-files-in-real-time/#respond Thu, 13 Aug 2015 02:27:48 +0000 http://yetanotherbug.com/?p=51 AKA the long and winding road to find a decent tool to keep all the platforms on my development environment synced. Lately I have been looking for a solid program to sync my projects’ files across my computers… I work from home so I did not need an office/home solution however I am on my desktop during the day

The post Sync your files in real time… appeared first on Yet Another Bug.

]]>
AKA the long and winding road to find a decent tool to keep all the platforms on my development environment synced.

Lately I have been looking for a solid program to sync my projects’ files across my computers… I work from home so I did not need an office/home solution however I am on my desktop during the day and my laptop at night… plus sometimes I find myself on my Mac for an iOS project and need to access some of my other files from there as well. I started reviewing a few different solutions based on my needs:

  • Decentralized sync
  • Multiple devices
  • Multi platform
  • Real time sync
  • Option to sync ANY folders (not only the default one)

Optionally I would have liked some kind of version control or backup (I can get distracted and destructive at times) and for it to be open source.

I have used Dropbox for my personal files for years now but it is neither decentralized nor it gives me the option to sync any folders of my liking, it just sync the default “Dropbox” folder across computers, also it has a limited space and that would not work for me.

The first software I found is Syncany by Philipp C. Heckel. It is still an alpha version and it is very unstable but I loved the unobtrusiveness of the interface which is mainly command line based and the option to connect it to different storage types via plugins.

The way Syncany works is simple, first you download and install the plugin for your storage of choice including WebDAV, FTP, SFTP and even Dropbox!  Then you just add a folder you want to sync either in the command line (docs here) or via the wizard. Finally copy the provided folder code and use it on your other devices to link the synced folder. It’s a relatively straight-forward process and Syncany provides basic versioning and the option to browse through the files history and retrieve an old copy if needed. The simplicity, versatility and lightweight of Syncany really made me gloss over the fact that it wasn’t a decentralized solution though it had enough plugins to have backup storage alternatives in case the primary one failed retaining consistency throughout the whole system. I loved Syncany so much I donated to the developer because I really hope to see a 1.0 version soon, however it ultimately proved to be terribly unstable and not fully able to handle conflicting files which started spawning conflicting copies of conflicting copies, probably due to the speed at which files get updated in an active development project… Basically a hot mess… So I had to abandon the Syncany ship.

syncany_scheme

Bittorrent Sync became an obvious alternative in it’s 1.x incarnation. P2P, decentralized, multi platform, the more devices the better, sync in real time and unlimited number of folders to potentially sync! Ding ding ding… We have a winner… Until Bittorrent came up with 2.0… They introduced a bunch of features such as account/devices pairings so that signing up in all of your devices with one account you could automatically keep your folders in sync, dynamic management of permissions and ownership on folders, admittedly some neat stuff.. except that you have to pay a monthly fee for it… or you have very basic, very stripped down version of the “real” application and, oh yes, a 10 folders cap. Let’s remember also that being a decentralized P2P option it does not rely on servers hence rendering the monthly fee a little fishy… I am all for paying for software, hell I am a developer after all, but I never really believe in a monthly fee, unless of course there was a monthly service. This way I am basically paying royalties to use a software that runs entirely on my system. Not cool Bittorrent… However I found BT Sync to be extremely stable and reliable at doing its job so much so that I used it for a few months for free, the deal breaker for me has been to restrict the permission/ownership control of a folder only to the original owner with the option to transfer ownership only if you have a premium account. Also only the owner of a folder can generate the code to “share” the folder with another client this complicates things when you have no access to the device that shared the folder first… Not only that, every time I formatted, uninstalled or upgraded my system, reinstalled BT Sync and linked it to my shared files it would add the new client as a completely new user showing my old BT Sync installations as offline users and of course no one can revoke clients access to any folders unless they are the owners and have a premium account… Pretty sloppy.

bittorent_sync_scheme

Let’s say that BT Sync is an excellent solution if you are willing to setup your development network once and don’t foresee any major change. It gets the job of keeping your files in sync done very well comparably to Dropbox and it’s very unobtrusive. If you are looking for some more fine tuning like I did however it is just not right, unless of course you are willing to pay royalties to Bittorrent (again, not cool).

At this point I was getting pretty discouraged as the vast majority of syncing options out there are way to raw, paid centralized services or single folder sharing systems Dropbox style… What I ended up using in the end is Syncthing which is pretty much all that I liked from Syncany with all that I could accomplish with BT Sync… Although not without a little bit of haking, but more on this in a minute.

So Syncthing is:

  • Decentralized [CHECK]
  • Multi platform [CHECK]
  • Runs on multiple devices [CHECK]
  • Syncs any number of folders [CHECK]
  • In real time [CHECK]
  • It’s Open Source [CHECK]
  • Supports versioning and backups [CHECK]

Not bad! So the straight-up vanilla version of Syncthing is an executable which will start a the program in a command prompt (if you are on Windows) this was my first disappointment… I don’t want to have to start it on every machine every time I start my system… What if I simply forget (very very possible option)? Well fortunately if that is the only issue there are extensive guides online on how to setup the Syncthing executable as a service and run it at boot. So that problem is solved… Now you have a BT Sync type of software running at startup which GUI can be accessed via browser at localhost:8384 (by default)… however still no tray and notifications… But we are in luck again! Since ST is open source you can find a bunch of wrappers that use the same core executable here for pretty much any platform under the sun. My favorite Windows one is SyncTrayzor which works as a jack-of-all-trades providingan installer. auto-start, built-in browser, tray icon, folder watcher, and more… Once you install and configure SyncTrayzor you’ll pretty much obtain a free, open source, BT Sync. NICE!

syncthing_scheme

A decentralized system is awesome as changes are propagated across all clients in real time as long as 2 or more are connected to the network, however that means that if you don’t always have at least 2 devices on at all time some changes might be lost or not synced correctly resulting in conflicting file… To solve this problem I installed a simple executable on my Linux server and configured it to start at boot and run in a detached terminal (there is no daemon yet) with the help of dtach. The server is on at all times and continuously listens for updates to the shared folders providing the benefits of a centralized setup to the system.

I also wrote a simple step by step of how I configured my computers that can be found here.

The post Sync your files in real time… appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/sync-your-files-in-real-time/feed/ 0
Gone Phishing https://yetanotherbug.com/gone-phishing/ https://yetanotherbug.com/gone-phishing/#respond Fri, 29 May 2015 00:21:34 +0000 http://yetanotherbug.com/?p=37 Ahh, phishing, the old “It’s really urgent [you inherited a large sum of money from a South-African philanthropist | Your bank account has reported weird activities it was most definitely hacked |  your PayPal account has been blocked] please go to this link and login”… So far I managed to dodge a bunch of these

The post Gone Phishing appeared first on Yet Another Bug.

]]>
Ahh, phishing, the old “It’s really urgent [you inherited a large sum of money from a South-African philanthropist | Your bank account has reported weird activities it was most definitely hacked |  your PayPal account has been blocked] please go to this link and login”

So far I managed to dodge a bunch of these attempts to “catch” my credentials like a Pokemon from a multitude of cyber thugs, despite many of them were quite believable sporting pages designed to resemble the original ones with great attention to the details, such as ad banners and real “internal” links, by just having a professionally trained eye and smelling something phishy.

Today however, they finally got me… I received an email from my host (BlueHost) notifying me that I have more than 6000 (note that the number was actually something like 6043… So kind of plausible) folders in my account and I need to reduce the number to prevent a drop in server performance or my account might be suspended, just click this link http://thehostlink.com/boguspage.php?faketokenpar=mksdkf352lkn52jnkj52311lgbb  login and… I don’t know do something about it!

 

post-43750-SNL-red-flag-skit-gif-imgur-Kr-Yn6K

 

A few red flags should have gone up, but I just came back from lunch and I was on my Mac which I only use for iOS development and when I saw that my password was not saved in the password manager I figured it was just Apple’s fault… Eheh… I tend to use this excuse a lot lately.

Long story short as soon as I type the username and password and I hit enter of course an error comes up and I automatically look at the URL which reports obviously NOT bluehost.com… but some Russian domain. So now here I am changing all my passwords and just cleaning up the mess.

This is a serious issue and many people don’t realize the gravity of the situation until it’s too late and the damage has been done, also giving time to the thieves to get away with it. A lot of countermeasures have been taken over the years by big companies like Google, Microsoft or Verizon to improve their level of security at the expense of usability such as the various two-steps verification systems however this is getting increasingly frustrating for users and a challenge for developers to implement.

A good solution would be the use of fingerprints since the technology is becoming more and more readily available with Android M implementing native support and also adding a new Smart Lock Password Manager as announced today at the Google I/O in San Francisco. A fingerprint based system would be virtually unbreakable as there is nothing to steal, no emails, no passwords only phalanges… Which come to think of it might be kind of scary…

In any case, the technology is still not quite there yet and even though it would be pretty swell to have a centralized database of fingerprints providing APIs to developers to add support for this kind of login that would add a whole new set of security concerns (I see NSA written all over it)

Bottom line is as users we always have to be aware of what we are doing and keep an eye on that URL bar… Education in this case is the best solution. As developers we need to figure out better ways to improve security without killing the user experience and sometimes a simple, low-tech message above the login form stating “PLEASE MAKE SURE THAT THE FOLLOWING URL IS DISPLAYED IN YOUR URL BAR BEFORE TYPING YOUR CREDENTIAL” could make the difference between catching the phish or not.

The post Gone Phishing appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/gone-phishing/feed/ 0
Solve your problems (and learn something while you are at it) https://yetanotherbug.com/solve-your-problems-and-learn-something-while-you-are-at-it/ https://yetanotherbug.com/solve-your-problems-and-learn-something-while-you-are-at-it/#respond Wed, 27 May 2015 23:36:56 +0000 http://yetanotherbug.com/?p=26 A few weeks ago I came across this video… When I was a kid I loved playing with LEGO blocks, building stuff out of cardboard, scotch tape and toothpicks… I always found rewarding making something out of nothing and I got to have new toys every day! My mother has always drawn and painted and

The post Solve your problems (and learn something while you are at it) appeared first on Yet Another Bug.

]]>
A few weeks ago I came across this video…

When I was a kid I loved playing with LEGO blocks, building stuff out of cardboard, scotch tape and toothpicks… I always found rewarding making something out of nothing and I got to have new toys every day! My mother has always drawn and painted and her influence inspired me to become a graphic designer, but the passion for building things, not just drawing them on paper, never left me. I could have become an engineer, but I was awful at math. Eventually the World Wide Web took over our life and I quickly realized that the future was online so I started designing for the web. When HTML was king my job was still mainly that of a designer although it became quickly clear that just using Photoshop or Illustrator wasn’t going to be enough and so I learned PHP. First just some small functions to display HTML and then more complex stuff involving MySQL databases and a more dynamic approach to the development of websites… Javascript and jQuery followed pretty quickly as the demise of Flash came upon the web.

I did not have a plan to learn any of the stuff I learned and I did not know what I needed to learn I just had goals and tasks to accomplish (and problems to solve) and, of course, I had access to the internet. At first I was happy just copy/pasting some snippets from other developers and maybe just modifying them enough to roughly fit my needs, but the thrill of building out of nothing was there again and I could feel it.

Learning how to code has been for me almost like learning how to draw, first copying other drawings, then real subjects and finally just drawing without a subject… The syntax became quickly familiar and things started to click. I did not have any formal training but the common practices and patterns became obvious and I started using them without knowing it. So as the good Kevin said in his video, I had a problem and I solved it, again and again… And from web designer I became web developer.

pokemon_evolution

The evolution has been unstoppable…

At first I was worried, I’ve always being kind of a perfectionist in my work and not having a formal education in computer science I felt always one step behind other developers. I did not feel “qualified” enough for some of the projects my clients asked me to do and I ended up hiring third party companies to outsource the bulk of the jobs. The results were a total disaster. The projects were always late and way below my standards… I had no choice but go back to my old ways, look at the final code, understand it, (loathe it,) modify it, and deliver a limping, placeholder product. Then go back and start from scratch redeveloping the whole project by myself. If anything that gave me the confidence that only comes from seeing what a crappy job other people are doing and that it’s going to be hard to be worst.

Of course there are so many professionals that are much much smarter, more knowledgeable and clever  than me and they are the people I always try to learn from!

I totally agree with Kevin, education is very important, but at the end of the day what we do as developers is solving problems.

The post Solve your problems (and learn something while you are at it) appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/solve-your-problems-and-learn-something-while-you-are-at-it/feed/ 0
Hello world! https://yetanotherbug.com/hello-world/ https://yetanotherbug.com/hello-world/#respond Mon, 25 May 2015 01:24:46 +0000 http://yetanotherbug.com/?p=1 Well, being a blog about coding I think it’s only appropriate to start off with a “Hello World!” post… It’s boring but it’s a start. This piece of real estate on the internet has many goals, one of which is to give me something to do at night to reorganize my thoughts and just quit working on that

The post Hello world! appeared first on Yet Another Bug.

]]>
Well, being a blog about coding I think it’s only appropriate to start off with a “Hello World!” post… It’s boring but it’s a start.

This piece of real estate on the internet has many goals, one of which is to give me something to do at night to reorganize my thoughts and just quit working on that one project I’ve been stuck on the whole day… I am going to link some of the stuff I am working on especially when it can be useful to other people. Being a one man operation I tend to create a lot of snippets that I store and reuse in other projects and sometimes I upload them on GitHub.

I’ll try and talk about different things because I have many interests and they all have an impact on what I do and thus I might (will) go off on tangents every now and then (I will do my best to give a way to bypass those too, in case you are in a rush ya know…).

What else? Oh yeah I almost forgot… My name is Tony Morello and I have been a web designer for 11 years and a developer for 7. I own a small business, Morello Web Design… Yeah I know not the most original name, but I figured I wanted to become a brand one day… like I don’t know Chanel or something. Anyways, I love challenging myself and learning new things and yes, this paragraph should have been up top…

I hope you’ll enjoy reading as much as I will enjoy writing.
Tony

The post Hello world! appeared first on Yet Another Bug.

]]>
https://yetanotherbug.com/hello-world/feed/ 0