Categories
Uncategorized

How to Permanently Delete a Git file from Azure Devops

“CRAP! I Commit Pushed a database file!”

Or some other important credential file that shouldn’t be in the source control. What do I do?

Well, thanks to this stackoverflow post, we can do the following:

git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch SOME.DB' \
  --prune-empty --tag-name-filter cat -- --all

Replace the SOME.DB with your desired file, and make sure you have correct relative path.

But what’s next? How can I commit/push? Here’s the comment for that:

git push --all --force

And then it fails due to authentication.

Well, to generate cred, go here:

There, it has Username and Password there for you to use. Problem solved!

Categories
Uncategorized

Differences Between Engineers and Web Developers In Practice

Part I of the Series Web Development for Experienced (Non-Web) Software Engineers

Google Differences between Software Engineer and Web Developer, you will get plenty of search results highlighting the differences. This post is specifically for experienced Engineers trying to understand the Web Development Paradigm.

In Engineering, we start with 0 knowledge in the subject matter. We do some study. We practice. We learn the general concepts and while we practice, we gain our specialty. We focus to become an expert. We pivot and expand our knowledge domain, typical adjacent to our experience and expertise. Web Developer is fairly similar. However, there are some minor differences that I think cause significant differences:

  • General concept and knowledge are vast to grasp
  • Technology and Methodology are work in progress
  • Knowledge sharing differences: StackOverflow

Information Overload

For anyone new to web development, it’s amazing how much there is to learn. It’s a Client/Server architecture with multiple competing stacks and supporting technologies, tools, methodologies. Add the complexity of Conway’s law and aggressive history. How much does one need to learn? Where to start? It’s overwhelming!

The basic: HTML, CSS, Javascript on the client side. These are REQUIRED. You can learn the basics them here: https://www.w3schools.com/ . For advanced Javascript, I like this site: https://github.com/getify/You-Dont-Know-JS

Server side depends on the stack and supporting platform/technologies/services.

  • LAMP (Linux, Apache, MySQL, PHP)
  • Node.js
  • Django/Python
  • Windows, IIS, MSSQL, ASP.NET CORE/C#

Then, there are frameworks/libraries to build help build client side web application:

  • React
  • Angular
  • Bootstrap
  • JQuery
  • AJAX

And, endless of web services, and cloud services… So… one does not expect to know all and becomes expert in all. But we should recognize they are all trying to achieve the same thing, which is a website.

Everything is Work In Progress

Best practices today could be the worst way practice tomorrow. That’s the state of web development. There are always new trendy code, framework that some company is adopting. But the downside is that it might not get anywhere or something better came along and the mess just kept building up. That’s why I recommend people to chose a stack that is going to be supported by one of the top tier company such as Google, Microsoft, Facebook. But keep an open mind that things might change and be hungry to learn new things.

KNOWLEDGE SHARING

Web Development knowledge sharing is very active. Quality tutorials are everywhere.

If you have an issue, you can most likely find some answer online. Mind the quality of the answer might not be great. Stackoverflow is your friend.

Also, take consideration of versioning. In typical engineering, we have usually slower churn rate, usually by phases. Web development can happen as fast as 0 day with the adoption of continuous integration and deployment.

Categories
Uncategorized

Weapon of Choice

Part I – Overview

Why, What, Who, When, Where and How. The choices and Trade-offs that we must make. While I prefer certain way, I understand there are values on the other side. I believe we shouldn’t be ignorant of staying in the same silo and our comfort zone. We should always explore new/different things. Try to understand from different perspective. Those are the basic premises of how I pick my development environment. While there are many redundancies, but getting used to these platforms helps when it’s most unexpected.

In Part I, I’ll highlight my choices, and in subsequent posts, I’ll have more targeted environment for different kind of developers. I’ll have separate article on hardware.

OS:

  • Windows 10
  • MacOS X
  • Others: Chromebuntu

Mac OS X is primary for iOS development and some Android development. Chromebuntu is for Android platform development.

IDE:

  • Visual Studios
  • Visual Studios Code
  • Xcode
  • Android Studio
  • Unity
  • Others: Eclipse, UltraEdit, TextEdit, Notepad, Pico…

VS is obvious choice for ASP.NET CORE development. I use VSCode for react/client side because it’s lightweight. Xcode for iOS. Android Studio for Android. Unity for games. Eclipse for Java/Android (before Android Studios). UltraEdit is a great text editor on PC. TextEdit, Notepad, Pico are just simple editors that I can use without affecting other’s dev environment.

Source Control/CICD:

  • Git
  • Visual Studios Team Service
  • Older: Subversion, Perforce

Git is the way to go. VS, VSCode, Xcode, Android Studios all have integration. I host on Azure Devops. (Maybe github in the future)

Debugging:

  • Fiddler
  • Lauterbach Trace32 (JTAG)
  • SQLite Manager (FireFox extension), MySQL Workbench, Azure Storage Explorer, Azure Data Studio
  • Chrome, FireFox, Edge
  • Beyond Compare (amazing source compare tool)
  • Diagnostic Logs, Trace logs, Kernel logs,… serial port dump, led light
  • cmd, console, Kudu, (new) Windows Terminal

Content:

  • Office Suites (Excel, PowerPoint, OneNote, Word, Outlook, Sway, Visio, SharePoint)
  • Paint/Paint.net/Paint 3D, Photoshop, Inkscape, GIMP
  • Garage Band, Audacity
  • Movie Maker, iMovie